io流实现记账本,使用文件存储每天的日常收支和开销。 请设计合理的数据结构,完成记账本的查看、添加数据的功能。
时间: 2024-05-09 19:15:56 浏览: 21
为了实现记账本,我们可以设计以下数据结构:
1. `Record` 类:表示一条记录,包含以下属性:
- `date`:日期
- `description`:描述
- `amount`:金额
- `type`:类型(收入或支出)
2. `AccountBook` 类:表示整个记账本,包含以下属性:
- `records`:记录列表,存储所有的记录
接下来,我们可以使用 Java 的 IO 流来实现文件存储和读取功能。具体实现步骤如下:
1. 创建一个文本文件,用于存储记录。每条记录占一行,每个属性之间以逗号分隔。
2. 添加记录:将新的记录添加到 `records` 列表中,并将其写入文件。可以使用 `FileWriter` 和 `PrintWriter` 类来实现文件写入功能。
```java
public void addRecord(Record record) {
records.add(record);
try {
PrintWriter writer = new PrintWriter(new FileWriter("account.txt", true));
writer.println(record.getDate() + "," + record.getDescription() + "," + record.getAmount() + "," + record.getType());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
```
3. 查看记录:从文件中读取记录,并将其转换成 `Record` 对象。可以使用 `Scanner` 类来实现文件读取功能。
```java
public List<Record> viewRecords() {
List<Record> result = new ArrayList<>();
try {
Scanner scanner = new Scanner(new File("account.txt"));
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] fields = line.split(",");
Record record = new Record(fields[0], fields[1], Double.parseDouble(fields[2]), fields[3]);
result.add(record);
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return result;
}
```
这样,我们就可以使用 IO 流实现记账本的功能了。当然,还有很多细节需要考虑,比如文件不存在时需要创建文件,文件格式错误时需要处理异常等等。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)