掌握I/O(输入/输出)的基础知识,使用Idea编写Java程序完成以下功能: 商城进货交易记录 每个商城都需要进货,而这些进货记录整理起来很不方便,本案例要求编写一个记录商城进货交易的程序,使用宇节流将商场的进货信息记录在本地的 CSV 文件中,程序具体要求如下: 当用户输人商品编号时,后合会根据商品编号查询到相应商品信息,并打印商品信息。接着让用户输人需要进货的商品数量,程序将原有的库存数量与输人的数量相加,将相加后的结果信息保存至本地的CSV文件中。在CSV文件中,每条记录包含商品编号、商品名称、购买数量、单价、总价、审核人等数据,每条记录的数据之间直接用英文逗号或空格分隔;每条记录之间由换行符分隔。文件命名格式为“进货记录”,加上当天日期加上“.csv”后级,如进货记录“20200430.csv’。保存文件时,需要判断本地是否存在当天的数据,如果存在则追加,不存在则新建。
时间: 2024-03-22 07:42:15 浏览: 142
跟汤老师学Java(第15季):I/O输入输出流
好的,这是一个比较复杂的问题,需要分几步来完成。首先,我们需要根据商品编号查询相应的商品信息,然后让用户输入进货数量,将原有的库存数量与进货数量相加,计算出总价,并将这些信息写入CSV文件中。
下面是一个简单的实现,你可以根据自己的需求进行修改。
```java
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Scanner;
public class InventoryManagement {
private static HashMap<String, Item> inventory = new HashMap<>();
public static void main(String[] args) {
// 初始化商品信息
initInventory();
// 获取当前日期
String today = new SimpleDateFormat("yyyyMMdd").format(new Date());
// 构造文件名
String fileName = "进货记录" + today + ".csv";
// 检查文件是否存在
boolean fileExists = new File(fileName).exists();
try {
// 创建一个新的输出流,用于向CSV文件中写入数据
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true));
// 如果文件不存在,则写入表头信息
if (!fileExists) {
writer.write("商品编号,商品名称,购买数量,单价,总价,审核人\n");
}
// 读取用户输入的商品编号
Scanner scanner = new Scanner(System.in);
System.out.print("请输入商品编号:");
String itemId = scanner.nextLine();
// 查询商品信息
Item item = inventory.get(itemId);
if (item != null) {
System.out.println("商品信息:" + item);
// 读取用户输入的进货数量
System.out.print("请输入进货数量:");
int quantity = scanner.nextInt();
scanner.nextLine();
// 计算总价
double totalPrice = quantity * item.getPrice();
// 构造CSV文件中的一条记录
String record = String.format("%s,%s,%d,%.2f,%.2f,%s\n", itemId, item.getName(), quantity, item.getPrice(), totalPrice, "admin");
// 写入记录
writer.write(record);
System.out.println("进货记录已保存到文件:" + fileName);
} else {
System.out.println("未找到对应的商品信息!");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void initInventory() {
// 初始化商品信息
inventory.put("001", new Item("001", "商品1", 10.0));
inventory.put("002", new Item("002", "商品2", 20.0));
inventory.put("003", new Item("003", "商品3", 30.0));
}
private static class Item {
private String id;
private String name;
private double price;
public Item(String id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
@Override
public String toString() {
return "Item{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", price=" + price +
'}';
}
}
}
```
这个程序中,我们使用了一个HashMap来存储商品信息,键为商品编号,值为一个Item对象,包含商品名称和单价信息。在程序运行时,我们先读取用户输入的商品编号,然后查询HashMap中是否存在对应的商品信息。如果存在,则打印商品信息并读取用户输入的进货数量,计算总价,并将记录写入CSV文件中。如果不存在,则打印未找到商品信息的提示。
需要注意的是,在写入CSV文件时,我们使用了BufferedWriter和FileWriter来实现,其中BufferedWriter用于提高写入性能,FileWriter用于将数据写入文件中。同时,我们使用了String.format方法来格式化CSV文件中的一条记录,确保各个字段之间的格式正确。
阅读全文