• Java 购物车大作业01


    0前期调查

    当我们需要购物时,我们需要搜索到平台上的商品,对其选择后知道其产品的各种属性比如说数量,单价,库存等等,再将其添加到购物车中。

    0.1调查收获

    在购物时,我们需要的产品需要通过搜索才能知道平台内各个产品的参数,所以我们可以创建一个动态数组来存放需要操作的商品名称。同时,我们可以利用这个数组来存放到时候需要删除的名单。
    购物车内的物品名称和数量是一一对应的,我们可以通过调出商品名称来确定此商品在购物车内的数量。同样的,我也是打算用动态数组来存放各个商品的名称。
    当我们将商品加入放进购物车时,平台中的库存也会相应的减少。
    当我们要结算时,我们需要将各个商品的名单打印出,并再次询问顾客是否需要修改购物车内各个商品的属性。
    当我们全部确定好后,我们便可以下单,并且清空购物车。

    1功能设计

    平台类:
    商品的添加,
    确定商品的名称,数量和单价。

    个人类:
    搜索商品,
    将商品添加至购物车,
    将商品从购物车移除,
    对商品的重新调整。

    2.UML类图:


    3.系统功能结构图及其系统描述

    4.本系统哪里体现了面向对象的封装性

    在 Product中

    public class Product {
    	private String name;
    	private Integer price;
    	private Integer num;
    	private String model;
    	public Product(String name,Integer price,Integer num)
    	{
    		this.name=name;
    		this.price=price;
    		this.num=num;
    	}
    	public String getModel() {
    		return model;
    	}
    	public void setModel(String model) {
    		this.model = model;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public Integer getPrice() {
    		return price;
    	}
    	public void setPrice(Integer price) {
    		this.price = price;
    	}
    	public Integer getNum() {
    		return num;
    	}
    	public void setNum(Integer num) {
    		this.num = num;
    	}
    	
    }
    

    将其各个属性设置成private,实现了保护当前类的某些属性和方法不被外部所见,用来实现该属性的get/set的方法,可以被外部访问。

    5.项目的包结构和关键代码

    项目的包结构:

    在整个项目执行时,包的区分可以使各个类的对应联系更加明确。

    关键代码

    产品类

    public class Product {
    	private String name;
    	private Integer price;
    	private Integer num;
    	private String model;
    	public Product(String name,Integer price,Integer num)
    	{
    		this.name=name;
    		this.price=price;
    		this.num=num;
    	}
    	public String getModel() {
    		return model;
    	}
    	public void setModel(String model) {
    		this.model = model;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public Integer getPrice() {
    		return price;
    	}
    	public void setPrice(Integer price) {
    		this.price = price;
    	}
    	public Integer getNum() {
    		return num;
    	}
    	public void setNum(Integer num) {
    		this.num = num;
    	}
    	
    }
    

    购物车有关的类

    public class ShoppingCart {
    	static ArrayList<NeedName> list=new ArrayList<>();
    	static Integer i = 0;
    	
    	public static void add(String needName,Integer needNum){
    		Iterator<NeedName> iterator=list.iterator();
    		int flag = 0;
    		while(iterator.hasNext()) {
    			NeedName temp=iterator.next();
    			if(temp.getNeedName().equals(needName)) {
    				NeedNum num = new NeedNum(needNum+temp.getNeedNum().getNeedNum());
    				temp.setNeedNum(num);
    				flag=1;
    				break;
    			}
    		}
    		if(flag==0) {
    			NeedName name=new NeedName(needName);
    			NeedNum num=new NeedNum(needNum);
    			name.setNeedNum(num);
    			list.add(name);	
    		}
    		flag=0;
    	}
    	
    	public static int numGet(String name) {
    		int num=0;
    		Iterator<NeedName> iterator=list.iterator();
    		while(iterator.hasNext()) {
    			NeedName temp = iterator.next();
    			if(temp.getNeedName().equals(name))
    				num=temp.getNeedNum().getNeedNum();
    		}
    		return num;
    	}
    	
    	public static void delete(String name,Integer num) {
    		Iterator<NeedName> iterator=list.iterator();
    		while(iterator.hasNext()) {
    			NeedName temp = iterator.next();
    			if(temp.getNeedName().equals(name)) {
    				temp.getNeedNum().setNeedNum(temp.getNeedNum().getNeedNum()-num);
    				if(temp.getNeedNum().getNeedNum()==0)
    					iterator.remove();
    				break;
    			}
    		}
    	}
    	
    	public static void remove(String name) {
    		Iterator<NeedName> iterator=list.iterator();
    		while(iterator.hasNext()) {
    			NeedName temp=iterator.next();
    			if(temp.getNeedName().equals(name)) {
    				for(int i=0;i<Platform.getKind();i++) {
    					if(name.equals(Platform.p[i].getName())) {
    						Platform.p[i].setNum(Platform.p[i].getNum()+temp.getNeedNum().getNeedNum());
    						Person.sumPrice.deleteSumPrice(ShoppingCart.numGet(name)*Platform.p[i].getPrice());
    						break;
    					}
    				}
    				iterator.remove();
    			}
    		}
    	}
    

    平台有关的类

    public class Platform {
    	private static int kind;
    	public static Product[] p;
    	public static int getKind() {
    		return kind;
    	}
    	public static void setKind(int kind) {
    		Platform.kind = kind;
    	}
    	
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		System.out.println("卖家您好,请输入您可以出售商品的种类数目");
    		Platform.kind=sc.nextInt();
    		System.out.println("请分别输入您所有商品的名称,单价和数量:");
    		p=new Product[kind];
    		for(int i=0;i<kind;i++)
    		{
    			p[i]=new Product(sc.next(),sc.nextInt(),sc.nextInt());
    		}
    	}
    }
    
  • 相关阅读:
    进程&线程
    PLAN
    Note-Virus
    编译器 CL.EXE / RC.EXE
    windows API
    centos6.5系统中yum命令出错
    VMware Workstation10 下安装 CentOS6.5( 安装图文教程 )
    Linux下网络能ping通地址 但是ping不通域名
    MySQL数据库优化的八种方式(经典必看)
    Java中常见的对象类型简述(DO、BO、DTO、VO、AO、PO)
  • 原文地址:https://www.cnblogs.com/13859862647z/p/15374744.html
Copyright © 2020-2023  润新知