stify; text-indent: 2em; margin-top: 0px; margin-bottom: 0px; -ms-text-justify: inter-ideograph;">管理员:从管理员页面安全退出,转到后台登陆页面
用例编号: PB_01_01
测试目的: 测试商品是否可以正确发布并显示在网页上。
测试场景: 商家登陆自己的账号,选择店铺管理,申请审核商品,完成审核商品之后,将商品的信息发布到网站上去。
所需数据: 申请商品的审核需要填写商品的相关信息,包括标题,介绍,图片,价格,库存等数据。
测试步骤:
商家登陆自己账号
选择店铺管理
填写商品相关信息
提交管理员审核
管理员审核通过,更改审核状态
商家点击发布
在网站商搜该商品相关信息,找到即为成功
预期结果:
商家待发布的商品通过审核之后,成功在网站上发布商品。
用例编号: TC_01_01
测试目的: 测试是否可以在网站中查找出商品。
测试场景: 在网站首页的搜索栏中输入商品的关键字,点击搜索按钮进行搜索;或者在商品的分类栏目中按照分类分级的索引进行搜索。
所需数据: 商品已经发布在网站上。
测试步骤:
访问网站首页
点击搜索栏。
输入商品关键字
点击搜索
或者在分类导航中分类索引查找
在匹配到的查找结果中选择查找的商品
预期结果:
在网站中成功查找出相匹配的商品。
用例编号: TC_02_01
测试目的: 测试是否可以将网站中浏览选择的商品添加到购物车。
测试场景: 从网站首页或者商品详情页中选择商品,加入购物车。
所需数据: 数据库中已经存在可以购买的商品;商品库存数量不为0。
测试步骤:
1.访问网站首页
2.选择首页广告中的商品。
3.登陆自己的账号
4.转到商品信息描述页面,点击商品项中的“购买”按纽。
5.或者直接在网站首页点击加入购物车
6.点击我的购物车可以查看是否成功添加到我的购物车里面以及购物车里面的相关商品
预期结果:
1.在首页加入购物车后,商品被添加购物车里面。用户可以继续浏览商品添加购物车。
2.在商品详情页添加购物车,用户点击购物车,客户被转到 “购物车” 页面,显示用户已选择的商品。购物车中商品列表以购物先后顺序排列,每项商品显示:商品名称,市场价,会员价,为您节省和数量,数量默认为1。
用例编号: TC_03_01
测试目的: 测试是否可以更改购物车里面的商品的状态信息,如修改商品数量,将商品从购物车删除等。
测试场景:用户登陆个人账号,选择管理购物车,对购物车里面的商品进行数量的修改等。
所需数据: 购物车里面已经存在商品,不为空。
测试步骤:
用户登陆自己的账户或者已经是在线状态下
点击我的购物车进行管理
加或减少某一商品的数量,或将商品从购物车中删除等操作
点击确认。
购物车是否成功更新
预期结果:
对购物车里面的商品成功修改之后,返回新状态的购物车下的商品的信息。
用例编号: TC_04_01
测试目的: 测试是否可以在商品详情页中选择加入团购
测试场景:浏览商品详情页,选择好购买商品,在团购的团组中选择加入。
所需数据: 已经选择好商品的信息,当前选择的商品有团购组才能加入,或者选择自己建立一个团购组。
测试步骤:
进入商品的详情页面
选择好要购买的商品
查看团购的信息
选择团购的组
确认加入
生成订单
预期结果:
成功将商品加入团购,通过团购的方式生成订单
用例编号: TC_05_01
测试目的: 测试在购物车中是否能成功生成订单
测试场景:在用户的登陆状态下,在购物车中选择预购商品以及修改数量,完成后确认提交生成订单
所需数据: 购物车里面已经存在商品,不为空。
测试步骤:
进入购物车
点击选中预购商品,修改数量
确认提交订单
转到订单页面
预期结果:
成功提交订单。
用例编号: TC_05_01
测试目的: 测试生成的订单详情页面中是否可以修改订单的信息,例如修改收货人的地址,联系方式等
测试场景:在用户完成订单的提交之后,转跳到订单的详情页面。在订单的详情页面选择对订单的相应信息进行修改
所需数据: 已经生成提交的订单。
测试步骤:
进入订单详情页面
选择要修改的数据
修改填写+
确认完成修改
查看订单状态是否成功更新
预期结果:
订单的数据信息成功被修改完成,并将修改之后的新订单显示出来。
用例编号: TC_06_01
测试目的: 测试生成的订单是否可以成功完成支付
测试场景:对填写好的确认无误的订单选择进行支付,选择支付的方式并进行支付
所需数据: 已经生成提交的订单,填写好收货人地址联系方式等信息。
测试步骤:
进入正在进行当中的订单的页面
选择相应的订单
点击详情页进入支付或者直接点击进行支付
支付完成
预期结果:
订单的数据信息成功被修改完成,并将修改之后的新订单显示出来。
用例编号: AS_01_01
测试目的: 测试在交易完成后是否可以确认收货。
测试场景: 用户登陆自己的账户,进入订单管理,选择已经收到货的正在交易中的订单,点击确认收货。
所需数据: 订单已经存在并且订单的状态为正在进行。
测试步骤:
用户进入自己的订单管理
选择已经收到货的正在交易进行中的订单
点击进入订单详情页
确认收货
提示已经完成确认
将订单状态重置为已完成
提示是否转跳到评价管理页面
预期结果:
用户确认收货之后,订单状态重置。再次查看管理订单时,订单为已完成状态。在默认评价的时间内没有评价则系统自动进行评价
用例编号: AS_02_01
测试目的: 测试对已经完成的订单申请售后服务,测试是否能选择退换货/退款。
测试场景: 用户进入订单管理页面,选择已完成的历史订单,进入订单详情页,点击申请售后。选择退换货服务,填写理由,售后服务等信息,提交申请。
所需数据: 订单已经存在并且订单的状态为已经完成。
测试步骤:
用户进入订单管理页面
点击历史订单
选择要进行申请售后服务的订单
进入订单详情页
申请售后
选择售后的服务项目
填写退换货 理由等信息
提交售后申请
将订单状态修改为退款中
预期结果:
退换货申请成功提交,订单状态改为退款中。
用例编号: AS_03_01
测试目的: 测试在完成交易后是否可以进行售后评价管理。
测试场景: 用户进入订单管理页面,选择已完成的历史订单,进入订单详情页,点击售后评价,填写完评价后确认提交。
所需数据: 订单已经存在并且订单的状态为已经完成。
测试步骤:
进入订单管理页面
选择要评价的交易订单
进入详情页面
选售后评价
输入评价
确认完成
返回订单管理页面
预期结果:
输入评价,评价成功。
(2)解决方案说明
业务层流程图
资源层解决方案(类详细设计)
类名称
|
User
|
所属包名称
|
com.resource.class
|
类静态变量定义
|
名称
|
类型
|
描述
|
|
|
|
类变量定义(先Public->protected->private)
|
名称
|
类型
|
描述
|
Uaccount
|
int
|
用户账号
|
Uname
|
string
|
用户姓名
|
Upass
|
string
|
用户密码
|
Uage
|
int
|
用户年龄
|
USex
|
char
|
用户性别
|
Uadd
|
string
|
收货地址
|
Utel
|
string
|
联系电话
|
方法(先Public->protected->private)
|
名称
|
参数
|
返回值
|
简单描述
|
getUserName
|
Uaccount
|
String
|
返回用户姓名
|
getUserAge
|
Uaccount
|
int
|
返回用户年龄
|
类名称
|
Goods
|
所属包名称
|
com.resource.class
|
类静态变量定义
|
名称
|
类型
|
描述
|
Stock
|
Int
|
商品库存
|
类变量定义(先Public->protected->private)
|
名称
|
类型
|
描述
|
Gid
|
int
|
商品编号
|
Gtype
|
string
|
商品类型
|
Gname
|
string
|
商品名称
|
Gprice
|
float
|
商品价格
|
Gnumber
|
int
|
商品出售数量
|
Place
|
string
|
生产地址
|
Gdate
|
Date
|
生产日期
|
方法(先Public->protected->private)
|
名称
|
参数
|
返回值
|
简单描述
|
getGoodsName
|
Gid
|
String
|
返回商品名称
|
getGoodsNumber
|
Gid
|
Int
|
返回商品出售数量
|
getGoodsPlace
|
Gid
|
String
|
返回商品产地
|
类名称
|
Seller
|
所属包名称
|
com.resource.class
|
类静态变量定义
|
名称
|
类型
|
描述
|
|
|
|
类变量定义(先Public->protected->private)
|
名称
|
类型
|
描述
|
Sid
|
int
|
商家编号
|
Spass
|
string
|
商家密码
|
Sname
|
string
|
商家名称
|
Sadd
|
String
|
商家地址
|
Opendate
|
Date
|
开店日期
|
Sdescribe
|
string
|
商家描述
|
方法(先Public->protected->private)
|
名称
|
参数
|
返回值
|
简单描述
|
getSellerName
|
Sid
|
String
|
返回商家名称
|
getSellerAddresss
|
Sid
|
String
|
返回商家地址
|
(3)鲁棒分析
序列图
鲁棒图
搜索商品鲁棒图
处理订单鲁棒图
(4)数据库设计
数据库的设计是为了以后编码、测试以及维护阶段的后台数据的存储做准备。应用于系统开发前期,为后期数据库设计指引方向。
预期的读者:系统开发人员、系统测试人员和系统维护人员。
背景
本系统使用mysql数据库进行开发,数据库系统:MySQL Server8.0
任务提出者:提供给商家和用户一个网上视频团购平台的运营商
用户:用户,商家。系统管理员
参考资料
《数据库设计与开发》,(美)弗罗斯特,清华大学出版社,2007
《数据库设计与应用》,[中]李萍,高等教育出版社,2008;
数据表设计
t_user
字段名
|
数据类型
|
主键
|
是否空
|
备注说明
|
userId
|
char(32)
|
Y
|
N
|
用户id主键
|
userName
|
varchar(50)
|
N
|
N
|
登录名
|
userPwd
|
varchar(50)
|
N
|
N
|
登录密码
|
email
|
varchar(50)
|
N
|
N
|
邮箱地址
|
info
|
varchar(50)
|
N
|
Y
|
用户信息
|
t_category
字段名
|
类型长度
|
主键
|
是否空
|
备注说明
|
categoryId
|
char(32)
|
Y
|
N
|
主键
|
categoryName
|
varchar(50)
|
N
|
N
|
分类名称
|
parentId
|
char(32)
|
N
|
Y
|
父分类ID
|
desc
|
varchar(100)
|
N
|
Y
|
分类描述
|
t_shop
字段名
|
类型长度
|
主键
|
是否空
|
备注说明
|
shopId
|
char(32)
|
Y
|
N
|
主键
|
shopName
|
varchar(200)
|
N
|
N
|
商品名称
|
shopKeeper
|
varchar(50)
|
N
|
Y
|
商家名称
|
price
|
decimal(8,2)
|
N
|
Y
|
定价
|
groupPrice
|
decimal(8,2)
|
N
|
Y
|
团购价格
|
discount
|
decimal(3,1)
|
N
|
Y
|
折扣
|
producePlace
|
varchar(100)
|
N
|
Y
|
生产地址
|
produceTime
|
char(10)
|
N
|
Y
|
生产时间
|
onsellingTime
|
char(10)
|
N
|
Y
|
上架时间
|
categoryId
|
char(32)
|
N
|
Y
|
所属分类ID
|
image_w
|
varchar(100)
|
N
|
Y
|
大图路径
|
t_cartItem
字段名
|
类型长度
|
主键
|
是否空
|
备注说明
|
cartItemId
|
char(32)
|
Y
|
N
|
主键
|
quantity
|
int
|
N
|
N
|
数量
|
shopId
|
char(32)
|
N
|
N
|
商品ID
|
userId
|
char(32)
|
N
|
N
|
用户ID
|
t_order
字段名
|
类型长度
|
主键
|
是否空
|
备注说明
|
orderId
|
char(32)
|
Y
|
N
|
主键
|
orderTime
|
char(19)
|
N
|
N
|
下单时间
|
total
|
decimal(10,2)
|
N
|
N
|
合计金额
|
status
|
int
|
N
|
N
|
订单状态
|
address
|
varchar(300)
|
N
|
N
|
收货地址
|
userId
|
char(32)
|
N
|
N
|
用户ID
|
t_orderItem
字段名
|
类型长度
|
主键
|
是否空
|
备注说明
|
orderItemId
|
char(32)
|
Y
|
N
|
主键
|
quantity
|
int
|
N
|
N
|
数量
|
subtotal
|
decimal(8,2)
|
N
|
N
|
小计
|
shopId
|
char(32)
|
N
|
N
|
商品ID
|
shopName
|
varchar(200)
|
N
|
N
|
商品名称
|
groupPrice
|
decimal(8,2)
|
N
|
N
|
商品团购价
|
image_b
|
varchar(100)
|
N
|
N
|
商品图片路径
|
orderId
|
char(32)
|
N
|
N
|
所属订单ID
|
t_admin
字段名
|
类型长度
|
主键
|
是否空
|
备注说明
|
adminId
|
char(32)
|
Y
|
N
, |
主键
|
adminName
|
varchar(50)
|
N
|
N
|
管理员名称
|
adminPwd
|
varchar(50)
|
N
|
N
|
管理员密码
|
adminAge
|
int
|
N
|
Y
|
管理员年龄
|
adminPost
|
varchar(20)
|
N
|
Y
|
管理员职务
|
adminTel
|
varchar(20)
|
N
|
Y
|
联系方式
|
t_seller
字段名
|
类型长度
|
主键
|
是否空
|
备注说明
|
sellerId
|
char(32)
|
Y
|
N
|
主键
|
sellerName
|
varchar(50)
|
N
|
N
|
商家名称
|
sellerPwd
|
varchar(50)
|
N
|
N
|
商家密码
|
sellerShopName
|
varchar(50)
|
N
|
N
|
商家店铺名称
|
sellerShopAddr
|
varchar(50)
|
N
|
Y
|
商家店铺地址
|
sellerShopTel
|
varchar(20)
|
N
|
Y
|
联系方式
|
安全保密设计
说明在数据库的设计中,将如何通过区分不同的访问者、不同的访问类型和不同的数据对象,进行分别对待而获得的数据库安全保密的设计考虑。
管理员按照等级和管理范围来划分,有高级管理员和普通管理员,普通管理员又分为审核商品发布的管理商家事务的商家管理员,处理用户需求的的用户管理员等。高级管理员可以对所有数据库中的数据进行访问管理,而普通管理员只能在对应工作的管理权限的范围内对数据进行管理。用户只能能访问个人的资料数据,以及访问商品的相关数据信息。商家可管理自己的账户数据,店铺数据,商品信息,用户部分信息可访问。
其中,管理权限包括:增,删,改,查;
访问权限包括:查。
(4)数据字典
表一:Goods
名称
|
属性
|
文字最大长度
|
备注说明
|
Gid
|
INTEGER
|
6
|
商品编号,唯一标识一个商品
|
Gname
|
VARCHAR
|
20
|
商品名称
|
Gprice
|
FLOAT
|
|
商品价格
|
Date
|
DATE
|
|
生产日期
|
表二:Seller
名称
|
属性
|
文字最大长度
|
备注说明
|
Sid
|
INTEGER
|
|
商家编号,唯一标识一个商家
|
Sname
|
VARCHAR
|
20
|
商家名称
|
Sadd
|
VARCHAR
|
20
|
商家地址
|
表三:User
名称
|
属性
|
文字最大长度
|
备注说明
|
Uaccount
|
INTEGER
|
|
用户账号,唯一标识一个用户
|
Uaccountname
|
VARCHAR
|
20
|
用户昵称
|
2. 存在问题与解决方案
2.1. 存在的主要问题
1. Javaweb项目开发中中文显示乱码问题
2. WEB-INF下如何实现*.jsp文件的互相跳转
2.2. 解决方案与可行性研究
1.Jsp前台页面出现乱码:
①最主要原因就是jsp页面编码问题,给页面添加如下
即可解决。
外部JS(JavaScript文件)出现乱码:
①这种比较头疼,调用的外部*.js(独立的JavaScript),其中js文件中涉及向前台输入中文,比方:$("#divNameError").html("请输入姓名");document.getElementById("theClock").innerHTML=”你好”;显示乱码,而如果把js代码直接写在前端jsp页面中就正常显示,导致的原因是*.js与*.jsp文件编码不统一导致的,可以通过NotePad++转换编码即可。
servlet后台获取前端数据出现乱码:
①后台servlet添加:request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
②从不同编码的前台获取数据添加:String linename = newString(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
③还有一种就是通过form表单提交数据时,没有写method属性,导致后台一直获取到乱码。
比较通用的方法可以,直接更改Tomcat server.xml文件
2.我们知道WEB-INF权限比较高,不允许直接的公共访问,也就意味着我们得新建servlet形式来进行访问。但对于那种只要求实现跳转页面需求而不需要后台进行数据处理的,显然这种方式比较low。那能否在不建任何后台中间件的情况下,实现页面的跳转呢?其实是可以的。
前台代码:
3. 下一步计划
总结前期工作,对中期评审的中存在的问题进行改进和完善,改进需求分析和设计阶段的工作,补充文档内容,修改不合适的地方。配置开发环境,编写代码,按照系统的需求逐步开发。
,
目录
1. 毕业设计的进展情况 1
1.1. 课题工作完成情况 1
1.1.1 项目背景........................................................................................................1
1.1.2 项目开发的意义............................................................................................1
1.1.3 确定项目功能................................................................................................1
1.1.4 项目可行性分析............................................................................................3
1.2. 知识学习情况 3
1.2.1 系统开发工具................................................................................................3
(1) 数据库.......................................................................................................3
(2) 开发语言...................................................................................................4
(3) 前台使用技术...........................................................................................6
1.2.2 需求分析.......................................................................................................7
(1) 关键抽取...................................................................................................7
(2) 用例规约描述...........................................................................................7
(3) 域模型设计.............................................................................................18
1.2.3 系统设计......................................................................................................18
(1) 测试用例.................................................................................................19
(2) 解决方案说明.........................................................................................25
(3) 鲁棒分析.................................................................................................27
(4) 数据库设计.............................................................................................29
(5) 数据字典.................................................................................................34
2. 存在问题与解决方案 35
2.1. 存在的主要问题 35
2.2. 解决方案与可行性研究 35
3. 下一步计划 36
1. 毕业设计的进展情况
1.1. 课题工作完成情况
1.1.1 项目背景
1999年底,随着互联网高潮来临。中国网络购物的用户规模不断上升。2010年中国网络购物市场延续用户规模、交易规模的双增长态势。2010年中国网络购物市场交易规模接近5000亿,达4980.0亿元,占到社会消费品零售总额的3.2%;同时,网络购物用户规模达到1.48亿,在网民中的渗透率达30.8%(《2013-2017中国网络购物行业市场前瞻与投资预测分析报告》统计数据显示)。对于一些传统企业而言,通过一些传统的营销手段已经很难对现今的市场形成什么重大的改变了。如果想将企业的销售渠道完全打开,企业就必需引进新的思维和新的方法。而网络购物正好为现今的传统企业提供了一个很好的机会与平台,传统企业通过借助第三方平台和建立自有平台纷纷试水网络购物,构建合理的网络购物平台、整合渠道、完善产业布局成为传统企业未来发展重心和出路。 网购系统的交易减少中间环节,消除代理中间差价,尽可能实现消费者和商家的利益最大化,引导国民经济稳定快速发展,有着巨大的发展空间。
本系统(基于Java技术的食品团购网)致力于提供产品展示及产品订购为核心的网上购物服务。
1.1.2 项目开发的意义
从系统的背景来看,可以看出开发一个网上购物系统有以下几点重大的意义:
·投资少,回收快。一项针对中国中小企业的情况调查显示,个人在网下启动销售公司的平均费用至少5万元,而网上开店建店成本非常小。一般说,筹办家网上的商店投入很小,不用去办营业执照,不用去个租门面,不用固积货品,所需资金不过1500元左右:网上商店比同等规模的地面商店“租金”要低得多,同时租金不会因为营业面积的增加而增加,投资者也不用为延长营业时间而增加额外的费用。
·基本不需要占压资金。 传统商店的进货资金少则几千元,多则数万元,而网上商店则不需要压资金。
·24 小时营业时间。网上商店延长了商店的营业时间,一天24小时、一年365天不停地运作,无须专人值班看店,都可照常营业。传统店铺的营业时间一般为8-12小时, 遇上坏天气或者老板、店员有急事也不得不暂时休息。
·不受店面空间的限制。 哪怕只是街边小店,在网上却可以拥有百货大楼那么大的店面,只要投资者愿意, 可以摆上成千上万种商品。目前国内最大的专业拍文网站同时在线的商品要超过10万件,已超过此大超市。
·不受地理位置影啊。 不管客户离店有多迹,山不许赖客是国内还是国外在M上客户一样可以很方使地找到升购天商品。这令消费群体定破了地域的限制,变行人限广词了。
1.1.3 确定项目功能
通过对淘宝网,拍拍等网上购物的认识和分析,我对网上购物有了基本的
了解,我觉得该系统至少应该具有以下的一些基本功能:
·注册管理: 能够对用户名,密码的简单验证:能够对电子邮箱,Email
进行有效性验证:能够防止利用页面刷新重复注册,以及已经注册的用户不能重复注册
·商品的管理:商品的展示,上架与下架,分类,折扣信息。分类显示商品:显示商品详情,提供购买链接:可以对商品进行模糊查询。浏览商品时不要求用户登录,但下订单前用户必须登录,对于浏览过的商品有历史记录。 管理员可以增添商品分类:修改商品店本信息:增添商品时候可以上传图片。
·会员的管理:会员管理自己的账号信息,包括地址,联系人,联系方式,尺寸大小等。
·购物车的管理:上限管理,加入和移除商品,批量处理(购买,清除)。欲购买商品可以增添到购物车:也可以从购物车退回商品,清空购物车:对于同一件商品的名次购买只能在原来的商品上增添数量,还可以修改购物车中某个商品的数量,统计商品总金额。
·订单的管理:历史订单,正在交易订单,待支付订单的管理等。只有登录的用户可下订单:用户可以查看自己的订单。管理员可以修改订单的状态。
·库存的管理:及时维护商品库存,并向用户显示。
·优惠的管理:优惠方式,时长,参与要求等。
·在线支付:拓展多种在线支付方式。
·售后评价及信用管理:制定信用等级的评价制度。
1.1.4 项目可行性分析
随着网络的快速发展,网上购物商城以其方便、快捷的特点受到了更多用户的青睐。对比传统的商场销售,网上商城可以将商品详细分类,为用户提供了更多的选择空间;通过前台商品的展示,可以使顾客更好地了解商城的商品;网络购物车的实现使顾客真正实现了足不出户、网上购物的目的。
网上购物商城系统后台数据库采用目前比较流行的MySql数据库,该数据库系统在安全性、准确性、运行速度方面有绝对的优势并且处理数据库最大,效率高;
业务逻辑控制方面采用MVC开发模式,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
前台使用JSP(JavaServer Pages)技术实现。JSP(JavaServer Pages)技术是由Sun 公司倡导,许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件中插入Java程序段和JSP标记(tag),从而形成JSP文件。用JSP开发的Web应用是跨平台的,既能够在Windows下运行,也能够在Linux下运行。
1.2. 知识学习情况
1.2.1 系统开发工具
(1)数据库
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
(2)开发语言
本系统采用Java作为开发语言,Java语言具有以下特点:
1.简单性
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。
2.面向对象
Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。
3.分布性
Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。
4.编译和解释性
Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
5.稳健性
Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
6.安全性
Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。这个安全机制部分包括类如何从网上装载。例如,装载的类是放在分开的名字空间而不是局部类,预防恶意的小应用程序用它自己的版本来代替标准Java类。
7.可移植性
Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。Java环境本身对新的硬件平台和操作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。
8.高性能
Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。
9.多线索性
Java是多线索语言,它提供支持多线索的执行(也称为轻便过程),能处理不同任务,使具有线索的程序设计很容易。Java的lang包提供一个Thread类,它支持开始线索、运行线索、停止线索和检查线索状态的方法。Java的线索支持也包括一组同步原语。这些原语是基于监督程序和条件变量风范,由C.A.R.Haore开发的广泛使用的同步化方案。用关键词synchronized,程序员可以说明某些方法在一个类中不能并发地运行。这些方法在监督程序控制之下,确保变量维持在一个一致的状态。
10.动态性
Java语言设计成适应于变化的环境,它是一个动态的语言。例如,Java中的类是根据需要载入的,甚至有些是通过网络获取的。
(3)前台使用技术
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 [1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
使用JSP具有以下优点:
(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP的局限性JSP的优势是显而易见的。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。
1.2.2 需求分析
(1).关键抽取
关键抽取(Key Abstraction)就是类或者对象组成的名词域的部分。
从软件需求规格说明书里将所有名词抽取出来,填入“候选关键抽取”表格,从而识别出所有的关键抽取。用CRC(Class - Responsibility - Collaborator)分析法确定最基本的一组关键抽取。
候选的关键抽取
|
排除的原因
|
选定的名字
|
商品
|
|
商品
|
商家
|
|
商家
|
用户
|
|
用户
|
订单
|
|
订单
|
广告商
|
|
广告商
|
购物车
|
|
购物车
|
管理员
|
|
管理员
|
广告
|
|
广告
|
售后服务
|
|
售后服务
|
(2).用例规约描述
《用例规约描述》是描述项目小组对项目进行需求分析得到的关于用户和系统之间交互作用的文本性描述文档。用例是关于用户和系统之间相互作用的文本性描述,从外部角度描述系统的行为,表达系统应该做什么。本文档通过用例规约描述,来进一步说明该系统需求,是下一阶段系统设计的基础,也是测试用例的重要依据。
缩写、术语
|
解 释
|
actor
|
角色
|
use case
|
用例
|
用例描述:
用例名称:
|
登陆注册
|
用例ID:
|
001
|
角色:
|
用户,商家,广告商,系统管理员
|
用例说明:
|
提供给注册页面,若有账号,直接输入账号密码登陆,然后根据登陆者选择的身份到数据库中进行验证,账户合法就转跳到相应的页面
|
前置条件:
|
所有人均可申请注册账号,拥有某角色的账户可以进行登陆操作
|
基本事件流:
|
1. 点击登陆注册按钮
2. 选择登陆身份选项
3. 输入自己的账号密码 (或申请注册)
4. 选择提交,进行合法性验证
|
其它事件流:
|
在网站首页可以选择登陆注册,或在浏览选择商品后加入购物车时选择登陆注册
|
异常事件流:
|
用户名不存在或密码错误
|
后置条件:
|
登陆成功之后转跳到相应的页面
|
用例名称:
|
商品信息发布
|
用例ID:
|
0002
|
角色:
|
商家
|
用例说明:
|
商家将商品的商品类型,商品名称,商品价格,商品折扣,商品库存 ,商品售出数量,厂家,产地,生产日期,商品描述填写完毕后,在添加图片描述,即可进行发布。然后刷新网页在相应分类位置上即可看到该商品的出售信息
|
前置条件:
|
商家已经登录商品网站后台管理系统
|
基本事件流:
|
1. 选择添加商品
2. 填写新闻标题,商品相关信息以及上传图片
3. 提交发布申请,待管理员审查商品信息后上架商品
4. 审核通过,确认发布即可显示出售信息
|
其它事件流:
|
在提交给管理员审查前无法发布商品出售信息,审核完成商家确认之后上架商品
|
异常事件流:
|
提示图片大小超过范围错误信息,重新上传;生产日期的不合法等
|
后置条件:
|
商家得到审核结果,商品上架
|
用例名称:
|
添加购物车
|
用例ID:
|
003
|
角色:
|
用户
|
用例说明:
|
用户在浏览商品信息后选择购买的品种,数量,颜色等信息后加入购物车
|
前置条件
|
用户已经登录个人账户
|
基本事件流:
|
1. 搜索欲购商品信息
2. 浏览商品
3. 选择商品种类,数量等,点击添加购物车
4. 在购物车中可以更改所选商品的数量,种类,或者将商品从购物车中删除
|
其它事件流:
|
在添加购物车之后,可以选择某些商品形成订单
|
异常事件流:
|
在用户登陆个人账户之前,添加购物车的操作无法完成
|
后置条件:
|
商品成狗添加到购物车,可以选择商品形成订单
|
用例名称:
|
分类查找商品信息
|
用例ID:
|
004
|
角色:
|
用户
|
用例说明:
|
用户在搜索分类栏选择商品种类进行查找,将符合搜索种类的商品显示在网页上
|
前置条件:
|
无前置条件,打开网页即可搜索浏览商品信息
|
基本事件流:
|
1. 点击搜索按钮
2. 在搜索框下选择商品的种类的信息
3. 搜索条件可以多个
4. 点击搜索
|
其它事件流:
|
在选择大的种类下可以继续选择更小的范围进行搜索,搜索的条件可以选择多个;点击图片可以查看大图;点击商品标题或信息可以进入商品详情页面
|
异常事件流:
|
没有满足指定条件的商品,返回无搜索结果页面
|
后置条件:
|
在网页中显示 符合模糊搜索的商品的信息
|
用例名称:
|
网站新闻发布
|
用例ID:
|
005
|
角色:
|
用户
|
用例说明:
|
用户在搜索框输入关键字进行查找,将符合搜索种类的商品显示在网页上。
|
前置条件:
|
无前置条件,打开网页即可搜索浏览商品信息
|
基本事件流:
|
1. 点击搜索按钮
2. 在搜索框中输入要搜索的商品的关键词
3. 点击搜索
|
其它事件流:
|
在选择输入关键字搜索时,可以同时输入多个关键字进行搜索;点击图片可以查看大图;点击商品标题或信息可以进入商品详情页面
|
异常事件流:
|
没有满足指定条件的商品,返回无搜索结果页面
|
后置条件:
|
在网页中显示 符合精确关键词搜索的商品的信息
|
用例名称:
|
添加购物车
|
用例ID:
|
006
|
角色:
|
用户
|
用例说明:
|
用户在浏览商品后,选择好商品的种类,颜色,尺码等属性选项之后,点击添加购物车,商品被添加到购物车面
|
前置条件:
|
用户登陆自己的账户之后才能进行添加购物车的操作
|
|
, "text-align: justify; text-indent: 2em; margin-top: 0px; margin-bottom: 0px; -ms-text-justify: inter-ideograph;">基本事件流:
1. 进入商品的详情页面
2. 选择商品的种类,颜色,尺码,数量等选项
3. 可以修改类,颜色,尺码,数量等选项
4. 选择添加购物车
其它事件流:
在提交之前,随时可以返回,任何选择修改内容都不会影响购物车里的商品状态
异常事件流:
购物车商品数量已达上限时无法添加购物车,需要清理购物车之后才能继续添加
后置条件:
用户所选择的商品成功添加到购物车里
用例名称:
|
管理购物车
|
用例ID:
|
007
|
角色:
|
用户
|
用例说明:
|
用户在登陆自己的账号之后,选择查看购物车,将该用户 的购物车里的商品信息显示出来,用户对某商品的数量,种类等信息可以进行修改;对不想要的商品可以将其从购物车里删除
|
前置条件:
|
用户登陆自己的账户之后才能进行管理购物车的操作
|
基本事件流:
|
1. 点击购物车按钮
2. 查看到自己购物车的商品的信息
3. 修改某些商品的种类,数量等选项
4. 若删除商品,在商品右侧点击删除按钮
5. 提交事件之后刷新网页,将修改好的新状态下购物车里的商品信息重新显示出来
|
其它事件流:
|
在购物车列表的商品里可以点击商品进入详情页,在详情页里修改商品数量,种类等后返回购物车,返回购物车重新显示购物车详情
|
异常事件流:
|
购物车商品为空时无法将商品详情显示出来,提供转跳浏览商品选项按钮
|
后置条件:
|
购物车里的商品的状态成功被修改并返回成功更新后的购物车里的商品详情
|
用例名称:
|
形成订单
|
用例ID:
|
008
|
角色:
|
用户
|
用例说明:
|
用户在登陆自己的账号之后,在购物车里选择好预购商品之后点击提交订单形成订单,转跳订单管理页面
|
前置条件:
|
用户登陆自己的账户并在购物车里选择好预购商品之后才能进行提交形成订单的操作
|
基本事件流:
|
1. 点击进入购物车
2. 查看到自己购物车的商品的信息
3. 选择预购商品的种类,数量等选项
4. 点击提交订单
5. 进入订单管理页面
|
其它事件流:
|
在购物车里可以完成购物车的管理工作,提交订单前可以对商品进行多次修改
|
异常事件流:
|
购物车商品为空时无法提交订单;
购物车里存放过期商品无法购买,商品失效,无法形成订单
|
后置条件:
|
成功形成订单,进入订单管理页面进行管理
|
用例名称:
|
订单管理
|
用例ID:
|
009
|
角色:
|
用户,商家
|
用例说明:
|
对订单进行管理,可以修改收货人的地址,联系方式等等,还可以取消订单
|
前置条件:
|
用户登陆自己的账户并在购物车里选择好预购商品之后形成订单,才可对订单进行管理 ;
用户的订单已经形成提交后商家才能对该用户的订单进行管理
|
基本事件流:
|
1. 点击进入订单管理
2. 修改要变更的信息
3. 若要删除订单点击删除订单
4. 提交确认
5. 更新成功修改订单状态并返回新订单的信息
|
其它事件流:
|
在确认提交之前可以退出修改
|
异常事件流:
|
订单失效后无法进入订单管理
|
后置条件:
|
成功修改订单的信息
|
用例名称:
|
订单支付
|
用例ID:
|
010
|
角色:
|
用户
|
用例说明:
|
提交订单之后,若要修改就到订单管理页面,完成修改确认无误之后选择对自己的订单进行支付
|
前置条件:
|
前置条件有:用户已将登陆自己的账户;
订单已经提交完成
|
基本事件流:
|
1. 点击进入订单管理
2. 选择是否使用优惠券以及实用的优惠券的种类
3. 确认使用优惠券之后计算订单的总价格
4. 更新订单状态,返回新订单信息
5. 点击支付即可完成订单的支付工作
|
其它事件流:
|
支付订单前可以任意修改优惠券种类,最后支付时以最后一次的更改结果为准支付
|
异常事件流:
|
订单失效后无法支付;
优惠券过期后无法使用
|
后置条件:
|
订单支付完成
|
用例名称:
|
确认收货
|
用例ID:
|
011
|
角色:
|
用户
|
用例说明:
|
用户收到商品之后,确认商品完整,登陆自己的账户,在订单中选择正在进行的订单,可看到当前正在交易中的所有订单,点击相应的订单然后确认收货
|
前置条件:
|
用户已将登陆自己的账户;
订单已经支付完成;
用户已经收到货物
|
基本事件流:
|
用户进入订单管理页面
选择已收到货的相应的订单
3. 点击确认收货
4. 订单交易完成,修改订单状态为完成
|
其它事件流:
|
若订单的状态不会发生变更对商品存在疑问,可以点击联系客服;
在 确认收货之前
|
异常事件流:
|
订单的确认已经过期,系统默认更改订单状态为已完成,用户无法再次确认收货
|
后置条件:
|
订单的状态置为完成
|
用例名称:
|
售后评价
|
用例ID:
|
012
|
角色:
|
用户
|
用例说明:
|
确认收货之后,在系统默认自动评价之前,用户可以对已经交易的订单进行评价
|
前置条件:
|
用户已将登陆自己的账户;
订单已经支付完成;
已经确认收货
|
基本事件流:
|
1. 点击进入订单管理
2. 选择已完成状态的订单
3. 点击评价
4. 用户输入对商品的评价
5. 完成提交
|
其它事件流:
|
评论确认提交前系统不会保存用户的评论
|
异常事件流:
|
系统检测到用户输入非法(敏感字符,不良言论),评论无法完成
|
后置条件:
|
评论成功,在商品详情页的用户评论会更新用户的评论
|
用例名称:
|
商品管理
|
用例ID:
|
013
|
角色:
|
商家
|
用例说明:
|
商家对自己商铺的商品进行管理,主要可以进行的操作有:
向管理员申请新商品的上架;
修改商品标题,详情介绍;
修改商品的价格;
修改商品的库存数量;
商品的下架等
|
前置条件:
|
商家登陆自己的账户;修改的信息合法
|
基本事件流:
|
1. 商家登陆自己的账户
2. 选择商品管理
3. 选中要管理的商品
4. 修改商品的标题
5. 修改商品的详情介绍
6. 修改商品的价格
7. 修改商品的库存数量
8. 下架商品
9. 对以上的管理项完成任意一个或多个的修改后点击确认修改
|
其它事件流:
|
确认修改前系统不会更新商品的状态信息
|
异常事件流:
|
商品在提交给管理员审核之前不能发布;
商品标题或信息包含不合法字符;
商品价格设置不合法;
对已下架的商品不能进行管理,若要重新上架,需要重新向管理员提交审核
|
后置条件:
|
成功管理商品的信息,更新商品状态信息
|
用例名称:
|
商品发布
|
用例ID:
|
014
|
角色:
|
商家
|
用例说明:
|
商家要上架新的商品时,需要先向管理员提交商品审核,管理员审核通过之后商家可以发布自己的商品,上架之后可供用户购买
|
前置条件:
|
商家登陆自己的账户;
上传商品的图片,完成商品信息的填写;
商品审核完成
|
基本事件流:
|
1. 商家登陆自己的账户
2. 选择商品管理
3. 点击添加新的商品
4. 填写商品的详情介绍
5. 上传商品图片
6. 提交审核
7. 审核完成
8. 发布商品
|
其它事件流:
|
填写商品的信息时可以退出或修改,提交审核之后也可撤回
|
异常事件流:
|
商品的信息输入不合法;
商品的图片上传异常;
商品审核成功之前无法发布商品
|
后置条件:
|
发布商品
|
用例名称:
|
加入团购
|
用例ID:
|
015
|
角色:
|
用户
|
用例说明:
|
用户在浏览商品之后,选择好商品的数量等选项后,可以加入购物车,或者选择加入团购,加入团购在规定的时间内达到规定的拼团人数后即视为团购成功。加入团购时,会生成订单,完成订单的支付后成功加入团购。若在规定的时间内无法集齐规定的人数则团购失败,订单交易失败,置订单状态为失败并告知用户订单已失败,金额退回用户账户
|
前置条件:
|
填写完预购商品信息,收货地址联系方式等后生成订单;
成功支付订单;
当前的团团购的人数还没有到达规定人数
|
基本事件流:
|
1. 登陆自己的账户
2. 浏览商品
3. 填写预购商品的信息
4. 选择加入团购
5. 提交订单
6. 支付订单
7. 等待到达规定人数之后自动完成团购
8. 规定时间内未达到规定人数则团购失败
9. 将该团购成员的订单状态修改为失败
10. 订单失败,通知团购成员,并将金额退还
|
其它事件流:
|
加入团购后,提交订单,在完成支付之前可以退出团购,此时订单状态为待支付
|
异常事件流:
|
对团购的状态为待支付的订单进行再次支付时,检查到当前团中团购人员已达上限即该团的团购操作已经完成,则支付失败
|
后置条件:
|
团购成功
|
(3).域模型设计
1.2.3 系统设计
(1)测试用例
用例编号: LI_01_01
测试目的: 测试用户,管理员,商家是否可以登陆团购网。
测试场景: 在团购网首页找到登陆/注册,点击进入,输入账号密码,然后登陆进入个人页面。
所需数据: 用户,管理员或商家的账号和密码。
测试步骤:
访问网站首页
点击登陆/注册。
转到登陆/注册页面。
选择登陆身份,输入账号密码。
点击登陆。
从数据库中验证信息看账号是否存在以及密码是否正确。
成功后能进入自己的页面。
预期结果:
用户:在网站首页输入账号密码成功之后显示成功登陆信息,把用户的状态显示为已登陆,仍然停留在商品首页。
商家:输入账号密码成功之后显示成功登陆信息,转跳到自己店铺的管理主页。在商家管理页面的主页,可以选择各个管理项,点击进入进行管理。
管理员:输入账号密码成功之后显示成功登陆信息,转跳到管理员的管理主页,在管理员管理主页选择对用户或者商家进行管理。
用例编号: ET_01_01
测试目的: 测试用户,管理员,商家是否可以退出团购网。
测试场景: 用户,管理员,商家已经成功登陆,点击个人状态管理,选择安全退出。
所需数据: 无。
测试步骤:
用户,管理员,商家在各自的个人登陆状态页面下点击图标
点击安全退出
提示已经安全退出
安全退出后转到相应页面或者重置状态
预期结果:
用户:在网站商品页面退出,则修改登录状态;在个人信息页面退出,则返回商品浏览首页
商家:从管理页面安全退出,转到登陆注册页面
全套毕业设计论文现成成品资料请咨询