3、一家小型超市的店主,需要查询、输入、修改任何一件商品的品名、价 格、库存量信息。商品信息存储在文件中,每件商品的标志为其记录号。java代码
时间: 2023-07-10 09:25:42 浏览: 94
以下是一个简单的 Java 代码示例,用于实现对商品信息的查询、输入和修改操作。该代码使用了文件 I/O 操作,将商品信息保存在一个文本文件中。每一行记录代表一种商品,包括记录号、品名、价格和库存量。你可以根据需要修改代码,以满足你的具体需求。
```java
import java.io.*;
public class Supermarket {
private static final String FILENAME = "products.txt";
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
try {
while (true) {
System.out.println("请选择操作:1.查询商品信息 2.输入商品信息 3.修改商品信息 4.退出");
line = br.readLine();
if (line.equals("1")) {
System.out.println("请输入商品记录号:");
String id = br.readLine();
String[] productInfo = getProductInfo(id);
if (productInfo == null) {
System.out.println("未找到该商品信息!");
} else {
System.out.println("商品信息如下:");
System.out.println("记录号:" + productInfo[0]);
System.out.println("品名:" + productInfo[1]);
System.out.println("价格:" + productInfo[2]);
System.out.println("库存量:" + productInfo[3]);
}
} else if (line.equals("2")) {
System.out.println("请输入商品记录号:");
String id = br.readLine();
System.out.println("请输入商品品名:");
String name = br.readLine();
System.out.println("请输入商品价格:");
String price = br.readLine();
System.out.println("请输入商品库存量:");
String quantity = br.readLine();
addProductInfo(id, name, price, quantity);
System.out.println("商品信息已保存!");
} else if (line.equals("3")) {
System.out.println("请输入商品记录号:");
String id = br.readLine();
String[] productInfo = getProductInfo(id);
if (productInfo == null) {
System.out.println("未找到该商品信息!");
} else {
System.out.println("请输入修改后的商品品名(按回车键保持原值):");
String name = br.readLine();
if (name.length() == 0) {
name = productInfo[1];
}
System.out.println("请输入修改后的商品价格(按回车键保持原值):");
String price = br.readLine();
if (price.length() == 0) {
price = productInfo[2];
}
System.out.println("请输入修改后的商品库存量(按回车键保持原值):");
String quantity = br.readLine();
if (quantity.length() == 0) {
quantity = productInfo[3];
}
modifyProductInfo(id, name, price, quantity);
System.out.println("商品信息已更新!");
}
} else if (line.equals("4")) {
break;
} else {
System.out.println("无效的操作,请重新输入!");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static String[] getProductInfo(String id) {
String[] productInfo = null;
try (BufferedReader br = new BufferedReader(new FileReader(FILENAME))) {
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(",");
if (fields[0].equals(id)) {
productInfo = fields;
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return productInfo;
}
private static void addProductInfo(String id, String name, String price, String quantity) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(FILENAME, true))) {
bw.write(id + "," + name + "," + price + "," + quantity);
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void modifyProductInfo(String id, String name, String price, String quantity) {
try (BufferedReader br = new BufferedReader(new FileReader(FILENAME));
BufferedWriter bw = new BufferedWriter(new FileWriter("temp.txt"))) {
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(",");
if (fields[0].equals(id)) {
bw.write(id + "," + name + "," + price + "," + quantity);
} else {
bw.write(line);
}
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
File oldFile = new File(FILENAME);
oldFile.delete();
File newFile = new File("temp.txt");
newFile.renameTo(oldFile);
}
}
```
该代码使用了三个方法来实现商品信息的查询、输入和修改操作:
1. getProductInfo(String id):根据商品记录号查询商品信息,返回一个包含商品信息的字符串数组,如果未找到该商品则返回 null。
2. addProductInfo(String id, String name, String price, String quantity):向文件中添加新的商品信息。
3. modifyProductInfo(String id, String name, String price, String quantity):修改指定商品的信息。该方法先将原文件中的数据写入临时文件中,然后修改指定商品的信息,并将修改后的数据写入临时文件中。最后,删除原文件并将临时文件重命名为原文件名。