文章目录

  • 前言
  • 前期调查
  • 效果展示
  • 系统功能设计
  • 类的结构
  • 改进方向

前言

团队成员:连剑彬
环境: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("    找不到对应商品");} elseSystem.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("    找不到对应商品");} elseSystem.out.println("    删除成功");} elseSystem.out.println("    删除成功");menu.cartMenu();case "4":menu.mainMenu();case "0":System.out.println("\n    感谢使用    ");System.exit(0);default:System.out.println("***输入错误,请再次输入***");}}}
# 错误分析
在进行输入时,一开始是使用下述的方法读取输入,但会遇到“NoSuchElementException”的错误提示
```javascriptScanner 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.可视化界面的实现。

JAVA大作业-购物车 (持续更新)相关推荐

  1. 函数部分编程大作业(持续更新)

    1),启动程序,首页面应该显示成如下格式:     欢迎来到博客园首页     1:请登录     2:请注册     3:文章页面     4:日记页面     5:评论页面     6:收藏页面 ...

  2. java大作业1--电话簿

    java大作业1–电话簿 一.题目 Java程序设计实用教程p402 12-13 二.预览 三.题解 一.Friend类 首先明确这个电话簿存入的信息为一个个Friend,每一个Friend需要具有姓 ...

  3. 用JAVA写一个画图小程序(JAVA 大作业)

    第一次写博客 且是稍微大点的程序 看看就行 重新写的在这,更加清晰明了:点击进入:用JAVA写一个画图小程序(JAVA 大作业)重排版本 设计思路 首先我直接去了Windows自带画图程序去实践模拟, ...

  4. Java大作业-考试管理系统(GUI)无数据库-Java课程设计

    Java课程设计-Java大作业-考试管理系统(GUI)无数据库 题目要求 开发环境 : 程序总功能模块 程序详细设计 使用情况 第一次写这东西有不少错误的地方,题目要求的功能也没有完全实现,以上内容 ...

  5. Java自学视频整理(持续更新中...)

    1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播客) 张孝祥2010年贺岁视频:Java高新技术 ...

  6. JAVA大作业 | 学生成绩信息管理系统

    > * *JAVA大作业 | 学生成绩管理系统(含有用户界面)*** ----- ps :多个包写在一起---– package test; import java.awt.*; import ...

  7. JAVA大作业 - 五道三星题

    写在前面: 看了一下我的博客,发现距离上一篇博文的发表已经快一年了,深感自己的颓废,所以打算重新写博客(其实是记录= =),于是从上学期的JAVA大作业开始慢慢整理一下,就是这样! ·问题描述 五道三 ...

  8. JavaFx/Java 大作业 五子棋 实验报告

    Java大作业五子棋实验报告 实验目的 通过此次实验,对这一学期学习的内容尤其是界面开发部分做了一个很好的回顾,看似简单的五子棋程序,设计好也确实费了我一点功夫 功能模块简介和系统结构图 ChessG ...

  9. 《LeetCode 热题 HOT 100》Java答案汇总版---持续更新中

    <LeetCode 热题 HOT 100>Java答案汇总版-持续更新中 个人认为<LeetCode 热题 HOT 100>中的题目特别适合算法新手进行一个入门的刷题,而且作者 ...

最新文章

  1. FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(新接口)
  2. 你听过Oracle中rownum用法吗?
  3. Java数据结构与算法:排序算法
  4. 月薪40K的推荐算法工程师,需要具备怎样的技能?
  5. ExecutorCompletionService 源码分析
  6. 在JDK 8中连接字符串
  7. Linux命令终端如何查询本机的内外网IP地址
  8. 展望2015把C++版本的掼蛋程序写好
  9. ubuntu16.04更改python版本
  10. 微信小程序自定义组件 插槽
  11. springboot执行批量插入_springboot+Mybatis 注解\Xml两种方式批量添加数据
  12. 第三章 比特币的实现机制
  13. 猫哥教你写爬虫 032--爬虫初体验-BeautifulSoup
  14. 半导体存储器(RAM和ROM)
  15. 日立、李锦记亮相云学堂广州峰会 纵论企业人才培养核心要素
  16. Django案例:显示图书的信息books
  17. MCE | 表观遗传:YTHDF蛋白调节 m6A-RNA
  18. smart-link monitor-link
  19. 市场新格局,分享购商业模式异军突起
  20. 用python写一个简答的英文文章分析程序

热门文章

  1. Mock.mock()生成模拟数据
  2. 2019-CCPC-秦皇岛站-I题-Problem I. Invoker(DP)
  3. Shader 漫反射
  4. 深入理解pytorch分布式并行处理工具DDP——从工程实战中的bug说起
  5. PHPExcel 操作
  6. 别让用户发呆—设计中的防呆策略[转]
  7. DialogFragment以及AlertDialogFragment
  8. Sia(Siacoin/SC/云储币)去中心化存储平台介绍
  9. 算法笔记:找考试座位号问题
  10. 微信营销分析之最有效的微信推广技巧