Java大作业-第1次任务-面向对象设计(购物车)

Java购物车大作业

目录

  • 0.人员分工
  • 1.前期调查
  • 2.系统功能结构图
  • 3.系统描述
  • 4.UML类图
  • 5.本系统哪里体现了面向对象的封装性。
  • 6.项目包结构与关键代码:项目的包结构(为什么要这样设计包结构),主要功能(如往购物车添加、删除商品)的流程图与关键代码。
      • 项目的包结构:
      • 1.往购物车添加商品
      • 2.往购物车删除商品
      • 3.结算订单:

  • 学会使用讲故事的方式找到系统中可能包含的类与属性
    进入京东界面,可以根据需要进行搜索商品,比如我想买螺蛳粉,通过搜索螺蛳粉关键词,就会出现了很多商品供我选择,点进去其中一个可以看到该商品的一些基本属性,比如价格商品编号等。假设我就想买这种螺蛳粉,就把它添加购物车,点击进入购物车,就可以看到商品的相关订单条目信息,我们还可以修改该商品的数量减少或者增加),对应的价格也会发生相应的变化,我们还可以进行清空购物车操作、全选购物车里所有的商品进行结算或者选择部分的商品进行结算。

0.人员分工

任务 姓名
前期调查 、博客制作 吴慧敏
面向对象设计、功能设计 骆念念

1.前期调查

  1. 搜索商品:
    Java大作业-第1次任务-面向对象设计(购物车)_第1张图片
    Java大作业-第1次任务-面向对象设计(购物车)_第2张图片
    Java大作业-第1次任务-面向对象设计(购物车)_第3张图片

  2. 加入购物车
    Java大作业-第1次任务-面向对象设计(购物车)_第4张图片

  3. 操作购物车
    Java大作业-第1次任务-面向对象设计(购物车)_第5张图片

  4. 展示所有的商品信息给用户,供用户选择(因为商品搜索还没解决,所以采用创建一些商品对象来供用户选择,用户只能在这些商品中选择要购买的)
    Java大作业-第1次任务-面向对象设计(购物车)_第6张图片

2.系统功能结构图

Java大作业-第1次任务-面向对象设计(购物车)_第7张图片
Java大作业-第1次任务-面向对象设计(购物车)_第8张图片

Java大作业-第1次任务-面向对象设计(购物车)_第9张图片
Java大作业-第1次任务-面向对象设计(购物车)_第10张图片
Java大作业-第1次任务-面向对象设计(购物车)_第11张图片

Java大作业-第1次任务-面向对象设计(购物车)_第12张图片
Java大作业-第1次任务-面向对象设计(购物车)_第13张图片
Java大作业-第1次任务-面向对象设计(购物车)_第14张图片

3.系统描述

提供搜索引擎目前有点还没解决。索性我们就只创建一些商品对象,只有这些商品可供用户选择。
系统打印展示出所有可选择的商品信息(商品名、单价、商品编号、商品类型)以及菜单界面(各种功能的选择),然后根据现有的商品的ID,可以将对应ID的商品加入到我的购物车里,也可以删除(减少)商品。可以显示购物车里的商品信息,即查看购物车,能清空购物车里的所有商品;能结算购物车里的所有商品,也能结算我所选择的部分商品,并且在结算完后清除相应的信息,算出最终的要支付的价格

4.UML类图

Java大作业-第1次任务-面向对象设计(购物车)_第15张图片
Java大作业-第1次任务-面向对象设计(购物车)_第16张图片

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

Java大作业-第1次任务-面向对象设计(购物车)_第17张图片

  • pubilc、private体现了面向对象的封装性:
    我们需要避免用户再次使用“对象.属性”的方式对属性进行赋值,则需要将商品属性声明为私有的(private),此时,针对于属性就体现了封装性。
    提供公共的(public)方法来获取(getXXX)和设置(setXXX)此属性的值。比如展示商品信息,搜索商品信息这些方法,可以设置成public属性,供其他包调用这些方法,使功能更完善。对于购物车这一对象,添加、删除商品与获得购物车订单条目类,清空、修改购物车内的商品,获得商品ID,生成订单等方法设置成public属性,这些都可以体现面向对象的封装性。

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

项目的包结构:

Java大作业-第1次任务-面向对象设计(购物车)_第18张图片
设计原因:这样设计包结构,可以方便后期功能增添与修改,能让我们的项目更好管理,让程序具有更高的可读性。

1.往购物车添加商品

  • 流程图:
    Java大作业-第1次任务-面向对象设计(购物车)_第19张图片
  • 关键代码:
// 寻找商品
	public int FinditemId(Integer id) {
		for (int i = 0; i < itemList.size(); i++) {
			if (itemList.get(i).getItem().getId().equals(id))
				return i;
		}
		return -1;
	}

	// 添加商品
	public void add(Commodity item) {
		if (item == null)
			return;
		int index = FinditemId(item.getId());
		if (index == -1) {

			itemList.add(new ItemEntry(item));
		}

		else {
			itemList.get(index).increase();
		}
	}

2.往购物车删除商品

  • 流程图:
    Java大作业-第1次任务-面向对象设计(购物车)_第20张图片

  • 主要代码;

// 删除商品
	public boolean remove(Integer id) {
		if (itemList.size() == 0) {
			System.out.println("购物车为空哦!");
			return false;
		}
		if (id == null)
			return false;
		int index = FinditemId(id);
		if (index == -1)// 没有找到
			return false;
		else {
			if (itemList.get(index).getQuantity() <= 1)
				itemList.remove(index);
			else {
				itemList.get(index).decrease();
			}
		}
		return true;
	}

3.结算订单:

  • 流程图:
    Java大作业-第1次任务-面向对象设计(购物车)_第21张图片
  • 主要代码:
//生成订单
    public void Generateorder() {
		System.out.println("请输入你要结算的订单数");
		Scanner sc=new Scanner(System.in);
		int number=sc.nextInt();
		double sum=0;
		int[] entry=new int[number];
		System.out.println("您要结算的订单为:");
		for(int i=0;i=itemList.size()) {
				System.out.println("你要结算的订单不在购物车哦!");
				return;
			}
			else {
				System.out.println(itemList.get(entry[j]));
				sum+=itemList.get(entry[j]).SumPrice;
			}
			}
		System.out.println("您需要支付"+sum);
		for (int i = 0; i < number; i++) {
			//System.out.println("1");
			itemList.remove(entry[i]-i);
		}
	}

你可能感兴趣的:(Java,java)