(1)用户登录与注册 要求:提示用户输入用户名与密码进行账户登录,登录后方可进行其它操作。 (2)商品信息添加 要求:提示用户输入商品相关信息,用户输入完成后将数据添加至数据库中,若程序运行中出现异常,则对数据回滚。 (3)商品信息查询 要求:商品信息查询包含无条件查询、根据商品名称进行模糊查询、商品价格区间查询三种。 (4)商品信息修改 要求:提示用户输入要修改的商品信息,用户输入完成后将数据库中存放的数据修改为用户输入的数据。 (5)商品信息删除 要求:提示用户选择要删除的商品信息,用户选择后将数据库中相关数据删除。
时间: 2024-03-07 09:47:28 浏览: 68
这是一个比较完整的电商系统的需求,需要包括用户登录与注册、商品信息添加、商品信息查询、商品信息修改、商品信息删除这几个功能。下面是一个简单的Java示例代码,实现了以上需求:
```java
import java.sql.*;
import java.util.Scanner;
public class ECommerceSystem {
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/ecommerce";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "123456";
private static Connection conn = null;
private static Statement stmt = null;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean loggedIn = false;
while (!loggedIn) {
System.out.println("请输入用户名:");
String username = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
String sql = "SELECT * FROM user WHERE username='" + username + "' AND password='" + password + "'";
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
loggedIn = true;
System.out.println("登录成功!");
} else {
System.out.println("用户名或密码错误,请重新输入!");
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
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 option = scanner.nextInt();
scanner.nextLine();
switch (option) {
case 1:
addProduct();
break;
case 2:
queryProduct();
break;
case 3:
updateProduct();
break;
case 4:
deleteProduct();
break;
case 5:
System.exit(0);
default:
System.out.println("无效的选项,请重新选择!");
break;
}
}
}
private static void addProduct() {
Scanner scanner = new Scanner(System.in);
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
conn.setAutoCommit(false);
System.out.println("请输入商品名称:");
String name = scanner.nextLine();
System.out.println("请输入商品价格:");
double price = scanner.nextDouble();
scanner.nextLine();
System.out.println("请输入商品描述:");
String description = scanner.nextLine();
String sql = "INSERT INTO product (name, price, description) VALUES ('" + name + "', " + price + ", '" + description + "')";
stmt.executeUpdate(sql);
conn.commit();
System.out.println("商品信息已添加!");
stmt.close();
conn.close();
} catch (SQLException se) {
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
se.printStackTrace();
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException se) {
se.printStackTrace();
}
e.printStackTrace();
}
}
private static void queryProduct() {
Scanner scanner = new Scanner(System.in);
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
System.out.println("请选择查询方式:");
System.out.println("1. 无条件查询");
System.out.println("2. 根据商品名称进行模糊查询");
System.out.println("3. 商品价格区间查询");
int option = scanner.nextInt();
scanner.nextLine();
String sql = "SELECT * FROM product";
switch (option) {
case 1:
break;
case 2:
System.out.println("请输入商品名称关键词:");
String keyword = scanner.nextLine();
sql += " WHERE name LIKE '%" + keyword + "%'";
break;
case 3:
System.out.println("请输入价格范围(例如:10-20):");
String range = scanner.nextLine();
String[] parts = range.split("-");
double minPrice = Double.parseDouble(parts[0]);
double maxPrice = Double.parseDouble(parts[1]);
sql += " WHERE price BETWEEN " + minPrice + " AND " + maxPrice;
break;
default:
System.out.println("无效的选项,请重新选择!");
return;
}
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println("ID:" + rs.getInt("id"));
System.out.println("名称:" + rs.getString("name"));
System.out.println("价格:" + rs.getDouble("price"));
System.out.println("描述:" + rs.getString("description"));
System.out.println();
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void updateProduct() {
Scanner scanner = new Scanner(System.in);
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
conn.setAutoCommit(false);
System.out.println("请输入要修改的商品ID:");
int id = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入商品名称:");
String name = scanner.nextLine();
System.out.println("请输入商品价格:");
double price = scanner.nextDouble();
scanner.nextLine();
System.out.println("请输入商品描述:");
String description = scanner.nextLine();
String sql = "UPDATE product SET name='" + name + "', price=" + price + ", description='" + description + "' WHERE id=" + id;
int num = stmt.executeUpdate(sql);
if (num > 0) {
conn.commit();
System.out.println("商品信息已修改!");
} else {
System.out.println("无法找到指定的商品信息!");
}
stmt.close();
conn.close();
} catch (SQLException se) {
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
se.printStackTrace();
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException se) {
se.printStackTrace();
}
e.printStackTrace();
}
}
private static void deleteProduct() {
Scanner scanner = new Scanner(System.in);
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
conn.setAutoCommit(false);
System.out.println("请输入要删除的商品ID:");
int id = scanner.nextInt();
String sql = "DELETE FROM product WHERE id=" + id;
int num = stmt.executeUpdate(sql);
if (num > 0) {
conn.commit();
System.out.println("商品信息已删除!");
} else {
System.out.println("无法找到指定的商品信息!");
}
stmt.close();
conn.close();
} catch (SQLException se) {
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
se.printStackTrace();
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException se) {
se.printStackTrace();
}
e.printStackTrace();
}
}
}
```
解释:
- 首先,我们使用JDBC连接MySQL数据库,并定义了一些常量来表示数据库的连接信息。
- 在程序中,我们使用了Scanner类来从控制台读取用户输入。
- 用户登录与注册:在循环中,提示用户输入用户名和密码,然后使用JDBC查询数据库中是否有对应的用户信息。如果有,则登录成功,退出循环;否则,提示用户重新输入用户名和密码。
- 商品信息添加:提示用户输入商品名称、价格和描述,并将这些数据插入到数据库中。如果插入过程中出现异常,就将数据回滚。
- 商品信息查询:根据用户的选择,构造不同的SQL语句进行查询,并将查询结果输出到控制台。
- 商品信息修改:提示用户输入要修改的商品ID,然后再提示输入新的商品信息。根据ID更新数据库中对应的商品信息,并将修改结果输出到控制台。如果无法找到指定的商品信息,就提示用户。
- 商品信息删除:提示用户输入要删除的商品ID,然后根据ID删除数据库中对应的商品信息。如果无法找到指定的商品信息,就提示用户。
阅读全文