网上购物系统毕业设计.docx

上传人:b****5 文档编号:11838912 上传时间:2023-04-05 格式:DOCX 页数:41 大小:447.44KB
下载 相关 举报
网上购物系统毕业设计.docx_第1页
第1页 / 共41页
网上购物系统毕业设计.docx_第2页
第2页 / 共41页
网上购物系统毕业设计.docx_第3页
第3页 / 共41页
网上购物系统毕业设计.docx_第4页
第4页 / 共41页
网上购物系统毕业设计.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

网上购物系统毕业设计.docx

《网上购物系统毕业设计.docx》由会员分享,可在线阅读,更多相关《网上购物系统毕业设计.docx(41页珍藏版)》请在冰豆网上搜索。

网上购物系统毕业设计.docx

网上购物系统毕业设计

网上购物系统

软件设计说明书

软件设计说明书

1.介绍

目的

通过编写本文档,目的是对所开发项目——网上书店售书系统,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试作准备。

范围

介绍了网上书店售书系统的注册模块、登录模块、选购图书、修改密码、管理员添加图书、退出登录、结账等几个模块。

定义、缩写词

SQL:

结构化查询语言

数据库:

数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。

Member:

存储用户名和密码的数据库

Computer:

存储计算机类图书的数据库库

Machine:

存储机械类的数据库

Accounting:

存储会计类的数据库

内容概览

✧注册:

会员的注册

✧登录:

会员的登录

✧选购图书结账:

最基本的功能,会员可以买书

✧修改密码:

会员修改密码

✧退出登录:

会员买完书退出登录

✧添加图书:

管理员的功能,向数据库添加图书

✧删除图书:

管理员的功能,向数据库添加图书

✧数据库:

实现数据的查询、添加、修改、删除的功能

2.体系结构表示方法

UML提供5种视图,从不同的角度描述系统的内容,不同的人员关注不同的方面,本文档采用其中4种:

用例视图:

着重描述系统的功能。

主要使用这个有用户,系统分析人员,设计人员和测试人员。

逻辑视图:

展示了描述系统关键方面的重要用例实现场景(使用交互图);

部署视图:

描述系统的硬件拓扑关系。

数据视图:

描述了数据流、持久性数据模式、对象与持久性数据之间的模式映射、对象到数据库、存储过程以及触发器的映射机制(使用类图描述数据模型,活动图表示数据流)。

3.系统要达到的目标和限制

Ø目标

网上书店售书系统的目标是:

在Internet,数据库和先进开发平台的基础上,利用现有的软件,配置一定的硬件,开发出一个具有开放体系结构的、易维护的、易移植的、健壮性较强的具有良好人机交互界面的网上书店售书系统。

从而为广大喜欢网上购书的用户提供一个方便快捷的网上购书平台。

Ø限制

普通用户不允许往数据库里添加图书,系统管理员才允许。

会员名必须注册过,才能够登录。

用户没有登录可以选购图书,但是不允许结账。

只有用户登陆后才允许修改密码。

只有用户登录才允许退出登录

4.用例视图

网上书店售书系统描述的主要用例有:

用户注册,用户登录,选购图书,结账,用户退出登录,管理员注册,管理员登录系统,添加图书,删除图书,管理员修改密码,管理员退出登录。

系统用例图

系统用例图见图4.1:

图4.1系统用例图

普通用户注册

用例简述

用户输入用户名和密码,申请成为会员

基本事件流

1用户:

用户提出注册要求

2系统:

显示注册页面

3用户:

输入要注册的用户名和密码

4系统:

验证注册信息是否符合要求,若符合要求,则将信息存入数据库

5顾客:

显示注册成功

7用例结束。

活动图

普通用户注册的活动图见图4.2

图4.2普通用户注册的活动图

普通用户登陆

用例简述

普通用户输入用户名和密码后可以进行图书的购买

基本事件流

1用户:

输入用户名和密码

2系统:

验证登陆信息是否正确

3用户:

显示登陆成功

4用例结束。

活动图

普通用户登陆的活动图见图4.3

图4.3普通用户登录的活动图

普通用户修改密码

用例简述

普通用户对于已经遗忘或者被盗取的密码可以及时修改。

基本事件流

1用户:

输入原有的用户名和密码,

2系统:

验证登录信息是否正确

3系统:

显示注册的用户

4用户:

输入旧密码和新密码

5系统:

验证修改密码信息是否正确

6.系统:

显示修改的密码

7用例结束

活动图

普通用户修改密码的活动图见图4.4

图4.4普通用户修改密码的活动图

普通用户选购并结账

用例简述

用户选取自己想要的图书后加入购物车中并结账

基本事件流

1用户:

输入用户名和密码

2系统:

验证登录信息是否正确

3用户:

选购图书后放入购物车,结账

4用例结束。

活动图

普通用户选购并结账的活动图见图4.5

图4.5普通用户选购并结账的活动图

管理员添加图书

用例简述

管理员向数据库中添加图书

基本事件流

1管理员:

输入用户名和密码

2系统:

验证登陆信息是否正确

3系统:

验证是否为管理员

4管理员:

输入表名,书名,价格

5系统:

验证输入信息是否正确,如果正确则添加进入数据库

6管理员:

添加成功,显示添加的图书的书名

7用例结束。

活动图

管理员添加图书的活动图见图4.6

图4.6添加图书的活动图

管理员删除图书

用例简述

管理员可以删除数据库中脱销,缺货或者停产的图书

基本事件流

1管理员:

输入用户名和密码

2系统:

验证登陆信息是否正确

3系统:

验证是否为管理员

4管理员:

输入表名,书名,价格

5系统:

验证输入信息是否正确,如果正确则从数据库中删除图书的所有内容

6管理员:

删除成功,显示删除的图书的书名

7用例结束。

活动图

管理员删除图书的活动图见图4.7

图4.7删除图书的活动图

用户退出登录系统

用例简述

用户退出登陆系统

基本事件流

1用户:

在登陆界面输入用户名和密码

2系统:

验证登陆信息是否正确

3用户:

确认从系统中退出

4结束用例。

活动图

用户退出登陆系统的活动图见图4.8

图4.8用户退出登录系统的活动图

管理员退出系统

用例简述

管理员退出系统。

基本事件流

1管理员:

在登陆界面输入用户名和密码

2系统:

验证登陆信息是否正确

3管理员:

确认从系统中退出

4结束用例。

活动图

管理员退出系统的活动图见图4.9

图4.9管理员退出系统的活动图

管理员登陆系统

用例简述

管理员可以输入用户名和密码后进入系统进行管理操作

基本事件流

1管理员:

输入用户名和密码

2系统:

验证登陆信息是否正确

3管理员:

显示登陆成功

4用例结束。

活动图

管理员登陆系统的活动图见图4.10

图4.10管理员登录系统的活动图

管理员修改密码

用例简述

管理员可以凭借原有的用户名和密码进行修改密码操作

基本事件流

1管理员:

输入原有的用户名和密码,

2系统:

验证登录信息是否正确

3系统:

显示注册的用户

4管理员:

输入旧密码和新密码

5系统:

验证修改密码信息是否正确

6.系统:

显示修改的密码

7用例结束

活动图

管理员修改密码的活动图见图4.11

图4.11管理员修改密码的活动图

管理员注册

用例简述

管理员可以申请注册成为用户

基本事件流

1管理员:

用户提出注册要求

2系统:

显示注册页面

3管理员:

输入要注册的用户名和密码

4系统:

验证注册信息是否符合要求,若符合要求,则将信息存入数据库

5管理员:

显示注册成功

7用例结束。

活动图

管理员注册系统的活动图见图4.12

图4.12管理员注册的活动图

5.逻辑视图

逻辑视图部分主要叙述了设计阶段的工作。

总览

图5.1的领域模型是网上书店售书系统的设计实体及其之间的关系;

图5.1领域模型

主要Package的介绍

网上书店售书系统Package图见图5.2

图5.2网上书店售书系统Package图

ØWebapp

Webapp包包含了action、form包,它们属于显示层的代码,主要使用struts框架。

ØService

Service包包含了业务实现的主要接口,每个接口有一个对应的serviceImpl的实现,serviceImpl类放在serviceImpl包中,其中serviceImpl的实现是通过调用dao接口来实现的,它们属于业务层的代码,主要使用spring框架。

ØDao

Dao包包含了业务实现的主要接口,每个接口都有一个对应的Hibernate版本的daoHibernate的实现,daoHibernate类放在daoHibernate包中,通过daoHibernate对数据库进行访问,它们属于持久层的代码,主要使用Hibernate框架。

ØModel

Model包包含了POLO类和Hibernate映射文件。

Øadmin

admin包包含了属于管理员操作的webapp、service、serviceImpl、dao、daoHibernate、model等包,这些包的关系同上。

Øuser

user包包含了属于管理员操作的webapp、service、serviceImpl、dao、daoHibernate、model等包,这些包的关系同上。

6.过程视图

过程视图部分叙述几个主要子系统的处理流程。

用户注册

用户注册的系统顺序图见图6.1

图6.1用户注册的系统顺序图

用户注册的VOPC类图见图6.2

图6.2用户注册的VOPC类图

用户注册的协作图见图6.3

图6.3用户注册的协作图

用户选购并结账

用户选购并结账的系统顺序图见图6.4

图6.4用户选购并结账的系统顺序图

用户选购并结账的VOPC类图见图6.5

图6.5用户选购并结账的VOPC类图

用户选购并结账的协作图见图6.6

图6.6用户选购并结账的协作图

管理员添加删除图书

管理员添加删除图书的系统顺序图见图6.7

图6.7管理员添加删除图书的系统顺序图

管理员添加删除图书的VOPC类图见图6.8

图6.8管理员添加删除图书的VOPC类图

管理员添加删除图书的协作图见图6.9

图6.9管理员添加删除图书的协作图

7.部署视图

部署视图描述了如何将具体软件制品分配到计算节点(具有处理服务的某种事物)上,表示了软件元素在物理架构上的部署,以及物理元素之间的通信。

网上书店售书系统的部署视图见图7.1

图7.1网上书店售书系统的部署视图

ØGenericPC

个人PC机。

ØBrowser

通用个人计算机上的网页浏览器,如:

IE6.0,Firefox等。

ØApache

Ø Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。

Apache取自“apatchyserver”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。

Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

ØStruts

Struts是开源软件。

使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。

如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。

ØTomcat6.0

Tomcat6.0提供Servlet容器。

ØHibernate

ØHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

ØMySQL

MySQL是小型关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

数据视图

网上书店售书系统数据在关系数据库中的组织。

网上书店售书系统的数据视图见图8.1

图8.1网上书店售书系统的数据视图

8.规模和性能

Ø满足的规模

能够满足500人同时浏览网上书店,100人同时使用数据库进行图书购买活动

Ø满足的性能

各项指标性能良好,能达到客户要求的等待时间

9.质量

经测试证实的软件缺陷和限制是不允许注册带有汉字的会员名,软件性能的影响不是很大。

另外,本程序的不足之处在于只是一个简单的网上书店售书系统,主要是模拟购书的情形,因此实际上并不是一个真正的售书系统,其次系统管理员同样也允许购买图书,这与实际不符合。

 

10.测试

10.1测试概要

测试项目

测试内容

注册

(1)测试用户的注册账号是否允许有数字或字母与汉字的组合出现;

(2)是否允许注册相同的用户名;(3)注册信息不完整时,系统对错误信息的处理是否正确

登录

(1)主要测试用户名和密码不匹配时,是否能成功登陆

(2)信息填写不完整时,系统对错误信息的处理是否正确

购书,结账

(1)主要测试当一个客户登陆后,选购完书后进入结账窗口时,是否显示正确的购买的图书和应付款。

(2)用户没有登录时,是否能够结账

修改密码

(1)主要测试用户在没有登录的情况下,是否允许修改密码

(2)信息不完整时,系统对错误信息的处理是否正确

退出登录

(1)主要测试用户没有登录的情况下,按下退出登录,系统的处理是否正确

(2)用户登录后,是否能正常退出登录

添加图书

(1)测试当普通用户登录时,是否能添加图书

(2)当管理员输入添加的图书信息后是否能正确将图书添加到数据库中。

(3)是否允许添加名字相同的图书到数据库中(4)填写信息不完整时,系统对错误信息的处理是否正确。

10.2测试结果及发现

10.2.1注册模块测试

检测模块

检测项

预计输入

实际输入

测试结果

 

注册模块

 

会员名是否允许有汉字的出现

会员名:

123天

密码:

654321

会员名:

123天

密码:

654321

会员名不允许有汉字的出现

是否允许注册已经注册过的会员名

会员名:

abc

密码:

654321

会员名:

abc

密码:

654321

不允许注册已经注册过的账户

注册信息不完整,系统对错误信息的处理是否正确

会员名:

abc

密码:

会员名:

abc

密码:

系统对错误信息的处理是正确的

10.2.2登录模块测试

检测模块

检测项

预计输入

实际输入

测试结果

 

登录模块

 

会员名和密码不匹配时,能否成功登陆

会员名:

abc

密码:

123456(实际密码为:

654321)

会员名:

123天

密码:

123456

会员名和密码不匹配时,不能登录

填写信息不完整时,系统对错误信息的处理是否正确

会员名:

abc密码:

会员名:

abc

密码:

系统对错误信息的处理是正确的

 

10.2.3购书,结账模块

检测模块

检测项

预计输入

实际输入

测试结果

 

结账,购书模块

 

用户登陆后,

选完书后是否能正确结账

会员名:

abc

密码:

654321

会员名:

abc密码:

654321

可以正确结账

用户没有登录时是否允许结账

会员名:

密码:

会员名:

密码:

用户没有登录,不允许结账

10.2.4修改密码模块测试

测试模块

测试项

预计输入

实际输入

测试结果

 

修改密码模块

用户在没有登录的情况下,是否允许修改密码

会员名:

密码:

会员名:

密码:

不允许修改密码

填写信息不完整,系统对错误信息的处理是否正确

旧密码:

654321新密码:

旧密码:

654321

新密码:

系统对错误信息的处理是正确的

10.2.5退出登录模块

测试模块

测试项

预计输入

实际输入

测试结果

退出登录模块

用户在没有登录的情况下,按下退出登录,系统对错误信息的处理是否正确

会员名:

密码:

会员名:

密码:

系统对错误信息德尔处理是正确的

用户在登陆后,是否能正常退出登录

会员名:

abc密码:

654321

会员名:

abc密码:

654321

可以正常退出登录

10.2.6添加图书模块

测试模块

测试项

预计输入

实际输入

测试结果

 

添加图书模块

普通用户登录后,是否允许添加图书

会员名:

abc密码:

654321

会员名:

abc密码:

654321

普通用户登录后,允许添加图书

管理员登陆后,输入图书信息后,是否能正常添加图书到数据库中

表名:

computer

书名:

数据结构

价钱:

25

表名:

computer

书名:

数据结构

价钱:

25

能够正常添加图书到数据库中

是否允许添加相同名称的图书到数据库中

表名:

computer

书名:

数据结构

价钱:

25

表名:

computer

书名:

数据结构

价钱:

25

不允许添加相同名称的图书到数据库中

信息填写不完整时,系统对错误信息的处理是否正确

表名:

computer

书名:

数据结构

价钱:

表名:

computer

书名:

数据结构

价钱:

系统对错误信息的处理是正确的

11.附录

本系统实现了部分功能(注册,登录):

(1)注册模块:

①register.jsp

<%@pagecontentType="text/html;charset=GB2312"%>

<%@includefile="head.txt"%>

请您注册,会员名字必须由字母和数字组成

输入名称:

输入密码:


②Register.java

packagemybean.data;

publicclassRegister

{Stringlogname="",password="";

StringbackNews;

publicvoidsetLogname(Stringname)

{logname=name;

}

publicStringgetLogname()

{returnlogname;

}

publicvoidsetPassword(Stringpw)

{password=pw;

}

publicStringgetPassword()

{returnpassword;

}

publicStringgetBackNews()

{returnbackNews;

}

publicvoidsetBackNews(Strings)

{backNews=s;

}

}

③HandleRegister.java

packagemyservlet.control;

importmybean.data.*;

importjava.sql.*;

importjava.io.*;

importjavax.servlet.*;

importjavax.servlet.http.*;

publicclassHandleRegisterextendsHttpServlet

{publicvoidinit(ServletConfigconfig)throwsServletException

{super.init(config);

try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(Exceptione){}

}

publicStringhandleString(Strings)

{try{bytebb[]=s.getBytes("iso-8859-1");

s=newString(bb);

}

catch(Exceptionee){}

returns;

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

{

Connectioncon;

PreparedStatementsql;

Registerreg=newRegister();

request.setAttribute("register",reg);

Stringlogname=request.getParameter("logname").trim();

Stringpassword=request.getParameter("password").trim();

Stringuri="jdbc:

odbc:

mymoon";

if(logname==null)

logname="";

if(password==null)

password="";

booleanisLD=true;

for(inti=0;i

{charc=logname.charAt(i);

if(!

((c<='z'&&c>='a')||(c<='Z'&&c>='A')||(c<='9'&&c>='0')))

isLD=false;

}

booleanboo=logname.length()>0&&password.length()>0&&isLD;

StringbackNews="";

try{con=DriverManager.getConnection(uri,"","");

StringinsertCondition="INSERTINTOmemberVALUES(?

?

)";

if(boo)

{Statementsq=con.createStatement();

ResultSetrs=sq.executeQuery("SELECT*FROMmember");

while(rs.next())

{if(rs.getString

(1).equals(logname))

{RequestDispatcherdispatcher=request.getRequestDispatcher("1.jsp");//转发

dispatcher.forward(request,response);

return;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1