任务 姓名
编码规范、前期调查与功能设计 陈垚嘉
面向对象设计、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());
        }
    }
posted on 2021-10-04 20:46  jioky  阅读(296)  评论(0编辑  收藏  举报