java完成一个商品销售管理系统,实现了对商品的查询、购买、添加以及删除等操?

编程题
完成一个商品销售管理系统,实现了对商品的查询、购买、添加以及删除等操作。

要求:

1、商品信息以文本文件形式存储在本地磁盘中,一行存放一条商品信息,包括商品编号(id)、商品名称(name)、商品价格(price)、商品数量(nums)、上架时间(time)等五个字段,每个字段之间由逗号隔开。

2、使用集合来管理商品,对商品的查询、添加、购买、删除实际上就转变为从集合中查询、添加、删除商品对象。

3、在对商品进行购买、添加、删除等更新操作时,每完成一个更新操作都需要进行一次文件写入,即将最新修改结果实时写入文件内。

第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) {}
相似回答