1信息科学与技术学院2007级计算机科学与技术专业“软件工程”课程设计项目名称:网上购书系统设计阶段:需求分析、总体设计、详细设计、编码、测试、维护设计人员:李蒙秦志玲邓飞丁国亮付立峰时间:2010.9.10—2010.12.302010.12.302前言需求分析----------------------------------------李蒙总体设计----------------------------------------李蒙、邓飞详细设计----------------------------------------秦志玲、丁国亮编码----------------------------------------小组共同完成测试-----------------------------------------付立峰维护-----------------------------------------付立峰1前言1.1课题背景互连网以前所未有的速度发展,成为与报纸、广播、电视相比肩的第四媒体,同时正以其便利的信息传输形式改变着人们的消费模式,便利简单、快捷、低成本的电子通信方式,买卖双方不谋面就可以进行各种贸易活动,走向商业的互连网已经成为网络经济的大势所趋。1996年前后,在美国学术界提出“电子商务”(E-Business或E-Commerce)的概念,短短几年的时间里,这一概念以在全球各地被广泛接受。根据买方和卖方的不同,电子商务市场可以划分四种类型:B2B,B2C,C2B和C2C。就规模而言,B2B和B2C居于主导地位。B2C是商家与顾客之间的商务活动,它将成为电子商务的一种主要的商务形式,“B2C网上购物网站”是实现这种商务活动的电子平台。B2B就是商家与商家之间的商务活动,它也将成为电子商务的一种主要的商务形式,“B2B商务网站”是实现这种商务活动的电子平台。眼下电子商务网站正如雨后春笋般地大量涌现,企业网络化已经成为一种时尚,出于对市场需求的考虑,本小组设计了一个网上书店,实现了用户注册、用户登陆、网上购书、管理员对数据库查看、修改、删除等操作,基本实现了网上书店的一些主要功能,“麻雀虽小,五脏具全”。1.2系统开发关键技术介绍本实例采用三层架构设计,用户界面层通过统一的接口向业务层发送请求,业务曾按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据库封装成类的形式返回给用户界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。这种方式在一定程度上增加了数据库的安全性,同时也降低了对用户界面层开发人员的要求,因为它根本不需要进行任何数据库的操作。另外,本设计把页面中一些常用的部分集成为模块,例如页面的头和尾部,这样设计新的页面时如果有重复出现的部分,只需要拿现成的模块来组装就可以了。这样方便、简洁,减少了工作量,是后台程序更有条理,思路更清晰。另外,我们在前台对数据库表的的数据进行调用的时候,采用了数据库存储过程,这样就使得数据库的安全性更高,数据的调用、存储更有条理。在相关联的表之间,我们还采用了触发器,进行后台的自动触发,使系统职能化。2一、需求分析(李蒙)1、项目需求使用Java技术设计和实现一个简约的购书网站。对购物网站进行设计与实现一下功能:(1)客户注册、客户登录(2)客户资料修改、取回忘记密码(3)客户按照商品分类浏览商品(4)客户按照某一个或几个关键字搜索商品(5)客户购物车功能(6)客户订单管理(修改订单、撤销订单等)(7)管理员对商品资料的管理(增、删、改、查、统计)(8)分页浏览(9)管理员分级管理(10)客户访问习惯,跟踪用Filter跟踪客户IP二.总体设计(李蒙、邓飞)1.MVC三层架构工作原理三层架构工作原理图2.系统分析本设计把页面中一些常用的部分集成模块,这样设计新的页面是如果有重复出现的部分,只需要拿现成的模块来组装就可以了。设计对数据库的调用采用三层架构设计,对于需要连接数据库的页面,通过统一的数据库调用管理,给页面分配连接,这样就方便了对数据库的调用和管理,同时使得对数据库的调用不会产生拥塞,并且在一定程度上增加了数据库的安全性。本设计分为客户模块和管理员模块。用户模块包括用户注册、登陆、查看图书详细信息、在线购书、查看、整理用户订单等功能。管理员模块包括对注册用户资料的添加、删除等管理,对图书的添加、删除、分类等一系列管理功能。用户界面层业务处理层数据存储层给出图书ID查询图书信息返回图书对象组织SQL语句查询数据库返回查询结果在线书店操作界面数据库JavaBeans33.系统设计通过上述分析,在建网上购书系统之前,先对数据库进行分析,设计好系统的功能模块,并建好系统所需的数据库及要用到的一些表。3.1系统功能模块设计根据上述各项功能的分析,可以画客户界面、管理员界面的功能模块图。功能模块分为用户功能模块和管理员功能模块,用户登陆后的主要功能是实现网上购书,管理员功能模块主要是实现管理员对书店的管理,如用户管理、图书管理、订单管理等。图1-1客户界面系统功能模块录登户客书购线在在线购书查看购物车图书查询查看订单信息客户注册登陆查看图书购书购书购书查看订单继续购书清空购物车提交购物车删除已选书查看图书修改购买书4图1-2管理员界面系统功能模块3.2设计数据流程图图1-购书系统数据流程图开始用户登陆管理员登陆登陆失败重新登陆退出登陆失败现有图书管理添加新图书添加图书分类用户管理订单管理在线购书查看购物车图书查询查看订单信息客户注册登陆查看图书购书重新登陆退出录登员理管理管户用现有图书管理添加新图书添加图书分类用户管理订单管理购书购书查看订单继续购书清空购物车提交购物车删除已选书查看图书修改购买书删除已选书修改购买书删除已选书54.系统数据库设计4.1数据库需求分析数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。用户的需求具体体现在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入.收集基本数据,数据结构以及数据处理的流程。通过上述系统功能分析,针对一般在线书店的需求,总结出如下需求信息。(1)用户分一般用户和管理员。(2)订单分单张详细订单和总订单。(3)每一本图书都从属一种类型。(4)一个用户可以购买多本图书。(5)一个用户对应一张定单列表。根据上面的设计规划出的实体有:管理员信息实体、用户信息实体、图书实体、图书分类实体、订单实体、订单列表实体。4.2E-R图图2-1实体之间关系E-R图书购员理管户用表列单订单订书图类分书图6图2-2管理员信息E-R图图2-3订单列表E-R图图2-4图书E-R图图2-5订单列表E-R图书类图分称名类分号编类分单表订列量数货订号书图号单订员理管名户用码密书图绍介容内号书价书量数总者作社版出量数剩名书别类7图2-6用户信息E-R图户用间时册注件邮编邮话电名姓真别性址地名户用码密类分书图称名类分号编类分书图绍介容内号书价书别类者作社版出量数总名书量数剩表列单订号书图号单订量数货订车物购款汇否是户用间时货交额金总号户用号编单订书购8图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自动编号否nameOLE对象否picture文本型否author文本型否9publisher数字型否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读取系统时间10ProductRecordBean.java对product表变量的定义OrderList.java订单表(gd_OrderInfo)变量的定义UserBean.java用户登录后信息的显示、密码取回、增加用户、更新用户等ProductBean.java热门产品查询、分类查询、产品搜索类getPasswordBean.java将密码以E-mail方式发给用户MVCServlet.javasession变量的定义UsernameServlet.java用户注册时对用户名是否可用的判断VerifyCodeServlet.java验证码的生成3.系统界面首页用用户名limeng,密码为123456登陆后点击右下角“进入管理”11用用户名admin,密码123456登陆后效果:修改会员界面12增加图书界面订单管理4.关键源代码(1).session会话实现:publicclassMVCServletextendsHttpServlet{protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType(text/html;charset=UTF-8);PrintWriterout=response.getWriter();request.setCharacterEncoding(gb2312);13response.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=newUserBea