第1次任务:购物车程序的面向对象设计

团队介绍

          任务姓名
面向对象、代码规范、shopMall类、menu类、Cart类、Commodity类组长:林金楠
前期调查与功能设计、博客制作、Main类周伟垲

本次作业内容

       本次作业要求在观察某个网络商城后,经过调查,思索其构成,进行面向对象的设计,然后根据调查所得自制一个简易的购物车小程序。

本次作业目标

  • 学会使用讲故事的方式找到系统中可能包含的类、属性、方法。
  • 思考方法、属性应放在哪个类中,哪些属性与方法可以设置为static或非static。
  • 理解类、封装、模块化之间的关系。

一、前期调查

1.我们以京东商城为例,进行了调查,如上图所示,进入页面时,有各种商品的展示。

2.并且有搜索商品的功能,通过搜索商品的名称可以找到商品,如下图所示。

3.在我们点进商品的界面时,有商品的信息,如价格,并且能够加入我们的购物车中。如下图所示。 

 4.我们从下方的小菜单中进入了购物车,购物车中有各个商品购买的数量,价格,商品总价等,同时用户能够增加或减少商品数量,删除商品。如下图所示。

 总流程:顾客可以先浏览商品也可以直接进行商品的搜索,然后可以将浏览或者搜索的商品加入购物车中,最后通过购物车生成购物清单,并且可直接在购物车进行所购买商品的修改。

二、实现功能

经过讨论,我们将实现商品的浏览与搜索、商品加入购物车、购物清单的形成与商品增删。

三、系统功能设计

设计结构图

 

四、UML类图 

 

五、介绍

1.数据存储方式:内存

2.界面:GUI

3.开发工具:Eclipse

六、功能测试

1.购物商品的浏览功能(程序运行商品就进行展示):

  

 2.商品的搜索功能(通过输入商品的ID来进行商品的查询,并有查询后购买商品的功能)

3.商品的购买功能(用户可直接进行商品的购买,输入购买商品的ID与要购买的商品数量,若ID不存在则显示“无此商品”,同时购物车清单增加所购买商品信息)

4.购物车功能(购买商品的清单和总价、购买商品的增删、购买商品的清空)

(1)商品的清单和总价(可以看到购物车已有商品、数量、总价)(我又购买了数量为12的苹果)

 

(2)商品增减删(增减:输入商品ID及商品要变成的数量即可完成增减)(删:根据商品ID进行删除,若购物清单无输入ID则不能进行删除)

 

 

 (3)商品的清空

 七、关键代码

1.Cart类

package shopping;
import java.util.ArrayList;
public class Cart {
	
	    private ArrayList<ItemEntry> items = new ArrayList<>();//存放商品的容器
   
	    public ArrayList<ItemEntry> getItems() {
			return items;
		}
		public void setItems(ArrayList<ItemEntry> items) {
			this.items = items;
		}
		
		 public boolean isEmpty()//判断购物车是否为空
		    {
		    	return items.isEmpty();
		    }
	
		 private int findById(int id) {//通过id返回商品在数组中对应的下标
		        int index = -1;
		        if (items.size() > 0) {
		            for (int i = 0; i < items.size(); i++) {
		                if (items.get(i).item.getId() == id)
		                    index = i;
		            }
		        }
		       
		        return index;
		    }
		 
	    public void add(Commodity item,int amount) {//把商品添加到购物车,且商品唯一确定
	    	int flag=1;
	    	for (ItemEntry e : items) {
				if(e.item.getId()==item.getId())
				{
					flag=0;
				}
			}
	    	if(flag==1)
	    	{
	    		 items.add(new ItemEntry(item));
	    		 items.get(items.size()-1).piece=amount;
	    	}
	       
	    }
	    
	    
	    public boolean remove(int id) {//删除商品
	      
	        int index = findById(id);
	        if (index == -1) {// 未找到
	            return false;
	        } else {
	                this.items.remove(index);
	        }
	        return true;
	    }
	    
	    public void modifyCommodity(int id,int modifyAmount)
	    {
	    	if(findById(id)==-1)
	    	{
	    	System.out.println("您输入的id不存在!!");
	    	}
	    	else
	    	{
	    		items.get(findById(id)).piece=modifyAmount;
	    	}
	    }
	    
	    public void clearCart()
	    {
	    	items.clear();
	    }
	  
	   
	    public double checkout() {//结算
	        double x = 0;
	        for (ItemEntry e : items) {
	           x+=e.item.getPrice()*e.piece;
	        }
	        return x;
	    }
	   
	   //展示购物车商品
	    public void show() {
	    	System.out.println("**************************************************************************");
	    	System.out.println("您购买的商品如下:");
	        for (ItemEntry e : items) {
	        	 System.out.printf("name: %-18s, price: %-15f,id: %-15d,amout: %-15d", e.item.getName(), e.item.getPrice(),e.item.getId(),e.piece);
	            System.out.println();
	        }
	    }

	  
	  public class ItemEntry {//Cart 里的类
		    private Commodity item;
		    private int piece;

	        public ItemEntry(Commodity item) {
	            this.item = item;
	            piece = 1;
	        }

	    }
	

	}



2.shopMall类

package shopping;

import java.util.ArrayList;

public class shopMall {
	
	private ArrayList<Commodity> commodities = new ArrayList<>();

	{// 初始化块
		commodities.add(new Commodity("苹果", 2.3));
		commodities.add(new Commodity("苹果", 10.48));
		commodities.add(new Commodity("乒乓球拍", 100));
		commodities.add(new Commodity("联想电脑", 7000));
		commodities.add(new Commodity("充电宝", 100));
		commodities.add(new Commodity("游戏机", 2000));
		commodities.add(new Commodity("电脑支架", 30));
		commodities.add(new Commodity("java教程", 300.99));
		commodities.add(new Commodity("保温杯", 500));
		commodities.add(new Commodity("牛仔裤", 200));
	}

	static {
		System.out.println("Welcome to this app!");
	}

	public ArrayList<Commodity> getArr() {//setter.getter
		return commodities;
	}
	public void setArr(ArrayList<Commodity> arr) {
		this.commodities = arr;
	}

	public void disC() {//展示仓库的货物
		for (Commodity e : commodities) {
			System.out.printf("name: %-10s price: %-18f id: %-7d", e.getName(), e.getPrice(), e.getId());
			System.out.println();
		}
	}

	public void searchName(String name) {//按名称搜索并展示
		int flag = -1;
		for (Commodity e : commodities) {
			if (name.equals(e.getName())) {
				System.out.printf("name: %-18s price: %-18f id: %-7d", e.getName(), e.getPrice(), e.getId());
				System.out.println();
				flag = 1;

			}
		}

		if (flag == -1) {
			System.out.println("查无此商品");
		}

	}

	public Commodity searchId(int n) {//按商品id搜索

		for (Commodity e : commodities) {
			if (e.getId() == n) {
				return e;
			}
		}
		return null;

	}

}

3.Commodity类

package shopping;

public class Commodity {
	private String name;
	private double price;
	private int id;
	private static int count=0;
	
	
	{
		this.id=count;
		Commodity.count++;
	}

	public Commodity(String name, double price) {
		this.name = name;
		this.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;
	}
}


 

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值