任務 | 姓名 |
---|---|
編碼規范、前期調查與功能設計 | 陳垚嘉 |
面向對象設計、PPT制作或博客制作 | 鄭俊佳 |
0前期調查
0.1調查收獲
每個商品都有自己獨有的編號、名字、單價等,這些就是商品類中的屬性
加入購物車的每個商品屬性是固定的,除了商品數量、單個商品項目小計,表示購物車中商品依賴於商品的屬性等信息
單個商品項目需要從商品類中提取有關商品信息,因此也將依賴於商品類中的信息
1.UML類圖:
2.系統功能結構圖
3.本系統哪里體現了面向對象的封裝性
例如:Product.java中:
public class Product {
private int productId;// 編號
private String productName;// 名稱
private String category;// 分類
private double price;// 單價
public Product() {
super();
}
public Product(int productId, String productName, String category,
double price) {
super();
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;
}
}
pubilc、private體現了面向對象的封裝性
商品的屬性、獲取商品屬性的方法、加載購物車商品的方法、購物車商品添加、刪除以及修改都可以體現面向對象的封裝性
4.項目包結構與關鍵代碼:
這樣創建項目包結構方便后期功能增添與修改
主要功能的流程圖
4.1添加商品:
關鍵代碼:
public void addProduct(Product p){//添加商品
int productId=p.getProductId();
if(map.containsKey(productId)){
ProductItem productItem=map.get(productId);
productItem.setCount(productItem.getCount()+1);
}else{
map.put(productId, new ProductItem(p,1));
}
}
4.2刪除商品:
關鍵代碼:
public boolean deleteProduct(int productId){//刪除商品
if(map.containsKey(productId)){
map.remove(productId);
return true;
}
return false;
}
4.3修改購物車商品信息:
關鍵代碼:
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;
}
4.4統計購物車消費總金額:
關鍵代碼:
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;
}
4.5展示消費賬單:
關鍵代碼:
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());
}
}