AI:智谱清言
目录
一、系统项目概述(刘思妍 202321336070)
该项目是一个基于控制台界面的简单商城系统,该商城系统提供了用户管理、商品管理和购物车管理功能,允许用户查看商品列表、添加商品到购物车、查看购物车中的商品并移除商品,以及登录和注册账户以管理个人信息。
二、商城思维导图(李彤 202321336069)

三、项目结构(刘思妍 202321336070)

1.模型层(model)
- User.java:
- 账户名:用于唯一标识用户,通常作为登录凭证。
- 密码:用户的登录密码,用于保护账户安全。
- 该类封装了用户的基本信息,为服务层提供数据模型支持。
- Product.java:
- 商品名称:商品的名称,用于展示给用户。
- 价格(BigDecimal):使用 BigDecimal 类型存储价格,确保了货币计算的精确性,避免了浮点数计算误差。
- 商品id:唯一标识一个商品。
- 商品类别:用于分类商品,便于管理和查询。
- 商品描述:提供商品的详细描述,帮助用户了解商品特性。
- 该类定义了商品的数据结构,为商品管理提供基础。
- Cart.java:
- 该类定义了购物车的结构,通常包含用户所选商品及其数量的映射。
用于在用户购物过程中临时存储商品信息。
- 该类定义了购物车的结构,通常包含用户所选商品及其数量的映射。
2.服务层(services)
- UserService.java:
- 包含注册、登录等与用户账户相关的业务逻辑。
- ProductService.java:
- 包含按id查询商品、展示商品列表等与商品相关的业务逻辑。
- CartService.java:
- 包含添加商品到购物车、从购物车移除商品等与购物车相关的业务逻辑。
3.系统层(system)
- 主程序(Main.java)
- 启动应用,负责初始化必要的组件和服务。
3.控制器层(controllers)
- UserController.java:
- 处理用户注册、登录等请求。
- 调用UserService提供的服务,实现用户相关的功能。
- ProductController.java:
- 处理商品查询、展示等请求。
- 调用ProductService提供的服务,实现商品相关的功能。
- CartController.java:
- 处理添加商品到购物车、查看购物车、删除购物车中的商品、结算等请求。
- 调用CartService提供的服务,实现购物车相关的功能。
四、功能描述(李彤 202321336069)
1.菜单展示

2.用户注册和登录
用户注册登陆成功以后就可以进行购物


3.浏览商品
在这里用户可以浏览购物车中所有的商品及其的价格,库存等信息。


4.购物车管理
用户可以进行添加,删除,更新购物车里的东西。

五、技术亮点(李彤 202321336069)
- 封装性:通过私有属性和公共方法,保证了数据的安全性和类的易用性。
- 代码复用:通过继承和接口,实现了代码的复用,如 Constants.java 和 Validator.java。
- 输入验证:Validator.java 提供了输入验证功能,确保了系统的健壮性。
六、代码(刘思妍 202321336070)
- main.java
public class Main {
private static UserService userService = new UserService();
private static ProductService productService = new ProductService();
private static ShoppingCart shoppingCart = productService.getShoppingCart();
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("欢迎使用商城系统!");
User currentUser = null;
while (true) {
System.out.println("请选择操作:1. 登录 2. 注册 3. 退出 4. 显示商品列表并添加到购物车 5. 显示购物车并移除商品");
String operation = scanner.nextLine();
switch (operation) {
case "1":
currentUser = login();
break;
case "2":
register();
break;
case "3":
System.out.println("感谢使用,再见!");
return;
case "4":
displayProductsAndAddToCart();
break;
case "5":
displayShoppingCartAndRemoveItems();
break;
default:
System.out.println("无效的操作,请重新选择。");
}
}
}
// ... [其他方法,如 login() 和 register()]
private static User login() {
System.out.println("请输入用户名:");
String username = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
User user = userService.login(username, password);
if (user != null) {
System.out.println("登录成功!欢迎, " + user.getUsername());
// 登录成功后的操作
return user;
} else {
System.out.println("登录失败,用户名或密码错误。");
return null;
}
}
private static void register() {
System.out.println("请输入用户名:");
String username = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
boolean success = userService.register(username, password);
if (success) {
System.out.println("注册成功!");
} else {
System.out.println("注册失败,用户名已存在或输入无效。");
}
}
private static void displayProductsAndAddToCart() {
System.out.println("以下是商品列表:");
for (Product product : productService.getAllProducts()) {
System.out.println(product + " 库存: " + product.getStock());
}
System.out.println("请输入要添加到购物车的商品ID,或输入0返回主菜单:");
int productId = Integer.parseInt(scanner.nextLine());
if (productId != 0) {
Product productToAdd = productService.getProductById(productId);
if (productToAdd != null && productToAdd.getStock() > 0) {
productService.addToCart(productToAdd);
System.out.println("商品已成功添加到购物车!");
} else if (productToAdd.getStock() <= 0) {
System.out.println("商品库存不足。");
} else {
System.out.println("商品ID不存在。");
}
}
}
private static void displayShoppingCartAndRemoveItems() {
if (shoppingCart.getItems().isEmpty()) {
System.out.println("购物车为空。");
return;
}
System.out.println("购物车中的商品:");
for (Product item : shoppingCart.getItems()) {
System.out.println(item);
}
System.out.println("请输入要从购物车移除的商品ID,或输入0返回主菜单:");
int productId = Integer.parseInt(scanner.nextLine());
if (productId != 0) {
Product productToRemove = productService.getProductById(productId);
if (productToRemove != null) {
productService.removeFromCart(productToRemove);
System.out.println("商品已从购物车中移除!");
} else {
System.out.println("商品ID不存在或不在购物车中。");
}
}
}
}
- 用户管理
public class UserService {
private Map<String, User> users;
public UserService() {
users = new HashMap<>();
// 初始化一个用户数据
User user = new User(1, "testUser", "password");
user.addAddress("home", "123 Main St");
users.put("testUser", user);
}
public boolean register(String username, String password) {
if (!Validator.validateUsername(username) || !Validator.validatePassword(password)) {
return false;
}
if (users.containsKey(username)) {
return false;
}
User newUser = new User(users.size() + 1, username, password);
users.put(username, newUser);
return true;
}
public User login(String username, String password) {
User user = users.get(username);
if (user != null && user.getPassword().equals(password)) {
return user;
}
return null;
}
// 添加更多用户管理相关的方法
}
- 商品管理模块
public class ProductService {
private List<Product> products;
private ShoppingCart shoppingCart;
public ProductService() {
products = new ArrayList<>();
shoppingCart = new ShoppingCart();
// Initialize some product data
products.add(new Product(1, "Java编程思想", 89.00, Constants.CATEGORY_BOOK, 10));
products.add(new Product(2, "Effective Java", 79.00, Constants.CATEGORY_BOOK, 10));
products.add(new Product(3, "iPhone 13", 6999.00, Constants.CATEGORY_PHONE, 5));
products.add(new Product(4, "华为 P50", 5999.00, Constants.CATEGORY_PHONE, 3));
}
public List<Product> getAllProducts() {
return products;
}
public Product getProductById(int id) {
for (Product product : products) {
if (product.getId() == id) {
return product;
}
}
return null;
}
public void addToCart(Product product) {
if (product.getStock() > 0) {
shoppingCart.addItem(product);
product.setStock(product.getStock() - 1); // Deduct stock
} else {
System.out.println("商品 " + product.getName() + " 库存不足。");
}
}
public void removeFromCart(Product product) {
shoppingCart.removeItem(product);
product.setStock(product.getStock() + 1); // Add stock back
}
public ShoppingCart getShoppingCart() {
return shoppingCart;
}
}
-购物车
public class ShoppingCart {
private List<Product> items;
public ShoppingCart() {
items = new ArrayList<>();
}
public void addItem(Product product) {
items.add(product);
}
public void removeItem(Product product) {
items.remove(product);
}
public List<Product> getItems() {
return items;
}
public double getTotalPrice() {
double total = 0.0;
for (Product item : items) {
total += item.getPrice();
}
return total;
}
}
1662

被折叠的 条评论
为什么被折叠?



