前言
团队成员:连剑彬
环境:Eclipse IDE
介绍:这是第一次大作业,主要目标是用JAVA语言实现最基本的购物车系统
前期调查
基本的浏览商品功能,可以根据价格来排序
在购物车内部具有展示(显示总价),修改以及删除功能
总流程:顾客先按照自己喜好浏览商品,然后可以将浏览或者搜索的商品加入购物车中,并且可在购物车进行所购买商品的修改
效果展示
系统功能设计
- 设计结构图
- UML类图
类的结构
1.秉持低内聚,高耦合的基本思想,本题代码被分为总共5个包(这些包有交叉使用的情况。并不严谨,所以这分包仅是将作用相似的类放在一起):
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.可视化界面的实现。