网上书店系统设计与实现.docx
- 文档编号:23745399
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:42
- 大小:1.50MB
网上书店系统设计与实现.docx
《网上书店系统设计与实现.docx》由会员分享,可在线阅读,更多相关《网上书店系统设计与实现.docx(42页珍藏版)》请在冰豆网上搜索。
网上书店系统设计与实现
摘要
随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。
个性化已逐渐成为当今Web应用的潮流。
随着人们现在工作的压力,尤其是技术开发人员,作为知识的汲取者,能在很短的时间内找到需要的书是非常令人愉悦的,然而面对繁忙的工作,去书店购买迫切需要的图书是有点困难的,这既耽误了工作的时间,又带来的许多麻烦,诸如查寻速度慢等问题;另外现实书店需要占用大量空间,这无疑增加了图书的销售成本,本系统针对这些问题应运而生,目的就是为了方便人们的生活,使人们足不出户,便可以享受到方便,安全的购书环境,另外由于网上的销售减少了空间的占用,因而降低了图书的销售开销,这对于购书的人们也是非常心悦的。
本文中的网上书店系统,结合JSP、Eclipse与MySQL共同开发而成,基于Struts和Hibernate框架实现,具有用户使用更简单、界面更直观等优点,设计并实现用户管理、书籍管理、订单管理、结帐管理等功能。
Struts框架是本系统的核心,它利用ActionFormBean来进行视图组建和控制器组件之间表单数据的传送。
而Hibernate框架实现了数据处理层的业务逻辑和数据逻辑的分离。
这是该系统的两大亮点。
关键词:
JSP;Eclipse;MySQL;Struts;Hibernate
Abstract
Alongwiththedevelopmentofthecomputerscience,thedatabasetechniqueismoreandmoreextensiveintheapplicationintheInternet,providingthemorethoughtfulandhumanizedserviceforthelargenetworkcustomer.CharacteristichavealreadybecomegraduallythecurrentastheapplicationofWednowadays.
Theon-linebookstoresystemisveryexcitingforthepeoplewhoarehard-study,especiallyforthetechnologydevelopers.Asthecomplicatedwork,itisnoideatogotobookstoreinthelife,becauseitwastesmanyworktime,what’smore,itisnotconvenient,suchassearchingforabook;Andbookstoreinourlifealsoneedmuchspace,itisnodoubtaddingthebooks’prices,sothissystemwasdevelopedtosolvethoseproblems,itaimstomakethepeople’slifemoreconvenient,andmakepeopleenjoyconvenientandsaftyshoppingenvironment,and
itreducesthesalespace,soitalsoreducesthebooks’prices,itisveryhappyforcustomers.
Thispaperstudiedakindofprojectcalledon-lineBookStoresystemwhichcomposedofJSPEclipseandMySQL,basedinStrutsandHibernateframes,thisprojecthavetheadvantageofmakingcustomersusemoresimpleandreflectthemmoreobviouslymeticulousandsoon.Designmentandaccompolishedwithusermanagerment,bookmanagement,ordermanagement,chargemanagementandsoon.Strutsisthecoreofthissystem,itconveysthedatabetweenViewsandControllerswithActionFormBean.Hibernateframdividesthebusinesslogicfromthedatalogic.Thesearethetwosparklepointsinthissystem.
Keywords:
JSP;Eclipse;MySQL;Struts;Hibernate
1前言
随着Internet信息技术的高速发展和个人、企业上网的迅速普及,企业的WWW网站在商业活动中发挥着越来越大的作用,在信息时代,建立一个功能强大、界面美观的电子商务网站,建立电子商务系统平台,对企业的发展是至关重要的。
所谓电子商务,是指各种具有商业活动能力的实体(生产企业、商贸企业、金融机构、政府机构、个人消费者等)利用网络和先进的数字化传媒技术进行的各项商业贸易活动。
其中特别要强调的特点,一是其商业背景,二是网络化和数字化。
简言之,电子商务就是通过电子网络渠道达成的商务活动。
电子商务是计算机网络的第二次革命,它通过电子手段建立新的经济秩序,不仅涉及电子技术和商业交易本身,而且涉及诸如金融、税务、教育等社会其他层面。
对于电子商务的研究始于20世纪70年代末,而其实施要更晚些,实施又分为两步,其中电子数据交换(ElectronicDataInterchange,EDI)始于20世纪80年代中期,Internet上的电子商务始于20世纪90年代初期。
电子商务活动相应分成两大类:
企业组织-企业组织(Business-Business,B2B)型和企业组织-消费者(Business-Consumer,B2C)型。
根据统计,目前电子商务活动中80%的收属于B2B型商务活动,这由于企业组织的信息化程度和技术水平比个体消费者明显要高,主要面向的是企业与企业,为企业提供进行采购、销售和结算等业务的平台。
B2C则是我们最熟悉的,它直接面向终端的大众消费者。
它通常也有两种形式,一种是类似一个大的超市,里面摆放着大量的商品,提供给消费者直接去选择购买;而另一种形式则类似一个大商城,商城中有许多柜台,用户可以直接到柜台选择和购买自己中意的东西,然后去结算,这种商城只提供柜台和相关的服务,并收取相应的柜台使用费。
本系统具有模块性强,易操作,管理方便,层次清晰等优点,其中用到的Struts框架,它利用ActionFormBean来进行试图组建和控制器组件之间表单数据的传送。
持久就是把数据保存到可永久保存的存储介质和设备中。
而持久化的主要目的就是将内存中的数据存储在关系数据库或者磁盘文件和XML数据文件中。
之所以要做持久化的设计,是由于MVC在目前的企业应用系统设计中,作为主要的系统结构模式,其中的数据处理层包含了负责的业务逻辑和数据逻辑以及数据存储机制等。
那么,持久化设计的目的就是将这些负责的业务逻辑和数据逻辑的分离。
因此,由于应用了以上两个核心技术,使得本系统在操作上更加便捷,层次更加清楚,更容易让使用者接受。
2系统开发技术
.1J2EE概念
J2EE是一套面向企业应用的体系结构,可以将J2EE理解为J2SE(Java2平台的标准版)的扩展和延伸,J2EE的基础就是J2SE,J2EE不仅拥有J2SE中的许多优点,同时还提供了对EJB,JavaServletAPI,JSP以及XML等技术的支持。
J2EE通过提供中间层集成框架来满足多种需求,其中包括高可用性,高可靠性,高扩展性以及低成本等要求。
同时通过提供统一的开发平台,降低了开发多层系统的复杂性,并且对现有应用程序提供了强有力的支持。
其具体表现在:
对EnterpriseJavaBean的完全支持,对打包和部署应用的良好支持,对添加目录的支持以及对安全机制的支持。
.2MVC设计模式简介
MVC是Model(模型)——View(视图)——Controller(控制器)的缩写,它适用于大型可扩展的Web应用的开发,它强制性地将应用程序的输入、处理和输出分开,将其划分为模型、视图和控制器三个核心部分,使它们各司其职,各自完成不同的任务,其中任何一部分的修改都不会影响其它两部分。
在MVC模式中,模型封装了应用问题的核心数据、逻辑关系和业务规则,提供了业务逻辑的处理过程。
模型一方面被控制器调用,完成问题处理的操作过程,另一方面为视图获取显示数据提供了访问数据的操作。
因为模型是与数据格式无关的,因此一个模型可以为多个视图提供数据,这样一个模型一次编写可以被多个视图重用,从而避免了代码的重复编写。
视图是MVC模式下用户看到的并与之交互的界面。
视图从模型处获得数据,视图的更新由控制器控制。
视图不包含任何业务逻辑的处理,它只是作为一种输出数据的方式。
MVC模式中,控制器主要起导航的作用,它根据用户的输入调用相应的模型和视图去完成用户的请求。
控制器本身不输出任何东西,它接受用户请求并决定调用哪个模型构件去处理,以及由哪个视图来显示模型处理之后返回的数据。
MVC的处理过程是这样的:
对于每一个用户输入的请求,首先被控制器接收,并决定由哪个模型来进行处理,然后模型通过业务处理逻辑处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过显示页面呈现给用户。
图1-1所示为模型、视图、控制器这三个模块各自的功能以及它们之间的相互关系:
图2-1MVC模式
.3对象持久化概述
持久就是把数据保存到可永久保存的存储介质和设备中。
而持久化的主要目的就是将内存中的数据存储在关系数据库或者磁盘文件和XML数据文件中。
ORM(Object/RelationalMapper)即“对象/关系型数据映射”。
这是一种主要的对象持久化技术,需要同时使用面向对象和关系型数据进行开发。
MVC在目前的企业应用系统设计中,作为主要的系统架构模式,其中的数据处理层包含了复杂的业务逻辑和数据逻辑以及数据存储机制等。
那么,如何才能将这些复杂的业务逻辑和数据逻辑分离,如何才能将系统的紧耦合关系转化为松耦合关系呢?
这都是降低系统耦合度迫切需要的,同时也是持久化的目的之一。
MVC模式实现了表现层和数据处理层的分离,而持久化设计则实现了数据处理层的业务逻辑和数据逻辑的分离。
Hibernate是目前流行的ORM框架。
.4Struts框架简介
Struts是目前比较成熟的Web开发框架。
它是在JSPModel2的基础上实现的一个MVC框架,其结构如图1-2所示。
由图1-2可见,Struts的模型部分包含JavaBean和EJB组件,控制器由ActionServlet和Action组成,视图部分包含JSP和Struts客户化标签。
浏览器
WEB服务器
控制器ActionServlet
视图JSP
Struts-config.xml
Action
Action
Action
(模型)
EJB
JavaBean
图2-2Struts结构
设计模式是软件开发经验的总结,它是一个概念,是一个逻辑实体,而框架可以看成是基于某一特定平台的一种或几种设计模式的物理实现。
设计模式比框架更抽象,设计模式只有其实例才能表示为代码,而框架本身可以用代码表示,框架是一套设计详细的类,类与类之间功能各异,又彼此联系,相辅相成,形成了对某一类问题的可重用的、易扩展的解决方案。
Struts是实现MVC模式的通用框架,它由四个主要部分组成,模型、视图、控制器和XML文件。
模型通常由JavaBean或EJB组件实现,负责处理业务逻辑;视图包括一组JSP文件,这些文件主要由JSP标签或客户化标签构成,它简化了JSP页面的编码工作;在Struts框架中控制器主要包括ActionServlet类和Action类,ActionServlet是Struts的核心部件,它接受用户的Http请求,根据配置信息将请求转发给适当的Action对象,Action类负责调用模型的方法,并帮助控制应用程序的流程;Struts包括Web.xml和Struts—config.xml两个配置文件,其中Web.xml是Web应用的发布描述文件,Struts—config.xml是与Struts相关的特殊信息配置的描述文件。
.4.1Struts框架相应客户请求的工作流程
图1-3描述了Struts框架相应客户请求的工作流程。
Struts框架对应客户请求的工作流程如下。
1)判断ActionMapping实例是否存在。
如果实例不存在,则创建一个ActionMapping对象,它包含了把请求转发给哪个Action的信息。
2)判断ActionForm实例是否存在。
如果实例不存在,则创建一个ActionForm对象,并把客户提交的表单数据保存到ActionForm对象中。
3)根据配置信息决定是否需要表单验证。
如果需要验证,就调用ActionForm的validate()方法。
ActionServlet
Action
BusinessLogic
Requestarrives
Create
ActionMapping
Return
ActionForm
Process
ActionForward
ReturnResponse
Returnerror
Execute()
Performrequiredbusinesslogic
Create
ActionForm
YES
Validatedata?
YES
No
Notfound
ActionMapping
Found
AnotherActionMapping?
No
图2-3Struts框架相应客户请求的工作流程
4)如果ActionForm的validate()方法返回null,或返回一个不包含ActionMessage的ActionError的ActionErrors对象,则表示表单验证失败,将直接把请求转发给包含客户提交表单的JSP组件。
在这种情况下,不会再创建Action对象并调用Action的execute方法。
5)ActionServlet根据配置信息决定将请求转发给哪个Action。
如果相应的Action实例不存在,就先创建这个实例,然后调用其execute方法。
6)Action的execute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。
7)ActionForward对象指向的JSP组件生成动态网页,返回给客户。
3需求分析
网上书店系统主要是实现网上选书、购书、产生订单等功能的系统。
一个典型的网上商城一般都需要实现商品信息的动态展示、购物车管理、客户信息注册登录管理、订单处理等模块。
3.1用户需求分析
本网上书店系统主要完成以下具体任务:
1)图书查询需求
当客户进入网上书店时,应该在主页面中分类显示最新的书目信息,以供客户选择所需图书,同时也应该提供按照图书名称,或者作者住处快速查询所需书目信息的功能。
2)购物车管理需求
当客户选择购买某图书产品时,应该能够将对应图书信息,例如:
价格、数量记录到购物车中,并允许客户返回书目查询页面,选择其他商品,并添加到购物车中,当对购物订单生成后,应该能够自动清除以生成订单的购物车中的信息。
3)订单处理需求
对应客户购买图书商品信息的需求,在确定了所购图书商品的价格、数量等信息后,提示用户选择对应的送货方式及付款方式,最终生成对应的订单记录,以便于网站配货人员依据订单信息进行后续的出货、送货和处理。
4)会员注册需求
为了能够实现图书商品的购买,需要管理客户相关的联系方式、送货地点等相关信息。
3.2网上书店系统模块结构图
网上书店系统
管理员
普通用户
登陆
管理图书
注册
登陆和注销
搜索图书
维护购物车
确认订单
修改资料
图3-1系统模块结构图
3.3网上书店数据流图
管
理
员
网上书店系统
用
户
登陆
管理图书
维护购物车
搜索图书
确认订单
注册
登陆/注销
修改资料
图3-2系统数据流图
4系统总体设计
4.1系统架构设计
整个系统遵循多层次的架构模式,从上到下依次为视图层,控制器层,模型层,持久化层和数据库层,如图3-1所示。
视图层
控制器层
模型层
持久化层
数据库层
图4-1系统架构
层次间的依赖关系的原则应该是自顶向下的,即上层可以依赖下层,而下层应该尽量减少对上层的依赖。
同时层次之间的交互应该减少对实现的依赖,通过接口进行交互。
在本系统中,视图层和控制器层使用Struts框架实现,持久化层和数据库层使用Hibernate实现。
4.2业务实体设计
业务实体在内存中表现为实体域对象,在数据库中表现为关系数据。
实现业务实体包括以下内容。
1)设计域模型,创建域模型实体对象。
2)设计关系数据模型。
3)创建对象-----关系映射文件。
4.3功能设计
4.3.1登陆/注销和注册
用户登录是购物网站这种电子商务应用必需的功能之一。
网上书店系统的登陆页面要求用户输入用户名和密码。
在输入用户名和密码之后,系统将验证用户名和密码是否正确,如果验证成功,就使用户处于登陆状态。
否则,系统显示用户名或密码错误的信息。
用户在登陆页面中能够进行新用户注册,这是系统要求用户注册信息,包括用户名,密码,电子邮箱,居住地址,邮政编码。
用户登录后可以随时修改个人的注册信息。
如图3-2。
User/administrator
显示用户登录页面
显示管理员登录页面
User?
Administrator?
Register
注册信息合格
已注册
图4-2登录流程
4.3.2浏览/搜索图书
用户可以通过网站浏览各种图书。
在系统主页面提供所有图书的列表,通过单击某种图书的链接,用户可以查看该图书的名称,描述和单价等信息以及添加到购物车的通道。
User/administrator
浏览图书
输入欲查找书名
显示图书
未找到图书
是否符合条件
图4-3网页浏览
4.3.3维护购物车
当用户单击“添加到购物车”按钮时,图书会被自动添加到购物车中。
在购物车页面,将列出用户的购物车中的所有图书,并且每种图书列出图书名,作者,出版社。
4.4数据库设计与实现
4.4.1数据库的需求分析
依据网上书店的处理需求,对应数据表的设计及功能如下:
1)图书信息表(bookinfo):
存放网上书店所销售图书的基本信息。
2)用户信息表(userinfo):
存放书店用户的相关信息。
3)订单表(order):
存放与客户相关的订单的基本信息。
4.4.2数据表基本结构
1.图书信息表(bookinfo)
表4-1图书信息表
字段名
描述
类型
长度
是否允许为空
是否主键
id
图书编号
integer
4
否
是
bookName
图书名
varchar
128
否
否
isbn
图书ISBN号
varchar
64
否
否
writer
图书作者
varchar
45
否
否
publisher
出版社
varchar
64
否
否
intro
图书介绍
text
否
price
图书价格
decimal
5
否
否
remaining
图书库存
smallint
5
否
否
picture
图书图片
varchar
32
是
否
date
图书录入时间
datetime
否
否
约束:
id作为主键,不允许重复,不允许为空。
2.用户信息表(userinfo)
表4-2用户信息表
字段名
描述
类型
长度
是否允许为空
是否主键
id
用户ID
integer
10
否
是
username
用户名
varchar
15
否
否
pwd
密码
varchar
32
否
否
电子邮箱
varchar
32
否
否
address
用户地址
varchar
100
是
否
postcode
邮政编码
varchar
6
是
否
level
积分
decimal
10
是
否
power
用户权限
tinyint
3
是
否
约束:
id作为主键,不允许重复,不允许为空。
3.订单表(order)
表4-3订单表
字段名
描述
类型
长度
是否允许为空
是否主键
id
订单ID
integer
10
否
是
bookid
图书ID
integer
105
否
否
userid
用户ID
integer
10
否
否
number
数量
tinyint
3
否
否
address
用户地址
varchar
128
否
否
postcode
邮政编码
varchar
6
否
否
orderdate
订购日期
datetime
否
否
约束:
id作为主键,不允许重复,不允许为空。
bookid作为外键,指向bookinfo表的id字段。
userid作为外键,指向userinfo表的id字段。
4.4.3创建数据表脚本
在基本的数据表的结构确定后,就可以在MySQL中完成数据表的创建工作,下面给出建立对应数据表的SQL脚本。
1)图书信息表的SQL语句
TableCreateTable
-------------------------------------------------------------------------------
bookinfoCREATETABLE`bookinfo`(
`id`int(4)unsignedNOTNULLauto_increment,
`bookName`varchar(128)NOTNULL,
`isbn`varchar(64)NOTNULL,
`writer`varchar(45)NOTNULL,
`publisher`varchar(64)NOTNULL,
`intro`text,
`price`decimal(5,0)NOTNULLdefault'0',
`remaining`smallint(5)unsignedzerofillNOTNULLdefault'00000',
`picture`varchar(32)defaultNULL,
`dat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 书店 系统 设计 实现