201621123063《JAVA课程设计报告》

一、需求分析

完成一个单机版的购物车
(1)先建立一个文本文件,定义出自己想要的商品。以商品编号;商品名称;商品品牌;价格作为文件的内容,中间要求用分号或者分割
(2)编写程序,定义一个商品类,文件中的内容为该类的所有属性,当程序运行起来的时候,文件中每一条记录,对应该类的每一个实例,并将所有商品加载到内存中。
(3)将所有商品显示到图形界面上,提供1.购买,2.查看,3.结账(退出),4.删除,5.修改 5种方法,客户可以通过编号进行选择。
(4)当选择购买的时候,要提示客户输入要购买的商品,并将购买后的商品加入到购物车中(必须要支持购买同样的商品多次),购买后要显示出客户之前已放入购物车中的所有商品价格总和。
(5)删除和修改都是针对购物车中的商品而定的,而不是针对已经存在的商品。
(6)结账表示退出,程序结束。

二、本组课题及本人任务

课题:购物车

任务:

①从文件中读入商品信息
②将所有商品显示到图形界面上
③提供1.购买,2.查看,3.结账(退出),4.删除,5.修改 5种方法
④将购买的商品加入购物车
⑤删除和修改购物车中商品
⑥结账计算购物车中商品总价并退出

三、总体设计(概要设计)

①从文件中读入商品信息并载入内存中,每条信息对应一个商品Good类的实例,使用Map进行保存
②JScrollPane中装载JTable来展示所有商品
③购物车中商品用ArrayList来存放,购买商品即调用add()方法加入ArrayList中(购物车中无此商品的情况下),删除即ArrayList移除某元素,修改则调用Good类中的setNum()方法进行数量的修改
④购物车中商品的展示也使用JScrollPane中装载JTable的方式
⑤每个界面都有自己的背景图片,设置在LayeredPane层中,其他容器均设置透明使背景图片可见

四、本人负责的主要功能展示与代码分析

主界面:

代码分析:点击按钮时new出相应的界面

商城:

代码分析:根据输入的商品编号获得Map中对应key的商品类Good实例,如果购物车的ArrayList中没有这个Good,则直接加入,如果已经存在,则只设置他的数量为原数量加上新输入的数量

购物车:

代码分析:提供计算购物车中商品总价的方法,点击对应button时产生对应反应

结账:

代码分析:调用getTotalMoney()方法获得总价,使用系统方法exit()退出程序

修改:

代码分析:遍历存放购物车中商品的ArrayList,找到对应编号的Good实例,对其num属性进行修改

删除:

代码分析:遍历存放购物车中商品的ArrayList,找到对应编号的Good类实例,调用remove方法将其从中移除

四、测试与改进

测试:可实现需求中的要求

改进:使用try-catch块处理可能抛出异常的代码段,如输入的编号或数量不是数字时弹出消息框对用户进行提示并清空文本框。



posted @ 2018-01-25 19:13  Yelz  阅读(1701)  评论(0编辑  收藏  举报