第1个回答 2023-05-23
以下是一个简单的Java程序,实现了商品销售管理系统的基本功能:
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class SalesManagementSystem {
private static final String FILE_NAME = "products.txt"; // 商品信息文件名
private static ArrayList<Product> products = new ArrayList<>(); // 商品集合
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 从控制台读取用户输入
while (true) {
System.out.println("请选择操作:");
System.out.println("1、查询商品");
System.out.println("2、添加商品");
System.out.println("3、删除商品");
System.out.println("4、更新商品信息");
System.out.println("5、退出系统");
int choice = scanner.nextInt();
scanner.nextLine(); // 清除缓存区,避免多余回车符干扰后续输入
switch (choice) {
case 1:
queryProducts();
break;
case 2:
addProduct();
break;
case 3:
deleteProduct();
break;
case 4:
updateProduct();
break;
case 5:
saveProducts(); // 每完成一次更新操作都要保存最新结果
System.exit(0); // 正常退出程序
default:
System.out.println("无效的操作,请重新选择。");
}
}
}
// 查询商品信息并输出到控制台
private static void queryProducts() {
if (products.isEmpty()) {
System.out.println("目前没有商品信息。");
return;
}
for (Product product : products) {
System.out.println(product);
}
}
// 将商品信息写入文件中,并将商品集合清空以准备下一次查询操作
private static void saveProducts() {
try (FileWriter writer = new FileWriter(new File(FILE_NAME))) { // 以追加模式写入文件,每次更新只写入新数据,不覆盖旧数据
for (Product product : products) {
writer.write(product + ","); // 以逗号分隔每个商品信息字段,每行末尾带一个逗号,方便读入时进行分割处理
}
writer.flush(); // 确保所有数据都被写入文件中,否则可能会导致读入错误或丢失部分数据的情况发生。如果调用了close()方法,则会自动执行flush()方法。如果在finally块中调用close()方法,则无论是否发生异常都会执行flush()方法。如果不调用close()方法,则需要手动调用flush()方法。另外,也可以使用Files类的writeString()方法将字符串写入文件中,但这种方式不如使用BufferedWriter和FileWriter方便。例如:new String[] {"product1", "product2", "product3"}.stream().forEach(s -> Files.writeString(Paths.get("products.txt"), s)); 注意:这种方式需要使用Java8及以上版本。
} catch (Exception e) {
e.printStackTrace(); // 如果写入文件失败,则打印异常信息以便排查问题。注意:这种方式只是打印异常信息,不会终止程序运行。如果需要终止程序运行,可以使用System.exit(0)方法。另外,也可以使用try-with-resources语句简化代码,如下所示:try (FileWriter writer = new FileWriter(new File(FILE_NAME))) { ... } catch (Exception e) {}