面向对象大作业1-购物车

发布时间:2022-07-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了面向对象大作业1-购物车脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

0.人员分工

任务 姓名
编码规范、前期调查与功能设计 陈倩
面向对象设计、PPT制作或博客制作 包琪琪

 

 

 

 

1.前期调查

面向对象大作业1-购物车

 

 

 

面向对象大作业1-购物车

 

 

面向对象大作业1-购物车

 

 调查结果显示购物车程序所能实现的功能大致有:

1.购物车中的商品属性包括名称、单价、编号,且满足商品的增加、删除、结算等功能(即清空购物车等);

2.在购物车中能显示总价。

 

 

2.系统功能结构图

面向对象大作业1-购物车

 

 

 

 

3.UML类图

 

面向对象大作业1-购物车

 

 

4.本系统对面向对象的封装性的体现(体现了继承与多态):

我们在编写程序时,有一些方法的接口可能会被他人利用,这样的话,我们不想让他人做的事就可能会通过这些接口来实现,或者不想让他人看到的信息就可以被外界看到。所以,我们需要将一些方法改为”private",仅类内程序能够调用,在想办法在从内部调用的基础上让外部可以在可控范围内操作,简单一点来说就是建立一道门将我们的方法保护起来,比如说本程序的下列代码,因为list()方法写的太烂,我不想让用户看到这个方法,那么我可以将这个方法设置为private,外部只能通过调用showList()方法来看到我的商品架,从而向用户隐藏了list()这个方法。

面向对象大作业1-购物车

 

 

 

面向对象大作业1-购物车

 

 

5.项目包结构与关键代码:项目的包结构(为什么要这样设计包结构),主要功能(如网购物车添加、删除商品)的流程图与关键代码。

1.查看购物车(可以看到购物车中已有的商品、数量、及其金额)(在这里我添加了卡西欧手表、SNH48徽章、外星人高端游戏本,数量都为1)

面向对象大作业1-购物车

 

 

2.删除购物车中的商品

 

面向对象大作业1-购物车

 

 3.增加购物车中的商品

面向对象大作业1-购物车

 

 4.结算购物车

面向对象大作业1-购物车

 

 5.Shop包

Product类

package Shop;

public class Product {

    private int id;// 商品编号
    private String name;// 商品名称
    private double price;// 单价

    public Product(int id, String name,double price) {
        this.id = id;
        this.name = name;
        this.price = price;
}
    @Override
    public String toString() {
        return "Product [id=" + id + ", name=" + name + ", price=" + price + "]";
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    

}

ProductItem类

 

package Shop;

public class ProductItem {
    private Product product;//购买的商品
    private int count;//商品数量

    public ProductItem() {
    }
 
    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;
    }
    public double totalMoney(){//小计
        double price=product.getPrice();//获取商品单价
        return price*count;
    }


}

ShoppingCart类

 

 

 

package Shop;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class ShoppingCart {
private static Map<Integer,ProductItem> map=new LinkedHashMap<Integer,ProductItem>();
    
    public void addProduct(Product p){//添加商品
        int productId=p.getId();
        if(map.containsKey(productId)){ //判断商品编号是否存在
            ProductItem productItem=map.get(productId);
            productItem.setCount(productItem.getCount()+1); //数量增加
        }else{
            map.put(productId, new ProductItem(p,1));//新增商品
        }
    }
    public static 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.getId()+",名称:"
            +product.getName()+",单价:"+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 static int addGoods(int choiceGoods, int choiceAddNumber) {
        // TODO Auto-generated method stub
        return 0;
    }
    public static void cleanGoods() {
        // TODO Auto-generated method stub
        
    }


}

Test类

package Shop;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        ShoppingCart cart = new ShoppingCart();
        Product p1 = new Product(1, "卡西欧手表", 890);
        Product p2 = new Product(2, "SNH48徽章", 48);
        Product p3 = new Product(3, "外星人高端游戏本", 18969);// 测试买两件商品的情况
        cart.addProduct(p1);
        cart.addProduct(p2);
        cart.addProduct(p3);
        cart.showAll();
        System.out.println("------------------------");
        System.out.println("请输入你要删除的商品编号:");
        int id=in.nextInt();
        boolean flag = cart.deleteProduct(id);
        if (flag) {
            System.out.println("编号为:" + id + "的商品删除成功!");
        } else {
            System.out.println("删除失败");
        }
        cart.showAll();
        System.out.println("------------------------");
        System.out.println("请输入你要修改的商品编号:");
        int id1=in.nextInt();
        System.out.println("请输入你要修改的商品数量:");
        int count=in.nextInt();
        boolean flag2 = cart.modifyProduct(id1, count);
        if (flag2) {
            System.out.println("编号为:" + id1 + "的商品修改成功!");
        } else {
            System.out.println("修改失败");
        }
        cart.showAll();
        System.out.println("总价为:" + cart.totalAllMoney());
    }

}

 

脚本宝典总结

以上是脚本宝典为你收集整理的面向对象大作业1-购物车全部内容,希望文章能够帮你解决面向对象大作业1-购物车所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: