Git源碼
https://gitee.com/smyn77/caicai77.git
前期調查
系統功能結構圖
系統描述
該購物車系統提供了注冊登錄、增減商品等功能。用戶注冊賬號后,選擇登錄。登錄成功后,系統顯示菜單,菜單提供增加、刪除、修改商品和清空購物車功能。用戶通過菜單里的選項來完成相應功能。
UML類圖
關鍵代碼
商品類————描述商品的屬性(編號、名稱、分類、單價)
class Product {
private int productId;// 商品編號
private String productName;// 商品名稱
private String category;// 商品分類
private double price;// 單價
public Product(int productId, String productName, String category, double price) {
this.productId = productId;
this.productName = productName;
this.category = category;
this.price = price;
}
public String toString() {
return "Product [productId=" + productId + ", productName=" + productName + ", category=" + category
+ ", price=" + price + "]";
}
public int getProductId() {// 獲取商品編號
return productId;
}
public void setProductId(int productId) {
this.productId = productId;
}
public String getProductName() {// 獲取商品名字
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {// 設置種類
this.category = category;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {// 設置價格
this.price = price;
}
}
商品信息類————描述商品數量、總價
class ProductItem {
private Product product;// 購買的商品(包含商品編號,名稱,分類,單價)
private int count;// 商品數量
public double totalMoney() {// 小計
double price = product.getPrice();// 獲取商品單價
return price * count; // 獲取這個商品的總的價格
}
public ProductItem(Product product, int count) {
this.product = product;
this.count = count;
}
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
購物車類————描述用戶的購物車內容
class ShoppingCart {// 購物車
private Map<Integer, ProductItem> map = new LinkedHashMap<Integer, ProductItem>();
// 集合
public void addProduct(Product p, int count) {// 添加商品
int productId = p.getProductId();
if (map.containsKey(productId)) {// 如果購物車存在同樣的商品,則此對象的數量加一
ProductItem productItem = map.get(productId);
productItem.setCount(productItem.getCount() + count);
} else {
map.put(productId, new ProductItem(p, count));// 如果沒有,則在map容器里新建一個ProductItem
}
}
public void showAll() {// 查看訂單信息
Collection<ProductItem> productItems = map.values();
// 集合信息
Iterator<ProductItem> iterator = productItems.iterator();
// 迭代器
while (iterator.hasNext()) {
ProductItem productItem = iterator.next();
Product product = productItem.getProduct();
System.out.println("商品編號" + ":" + product.getProductId() + ", 商品名稱:" + product.getProductName() + ", 單價:"
+ product.getPrice() + ", 數量:" + productItem.getCount() + ", 小計:" + productItem.totalMoney());
}
}
public boolean deleteProduct(int productId) {// 刪除商品
if (map.containsKey(productId)) {
map.remove(productId);
return true;
}
return false;
}
public boolean modifyProduct(int productId, int count) {// 修改
if (map.containsKey(productId)) {
if (count >= 1) {
ProductItem productItem = map.get(productId);
productItem.setCount(count);
return true;
} else if (count == 0) {// 刪除該商品
deleteProduct(productId);
return true;
}
}
return false;
}
public void clearCart() {// 清空購物車
map.clear();
}
public double totalAllMoney() {// 商品總錢數
double total = 0;
Collection<ProductItem> productItems = map.values();
Iterator<ProductItem> iterator = productItems.iterator();
while (iterator.hasNext()) {
ProductItem productItem = iterator.next();
double money = productItem.totalMoney();
total += money;
}
return total;
}
public Map<Integer, ProductItem> getMap() {
return map;
}
public void setMap(Map<Integer, ProductItem> map) {
this.map = map;
}
}
菜單類————登錄界面
class Menu {
private static Map<Integer, Product> map = new LinkedHashMap<Integer, Product>();
static {// 商品編號// 商品名稱// 商品分類// 單價
Product p1 = new Product(1, "華碩筆記本", "筆記本", 4599);
Product p2 = new Product(2, "蘋果", "水果", 5.9);
Product p3 = new Product(3, "彩電", "家電", 2799);
Product p4 = new Product(4, "秋褲", "服裝", 128);
Product p5 = new Product(5, "華為手機", "手機", 2998);
map.put(p1.getProductId(), p1);
map.put(p2.getProductId(), p2);
map.put(p3.getProductId(), p3);
map.put(p4.getProductId(), p4);
map.put(p5.getProductId(), p5);
}
public static void showMenu() {
System.out.println("****歡迎來到青春有你514的購物系統****");
System.out.println("* [4]輸出商品菜單 *");
System.out.println("* [5]輸入所需商品 *");
System.out.println("* [6]刪除所需商品 *");
System.out.println("* [7]修改所需商品 *");
System.out.println("* [8]清空購物車 *");
System.out.println("* [9]返回登錄界面 *");
System.out.println("*************感謝光臨****************");
}
public static void showOption() {
System.out.println("編號1:華碩筆記本,單價為:4599");
System.out.println("編號2:蘋果,單價為:5.9");
System.out.println("編號3:彩電,單價為:2799");
System.out.println("編號4:秋褲,單價為:128");
System.out.println("編號5:華為手機,單價為:2998");
}
public static void inputOption(ShoppingCart cart) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你想要購買的商品編號及個數(以end為結束標志):");
while (sc.hasNextLine()) {
String s = sc.nextLine();
if (s.equals("end")) {
break;
} else {
String[] strings = s.split(" ");
int id = Integer.parseInt(strings[0]);
int count = Integer.parseInt(strings[1]);
Product p = map.get(id);
cart.addProduct(p, count);
}
}
System.out.println("***********用戶總加購的商品*****************");
cart.showAll();
System.out.println("商品總價錢為:" + cart.totalAllMoney());
System.out.println();
}
public static void deleteOption(ShoppingCart cart) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你想要刪除的商品編號:(以end為結束標志)");
while (sc.hasNextLine()) {
String s = sc.nextLine();
if (s.equals("end")) {
break;
} else {
int id = Integer.parseInt(s);
boolean flag = cart.deleteProduct(id);
if (flag) {
System.out.println("商品編號:" + id + "的商品刪除成功!");
} else {
System.out.println("商品編號" + id + "刪除失敗,購物車沒有該商品!!");
}
}
}
System.out.println("***********商品刪除信息*****************");
cart.showAll();
System.out.println("商品總價錢為:" + cart.totalAllMoney());
System.out.println();
}
public static void modifyOption(ShoppingCart cart) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你想要修改的商品編號及個數(以end為結束標志):");
while (sc.hasNextLine()) {
String s = sc.nextLine();
if (s.equals("end")) {
break;
} else {
String[] strings = s.split(" ");
int id = Integer.parseInt(strings[0]);
int count = Integer.parseInt(strings[1]);
boolean flag = cart.modifyProduct(id, count);
if (flag)
System.out.println("商品編號:" + id + "的商品修改成功!");
else
System.out.println("購物車中沒有該商品,修改失敗!!");
}
}
System.out.println("***********商品修改信息*****************");
cart.showAll();
System.out.println("商品總價錢為:" + cart.totalAllMoney());
System.out.println(" ");
}
public static void clearOption(ShoppingCart cart) {
cart.clearCart();
System.out.println("***********清空購物車*****************");
cart.showAll();
System.out.println("商品總價錢為:" + cart.totalAllMoney());
}
}
用戶類————用戶登錄的賬號、密碼、購物車
class User {
private int userID;
private String passWord;
private ShoppingCart cart;
private static int nextId = 1;
{
this.cart = new ShoppingCart();
this.userID = nextId++;
}
@Override
public String toString() {
String s = String.valueOf(userID);
return "userId = " + s + ",passWord = " + passWord;
}
public int getUserID() {
return userID;
}
public String getPassWord() {
return passWord;
}
public ShoppingCart getCart() {
return cart;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public void setCart(ShoppingCart cart) {
this.cart = cart;
}
}