java编写一个仓储信息管理系统,要求里面可以实现文件存储数据,或用mysql数据库建立1或2个信息表,能连接数据库并实现查询、增、删、改等功能。并可以在键盘上输入1、2、3实现查询、增、删、改等。
时间: 2023-12-28 17:44:56 浏览: 58
好的,这是一个比较大的项目,需要分步骤完成。我会尽量详细地给您讲解。
首先,我们要确定仓储信息管理系统需要管理哪些信息。假设我们需要管理货物信息,包括货物编号、货物名称、货物数量、货物价格等。
接下来,我们需要确定如何存储这些信息。您提到了两种方式:文件存储和MySQL数据库。我们可以根据需求选择其中一个或者两个一起使用。
如果选择文件存储,我们可以使用Java的文件读写功能。具体来说,我们可以使用File类和FileReader、FileWriter类读写文本文件,使用ObjectInputStream、ObjectOutputStream类读写二进制文件。以下是一个用FileWriter类将数据写入文本文件的示例代码:
```java
public class FileStorage {
private static final String FILE_PATH = "data.txt"; // 文件路径
// 写入数据到文件
public static void writeToFile(List<String> data) {
try {
FileWriter writer = new FileWriter(FILE_PATH);
for (String line : data) {
writer.write(line + "\n");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 从文件读取数据
public static List<String> readFromFile() {
List<String> data = new ArrayList<>();
try {
FileReader reader = new FileReader(FILE_PATH);
BufferedReader bufferedReader = new BufferedReader(reader);
String line;
while ((line = bufferedReader.readLine()) != null) {
data.add(line);
}
bufferedReader.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
}
```
如果选择MySQL数据库,我们需要先安装MySQL数据库,并使用Java的JDBC连接数据库。以下是一个连接MySQL数据库并查询数据的示例代码:
```java
public class MysqlStorage {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8"; // JDBC URL
private static final String USERNAME = "root"; // 数据库用户名
private static final String PASSWORD = "123456"; // 数据库密码
// 查询数据
public static List<String> queryData() {
List<String> data = new ArrayList<>();
try {
Connection connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM goods");
while (resultSet.next()) {
String line = String.format("%d %s %d %f", resultSet.getInt("id"), resultSet.getString("name"), resultSet.getInt("quantity"), resultSet.getDouble("price"));
data.add(line);
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
return data;
}
}
```
接下来,我们需要实现查询、增、删、改等功能。您提到了可以在键盘上输入1、2、3实现,因此我们可以使用Scanner类读取用户输入,根据不同输入实现不同功能。以下是一个简单的菜单界面和查询、增、删、改功能的示例代码:
```java
public class Main {
private static final int QUERY = 1;
private static final int ADD = 2;
private static final int DELETE = 3;
private static final int UPDATE = 4;
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("0. 退出");
int choice = scanner.nextInt();
if (choice == 0) {
break;
}
switch (choice) {
case QUERY:
queryData();
break;
case ADD:
addData();
break;
case DELETE:
deleteData();
break;
case UPDATE:
updateData();
break;
default:
System.out.println("无效选择");
break;
}
}
scanner.close();
}
// 查询数据
private static void queryData() {
List<String> data = getFileData(); // 或者 MysqlStorage.queryData()
for (String line : data) {
System.out.println(line);
}
}
// 增加数据
private static void addData() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入货物编号:");
int id = scanner.nextInt();
System.out.println("请输入货物名称:");
String name = scanner.next();
System.out.println("请输入货物数量:");
int quantity = scanner.nextInt();
System.out.println("请输入货物价格:");
double price = scanner.nextDouble();
String line = String.format("%d %s %d %f", id, name, quantity, price);
addToFile(line); // 或者 MysqlStorage.addData(id, name, quantity, price)
System.out.println("成功添加一条记录");
}
// 删除数据
private static void deleteData() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除的货物编号:");
int id = scanner.nextInt();
boolean success = false;
List<String> data = getFileData(); // 或者 MysqlStorage.queryData()
for (int i = 0; i < data.size(); i++) {
String line = data.get(i);
if (line.startsWith(String.valueOf(id))) {
data.remove(i);
success = true;
break;
}
}
if (success) {
writeToFile(data); // 或者 MysqlStorage.deleteData(id)
System.out.println("成功删除一条记录");
} else {
System.out.println("未找到对应记录");
}
}
// 修改数据
private static void updateData() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的货物编号:");
int id = scanner.nextInt();
boolean success = false;
List<String> data = getFileData(); // 或者 MysqlStorage.queryData()
for (int i = 0; i < data.size(); i++) {
String line = data.get(i);
if (line.startsWith(String.valueOf(id))) {
System.out.println("请输入新的货物名称:");
String name = scanner.next();
System.out.println("请输入新的货物数量:");
int quantity = scanner.nextInt();
System.out.println("请输入新的货物价格:");
double price = scanner.nextDouble();
String newLine = String.format("%d %s %d %f", id, name, quantity, price);
data.set(i, newLine);
success = true;
break;
}
}
if (success) {
writeToFile(data); // 或者 MysqlStorage.updateData(id, name, quantity, price)
System.out.println("成功修改一条记录");
} else {
System.out.println("未找到对应记录");
}
}
// 从文件读取数据
private static List<String> getFileData() {
return FileStorage.readFromFile();
}
// 向文件增加数据
private static void addToFile(String line) {
List<String> data = getFileData();
data.add(line);
writeToFile(data);
}
// 向文件写入数据
private static void writeToFile(List<String> data) {
FileStorage.writeToFile(data);
}
}
```
以上代码示例中的方法名和参数可能需要根据您的具体需求进行调整,但是整体思路应该是类似的。由于篇幅有限,我无法在这里详细解释每一行代码的含义,但是希望这份代码示例能够帮助您理解如何实现仓储信息管理系统。
阅读全文