目录
1.实训概况 1
1.1 实训题目 1
1.2实训时间 1
1.3实训目的 1
1.4 实训环境 1
1.5 实训内容 2
1.6 进度安排 3
2.需求分析 5
2.1 功能需求分析 5
2.1.1用户需求分析 5
2.2.2网站前台需求 5
2.2.3网站后台需求 6
2.2 可行性分析 7
2.2.1社会可行性 7
2.2.2技术可行性 8
3.系统设计 8
3.1 总体设计 8
3.2 数据库设计 9
3.2.1数据库E-R图 9
3.2.2数据库表设计 10
3.3 业务流程设计 14
3.3.1前台系统业务流程 14
3.3.2后台子系统业务流程 15
4. 系统实现 17
4.1系统实现环境 17
4.2前台首页管理模块 17
4.2.1用户登录 17
4.2.2用户注册 19
4.2.3首页商品列表展示 20
4.2.4商品详情页面 21
4.2.5订单支付流程 22
4.3后台管理模块 23
4.3.1商品模块 23
4.3.2分类管理 23
4.3.3订单管理 24
4.3.4底部信息管理 24
5. 系统测试 25
5.1测试的目的 25
5.2测试的要求 25
5.3测试的主要内容 25
5.4测试的方法 25
5.5测试用例的设计 26
6.总结 29
7.参考资料 30
1.实训概况
1.1 实训题目
网上商城系统的设计与开发
1.2实训时间
第9周-第19周
1.3实训目的
企业项目综合实训是计算机专业教学的一个重要环节,其目的是使学生在获得基本知识和基本技能的基础上,进行一次较全面、系统的训练,以巩固课堂所学知识及提高操作技能。旨在提升本专业学生对此课程中的理论知识的综合应用能力、逻辑思维能力和软件开发能力,培养学生独立工作和解决实际问题的能力,为学生走上毕业岗位作好充足准备。
网上购物是时下比较流行的消费方式,给人们的生活带来了极大的方便。本次实训要求学生用Java技术开发基于B/S架构的大型网上商城系统。通过真实的项目实战过程,让学生从实践中认识面向对象程序设计的开发思想和软件设计与开发的流程,能够用程序去解决现实生活问题,在一步一步的实践过程中不断提高程序设计的水平。
1.4 实训环境
(1)硬件环境:
机房:计算机学院多媒体专业机房
电脑:双核高性能主机
网络:100Mbps校园网
(2)开发环境:
操作系统:Windows 7以上
开发工具:MyEclipse/IntelliJ IEDA
容器:Tomcat
中间件:JDK
数据库:MySQL
1.5 实训内容
网上商城系统又称在线商城系统,是一个功能完善的在线购物系统,主要为在线销售和在线购物服务。其功能主要包含商品的管理、会员的管理、订单的管理、库存的管理、优惠的管理、在线支付等。
本次实训将由学生参考相关学习资料,用Java EE技术独立完成“网上商城系统”的设计与开发。系统技术架构可以采用Java EE的基础架构(如JSP+Servlet+DAO),也可以采用Java EE领域流行的组合架构(如Spring MVC+Spring+MyBatis)。系统应至少包括PC端的Web应用服务器程序,根据能力也可以增加移动端的APP。
系统主要开发的功能如下:
(1)后台功能
商品模块:包括后台商品库存管理、上货、出货、编辑管理和商品分类管理、商品品牌管理等。
订单模块:在线订单程序,使消费者能够顺利的通过Web在线的方式,直接生成购买订单。
评论模块:购买过产品的买家可以对产品进行评价和打分。
支付模块:即通过网上钱包、电子支付卡。进行网上资金流转换的业务流程;国内主流支付方式包括:腾讯旗下的财付通、支付宝、网银在线等。
会员模块:在购物系统中,集成会员注册是吸引会员进行二次购买和提升转换率最好的方式。
信息模块:用于发布商城系统相关的一些信息。
配送模块:购物系统集成的物流配送方式,从而方便消费者对物流方式进行在线选择。如:EMS、顺风等等。
商品促销:购物系统都有商品促销功能,通过商品促销功能,能够迅速的促进商城的消费积极性。
(2)前端功能
商品展示:通过前端界面,以标准的或者其他个性化的方式向用户展示商品各类信息,完成购物系统内信息流的传递。
购物车:用户可对想要购买的商品进行网上订购,在购物过程中,随时增删商品。
模板风格自定义:即通过系统内置的模板引擎,可以方便的通过后台可视化编辑,设计出符合自身需求的风格界面。
商品多图展示:随着电子商务的发展商品图片成为吸引消费者的第一要素,多图展示即提供前台多张图片的展示,从而提升消费者的购物欲望。
自定义广告模块:内置在系统中的广告模块,网站管理员能够顺利的通过操作就可以在前端界面中添加各种广告图片。
1.6 进度安排
周次 内容
第9周 功能需求分析、数据库设计、技术选型、项目结构搭建
第10周 商品分类添加、商品分类管理、商品分类修改和删除、商品发布、商品列表(查询)
第11周 商品列表(分页)、商品修改和删除、商品上/下架、置顶、商品前台列表(基本)、商品前台列表(按需)
第12周 商品展示、添加购物车、查看购物车、生成订单、在线支付
第13周 客服查询订单列表、客服审核订单、会员查询自己的订单、会员修改配送信息(未审核之前)、仓管确认发货、用户确认收货
第14周 登录模块(会员、客服、仓管、管理员)、管理员管理会员、客服和仓管、管理员修改、删除会员、客服和仓管、会员评论打分、会员修改和删除评价打分
第15周 会员、客户、仓管、管理员修改密码、会员修改个人信息、会员升级计算、会员管理自己的订单、会员查看订单明细
第16周 管理员管理所有已完成订单、客服发布信息、客服管理信息、客服修改和删除信息、前台列出相关信息
第17周 前台产品搜索、前台分类展示、前台功能完善
第18-19周 项目验收,撰写报告
2.需求分析
2.1 功能需求分析
网上商城系统应具备网上购物的基本功能,既要合理实现商家展示商品,消费者用户购买商品,在线支付以及商家发货等一般功能。
2.1.1用户需求分析
一个商城网站的成败很大程度上取决于用户体验的好坏,所以成功的商城网站往往遵循着以人为本这个原则,由此可知,本系统在用户体验这方面需遵循以下几点要求:
(1)操作界面简洁明了,网页加载速度快
本系统的网站面向所有年龄阶层的用户,所以操作必须简洁明了,才会有更多的消费者用户浏览本系统的网页。只有当人们感觉到网站很容易操作时,才会有进一步的购物体验和以后的再次光临该网站。网页的加载速度也对用户体验有大影响,专家研究表明当网页在8秒钟内还加载不出来时,人们就会关掉该网页。本系统网页访问速度的要求就是,用户能在本系统网页访问量达到巅峰时还能很顺畅地浏览网页,轻松实现各项操作不卡顿。
(2)权限分明
本系统具有游客、会员和系统管理员三个权限,其中游客和会员面向消费者用户。对于没有登录的用户默认为游客,游客只具备浏览商品的权限,用户需注册才能成为商城会员,会员才具备购买商品的权限。系统管理员面向商家,主要用于管理本商城系统的商品、用户的订单等信息。
(3)可视化强
其次本商城网页上方都有统一的导航栏,导航栏包含的商品一级分类菜单和商品搜索功能方便用户快速筛选商品,购物车、订单和用户等方便用户管理。
2.2.2网站前台需求
本网站的系统总体目标是为了实现在线购物。通过系统实现网上购物的多项功能,一方面是管理员对商品的管理实现,即后台管理系统,另一方面是用户的购物的实现、即前台系统。根据对天猫、京东和当当网等几个当前中国最大的B2C商城系统的调查和研究发现,B2C前台系统主要是按如下规则来运作的:用户在线浏览所有商品,注册为会员登录后才能将商品加入购物车,购物结束后生成订单并在线支付完成。前台系统的需求如图2.1所示。
图2.1商城前台需求模块图
由图2.1的前台系统需求模块图可知,前台系统主要分为用户信息管理、商品展示管理和购物车订单管理三个模块。其中用户信息管理又包含用户的登录和注册,用户需在本商城系统中注册和登录之后才能购买商品,用户信息管理还包含账号信息的修改,地址的添加修改删除,订单的查看和对未来收货的订单确认收货,确认收货后会返还相应的积分等功能。商品展示模块主要是商品以及商品分类菜单的展示,用户可通过选择商品分类菜单和通过商品名称搜索来筛选商品,然后再一件一件地挑选自己中意的商品。用户添加商品进入购物车之后可选择继续挑选其他商品加入购物车,然后调整购物车中商品的数量,最后点击结算按钮,即可跳转到订单页面,在订单页面用户可更改收货人、收货地址和联系方式等信息,最后选择要支付的方式,点击提交订单,即可跳转到确认订单页面,支付成功之后返回商品列表页面。
2.2.3网站后台需求
网上商城系统除了应给消费者用户展示各种商品信息以外,还应能对展示的各种信息进行适当的管理,所以商城系统还应包含后台系统,后台系统主要管理商品、商品分类菜单、订单和用户信息。后台系统的需求如图2.2所示。
2.2商城后台需求模块图
由图2.2的后台系统需求模块图可知,后台系统主要分为商品管理、分类管理、底部信息管理和订单管理。商品分类菜单和商品的管理都包含增删改查的操作,可以随时对商品进行各种操作,使得商城的灵活性大大增强,其中添加商品时需选择所属分类,这样使得商品展示更有条理,用户也能通过商品分类菜单的筛选来更快的定位所需商品。订单管理主要是对订单列表的查看审核流转到下一步操作,其中管理员可分为客服、财务、仓管、理货、超级管理员等几个身份,每个普通管理员负责一个模块,对订单和审核流转到下一个模块,商城管理员每天定时查看新增订单,通常也不支持后台人为地添加和删除订单操作。
总之,一个好的商城系统就是要把用户购物到结款,管理员管理网站、管理商品,处理订单等功能都―一实现。这样才能建成一个功能齐全、合理、完善的网上购物系统。
2.2 可行性分析
可行性分析指开发项目之前,对项目开发的过程当中可能会碰到的多方面的问题如技术、经济、社会等方面的问题,进行可能性或必要性分析,来规避未来可能会遇到的困难,使得项目能有序顺利地完成。
2.2.1社会可行性
近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。
网上购物系统作为B2C(Business to Customer,即企业对消费者),电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。B2C网上商城是电子商务网上零售范围内的一种模式,主要以网络零售业为主,一般借助Internet在线上开展销售活动。上世纪90年代末,中国B2C电子商务市场开始起步发展,经过将近二十年的发展,中国的网络购物行业已步入了相对良性循环的、可持续的、健康的发展道路上,线上零售业早已成为了国内经济重要的组成部分。
国内网络用户的规模持续增长。截至 2017年6月底,我国网络用户的数量已突破7.51亿,有过网络购物的用户规模突破5.14亿,网民的网络购物率达68.4%。不仅国内的网购用户规模在不断增长,网购用户的消费理念也同时在发生着巨大变化,用户网购时往往对商品的质量和售后服务有了更大的需求。随着网购市场的不断发展,未来几年内国内的B2C交易规模占网购市场的比重必将更进一步提升,B2C将会代去着国内网e购市场的主流,拥有无限光明的发展前景。
2.2.2技术可行性
网上购物的开发基于B/S模式,主要包括前端应用程序的开发以及后台数据库的建立和维护两个方面。对于前者要求应具备功能完备、易于使用等特点,而对于后者则要求能建立数据一致性和完整性强、数据安全性好的库。
本系统基于当前成熟且流行的软件和技术进行开发。采用了B/S构架,采用了基于J2EE 的Eclipse平台进行开发,运用MVC 开发模式,以Servlet和JSP进行设计开发,数据库用的是流行且实用的Mysql,界面采用了JSP技术。系统具有可复用性,易用性和稳定性。
3.系统设计
3.1 总体设计
本系统分为前台和后台两个系统。前台子系统是实现商城用户登录直接进入商城或注册后再登录商场,进行商品浏览、购买商品、添加购物车、修改购物车的商品数量、添加订单、修改订单等操作。后台管理子系统主要实现管理员直接登录后对用户、商品、商品分类菜单、订单进行增删改查等一系列操作。设计架构采用MVC经典架构设计,可以将视图与业务逻辑分开实现低耦合行,提高代码的重用性。视图层使用JSP,CSS,JavaScript,实现网站的前端页面,通过控制层的Servlet实现业务逻辑,通过forward和request实现视图层与控制层的信息共享,模型层是通过DAO封装与数据库交换的JDBC程序。如图3.1所示。
图3-1应用服务器之上采用MVC开发的逻辑示意图
3.2 数据库设计
在建设网站系统之前,我们必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。
3.2.1数据库E-R图
本系统需要从数据库中查询大量信息,所有模块的功能实现都需要和数据库进行交互。根据系统需求和功能要求,共建立九张表:商品表、商品分类表、配送信息表、订单表、订单明细表、会员表、后台管理人员表、商品评论表、底部信息表。网上商城的E-R(Entity Relationship Diagram,实体―联系)图如图3.2所示。
图3.2数据库E-R图
3.2.2数据库表设计
(1)商品表(product)如表3.1所示。
表3.1商品表
字段 类型 是否为空 描述
productid int 否 主键
name varchar(100) 否 商品名字
myprice float 否 应答价格
marketprice float 否 市场价格
storecount int 否 库存数量
hit int 否 点击数量
time varchar(32) 否 发布时间
photo varchar(200) 否 商品封面
categoryid int 外键 否 外键,商品分类id,关联到分类表
content text 否 商品描述
(2)分类表(category)如表3.2所示。
表3.2分类表
字段 类型 是否为空 描述
categoryid int 否 主键
name varchar(32) 否 分类名字
sort int 否 排序号
(3)配送地址信息表(address)如表3.3所示。
表3.3配送地址信息表
字段名 类型 是否为空 描述
addressid int 否 主键,自动递增
addressname varchar(200) 否 收货地址
postcode varchar(32) 否 邮编
receiver varchar(32) 否 收货人
phone varhcar(32) 否 联系电话
vipid int 否 关联会员表(vip),外键,记录该条地址是哪一位会员的
bz varchar(200) 是 备注
(4)订单表(orders)如表3.4所示。
表3.4订单表
字段名称 类型 是否为空 描述
orderid int 否 主键(让它充当订单编号)
addressid int 否 存储配送信息记录的ID
payway varchar(32) 否 支付方式
maketime varchar(32) 否 下单时间
status varchar(32) 否 订单状态:未审核
未支付
未发货
未签收
未评价
(5)订单明细表〈条目表: orderdetail))如表3.5所示。
表3.5订单明细表
字段名称 类型 是否为空 描述
orderdetailid int 否 主键
orderid int 否 订单ID
productid int 否 产品ID
quantity int 否 产品数量
(6)会员表(vip)如表3.6所示。
表3.6会员表
字段名称 类型 是否为空 描述
vipid int 否 主键
username vrchar(32) 否 用户名
password vrhcar(32 否 密码
sex varchar(32) 否 性别
email varchar(32) 否 邮箱
phone varchar(32) 否 电话
score int 否 积分,根据积分判断等级。
0-99:铜卡会员
100-499:银卡会员
500-4999:金卡会员
5000以上:钻石会员
qusteion varchar(300) 否 密码提示问题
answer varchar(300) 否 密码提示答案
lastlogintime varchar(32) 否 上一次登录时间
(7)后台管理人员表(admin)如表3.7所示。
表3.7后台管理人员表
字段名字 类型 是否为空 描述
adminid int 否 主键,自动递增
username varchar(32) 否 用户名
password varchar(32) 否 密码
realname varchar 否 管理人员名字
sno varchar(32) 否 管理人员编/工号(便于查询)
role varchar(32) 否 人员角色:
1、客服(审核订单)
2、财务(看订单有没有交钱)
3、仓管(负责发货)
4、超管(全部功能)
5、理货(负责产品的管理和维护)
lasttime Varchar(32) 否 最后一次登录时间
(8)商品评论表(comment)如表3.8所示。
表3.8商品评论表
字段名字 类型 是否为空 描述
commentid int 否 主键
title varchar(100) 否 标题
content varchar(1000) 否 内容
score int 否 分数
time varchar(32) 否 时间
productid int 否 所评论的产品的ID
vipid int 否 评论人的ID
(9)信息表(info)如表3.9所示。
表3.9信息表
字段名字 类型 是否为空 描述
infoid int 否 主键
title varchar(100) 否 标题
time varchar(32) 否 发布时间
publisher varchar(32) 否 发布人
lanmu varchar(32) 否 栏目
content longtext 否 内容
3.3 业务流程设计
3.3.1前台系统业务流程
用户可以输入网址进入网站的用户界面,可以根据用户是否注册来确定他是否是会员,当完成注册时可以实现会员登录的功能。然后在网站首页进行商品的选购,当选购商品完成时,可以放入购物车,然后去订单页面结账,确认收货人等信息正确无误后,可以点击订单支付形成未处理订单,当用户完成付款操作后服务商就可以发货,用户可以在家等待收货情况,最后用户确认收货完成订单或长时间用户未确认收货由管理员确认收货,订单被设置为已交易状态。前台子系统总体流程图如图3.3所示。
图3.3商城前台系统流程图
前台系统模块主要是为注册、登录网站的用户提供商品和信息服务。用户选购商品,添加到购物车,填写并提交订单。将前台模块再细分为首页用户管理模块、购物车模块、订单模块。对前台模块的设计如下:
(1)首页用户管理模块
用户首次进入网上商城可以浏览商城信息,但不能进行购买等操作。只有注册成为商城用户,才能登陆进行购买等操作。登陆商城后,在首页用户管理界面可以进行密码修改,真实姓名和联系方式修改等操作。
(2)购物车管理模块
用户浏览商品,可以将心仪的商品添加到购物车,商品价格会根据用户选购商品的颜色、版本、容量的不同而进行自动变动,同时购物车界面也可以根据商品的数量、种类等变化实现总价的自动变动。用户选购了某一商品加入购物车之后可继续挑选其他商品加入购物车,最后将购物车中数件商品一起结算生成订单项。当退出当前用户或者提交订单时实现购物车清空。
(3)订单管理模块
用户可以查看自己已下的订单,订单进行分页显示,每页显示4条信息。用户点击订单页面的订单支付按扭之后,订单为未审核状态;付款成功之后订单为己付款状态﹔卖家发货之后订单为已发货状态:用户点击订单页面该订单的确认收货按钮时,订单改为交易成功状态,这时订单状态不能再被更改。
3.3.2后台子系统业务流程
管理员用户通过后台管理子系统来对整个系统进行维护,后台子系统操作简单,直观,功能完备。首先,管理员需用管理员账号和密码登录成功才可进入后台管理页面,通常直接在数据库中添加管理员账号和密码,这样使得后台子系统的安全性大大提高。在后台子系统管理页面中可查看前台系统中用户订单信息列表,可对商品和商品分类菜单进行增删改查操作,还可对订单进行审核流转模块操作。对货物进行上架操作流程图3.4所示。
图3.4订单审核流程图
后台子系统是面向管理者,为管理者提供基本的管理操作功能。后台模块分为底部信息、商品分类菜单管理模块、商品管理模块及订单管理模块。
(1)商品分类菜单管理模块
对于商品二级分类菜单的管理,管理员可以查看已经存在的商品分类菜单信息,可以删除已存在的分类菜单,也可以进行添加分类菜单,增加分类菜单。
(2)商品管理模块
该模块会显示所有己上架的商品列表、可以修改已上架的商品,也可以进行商品添加,增加或修改时需选择该商品所属的商品二级分类菜单、是否热门商品等。
(3)订单管理模块
该模块会分页显示订单列表,点击订单详情可查看该订单下的所有商品的名称、LOGO图片、数量和价格,每个管理员可以对自己管理的部分进行审核确定。
(4)底部信息管理模块
该模块会显示所有已上架的商品列表,可以修改已上架的商品,也可以进行商品添加,增加或修改时需选择该商品所属的商品二级分类菜单、是否热门商品等。
4.系统实现
4.1系统实现环境
网上商城系统采用了时下流行的Java程序设计语言进行开发,系统开发的工具采用Eclipse 平台,其可以实现系统功能的编程、部署和运行服务这样就可以保证系统的逻辑业务功能具有较强的完整性。系统部署过程中,论文采用稳定的Tomcat服务器,通用浏览器和Tomcat服务器加上 MySQL数据库可以实现Web项目运行的逻辑业务流程。本系统采用了集成化开发环境JDK,系统的实现环境如表4.1所示。
表4.1系统环境
操作系统 windows10
数据库 Mysq15.7
WEB服务器 Tomcat7.0
JDK JDK1.8
开发工具。 Eclipse、Navicate
4.2前台首页管理模块
前台首页管理是前台最主要的组成部分,包含用户登录、用户注册、找回密码、密码修改、信息修改、商品浏览、和评论等功能。
4.2.1用户登录
用户登录流程:用户在登录页面输入账号密码和验证码等信息后,通过前台数据传入后台,然后在后台再次进行非空和图形验证码校验,并连接数据库,查询用户表中是否存在该用户名且密码与输入密码一致,前后台校验都通过才能进入系统。
用户登录流程:用户在登录页面输入账号密码和验证码等信息后,通过前台数据传入后台,然后在后台再次进行非空和图形验证码校验,并连接数据库,查询用户表中是否存在该用户名且密码与输入密码一致,前后台校验都通过才能进入系统。
用户登录界面图如图4.1所示:
图4.1用户登录
通过一个全局变量Session来实现用户 login.jsp页面的登录操作,从user表查得用户提交的帐户名和密码正确后,把该账户密码等信息存入Session变量(该变量名称为“vip”) 。
具体的判断过程为:
若session中 vip为空即session.getAttribute(“vip”) == null,表明没有经过登录验证,则立即跳转到login.jsp,请用户登录之后再进行下单操作;并将用户登录的账号和密码通过 login()方法判断:先验证用户提交的验证码与服务器保存的验证码对比,如果相等再进行下一步的账号密码验证,如果不同就返回验证码错误的提示,账号密码验证就要通过后端数据库进行验证,controller层代码如下:
vip=vipDAO.validateVip(username, MD5.md5(password));
DAO层sql查询语句如下:
select * from vip where username=? and password=?and password =? ,如果查询出的vip为空,则返回登录失败,跳转回登录页面,并提示“登录失败”,如果用户在数据库中存在,把用户的信息存入Session,并跳转到商城首页。
如果用户已注册过账号,但是密码遗忘了,就可以通过忘记密码来找回密码,具体实现为在用户注册时填写的密保问题来回答,回答成功就将密码重置为000000,其中要经过接受用户输入的用户名与经过后台数据库查询,判断数据库中有无该用户名,没有就返回提示该用户名不存在,有该用户名就进行下一步密保问题验证,通过用户输入的密保问题与数据库中答案进行比对,正确的就将密码修改为经过MD5加密后的000000,密保问题错误就返回密码错误。
4.2.2用户注册
新用户首次进行购物,需要点击首页注册按钮,进行新用户的注册操作,填写用户详细的个人信息。
用户注册流程:进入首页注册界面依次输入账户名、密码、性别、邮箱、电话号码、密码提示问题和密码提示答案点击“注册”按钮完成提交。
用户注册界面做了前台Ajax验证用户名是否重复,Ajax验证就是通过异步请求方式来提交输入的用户名,然后经过数据库查询操作判断数据库中是否有与其相同的用户名,并将判断结果传入前端页面来判断显示用户名是否可以使用等字样然后提交到后端来进行校验提示,页面如图4.2所示。
图4.2用户注册页面
用户注册信息的实现方法如下:
用户在前台页面输入用户名、密码、真实姓名、电话号码等信息封装入后台的VIP类中,后台获取用户输入的信息,将参数提交给DAO层,调用DAO层,再从DAO层的VipDAO里边的add方法将用户信息存入数据库,执行的sql语句为:insert into vip(username, password, sex, email,phone,score,question,answer, lastlogintime) values(?,?,?,?,?,?,?,?,?)
4.2.3首页商品列表展示
首页以每页4个商品进行分页显示,显示的内容默认为全部商品,商品上方导航栏有分类菜单,点击相应的分类会筛选出来对应的商品列表,可以通过排序方式进行相应排序,排序规则有价格升序、价格降序、人气升序、人气降序、上架时间升序、上架时间降序也可以通过关键字搜索和分类筛选出更精确的商品列表,如图4.3所示。
图4.3商品列表
商品列表实现方法如下:
如果用户没有点击分类列表默认显示全部商品,如果用户选择分类后将分类对应的categoryid传入后端进行数据库查询操作,并将categoryid作为查询条件,页码默认为1,页码的加减操作通过前端来运算,可通过下方的上下页操作进行页码的加减后的页码传入后端,通过页码的数字和设置查看多少条记录的数据进行运算,得出数据进行sql语句拼接,默认以时间降序形式进行排序,如果用户点击排序方式就将排序名字传入后端通过字符串拼接来代入数据库查询操作,通过controller层的displayProduct方法调用DAO层的 productDAO 的listWithOrderby方法进行查询,将查询结果封装到List里边转发到前端页面displayProduct.jsp进行显示。
前端显示页面是通过接受request作用域中的数据,然后通过循环操作将后端封装的列表数据输出到页面上,上下页可写在另外一个 jsp文件中,通过include引入到列表页面displayProduct.jsp 页面中,可以使页面结构更加清晰,并提高了代码的利用率,使代码实现的高内聚,低耦合的编程思想。
4.2.4商品详情页面
点击选中商品然后通过前端请求传入一个productid到后端showDetail 方法中通过调用DAO层的ProductDao 的get方法查询单条商品数据,封装到实体类Product中,将数据存入到request作用域中,并采用转发forward 操作到前端showDetail.jsp进行显示操作,商品详情页面还包含该条商品的评论,评论则是将该条商品的productid传入后端对评论表进行数据库查询操作,查询条件为productid,并将查询的评论列表封装List存入request作用域中,经过forward转发操作,到前台循环操作显示评论,并且用户可以进行评论操作,将在session中存入的已登录的vip用户的信息和vip用户评论的标题,内容等信息封装进入数据库进行数据库插入操作,并判断插入成功后,重定向到showDetail 中进行显示。商品详情页面如图4.4所示。
图4.4商品详情页面
4.2.5订单支付流程
点击首页和其他子页面的商品图片会跳转到商品信息页面,选择商品数量,然后点击加入购物车,如果已经登录会跳转到购物车页面,如果没有登录则会跳转到登录界面购物车页面有登录校验,没有登录的用户点击加入购物车会直接跳转到登录页面,具体实现方式是先获取Session 中用户的登录信息 vip变量,再判断vip变量是否为空,如果是为空,就重定向到login.jsp页面,如果用户已登录,会调用addCart方法将商品信息存入session中,点击结算中心按钮后,先调用toaddress方法,查询用户的收货地址返回到前台页面让用户选择,如果用户没有收货地址就会显示出添加收货地址页面,添加收货地址提交后调用saveAddress方法封装地址信息调用数据库存入数据库中,重新跳转到选择配送地址和支付方式页面,点击结算按钮会调用toOrderConfirm方法,查询到支付方式,收货信息,和商品清单等信息返回到前端用于用户确认,确认之后才会将订单提交到makeorder方法中,调用Dao 层的OrdersDao的makeOrder方法,如果用户没有收货地址就会显示出添加收货地址页面,添加收货地址提交后调用saveAddress方法封装地址信息调用数据库存入数据库中,重新跳转到选择配送地址和支付方式页面,点击结算按钮会调用toOrderConfirm方法,查询到支付方式,收货信息,和商品清单等信息返回到前端用于用户确认,确认之后才会将订单提交到makeorder方法中,调用Dao层的OrdersDao的makeOrder 方法,由于要进行两次插入操作,这里应该开启事务,两条sql执行成功后才会提交事务,如果发生错误,就回滚事务,并返回flase,确定订单页面如图4.5所示。
图4.5确认订单页面
购物车界面如图4.6所示。
图4.6购物车界面
4.3后台管理模块
在后台登录界面输入管理员账号密码就进入了后台管理页面,该页面主要分为订单管理、分类管理、商品管理和底部信息管理四项,四个都有查看的列表功能,其中分类管理和商品管理和底部信息管理都有增加和删除的功能,商品管理还有编辑修改等功能。
4.3.1商品模块
点击商城后台管理系统页面左侧目录的商品管理,会在页面右侧分页显示出所有的商品信息,并且每条信息后面都有编辑和删除按钮,下方还有添加按锾,按对应按钮会跳转到对应的编辑和添加商品页面,商品管理页面如图4.7所示。
图4.7后台管理页面
4.3.2分类管理
点击商城后台管理系统页面分类管理,会在页面右侧显示出所有的分类菜单信息,并且每条信息后面都有删除按钮,下方还有添加按钮,按对应按钮会跳转到对应的编辑和添加菜单页面,添加分类后台管理页面如图4.8所示。
图4.8后台添加分类页面
4.3.3订单管理
点击商城后台管理系统页面订单管理,会在页面右侧显示出所有的订单信息,每页两条,并且每条信息后面都有删除明细和确认审核按钮,按明细按钮会跳转购买的详细信息页面,按确认审核按钮,订单被审核,转为未付款订单,订单后台管理页面如图4.9所示。
图4.9订单管理页面
4.3.4底部信息管理
点击商城底部信息管理系统页面底部信息管理,会在页面右侧显示出所有的底部信息菜单,并且每条信息后面都有删除按钮,下方还有添加按钮,按对应按钮会跳转到对应的编辑和添加页面,添加信息后台管理页面如图4.10所示。
图4.10添加信息页面
5.系统测试
5.1测试的目的
系统完成之后,对各个模块的功能进行了详细的测试,输入数据和预测输出数据相比,发现了一些问题。主要是在查询过程中预计查询结果和实际结果不一致,有时候达不到目的,对数据库的操作表之间的关联考虑得不够周到,因此往往会出现一些小的错误。还有查询条件的前后数据类型不一致也是一个很常见的错误,需要靠一步步的查找解决。各个模块组装完成后,又会出现一些问题。比如在操作购物车结帐的这个流程中,由于是多次添加和修改,最后结帐,所以很容易造成数据混乱,必须对相应的数据关系理清楚,一些关键查询统计的SQL语句必须反复斟酌才能放在程序中使用。
5.2测试的要求
在此系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的 Bug,通过测试,用提交的 Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。
测试后的软件各模块基本功能能顺利进行,尽可能的提高软件的健壮性。
5.3测试的主要内容
对本系统的测试内容主要包括以下五个方面:
(l)功能测试:对商城的每一个功能都要仔细测试,尤其是整个购物流程的畅通,只有这样才能确保商城所有的功能都能正常工作。
(2)性能测试:对系统的目的性、整体性、突变性以及执行效率都要进行周密细致的检验。
(3)余量测试:对系统一些功能进行边界值测试,检测系统的稳定性。
(4)强化测试:系统的有些错误需反复多次测试才能查出。
(5)兼容性测试:在不同操作系统、不同浏览器、不同显示器大小或分辨率甚至不同国家或网络上全面测试本系统是否有兼容性问题。
5.4测试的方法
测试通常分为黑盒测试和白盒测试。
(1)黑盒测试又称为功能测试,在程序接口进行,只检查程序功能是否能够按照规格说明书的规定正确使用,程序是否能适当地接收输入数据并发生正确的输出信息,而且要能够保持外部信息的完整性。本系统采用的就是黑盒测试,各类测试用例表见5.1至5.7。
(2)白盒测试又叫结构测试,完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中每条通路是否都能按照预定要求正确工作。
5.5测试用例的设计
本文采用黑盒测试来进行系统的功能测试,依据系统功能的需求分析的具体功能点对系统进行测试,来检测系统的功能。所谓黑盒,就是不需要去考虑系统内部是如何运作的,只需要针对系统界面和功能进行测试。以后台管理子系统的主要模块为例进行测试结果的展示。
购物模块功能测试结果如表5.1所示。
表5.1购物模块测试用例
测试编号 用例名称 测试流程 预期结果 实际结果 结果
1 用户登录 输入账号密码和验证码,点击登录 登录成功 登录成功 通过
2 商品放入购物车 点击商品,再点击加入购物车按钮 商品已放入购物车 商品已放入购物车 通过
3 设置配送地址 在订单的配送信息框选择配送信息 配送地址设置成功 配送地址设置成功 通过
评论管理模块功能测试结果如表5.2所示。
表5.2评论管理模块测试用例
测试编号 用例名称 测试流程 预期结果 实际结果 结果
1 评论商品 首先输入评论标题、评分内容,然后点击评论按钮 评论发布成功 评论发布成功 通过
修改信息模块功能测试结果如表5.3所示。
表5.3修改信息模块测试用例
测试编号 用例名称 测试流程 预期结果 实际结果 结果
1 修改密码 输入原始密码、新密码和确认新密码,点击修改按钮 密码修改成功 密码修改成功 通过
2 修改个人信息 选择性别,输入Email、电话,查看密码提示问题,点击修改 个人信息修改成功 个人信息修改成功 通过
商品管理模块功能测试结果如表5.4所示。
表5.4商品管理模块测试用例
测试编号 用例名称 测试流程 预期结果 实际结果 结果
1 修改商品 点击修改按钮,然后对商品信息进行修改 商品信息修改成功 商品信息修改成功 通过
2 删除商品 点击删除按钮 商品信息删除成功 商品信息删除成功 通过
3 查看商品 点击商品列表按钮 商品信息显示成功 商品信息显示成功 通过
4 添加商品 点击添加商品按钮,然后输入商品信息 商品添加成功 商品添加成功 通过
订单管理模块功能测试结果如表5.5所示 。
表5.5订单管理模块测试用例
测试编号 用例名称 测试流程 预期结果 实际结果 结果
1 查看订单 点击全部订单按钮 订单信息显示成功 订单信息显示成功 通过
2 更新订单状态 审核商品信息 订单交易成功 订单交易成功 通过
6.总结
通过开发本系统,我较全面的掌握了JAVA的基本知识和编程技巧,并在开发过程中我的JAVA开发能力得到了进一步的提高。对SQL语言的使用也更加熟练,以前学过的软件工程知识、数据库原理及操作也得到了充分的应用。目前基于该模型的系统处于实践阶段,还存在许多问题与不足,如实现的功能不太完善,界面不够美观等,,这些功能与技术还需要加以提高和实现。
在开发过程中我也学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码心底有数,有条不絮。
对我来说,这次设计的本身所产生的影响,还远远没有结束,我从本次实训设计中学到了许多课本上没有的知识。从设计任务商品的下达到今天基本实现任务商品中的设计要求。通过自己的学习和努力,通过老师的指导和教育,使我不仅仅在知识水平和解决实际问题的能力上有了很大的提高,还从思想的深处体会到,要把自己的所学变成现实时所将面对的种种难题。今后我会更加努力地进行实践学习 。
7.参考资料
[1] 武延军 黄飞跃. 精通JSP编程技术[M]. 北京:人民邮电出版社,2001.8:170-200
[2] 柏亚军. JSP编程基础及应用实例集锦[M].北京:人民邮电出版社,2001.7:10-60
[3] 清宏计算机工作室.JSP编程技巧[M].北京:机械工业出版社,2000.1:103-106
[4] 周影 .网络编程语言JSP实例教程[M].北京:电子工业出版社,2003.6:30-55
[5] 陈海山.深入Java Servlet 网络编程[M].北京:清华大学出版社,2002.2 :12-20
[6]Donny.JSP与网站开发编程实战[M].北京:科学出版社 ,2001.7:166-184
[7]Steven Holzner.Java技术内幕[M].北京:机械工业出版社,2002.1:65-70
[8] Phil Hanna .JSP技术大全[M].北京:机械工业出版社, 2002.3 :37-57
[9] Karl Moss. Java Servlet开发人员指南[M].北京:清华大学出版社,2002:189-192
[10]蔡剑,景楠. Java Web应用开发:J2EE和Tomcat[M].北京: 清华大学出版社. 2005:23-132