网上购物系统详细设计.docx
《网上购物系统详细设计.docx》由会员分享,可在线阅读,更多相关《网上购物系统详细设计.docx(35页珍藏版)》请在冰豆网上搜索。
网上购物系统详细设计
网上购物系统详细设计
WEBapplicationplatformDesignelucidation
indetail
文档编制:
全体开发人员
文档整理:
袁帮臣
文档校对:
袁帮臣、段永超、王玲
编制日期:
2011.05
目录
1.引言4
1.1编写目的4
1.2项目背景4
1.3定义4
1.4参考资料4
2.总体设计4
2.1需求概述4
2.2软件结构5
3.程序描述5
前台模块5-7
后台模块7-8
3.1程序算法8
3.2程序逻辑8-9
3.3程序接口10
3.4存储分配10
3.5限制条件10
3.6测试要点10-11
4.数据库设计11
4.1商品表11
4.2用户表11
4.3定单表11-12
4.4订单记录表12
4.5管理员信息表12
4.6缺货登记表12
4.7商品分类表12
4.8数据库操作关键代码(部分)12-14
5.实体关系图(E-R)15
6.关键代码(部分)17-24
7.总结和个人小结24
7.1个人小结24-26
7.2总结26-27
1、引言
1.1编写目的
电子商务是于九十年代初,在欧美兴起的一种全新的商业交易模式,它实现了交易的无纸化,效率化,自动化表现了网络最具魅力的地方,快速的交换信息,地理界限的模糊,这所有的一切也必将推动传统商业行为在网路时代的变革。
随着电子商务,尤其是网上购物的发展,商品流通基础设施和配套行业的重点将会将对中国商品流通领域和整个经济发展带来种种影响,确实值得我们认真研究。
特别是在全球经济一体化的国际背景下,在我们继续扩大国内流通领域对外开放的同时,深入研究这个问题,审慎制订相应的宏观对策,尤其重要和迫切。
网上购物是一种具有交互功能的商业信息系统。
它向用户提供静态和动态两类信息资源。
所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。
网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。
这种全新的交易方式实现了公司间文档与资金的无纸化交换。
1.2项目背景
系统名称:
基于Javaweb的B/S架构的网上购物系统
任务提出者:
南京机电职业技术学院实训处
开发团队:
第五组全体开发人员
用 户:
喜欢网上购物的各类人群
软件实现单位:
南京机电职业技术学院09软件技术
(1)班第(5)小组
1.3定义
a)JSP(JavaServerPages,Java服务页)是由SUN公司所倡导,众多公司参与,一起建立的一种动态网页技术标准。
由于它是基于Java技术的动态网页解决方案,具有良好的可伸缩性,并且与JavaEnterptiseAPI紧密结合,因此在网络数据库应用开发方面有得天独厚的优势。
b)SQL:
StructuredQueryLanguage1.4参考资料
c)CSS:
是CascadingStyleSheets(层叠样式表)的简称,CSS语言是一种标记语言,它不需要编译可以直接由浏览器执行。
d)HTML:
HypertextMarkupLanguage超文字标记语言。
e)JAVASCRIPT:
一种由SunMicrosystems所开发的程序脚本语言(它是一种严物件导向的语言,适合在网际网络上发展主从架构的应用程序),常常简称JS。
f)B/S:
Browser/Server(浏览器/服务器)。
g)C/S:
Client/Server(客户端/服务器)。
h)B2B:
BusinesstoBusiness商家对商家,电子商务的一种业务形式。
i)B2C:
BusinesstoConsumer商家对顾客,电子商务的一种业务形式。
j)C2C:
ConsumertoConsumer顾客对顾客,电子商务的一种业务形式。
1.4参考资料
a)网上购物系统--需求规格说明书
b)网上购物系统--概要设计说明书
c)永创教育联盟综合实训项目资源积累与学习分享系统
d)《软件需求》KarlE.Wiegers机械工业出版社1999年
e)《数据库原理及应用》李绍原主编 科学出版社
f)《软件工程导论》(第五版)张海藩编著清华大学出版社
g)《信息管理系统》黄梯云北京:
电子工业出版社,1995
h)《数据库原理》丁宝康北京:
经济科学出版社,2000
2、总体设计
2.1需求概述
2.1.1系统总的来说需要实现以下功能:
A.前台模块
a)商品展示模块
b)用户注册登录模块
c)购物车模块
d)订单模块
B.后台模块
a)管理员登录模块
b)商品管理模块
c)订单处理模块
d)用户管理模块
2.1.2输入要求:
数据完整,详细真实。
2.1.3输出要求:
简洁、快速、实时。
2.1.4对于本软件的时间特性要求:
a)响应时间:
少于3秒;
b)更新处理时间:
少于2秒;
c)数据转换和传送时间少于5秒。
2.1.5对于本软件灵活性的要求:
a)操作方式:
更人性化
运行环境:
Windowsxp、Windows7或更高版本的基于×86的pc
2.2软件结构
图1
3、程序描述
具体系统前台功能需求描述:
A.商品展示模块
a)功能:
用户通过该模块来获取自己需要的商品,完成商品查询的功能
b)性能:
这是一个频繁使用的模块,对性能要求在1-10秒内作出反应
c)输入项目:
组合、模糊查询条件
d)输出项目:
标准的SQL语句,发送设置浏览去命令,根据用户要求输出展示商品
e)测试要点:
测试各种组合、模糊查询方式
B.用户注册登录模块
a)功能:
1、登录模块---用户第一次登录时首先要注册,成为会员后,才可以购买物品,用户可以通过单击首页的注册按键来打开注册页面进行会员注册操作。
网站首页在用户第一次访问时会判断用户是否登录,未登录则显示;
用户登录窗口,提示用户登录或注册.对于已经登录的用户,在用户
登录窗口将显示用户的相关信息.(简化为默认的用户进入时直接
是为登录状态,忽视cookies)
2、注册模块---能在会员登录窗口中单击登录按钮后,系统将对用户名和密码进行验证,判断用户是否是已注册用户,如果已注册,则更新用户在网站中的状态,如果没有注册,则拒绝用户的登录操作,返回登录页面让其
再次登录.
3、密码找回模块---当出现密码遗失或者被盗时,立即把账号冻结;忘记密码时,自行解决,以前的问题只要回答正确就可以登录成功,或者得到密码;可以直接打电话到相关的公司进行业务查询。
提出问题,并解决问题。
b)性能:
要求此模块可以及时准确的将用户注册登录信息传递到后台,快速做出反应
c)输入项目:
用户名、密码
d)输出项目:
无
e)测试要点:
主要测试模块能否准确、及时将用户信息提取或存入数据库,实现登陆注册功能
C.购物车模块
a)功能:
1、添加购物车、
添加购物车就是把用户选中的商品放在购物车中。
当用户在前台网页
中单击商品的“购买”按钮时,系统会将该商品的详细信息展示在查
看物品清单页中.只有用户在登录状态时才能商品放到购物车中,若未
登录则进入登录界面.
2、查看购物车
为了方便用户随时查看购物情况,在网站的首页加入了查看购物车链
接,通过它可以将所选物品信息放入购物车中显示出来。
在查看购物车的时候还应该可以对购物车做出修改,可以修改商品数量,可以取消对该商品的购买,在查看购物车时还能再次进入主页进行再次选书.
3、清空购物车
清空购物车是指当用户订单生成后,倘若还想继续购物,一定要清空
购物车在进行选购商品,这样防止重复购物。
此过程应该在用户确认
提交订单时就自动运行.同时把订单转移到已完成的订单这个栏目中去.
b)性能:
能够准确处理购物车中的商品,包含修改、查看、清空,即时生成订单
c)输入项目:
鼠标事件、配置文件
d)输出项目:
设置数据库
e)测试要点:
购物车功能否实现个子模块功能
D.订单模块
a)功能:
生成订单是网上购物系统的最终目的,前面的所有的功能的实现都是为最后生成一个用户满意的订单做基础,在此要生成一个可以供用户随时查询订单号(如何生成),还要保存用户订单中所购买的商品信息。
当用户确认对购物车不再改变后,就可以到收银台结帐并生成订单。
结帐的流程是:
从购物车中读取商品名称,商品数量,商品价格信息,生成唯一的一个订单号,同时也把用户注册的基本信息读取出来,形成一个完整的订单写入数据库中,实现订单管理,可以删除修改我的订单
b)性能:
能够准确处理订单信息,实现模块功能
c)输入项目:
鼠标事件、配置文件
d)输出项目:
设置数据库
e)测试要点:
订单模块能否准确处理前台数据并转存数据库
具体系统后台功能需求描述:
E.管理员登陆模块
a)功能:
在前台首页单击管理员入口,将转到管理员登录页面。
该页面的能是对管理员身份验证,用户输入用户名和密码后单击“登录”按键,系统将判断用户名和密码的有效性,如果通过验证则转到后台首页,反之则提示错误。
b)性能:
要求可以实现管理员登陆,管理整个系统
c)输入项目:
管理员账户和密码
d)输出项目:
管理员入口,后台界面
e)测试要点:
主要测试管理员能否通过登陆入口,实现系统管理
F.商品管理模块
a)功能:
1、添加商品
管理员登陆后,单击导航区的“添加商品”超链接,系统将打开添加商品页面,该页面主要用于商品信息添加到数据库表中,以提供前台首页商品展示类别展示所需要的数据依据。
为了减少错误,在提交商品信息时,需要对数据的合法性进行验证,不能添加数据库中已存在的商品,输入的商品价格不能为空等.为了确保信息在数据表中的唯一性,在用户提交表单时,需要先根据用户输入的商品名称对数据表进行查询,确保此商品在数据表中不存在后,方可进行添加操作。
2、修改、删除商品
管理员登陆后,对于当前售罄的商品进行删除,还可以对信息错误的商品进行修改
b)性能:
要求可以实现管理员对商品信息进行准确实时的操作,包含添加、修改和删除
c)输入项目:
管理员账户、密码,添加商品的编号
d)输出项目:
商品及时信息
e)测试要点:
管理员登陆后台后,能否对数据库中商品信息进行及时准确处理
G.订单处理模块
a)功能:
用户从前台传送过来的订单信息经过处理后存入数据库,管理员将订单信息从数据库中提取,并对订单信息进行进一步的处理,然后向用户发货,对错误的订单信息进行提取,向用户发送提示,请求修改;对于无效的订单信息进行删除。
b)性能:
要求可以实现订单信息后台实时、准确操作和处理
c)输入项目:
管理员庄户和密码
d)输出项目:
订单管理界面
e)测试要点:
重点测试能否实现订单信息后台实时、准确操作和处理
H.用户管理模块
a)功能:
用户管理模块设计主要包括浏览用户信息、删除用户2个部分.
1、浏览用户信息
浏览用户信息又分两部分会员浏览、管理员浏览
①会员浏览
成为会员后,才可以购买物品、简单的浏览用户信息,用户只可浏览不可修改信息,从用户界面浏览到的信息只是其他用户购买情况以便其参考。
②管理员浏览
通过管理员浏览界面浏览用户购买信息等,管理员通过输入密码进入界面,可对信息进行标注等。
2、删除用户
删除已交易过的用户,删除交易失败等不需要的用户信息。
b)性能:
要求管理员登录后台后,可以对用户信息进行及时、准确管理
c)输入项目:
管理员账户和密码
d)输出项目:
用户管理窗口及用户管理详细操作选项
e)测试要点:
主要测试管理员是否可以对用户信息进行及时、准确管理
3.6程序算法
根据实际情况,把商品管理、用户管理、订单管理、系统管理等模块合成一个可执行的软件系统模型,谁用户可以快速的搜索和查找到所需商品,开发人员可以快速的确定需求,然后采用循环优化的开发模式,对系统模型进行连续的优化,对系统须具备的性质逐渐增加上去,直到所有性质全部满足,逐步把模块发展成为一套完善的系统。
3.7程序逻辑
a)系统前台流程:
b)系统后台流程图:
c)网上购物系统标准流程图:
对方身份
图2
3.8接口
3.8.1用户接口
本产品的用户一般需要通过终端(PC)进行操作,采用标准的浏览器界面,进入系统主界面后点击相应的页面,分别进入相对应的界面(如:
登陆页面)。
超级用户(管理员)对系统的维护,最好要有备份。
3.8.2软件接口
Windowsxp\Windows7操作系统,MySql数据库系统,tomcatweb应用服务器,MyEclipse集成开发环境、JDK1.6.x。
3.8.3外部接口:
网上购物系统与操作系统之间的交互通过调用函数来实现,系统与数据库引擎之间的交互通过java标准控件实现。
3.8.4内部接口:
数据以字符串的形式进行传输。
3.9存储分配
a)对不同时间的用户信心分不同的数据库进行信息的存储
3.10限制条件
a)不同用户对应不同的权限使用本系统
3.11测试要点
3.11.1输入项目
a)用户名、密码是不是有空字符串提示;
b)用户名、密码是不是有错误提示;
c)用户名、密码是不是有非法字符提示;
d)进入系统界面前是不是有用户类型提示。
3.11.2输出项目
a)注册用户:
显示出用户信息管理页面
b)非注册用户:
显示非注册用户,跳转到注册页面进行会员注册
4.数据库设计
4.1商品表:
(用来保存网上商城中每一种商品基本信息的数据表,是显示、维护及管理商品数据的依据)
字段名
描述
类型
长度
是否允许空
是否为主键
Id
商品编号
INTEGER
否
是
Name
商品名称
VARCHAR
50
否
否
price
商品价格
DOUBLE
否
否
Saleprice
销售价格
DOUBLE
4
否
否
Descripts
商品描述
TEXT
500
否
否
Saledate
上货时间
DATE
50
否
否
Salecount
商品数量
INTEGER
是
否
Image
商品图片存放路径
VARCHAR
50
是
否
lbId
类别编号
INTEGER
否
是
4.2用户表:
字段
描述
类型
长度
是否为空
是否为主键
Id
用户编号
INTEGER
否
是
Username
用户名
VARCHAR
20
否
否
Password
密码
VARCHAR
20
否
否
Realname
用户真实姓名
VARCHAR
20
是
否
Job
职业
VARCHAR
100
是
否
Address
用户地址
VARCHAR
100
是
否
Zip
邮政编码
VARCHAR
6
是
否
email
电子邮件地址
VARCHAR
50
是
否
4.3订单表
字段
描述
类型
长度
是否为空
是否为主键
Id
订单编号
INTEGER
否
是
Ordermo
生成订单的编号
VARCHAR
50
否
否
Userid
用户编号
INTEGER
否
否
Realname
收货人姓名
VARCHAR
20
否
否
Address
收货地址
VARCHAR
100
否
否
Zipcode
邮政编码
VARCHAR
6
是
否
Tel
联系电话
VARCHAR
11
是
否
Payment
付款方式
VARCHAR
20
是
否
Email
电子邮件地址
VARCHAR
50
是
否
Memo
备注说明
TEXT
2000
是
否
Time
订单生成时间
VARCHAR
20
是
否
tag
标志该订单是否处理过
INTEGER
是
否
Price
价格
DOUBLE
是
否
4.4订单记录
字段
描述
类型
长度
是否为空
是否为主键
Id
编号
INTEGER
否
是
Ordered
订单编号
INTEGER
否
否
Bookid
商品编号
INTEGER
否
否
Count
订购数量
INTEGER
否
否
price
该条目对应价格
INTEGER
否
否
4.5系统管理员信息表
字段
描述
类型
长度
是否为空
是否为主键
Id
用户编号
INTEGER
否
是
Username
用户名
VARCHAR
20
否
否
Password
密码
VARCHAR
20
否
否
Realname
真实姓名
VARCHAR
50
否
否
4.6缺货登记表
字段名
描述
类型
长度
是否允许空
是否为主键
Id
商品编号
INTEGER
否
是
Name
商品名称
VARCHAR
50
否
否
price
商品价格
DOUBLE
否
否
lbId
类别编号
INTEGER
否
是
4.7商品分类表
字段名
描述
类型
长度
是否允许空
是否为主键
Id
类别编号
INTEGER
否
是
Name
类别名称
VARCHAR
50
否
否
Descripts
类别描述
TEXT
500
否
否
4.8数据库操作关键代码(部分):
4.8.1连接数据库
publicclassDB
{
publicstaticvoidmain(String[]args){
System.out.println(newDB().getConnection());
}
publicConnectiongetConnection()
{
Connectioncon=null;
try
{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:
mysql:
//127.0.0.1:
3306/wsx?
user=root&password=111111&useUnicode=true");
}catch(Exceptione){
e.printStackTrace();
}
returncon;
}
}
4.8.2查询数据库
publicclassUserDAO
{
publicbooleancheckUserByUsername(Stringusername)
{
DBdb=newDB();
Connectioncon=null;
PreparedStatementpstmt=null;
booleanflag=false;
ResultSetrs=null;
try
{
con=db.getConnection();
Stringsql="select*fromstudentwhereusername=?
";
pstmt=con.prepareStatement(sql,1004,1007);
pstmt.setString(1,username);
rs=pstmt.executeQuery();
if(rs.next())
flag=true;
}catch(Exceptione){
e.printStackTrace();
//TODO:
handleexception
}
finally
{
try{
con.close();
}catch(Exceptione2){
//TODO:
handleexception
}
}
returnflag;
}
publicListgetAllUsers()
{
Listlist=newArrayList();
DBdb=newDB();
Connectioncon=null;
PreparedStatementpstmt=null;
booleanflag=false;
ResultSetrs=null;
try
{
con=db.getConnection();
Stringsql="select*fromstudent";
pstmt=con.prepareStatement(sql,1004,1007);
rs=pstmt.executeQuery();
while(rs.next())
{
Users=newUser();
s.setId(rs.getInt("id"));
s.setMajor(rs.getString("major"));
s.setUsername(rs.getString("username"));
list.add(s);
}
}catch(Exceptione){
e.printStackTrace();
}
finally
{
try{
con.close();
}catch(Exceptione2){
}
}
returnlist;
}
}
5.实体关系图(E-R):
6.类的设计(部分,以会员注册为例)
6.1页面设计
6.2包及类的设计
a)包名:
com.onlinestore.dao
类名:
UserDAO.java
方法:
见部分关键代码
b)包名:
com.onlinestore.servlet
类名:
UserServlet.java
方法:
见部分关键代码
c)包名:
com.onlinestore.bean
类名:
UserBean.java
方法:
见部分关键代码