课程设计课程名称:软件工程设计实验项目:购物车管理系统姓名:XXX专业:计算机科学与技术班级:XX班学号:XXX指导教师:XXX计算机科学与技术学院实验教学中心XXXX年XX月XX日一、需求分析1 总体分析如今,随着互联网的发展,越来越多的人选择了网上购。
网上购物即经济又便捷,是多数年轻人购物的首选方式。
模拟C2C(Consumer to Consumer )的网购,设计了简单的购物车系统。
进入购物车系统主页后,卖家进入的是商品管理模块,对自己要卖的商品进行添加,删除,查询的这些基本操作。
买家则进入购买商品模块,查询到卖家所添加的所有商品,选择自己心仪的商品,添加到购物车。
添加购物车时可以填写购买数量,添加到购物车后,还可以修改购买商品的数量。
2 功能分析2.1商品管理在商品管理模块中,卖家可以添加商品,涉及商品编号id,商品名称,商品价格,商品库存量,商品图片。
数据保存的位置在数据库中,在数据库中进行插入操作。
卖家可以查询商品,涉及涉及商品编号id,商品名称,商品价格,商品库存量,商品图片。
数据保存的位置在数据库中,在数据库中进行查询操作。
卖家可以删除商品,涉及涉及商品编号id,商品名称,商品价格,商品库存量,商品图片。
数据保存的位置在数据库中,在数据库中根据该商品的编号id,对其进行删除操作。
2.2购买商品在购买商品模块中,买家对其进行操作。
首先查询可以购买的商品,涉及商品编号id,商品名称,商品价格,商品图片。
数据保存的位置在数据库中,在数据库中进行查询操作,查出所有商品。
买家选购商品,涉及商品名称,选购数量,价格,商品图片和商品编号id。
数据在程序中执行并保存。
买家查看购物车,涉及已选购的商品名称,选购数量,价格和商品编号id。
数据在程序中执行并保存。
买家在购物车中取消已选中的某个商品,根据商品id,对该商品进行删除。
数据在程序中执行并保存。
买家在购物车中取消已选中的全部商品,清空购物车。
数据在程序中执行并保存。
买家在购物车中修改已选中商品的数量。
数据在程序中执行并保存。
二、总体设计1 总体模块的划分购物车管理系统划分为两个子模块。
即:商品管理模块和购买商品模块。
2 模块结构化设计2.1 变换分析数据流程图模块结构图三、详细设计1数据库设计1.1 数据库物理结构1.1.1 数据文件数据字典数据流名称:商品信息来源:添加商品用户去向:连接商品信息,实现商品信息的增删改查组成:商品ID(PK) + 商品名称NAME + 商品库存量GNUM +商品价格PRICE + 商品图片PICTURE商品ID为确定商品唯一性的标识,是该商品的主键。
商品名称NAME描述该商品的名字。
商品库存量GNUM,添加商品是要添加库存量,当购买商品数量大于库存量是,该商品将不会被购买,显示余量不足。
商品价格PRICE描述该商品的单价。
商品图片PICTURE,添加商品时要添加图片,这里的图片存储在数据库中的是图片的名称,显示中会根据图片名称来寻找该商品的图片来显示。
1.1.2 重做日志文件建立重做日志文件1.1.3 控制文件控制文件直接COPY,然后在启动参数(control_files)里改就可以了1.2 数据库逻辑结构E-R图1.3 数据库详细设计1.3.1 表的创建系统维护的数据表:用户表:(商品编号(PK)、商品名称、库存量、商品单价、商品图片)商品表(table_goods)字段类型含义说明id number(10)商品ID 用来唯一标识一个商品(PK)name varchar2(20)商品名称用来描述商品名称gnum number(10)库存量用来记录商品的库存量,当购物车中购买的商品数大于库存量是就不能购买price number(10)商品单价用来描述商品的单价picture varchar2(20)商品图片用于储存上传的图片的图片名称创建表的sql语句:Table_goods表create table table_goods(id number(10),name varchar2(20), gnum number(10),price number(10),picture varchar2(20) );1.3.2 序列的建立Table_goods表的序列Create sequence goods_seqIncrement by 1Minvalue 1Maxvalue 1000Start with 1Cache 20Nocycle;1.3.3 插入测试数据向table_goods 表插入3条测试数据insert into table_goods ( id,name,gnum,price,picture ) values(goods_seq.nextval,'篮球',50,100,'basketball.jpg') insert into table_goods ( id,name,gnum,price,picture ) values(goods_seq.nextval,'QQ公仔',2,98,'qqbat.jpg') insert into table_goods ( id,name,gnum,price,picture ) values(goods_seq.nextval,'橄榄球',18,63,'ganlan.jpg')注:插入的图片名要与放在项目中的图片的文件名完全一致。
2 界面设计根据子模块进行界面分析和设计主页界面2.1 商品管理模块2.1.1 查询所有商品商品卖家进入商品管理模块,进入显示所有已添加的商品。
select id,name,gnum,price,picture from table_goods order by id界面:2.1.2 新增商品卖家进入新增查询所有商品页面后,点击新增商品,跳转到新增商品页面。
填写商品的属性:商品名称,商品数量,商品单价,添加商品图片。
点击提价后,继续跳到查询所有商品页面,显示所有已添加商品。
同时,新增也面还对添加的属性做了校验。
首先,文本域的容不能为空,其次,添加商品数量和商品单价都必须是数字。
否则提交不回通过,并跳回笨页面,显示错误容。
insert into table_goods (id,name,gnum,price,picture)values(goods_seq.nextval,'新增商品的名称','新增商品的库存量','新增商品的单价','新增商品图片的图片名');界面:校验的页面2.1.2 删除商品卖家进入新增查询所有商品页面后,点击删除商品,该商品被删除,再次查询所有商品,跳转到所有商品页面。
删除该商品时,同时删除了该商品上传时匹配的图片。
delete table_goods where id ='该商品的商品编号'2.2 购买商品模块2.2.1 查询所有商品买家进入主页后点击购买商品,查询所有商品后跳转到商品列表页面,显示所有商品。
select id,name,gnum,price,picture from table_goods order by id ;界面:2.2.2 加入购物车在商品列表页面点击添加购物车后,进入确认添加到购物车页面,显示商品的名称,单价和图片,买家填写添加的数量。
点击提交跳转到购物车页面。
页面:购物车显示界面:2.2.2 继续购物在购物车页面点击继续购物,进入商品列表页面,继续选购,添加到购物车。
如果选购的是同种商品,跳转到购物车后会合并已有的商品,将数量修改。
界面:2.2.3 修改数量在购物车页面的数量栏修改商品数量,点击修改。
购买数量就会被修改,总价钱会改变。
界面:2.2.4 删除加入购物车中的某个商品在购物车也面点击删除,对应的该条商品就会在购物车中被删除掉。
界面:2.2.5 清空购物车清空购物车后,购物车中所有选购的商品都已清空。
界面:. .. .3 代码设计所有代码附文件。
四、设计心得一个月的课程设计终于在今天基本完成了。
在这次课程设计中我用了JAVA WEB 做了这次的购物车项目,对web开发又有了更深的认识和更多的了解。
要做好这个web项目,首先要对这些过程进行全面的分析,了解每一步与下一步的关系,中间传递数据的处理,以求最简洁的完成数据处理。
其次是减小系统开销,之前考虑在购买商品模块对数据的处理也是用数据库,添加个状态位,在购买商品模块中进行的增删改查只是修改了状态位。
之后想想,这样做不仅数据繁琐,而且连接数据库增加了系统的开销。
而将数据放在session中处理,节省了系统的开销。
在做这个项目时,得意之处是添加了分页的功能,每页显示三个,如果显示太多会使得页面看起来很乱。
使用struts框架应用了form的特性,对添加新的商品页面进行了form校验。
使得校验能很容易的完成。
但使用form校验同样给我带来了麻烦,没校验之前项目能够运行,form中加上校验方法后项目不能运行了。
通过查资料了解的,在form中写校验方法后,不需要校验的页面如果也配置了相同form,就应该在struts-config.xml文件中action的validate属性设置为false。
当然,不足之处还有很多。
比如没有实现库存量与购买数的比较,没有添加完整的购买过程,购买后修改库存量的个数。
我相信这些容通过以后的学习会不断地完善。
.. .. .. ..。