例网上购书系统设计方案.docx
- 文档编号:10447570
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:40
- 大小:479.55KB
例网上购书系统设计方案.docx
《例网上购书系统设计方案.docx》由会员分享,可在线阅读,更多相关《例网上购书系统设计方案.docx(40页珍藏版)》请在冰豆网上搜索。
例网上购书系统设计方案
信息科学与技术学院
2007级计算机科学与技术专业
“软件工程”课程设计
项目名称:
网上购书系统
设计阶段:
需求分析、总体设计、详细设计、编码、测试、维护
设计人员:
李蒙秦志玲邓飞丁国亮付立峰
时间:
2010.9.10—2010.12.30
2010.12.30
前言
需求分析----------------------------------------李蒙
总体设计----------------------------------------李蒙、邓飞
详细设计----------------------------------------秦志玲、丁国亮
编码----------------------------------------小组共同完成
测试-----------------------------------------付立峰
维护-----------------------------------------付立峰
前言
1.1课题背景
互连网以前所未有的速度发展,成为与报纸、广播、电视相比肩的第四媒体,同时正以其便利的信息传输形式改变着人们的消费模式,便利简单、快捷、低成本的电子通信方式,买卖双方不谋面就可以进行各种贸易活动,走向商业的互连网已经成为网络经济的大势所趋。
1996年前后,在美国学术界提出“电子商务”(E-Business或E-Commerce)的概念,短短几年的时间里,这一概念以在全球各地被广泛接受。
根据买方和卖方的不同,电子商务市场可以划分四种类型:
B2B,B2C,C2B和C2C。
就规模而言,B2B和B2C居于主导地位。
B2C是商家与顾客之间的商务活动,它将成为电子商务的一种主要的商务形式,“B2C网上购物网站”是实现这种商务活动的电子平台。
B2B就是商家与商家之间的商务活动,它也将成为电子商务的一种主要的商务形式,“B2B商务网站”是实现这种商务活动的电子平台。
眼下电子商务网站正如雨后春笋般地大量涌现,企业网络化已经成为一种时尚,出于对市场需求的考虑,本小组设计了一个网上书店,实现了用户注册、用户登陆、网上购书、管理员对数据库查看、修改、删除等操作,基本实现了网上书店的一些主要功能,“麻雀虽小,五脏具全”。
1.2系统开发关键技术介绍
本实例采用三层架构设计,用户界面层通过统一的接口向业务层发送请求,业务曾按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据库封装成类的形式返回给用户界面层。
这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。
这种方式在一定程度上增加了数据库的安全性,同时也降低了对用户界面层开发人员的要求,因为它根本不需要进行任何数据库的操作。
另外,本设计把页面中一些常用的部分集成为模块,例如页面的头和尾部,这样设计新的页面时如果有重复出现的部分,只需要拿现成的模块来组装就可以了。
这样方便、简洁,减少了工作量,是后台程序更有条理,思路更清晰。
另外,我们在前台对数据库表的的数据进行调用的时候,采用了数据库存储过程,这样就使得数据库的安全性更高,数据的调用、存储更有条理。
在相关联的表之间,我们还采用了触发器,进行后台的自动触发,使系统职能化。
一、需求分析(李蒙)
1、项目需求
使用Java技术设计和实现一个简约的购书网站。
对购物网站进行设计与实现一下功能:
(1)客户注册、客户登录
(2)客户资料修改、取回忘记密码
(3)客户按照商品分类浏览商品
(4)客户按照某一个或几个关键字搜索商品
(5)客户购物车功能
(6)客户订单管理(修改订单、撤销订单等)
(7)管理员对商品资料的管理(增、删、改、查、统计)
(8)分页浏览
(9)管理员分级管理
(10)客户访问习惯,跟踪用Filter跟踪客户IP
二.总体设计(李蒙、邓飞)
1.MVC三层架构工作原理
三层架构工作原理图
2.系统
分析
本设计把页面中一些常用的部分集成模块,这样设计新的页面是如果有重复出现的部分,只需要拿现成的模块来组装就可以了。
设计对数据库的调用采用三层架构设计,对于需要连接数据库的页面,通过统一的数据库调用管理,给页面分配连接,这样就方便了对数据库的调用和管理,同时使得对数据库的调用不会产生拥塞,并且在一定程度上增加了数据库的安全性。
本设计分为客户模块和管理员模块。
用户模块包括用户注册、登陆、查看图书详细信息、在线购书、查看、整理用户订单等功能。
管理员模块包括对注册用户资料的添加、删除等管理,对图书的添加、删除、分类等一系列管理功能。
3.系统设计
通过上述分析,在建网上购书系统之前,先对数据库进行分析,设计好系统的功能模块,并建好系统所需的数据库及要用到的一些表。
3.1系统功能模块设计
根据上述各项功能的分析,可以画客户界面、管理员界面的功能模块图。
功能模块分为用户功能模块和管理员功能模块,用户登陆后的主要功能是实现网上购书,管理员功能模块主要是实现管理员对书店的管理,如用户管理、图书管理、订单管理等。
图1-1客户界面系统功能模块
图1-2管理员界面系统功能模块
3.2设计数据流程图
图1-购书系统数据流程图
4.系统数据库设计
4.1数据库需求分析
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
用户的需求具体体现在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入.收集基本数据,数据结构以及数据处理的流程。
通过上述系统功能分析,针对一般在线书店的需求,总结出如下需求信息。
(1)用户分一般用户和管理员。
(2)订单分单张详细订单和总订单。
(3)每一本图书都从属一种类型。
(4)一个用户可以购买多本图书。
(5)一个用户对应一张定单列表。
根据上面的设计规划出的实体有:
管理员信息实体、用户信息实体、图书实体、图书分类实体、订单实体、订单列表实体。
4.2E-R图
图2-1实体之间关系E-R图
图2-2管理员信息E-R图
图2-3订单列表E-R图
图2-4图书E-R图
图2-5订单列表E-R图
图2-6用户信息E-R图
图2-8综合E-R图
三、详细设计(秦志玲、丁国亮)
1.数据库中的所有表
根据项目要求实现数据库设计,用MicrosoftAccess建立数据库文件。
共建立4个表,分别为会员信息表、订单表、商品信息表、收货人信息表。
Gd_username会员信息表
列名
数据类型
长度
是否为空
ID
自动编号
否
Gd_username
文本型
否
Gd_password
文本型
否
Role
数字型
否
Gd_orderinfo订单表
列名
数据类型
长度
是否为空
ID
自动编号
否
gd_orderid
文本型
否
gd_orderdate
文本型
否
gd_productid
数字型
否
gd_price
数字型
否
gd_allprice
数字型
否
gd_count
数字型
否
gd_status
文本型
否
gd_userid
文本型
否
gd_name
文本型
否
gd_email
文本型
否
gd_tel
文本型
否
gd_code
文本型
否
gd_address
文本型
否
gd_remarks
文本型
否
商品信息表
列名
数据类型
长度
是否为空
ID
自动编号
否
name
OLE 对象
否
picture
文本型
否
author
文本型
否
publisher
数字型
否
printinOorder
文本型
否
pageNumber
文本型
否
ISBN
文本型
否
kaiben
文本型
否
specialDescription
文本型
否
sort
文本型
否
discount
文本型
否
contentsDescription
文本型
否
stocks
数字型
否
catalog
文本型
否
appreciation
文本型
否
remarks
文本型
否
click
数字型
否
price
数字型
否
收货人信息表
列名
数据类型
长度
是否为空
ID
自动编号
否
gd_username
文本型
否
gd_password
文本型
否
gd_email
文本型
否
gd_qq
文本型
否
gd_name
文本型
否
gd_identify
文本型
否
gd_tel
文本型
否
gd_address
文本型
否
gd_code
文本型
否
gd_joindate
文本型
否
gd_lastlogindate
文本型
否
gd_lastIP
文本型
否
gd_remarks
文本型
否
2.系统实现
主要代码功能:
AdminBean.java
数据的读取,管理员对数据的增、删、该操作
DBBean.java
对数据库的连接
DateBean.java
读取系统时间
ProductRecordBean.java
对product表变量的定义
OrderList.java
订单表(gd_OrderInfo)变量的定义
UserBean.java
用户登录后信息的显示、密码取回、增加用户、更新用户等
ProductBean.java
热门产品查询、分类查询、产品搜索类
getPasswordBean.java
将密码以E-mail方式发给用户
MVCServlet.java
session变量的定义
UsernameServlet.java
用户注册时对用户名是否可用的判断
VerifyCodeServlet.java
验证码的生成
3.系统界面
首页
用用户名limeng,密码为123456登陆后
点击右下角“进入管理”
用用户名admin,密码123456登陆后效果:
修改会员界面
增加图书界面
订单管理
4.关键源代码
(1).session会话实现:
publicclassMVCServletextendsHttpServlet
{
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
Stringaction=request.getParameter("action").trim();
HttpSessionsession=request.getSession();
if(action.equals("login"))//用户登陆
{
Stringpasscode=request.getParameter("passcode");
if(session.getAttribute("passcode").equals(passcode))
{
Stringusername=request.getParameter("username").trim();
Stringpassword=request.getParameter("password").trim();
UserBeanuserbean=newUserBean();
Stringlogin=userbean.testLogin(username,password);
if(login=="notlogin")
{
session.setAttribute("gd_username","");
session.setAttribute("gd_password","");
session.setAttribute("gd_login","notlogin");
//out.print("passcodeyes,loginfail!
!
");
response.sendRedirect("userlogin.jsp");
}
else
{
Stringuserinfo[]=login.split("\\|");
DateBeandate=newDateBean();
Stringlastlogindate=date.getDate();
StringlastIP=request.getRemoteAddr();
session.setAttribute("gd_lastlogindate",userinfo[0]);
session.setAttribute("gd_lastIP",userinfo[1]);
session.setAttribute("gd_id",userinfo[2]);
session.setAttribute("gd_username",userinfo[3]);
session.setAttribute("gd_password",password);
session.setAttribute("gd_login","login");
out.println("lastlogindateis"+lastlogindate+"lastIPis"+lastIP);
userbean.updateUserlogin(Integer.parseInt(userinfo[2]),lastlogindate,lastIP);
response.sendRedirect("userlogin.jsp");
}
}
else
{
session.setAttribute("gd_username","");
session.setAttribute("gd_password","");
session.setAttribute("gd_login","notlogin");
//out.print("passcodenologinfail!
!
");
response.sendRedirect("userlogin.jsp");
}
}
elseif(action.equals("register"))//用户注册
{
Md5m=newMd5();
Stringusername=request.getParameter("username");
Stringpassword=request.getParameter("password").trim();
Stringemail=request.getParameter("email");
Stringqq=request.getParameter("qq");
Stringname=request.getParameter("name");
Stringidentify=request.getParameter("inentity");
Stringtel=request.getParameter("tel");
Stringaddress=request.getParameter("address");
Stringcode=request.getParameter("code");
DateBeannowDate=newDateBean();
Stringjoindate=nowDate.getDate();
Stringlastlogindate=nowDate.getDate();
StringlastIP=request.getRemoteAddr();
UserBeanuserbean=newUserBean();
if(userbean.addUser(username,password,email,qq,name,identify,tel,address,code,joindate,lastlogindate,lastIP))
{
out.println("
请登陆!
');"+";");
out.println("
}
else
{
out.println("
请确认注册信息是否有误!
');"+";");
out.println("
}
}
elseif(action.equals("getPassword"))//用户获取密码,通过邮箱取回
{
Stringusername=request.getParameter("username");
Stringemail=request.getParameter("email");
out.print(username+""+email);
UserBeanuserbean=newUserBean();
if(userbean.getPassword(username,email))
{
out.println("邮件已经发送到你的邮箱!
");
}
else
{
out.println("用户名或者邮箱错误,请输入正确的用户名和对应的邮箱!
");
}
}
elseif(action.equals("logout"))//用户退出登陆
{
session.setAttribute("gd_username","");
session.setAttribute("gd_password","");
session.setAttribute("gd_login","notlogin");
//out.print("loginout!
!
");
response.sendRedirect("default.jsp");
}
elseif(action.equals("admin_logout"))//管理员,退出登陆
{
session.setAttribute("admin_gd_username","");
session.setAttribute("admin_gd_password","");
session.setAttribute("admin_gd_login","notlogin");
response.sendRedirect("default.jsp");
}
elseif(action.equals("adminlogin"))//管理员登陆
{
Stringpasscode=request.getParameter("passcode");
if(session.getAttribute("passcode").equals(passcode))
{
Stringusername=request.getParameter("username");
Stringpassword=request.getParameter("password");
AdminBeanadminbean=newAdminBean();
Stringlogin=adminbean.admin_Login(username,password);
if(login.equals("admin_notlogin"))
{
out.println("用户名或者密码错误..2秒后返回登陆页面..");
out.println("
}
else
{
session.setAttribute("admin_gd_username",username);
session.setAttribute("admin_gd_password",password);
session.setAttribute("admin_gd_login","login");
session.setAttribute("admin_gd_role",login);
response.sendRedirect("gd_admin/gd_Admin.jsp");
}
}
else
{
out.println("验证码错误..2秒后返回登陆页面..");
out.println("
}
}
elseif(action.equals("DeleteUser"))
{
AdminBeanab=newAdminBean();
Stringid=request.getParameter("id");
if(ab.deleteUser(Integer.parseInt(id)))
{
out.println("
out.println("删除成功..2秒后返回..");
out.println("
out.println("
}
else
{
out.println("
out.println("删除失败..2秒后返回..");
out.println("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 购书 系统 设计方案