JAVA大作业-购物车 (持续更新)

前言

团队成员:连剑彬
环境:Eclipse IDE
介绍:这是第一次大作业,主要目标是用JAVA语言实现最基本的购物车系统

前期调查

基本的浏览商品功能,可以根据价格来排序
基本的浏览商品功能,可以根据价格来排序
在购物车内部具有展示(显示总价),修改以及删除功能
在购物车内部具有展示(显示总价),修改以及删除功能商品的购物车入口
总流程:顾客先按照自己喜好浏览商品,然后可以将浏览或者搜索的商品加入购物车中,并且可在购物车进行所购买商品的修改

效果展示

在这里插入图片描述
在这里插入图片描述

系统功能设计

  • 设计结构图

在这里插入图片描述

  • UML类图

在这里插入图片描述

类的结构

1.秉持低内聚,高耦合的基本思想,本题代码被分为总共5个包(这些包有交叉使用的情况。并不严谨,所以这分包仅是将作用相似的类放在一起):
![](https://img-blog.csdnimg.cn/bf3e773a84734d27a98bde4b2884f9f2.png![在这里插入图片描述](https://img-blog.csdnimg.cn/d62a50176530485caa6c84612cb9e87e.png

cart: 存放购物车的包,包含一个CartDao接口类和一个对应的实现类,接口展示:
在这里插入图片描述
commodity: 存放商品相关的类。包含基本的商品类Commdity,商品条目类Entry,三个比较器(用于排序浏览商品时的商品列表)

  • Commodity属性展示
    在这里插入图片描述
  • Entry属性展示
    在这里插入图片描述

io: 包含关于界面输出以及用户交互的相关类。包含接口类MenuDao,负责交互操作的类Option,以及MenuDao对应的实现类

  • MenuDao接口展示
    在这里插入图片描述
  • MenuDaoInConsole部分展示
    在这里插入图片描述

warsehouse: 包含仓库的相关类,包含DAO接口类WarseHouse以及对应的实现类WarseHouseConsoleImpl

  • WarseHouseDao接口展示
    在这里插入图片描述

2.代码展示:

public static void cartMenuOption(CartDao cart) {
		while (sc.hasNextLine()) {
			switch (sc.next()) {
			case "1":
				cart.show();
				menu.cartMenu();
				break;
			case "2":
				System.out.println("请输入它的名称(或序号)与数量");
				String str1 = sc.next();
				int num = sc.nextInt();
				if (!cart.addCommodity(str1, num))// 先尝试删除对应名称的商品,找不到商品时则改为尝试对应序号的商品
				{
					if (!cart.addCommodity(Integer.valueOf(str1), num)) {
						System.out.println("    找不到对应商品");
					} else
						System.out.println("    修改成功");
				}
				menu.cartMenu();
				break;
			case "3":
				System.out.println("请输入它的序号或名称");
				String str2 = sc.next();
				if (!cart.delete(str2))// 先尝试删除对应名称的商品,找不到商品时则改为尝试对应序号的商品
				{
					if (!cart.delete(Integer.valueOf(str2))) {
						System.out.println("    找不到对应商品");
					} else
						System.out.println("    删除成功");
				} else
					System.out.println("    删除成功");
				menu.cartMenu();
			case "4":
				menu.mainMenu();
			case "0":
				System.out.println("\n    感谢使用    ");
				System.exit(0);
			default:
				System.out.println("***输入错误,请再次输入***");
			}
		}
	}

# 错误分析
在进行输入时,一开始是使用下述的方法读取输入,但会遇到“NoSuchElementException”的错误提示
```javascript
		Scanner sc = new Scanner(System.in);
		String option = sc.next();
		char option = sc.nextLine().charAt(0);
		switch(option)

后来经过多番尝试,发现是因为我在多个函数中使用这一段代码,多次的new Scanner和close过程中,上一个方法把Scanner 给close了,而下一次new却因为某种原因没有执行,导致sc.nextLine()找不到对象。最后改成了下列代码:

		Scanner sc = new Scanner(System.in);
		String option = sc.next();
		switch(option)

改进方向

1.对商品价格的double类型进行修改
2.俩个类的show部分都涉及到控制台,努力寻找修改方向中
3.商品可以作为多种产品的共同父类,可以建立多种产品类作为Commodity的子类,实现对产品的精准分类
4.额外添加账户系统,对商品清单进行增删改查。另外,这次的商品清单是没有库存概念的,后续可以加上。
5.在账户系统的基础上实现用文件存储购物车
6.可视化界面的实现。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值