用java和mysql写一个购物系统
时间: 2024-03-05 14:52:39 浏览: 17
好的,我可以为您提供一个简单的购物系统的Java代码,使用MySQL作为数据库。
首先,我们需要创建一个名为`shopping_system`的MySQL数据库,其中包含两个表,一个是`products`表,另一个是`orders`表。`products`表包含产品的名称,价格和库存,`orders`表包含订单号,产品名称,购买数量和总价格。
以下是Java代码的主要部分:
```java
import java.sql.*;
public class ShoppingSystem {
private Connection connection;
private Statement statement;
public ShoppingSystem() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/shopping_system", "root", "password");
statement = connection.createStatement();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
// 获取产品列表
public void getProducts() {
try {
ResultSet resultSet = statement.executeQuery("SELECT * FROM products");
while (resultSet.next()) {
String productName = resultSet.getString("name");
double price = resultSet.getDouble("price");
int stock = resultSet.getInt("stock");
System.out.println(productName + " - " + price + " - " + stock);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 添加订单
public void addOrder(int orderNum, String productName, int quantity) {
try {
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO orders(order_num, product_name, quantity, total_price) VALUES (?, ?, ?, ?)");
preparedStatement.setInt(1, orderNum);
preparedStatement.setString(2, productName);
preparedStatement.setInt(3, quantity);
double price = getProductPrice(productName);
double totalPrice = price * quantity;
preparedStatement.setDouble(4, totalPrice);
preparedStatement.executeUpdate();
// 更新产品库存
updateProductStock(productName, quantity);
} catch (SQLException e) {
e.printStackTrace();
}
}
// 获取产品价格
private double getProductPrice(String productName) {
double price = 0;
try {
ResultSet resultSet = statement.executeQuery("SELECT price FROM products WHERE name='" + productName + "'");
if (resultSet.next()) {
price = resultSet.getDouble("price");
}
} catch (SQLException e) {
e.printStackTrace();
}
return price;
}
// 更新产品库存
private void updateProductStock(String productName, int quantity) {
try {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE products SET stock=stock-? WHERE name=?");
preparedStatement.setInt(1, quantity);
preparedStatement.setString(2, productName);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
您可以根据需求进行修改和扩展。当您调用`getProducts()`方法时,会获取产品列表并打印出来;当您调用`addOrder()`方法时,会添加一个订单并更新产品库存。
请注意,这只是一个基本的示例,实际的购物系统可能需要更多的功能和更复杂的业务逻辑。