任务 | 姓名 |
---|---|
编码规范、前期调查与功能设计 | 陈垚嘉 |
面向对象设计、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());
}
}