题 目: 基于J2EE架构网上书店的设计与实现 学 院: 信息学院 专 业: 计算机科学与技术 姓 名: 康乐 指导教师: 任秀丽 完成日期: 2012年5月13日
摘 要
随着互联网的普及,电子商务技术在不断的发展,Internet不仅给我们带来了无穷无尽的多媒体信息,更带来了商业模式和消费观念的变迁,这是对传统商业模式的一种挑战。随着大量电子商务网站的崛起,越来越多的人选择在网上进行购物。
相对传统的购书方式来说,网上购书的好处是多方面的,对于商家来说,可以有效的控制成本;对于客户来说,网上购书方便快捷、经济省时,足不出户就能买到想要的书籍,因此网上书店有很大的发展空间。而要满足这种大量的需求,需要一种强大快速、高效稳定的技术作为支撑。J2EE就是这样一种技术,它提供一个多层的分布式模型,是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格。通过组建重用,允许多台服务器集成部署,具有稳定的可用性、可伸缩性。
本设计使用J2EE技术在网络上架构了一个网上书店,从理论和实际两个角度出发,对网上书店进行设计和实现。网上书店的主要有用户管理、购买图书、图书分类查看、图书检索等功能。在构建网站的过程中使用了多种技术,包括MVC的架构风格、多种设计模式等,合理的运用了各种技术的优势,力争开发出一个具有高健壮性、稳定性、易用性、可靠性的系统,为顾客在平时的生活中网上购买书籍提供强大的后台支撑,以满足顾客的网上购书需求。
全文共分为六个部分,第一部分主要介绍了电子商务的背景和本系统所使用的技术;第二部分介绍了本系统所涉及的各方面的需求;第三部分为本系统的总体设计思路、过程以及数据库的概念设计;第四部分为系统各个模块的详细设计和实现以及相关细节;第五部分为对系统部分功能的测试过程;第六部分是总结。
关键词:J2EE;设计模式;电子商务;网上书店;数据库
Abstract
With the spread of the Internet, the e-commerce technology is developing fast. The Internet brings us not only infinite multi-media information, but also brings the changes of commerce pattern and consuming concept, which is a challenge to the traditional commerce pattern. With the arising of many online shops, more and more people choose to shop online.
Compared with the way of buying books traditional, shopping online has a variety of advantage. To the merchants, they can control the costing easily. To the customers, it is so convenient and economical to buy books online; they do not have to go out of home to buy a book they like. So the online-bookstore has a great development. To mean the great need, we have to provide a powerful and efficient technology to support it. The J2EE technology is a kind of technology like this, it provide a variety-layer distribute model. It is a kind of technology standard and guide, the variety components and server architecture which contains have the same standard. By reuse the components, it allows deploy on many servers, which has high efficiency and high scalability.
This design builds an online-bookstore by using the J2EE technology. From the point of view of practice and theory, the online-bookstore is designed and realized. The primary function of the online-bookstore contains the management of the users, shopping on the bookstore and checking the book by different category. In the procedure of building the bookstore, many technologies are used, including the architecture of MVC style and many design models, the advantage of variety of many technology is full used, which sustain the need of the customer buying book online.
The text is divided into 6 parts. The first part introduces some background knowledge about e-commerce and the technology the design uses. The second part introduces the need of variety aspects the system involved. The third part gives the process, some ideas and related details in system designing, which also include the concept design of the database. The fourth part displays the detail design of every part of the system and related details. The fifth part introduces the test of the part of the system. The sixth part is the summary.
Key words: J2EE; Design Pattern; E-commerce; Online Bookstore; Database
目 录
序 言 ......................................................................................................... 2 第1章 绪 论........................................................................................... 3
1.1课题背景........................................................................................................... 3
1.2 MVC架构风格 ................................................................................................ 3 1.3 J2EE体系结构 ................................................................................................. 6
第2章 需求分析 .................................................................................... 10
2.1 概述................................................................................................................ 10
2.2 功能性需求.................................................................................................... 11
2.2.1 功能划分 ............................................................................................................... 11 2.2.2 功能描述 ............................................................................................................... 11
2.3 非功能性需求................................................................................................ 13
第3章 总体设计和功能概述 ................................................................ 14
3.1 功能模块划分................................................................................................ 14 3.2 网上书店结构层次图.................................................................................... 14 3.3 网上书店系统建模........................................................................................ 14 3.4 数据库概念结构设计.................................................................................... 17
第4章 系统详细设计和实现 ................................................................ 18
4.1 数据库逻辑实现............................................................................................ 18
4.2 用户登陆注册模块的设计与实现................................................................ 20
4.2.1 用户登陆模块 ....................................................................................................... 20 4.2.2 用户注册模块 ....................................................................................................... 22
4.3 图书浏览模块的设计与实现........................................................................ 24
4.3.1 文件关系 ............................................................................................................... 24 4.3.2 图书浏览模块截图 ............................................................................................... 25
4.4 购物车模块的设计与实现............................................................................ 25
4.4.1 文件关系 ............................................................................................................... 25 4.4.2 购物车模块截图 ................................................................................................... 26
4.5 图书管理模块的实现.................................................................................... 26
第5章 系统测试 .................................................................................... 29
5.1 系统功能测试................................................................................................ 29
5.2 系统实用性分析............................................................................................ 31
第6章 总 结......................................................................................... 32 参考文献 ................................................................................................... 33 致 谢 ....................................................................................................... 34
序 言
电子商务,最初出现在1993年美国克林顿政府工作报告对国家信息基础设施的描述中,含义就是利用电子信息技术、网络互联技术和现代通讯技术,有效地把商品的资源管理和人们的交易行为结合起来,从而实现商品和服务交易的计算机化、网络化。
随着互联网的快速发展和在人群中的普及化,以及中小企业应用电子商务进程的推进和国家对电子商务发展的重视,网络已经开始影响人们的生活观念,改变国人的消费模式。越来越多的消费者选择进行网上购物,根据淘宝网的统计数据,截至2007年12月31日,我国网上购物的人数超过5500万,较2002年增长近7倍。每天有近900万人在淘宝网上“逛街”,相当于近600个沃尔玛、家乐福的平均客流量。据中国互联网络信息中心(CNNIC)的报告,2009年至少在网上买过一次东西的中国网民数历史性地突破了1亿,达到1.08亿,增长46%;而艾瑞的报告也同样显示了“网购”的中国网民突破1.1亿。
根据我国电子商务研究中心发布的《2010年(上)电子商务市场数据检测报告》显示,截至2010年6月份,国内个人网店的数量已经达到了1200万家。可见电子商务交易量增长非常快,越来越受到人们的青睐,各种Web互联网的技术也呈现出一种共同繁荣的景象,各种编程语言也使整个互联网的Web技术体系日趋成熟,每种技术都有各自的优势。而近几年电子商务的发展速度越来越快,大量的客户需求需要处理,要求并发性的处理非常高。
本设计就是针对电子商务而建立的一个网上书店,采用J2EE技术体系,包括了JSP、JavaBean、EJB、JDBC、JNDI一系列的J2EE相关技术,另外数据库采用ORACLE,以便满足大量数据处理的需求,服务器采用WebLogic,体现了较高的性能,满足了高并发性的需求。
本系统是基于B/S结构的,一方面采用了J2EE的四层体系,即运行在客户端机器上的客户端组件、运行在J2EE服务器上的Web层组件、运行在J2EE服务上的业务逻辑层组件、服务器上的数据访问层组件;另一方面,在表现层和业务逻辑层则采用了MVC架构风格,在Java类的设计上采用多种设计模式。在客户端只需要浏览器即可,无需安装任何其他软件,满足了众多应用客户分散环境下的需求。
第1章 绪 论
1.1课题背景
随着社会的不断进步,互联网的不断发展,网上书店如雨后春笋般在国内外迅速发展,如全球的亚马逊网上书店,国内的当当网和卓越网等。顾客可以足不出户就能买到需要的商品,能节约更多的时间与精力。而对于商家来说,既可以避免书目订货的局限和盲目,又可以克服订货投入大、费用高、管理难的不足,有效的节约了各方面的成本。顾客在网上选择的范围广,信息量大,检索方便,可随时订购,快捷方便,这些都体现了网上购书方式相对于传统购书方式的优点。在传统的购书方式和网上购书方式中,网上购书所占的比例越来越大,更多的人愿意通过这种方式购书。可以预测,图书网上交易将在未来购书领域中占据主要位置,是图书销售领域未来发展的必然。
另一方面,互联网技术的发展在推动电子商务进步的同时,也使电子商务系统的技术实现面临新的挑战。面对越来越多的需求,必将有海量的数据需要进行处理,如何提高并发性以减少客户访问网站的等待时间,这也是一个值得思考而且急需解决的问题。作为为网络信息技术前沿的Java,已经是软件界的一个热门话题,它提供的跨平台性、分布式部署、网络和数据库支持,为Web应用系统的开发提供了新的途径。1995年,Sun公司的Java语言以提供跨平台应用程序开发与配置震撼了整个Web世界。几年来,Java从一种编程语言发展到了开发企业级应用系统的Java2平台规范。1999年Sun公司推出J2EE,它包括Servlet、JSP和EJB等许多技术和规范,得到了IBM、BEA和ORACLE等众多公司的认可,是一种很有前途的也是比较成熟的开发Web应用的技术选择方案。
本文所述的图书网站系统正是以J2EE技术和规范为基础,结合具体应用的电子商务系统。
1.2 MVC架构风格
MVC是三个单词的缩写,分别为模型(Model)、视图(View)和控制Controller)。MVC模式的目的就是实现Web系统的职能分工。Model层次实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层次用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输
入并将它们映射为模型层可执行的操作。MVC组件之间的关系,如图1.1所示。
图1.1 MVC中各组件之间的关系
(1)MVC中的Model组件
模型(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。 (2)MVC中的View组件
视图(View)是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash,XHTML、XML/XSL、JSP、ASP、WML等一些标识语言和Web services。因此,如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是单一存储,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
随着应用的复杂性和规模性的增大,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。比如一
个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 (3)MVC中的Controller组件
控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个链接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
控制器掌管着用户的请求(当用户点击图形用户界面上的元素执行操作时,控制器会收到HTTP GET或者POST请求)。它的主要功能就是调用并协调需要的资源或对象来执行用户请求。通常控制器会为任务调用合适的模型,以及选择合适的视图。
(4)MVC架构风格的优点
低耦合性:视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码。同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
高重用性和可适用性:随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(WAP),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
快速的部署:使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
(5)MVC架构风格的缺点
MVC的不足体现在以下几个方面:
1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
2)视图与控制器间的连接过于紧密。视图与控制器是相互分离的,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
3)视图对模型数据的访问效率较低,根据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据,对未变化数据的不必要的频繁访问,也将降低操作性能。
1.3 J2EE体系结构
(1)J2EE的概念
J2EE是Java2平台企业版(Java 2 Platform, Enterprise Edition),是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间存在良好的兼容性,解决过去企业后台使用的信息产品彼此无法兼容,企业内部或外部难以互通的窘境。
J2EE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(Enterprise JavaBean)、Java Servlet API、JSP(Java Server Page)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBean,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。 (2)J2EE的四层模型
J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用
组件根据他们所在的层分布在不同的机器上。事实上,SUN设计J2EE的初衷正是为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿。在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议,例如通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,以下是J2EE典型的四层结构:
1)运行在客户端机器上的客户层组件:J2EE应用程序可以是基于web方式的,也可以是基于传统方式的。
2)运行在J2EE服务器上的Web层组件:J2EE web层组件可以是JSP页面或Servlet。按照J2EE规范,静态的HTML页面和Applet不算是web层组件。正如下图所示的客户层那样,web层可能包含某些JavaBean对象来处理用户输入,并把输入发送到运行在业务层上的enterprise bean来进行处理。
3)运行在J2EE服务器上的业务逻辑层组件:业务层代码的逻辑用来满足银行、零售、金融等特殊商务领域的需要,由运行在业务层上的enterprise bean进行处理。有三种企业级的bean:会话bean、实体bean和消息驱动bean。会话bean表示与客户端程序的临时交互。当客户端程序执行完后,会话bean和相关数据就会消失。相反,实体bean表示数据库的表中一行永久的记录。当客户端程序中止或服务器关闭时,就会有潜在的服务保证实体bean的数据得以保存。消息驱动bean结合了会话bean和JMS的消息监听器的特性,允许一个业务层组件异步接收JMS 消息。
4)运行在EIS服务器上的企业信息系统(Enterprise information system)层软件:企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划(ERP)、大型机事务处理、数据库系统,和其它的遗留信息系统。例如,J2EE应用组件可能为了数据库连接需要访问企业信息系统。
J2EE四层模型中,这些层次之间有相互调用的关系,每一层都有对应不同的功能,如图1.2所示。
图1.2 J2EE四层模型示意图
(3)J2EE核心组件和API
JDBC(Java Database Connectivity):JDBC API为访问不同的数据库提供了一种统一的途径,像ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具有平台无关性。
JNDI(Java Name and Directory Interface):JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。
EJB(Enterprise JavaBean):J2EE技术之所以赢得媒体广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。正是由于J2EE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。
JSP(Java Server Page):JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
Java Servlet:Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能与JSP类似,不过实现的方式不同。JSP通常是大多数HTML
代码中嵌入少量的Java代码,而Servlet全部由Java写成。
XML(Extensible Markup Language):XML可以用来定义其它标记语言。它被用来在不同的商务过程中共享数据。XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,可以得到一个完美的具有平台独立性的解决方案。
RMI(Remote Method Invoke):正如其名字所表示的那样,RMI协议调用远程对象上的方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。
JMS(Java Message Service):JMS是用于和面向消息的中间件进行通信的应用程序接口(API)。它既支持点对点的域,又支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型的消息传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来将应用与旧的后台系统相集成。
第2章 需求分析
2.1 概述
(1)开发背景
随着网络在中国的广泛普及,网络支付手段的逐步完善,越来越多的中国人逐渐习惯于网上购物,习惯于鼠标点击下订单,送货上门的快捷便利的购物方式。传统书店的购书观念正在被网上书店这一方便快捷的购书方式所冲击。网上书店在国际互联网上可以实现的商务功能已经越来越多样化,从最开始的信息发布功能,到现在的在线图书展示功能、在线洽谈业务功能、在线交易功能、在线采购功能、在线客户服务功能、在线网站管理功能等等,几乎传统书店所提供的功能都可以在互联网上进行电子化的高效运作,而借助网络的跨地域特点,更是将传统书店的地域限制加以突破,全国各地的读者都可以通过网络在同一个网上书店购书,从而大大增加了客户的数量。
为了使网上书店的投入回报和管理效益最大化,在对网上书店进行系统开发之前,必须对一系列问题进行科学的论证,如网上书店的需求分析、网上书店总体规划、网上书店系统的功能和实施方案、网上书店的传播与推广、运行网上书店系统的软件和硬件配置、网上书店的管理系统和管理方法等等。
综上所述,网上书店已经成为互联网时代购书者的最佳选择,必将获得巨大的成功。 (2)运行环境
1)硬件环境:
客户机:
CPU:P4 1.8GHZ以上 内存:512MB以上 分辨率:1024*768以上
WEB服务器:
CPU:奔腾双核2.5GHZ以上 内存:2G以上
数据库服务器
CPU:奔腾双核2.5GHZ以上
内存:2G以上
2)软件环境
操作系统:Windows 2000以上; IE:Internet Explorer 7.0以上 数据库:Oracle10.2.0.1.0 开发工具:
MyEclispe 8.5;PowerDesign 12.5 ;WebLogic 10.3 Microsoft Visio 2003;StarUML 5.0
2.2 功能性需求
2.2.1 功能划分 (1)前台实现功能:
1)新用户注册:实现用户注册的基本功能,要求用户填写相应的资料进行注册。已经注册的用户名不能注册。
2)会员登陆、修改基本资料:对用户输入的用户名和密码与数据库进行对比验证,如果出现错误,则需要提示用户错误信息。登陆成功则可以修改资料。
3)会员购买图书:实现会员购书的基本功能,当用户选中自己喜爱的图书之后,可以加入购物车,一次性可以购买多本书籍。
4)会员查看订单:用户订单提交以后,可以随时登陆系统查看订单的实时信息,如订单的处理情况等等。
5)顾客查看、搜索图书:实现根据用户自己的喜好来查找相应的图书,可以根据作者和书名来查找图书。 (2)后台实现功能:
1)用户管理:实现对已经注册的用户的管理,包括查看、锁定、删除指定的用户等等。
2)图书管理:实现对图书的管理,包括图书信息的修改,新到图书的添加,废弃图书的删除等。
3)订单处理:订单管理员登陆系统之后,可以查看到未处理的订单,进而进行订单状态的修改。 2.2.2 功能描述 (1)前台功能描述
1)新用户注册:实现新用户注册,用户打开网站后,点击注册进入注册界面,然后顾客填写用户名、密码、真实姓名、电子邮箱、通信地址、联系电话后点击注册,系统提示注册成功,然后跳转到主界面。如果输入的用户名已经注册过了,则提示顾客该用户名已经存在;如果顾客输入的密码小于6位,则提示用户重新输入。如果顾客某项信息未输入,则提示用户输入完整信息。在新用户注册界面也有登陆的链接,以便已经注册的顾客登陆。
2)会员登陆、修改资料:用户打开网站首页后,输入用户名和密码登陆。然后用户点击个人信息连接,则系统转向修改个人信息页面,会员在页面中修改密码、电子邮箱、通信地址、联系电话的若干项,会员点击保存后自动转向网上书店首页。如果用户输入的用户名和密码有误,则转向系统登陆界面。如果用户名修改后的密码小于6位,则提示用户重新修改;如果有其他信息未输入,则提示用户输入。如果用户点击返回按钮,则可以不保存信息返回。
3)会员购买图书:会员打开网站成功登陆后,分类浏览或者搜索选择自己喜欢的图书,将图书加入购物车,可以循环多次操作,将若干图书都加入购物车;会员点击购物车连接后,则系统转向结算页面,显示出已经订购的图书列表和总价,用户可以改变订单中的数量或者删除;用户点击结算按钮后,则进入收货人信息确认,会员可以修改收货人信息,单击确认后则购买成功。如果用户未登陆,则当用户转向结算按钮时提示用户登陆并转入登陆界面,登陆后可继续以前的操作。
4)会员查看订单:会员成功登陆后,点击我的订单链接,则转入订单形式页面,会员可以查看订单的详细情况,如订单日期、处理状态等情况。如果用户输入的用户名和密码有误,则转向系统登陆界面。 (2)后台管理模块
1)用户管理:用户管理员打开管理员登陆界面,成功登陆后,系统显示所有用户,管理员可以将会员锁定,或删除会员,点击保存提示保存成功。
2)订单处理:订单管理员在代开管理员登陆界面,成功登陆后,系统显示所有订单的信息,包括已经处理的订单和未处理的订单,对于未处理的订单,订单管理员可以进行状态的修改,但是不能删除订单,点击保存之后,提示保存成功。
3)图书管理::图书管理员代开管理员登陆界面,成功登陆后,系统显示当
前所有的特价图书,图书管理员可以取消特价图书和添加特价图书;另外管理员可以添加连接进行添加图书操作。
2.3 非功能性需求
(1)系统性能
要求对用户输入的数据进行校验,用户点击链接的相应时间最长不超过5秒,平均不超过3秒,数据更新、查询和统计的时间在可接受的范围之内。 (2)伸缩性
当用户访问量增大时,要求可以即利用集群进行部署,如Web服务器集群、应用服务器集群、数据库服务器集群,将系统的应用负载扩展至多个服务器承担,分摊服务器的压力,达到高负载、高性能的要求。 (3)可用性
要求大众的顾客不需要其他任何培训就可以轻易的浏览网站,在网站上进行各种操作,没有模糊的、用户不知如何进行的操作,顾客能够高效的完成购书的操作。能够支持Windows XP和Windows 7操作系统。 (4)易用性
要求浏览界面简单实用、美观大方、操作界面友好,各个部分的操作和布局都保持合理性和一致性。符合顾客常规的、现有的操作习惯和思路,在前端进行一些智能化的数据校验功能,对各种状态和操作结果进行反馈和提示。 (5)可靠性
要求系统在一年之内出现故障不能超过5次,每次故障能够及时的解决,不能长时间故障,能够及时的恢复数据。 (6)安全性
对于系统的重要资源和数据都有相应的访问权限和密码保护,具有一定的安全性,降低数据丢失的风险,对入侵进行检测,提高系统的防范入侵能力。
第3章 总体设计和功能概述
3.1 功能模块划分
本系统主要实现前台顾客购书和后台管理两大模块,前台购书包括新用户注册、修改资料、用户注册、查看订单等功能;后台管理主要包括用户管理、订单处理、图书管理等功能,系统的功能模块,如图3.1所示。
图3.1 系统功能模块图
3.2 网上书店结构层次图
本系统基本按照J2EE四层体系结构来设计,前台主要是JSP页面展示给用户,Web层次实现前台请求的控制和传递,业务层次负责进行相关数据业务流程的处理以及连接数据库进行操作,系统结构层次图,如图3.2所示。
图3.2 系统结构层次图
3.3 网上书店系统建模
(1)系统流程分析
所谓系统流程,就是用户使用本网上书店系统进行购书的一个过程。系统流
程分析是系统分析、总体设计的一个重要流程,也是系统设计的重要的基础,如图3.3所示。
图3.3 系统流程图
(2)顾客订书时序图
用户使用正确的用户名和密码登陆后,系统将在整个会话中保存用户对象,用户可以点击相应类别分类查询,系统将相应的根据用户的请求返回符合条件的图书列表,客户可以选择自己想要订购的图书,系统得到图书ID之后,生成订单提交给系统,系统将保存到数据库,并提示图书订购成功,整个订书环节完成。顾客订购图书的时序图如图3.4所示。
图3.4 用户订书时序图
订单管理员输入正确的用户名和密码之后,可以开始处理订单,系统返回未处理订单和已处理订单的信息,用户改变订单状态后,可以提交处理请求,后台处理成功之后提示管理员处理成功,如图3.5所示。
图3.5 处理订单时序图
以下是顾客购买图书和管理员处理订单的时序图,从中可以看出,订单管理员和顾客发生了相互的关系。顾客选择图书后,如果图书已经没有库存了,则顾客不能购买图书;正常提交订单后管理员接收到了顾客提交的订单,并更新订单状态,客户查询到订单状态变成已处理后,购买过程结束。购买图书活动图,如图3.6所示。
图3.6 购书活动图
3.4 数据库概念结构设计
根据需求分析,可以发现这个网上书店涉及到的实体有用户(会员)、图书、管理员、订单、订单详情。
会员能产生订单,而且一个会员能产生多个订单,但一个订单只能属于一个会员;订单上可以有多种图书,也就是一条订单对应多条订单详情,但是一条订单详情只能属于一个订单;
一条订单详情只能对应一种图书,但是一种图书可以出现在多个订单详情之中;一条订单只能由一个管理员管理,但是一个管理员可以管理多条订单。
弄清楚这些实体之间的关系之后,就可以很容易画出相关的E-R图,这些实体之间的关系,如图3.7所示。
图3.7 网上书店E-R图
第4章 系统详细设计和实现
4.1 数据库逻辑实现
数据库逻辑设计主要任务是将概念结构转换为某个DBMS所支持的数据关系模型,关系模型的逻辑结构是一组关系模式的集合。在概念设计中,E-R图是由实体、实体的属性和实体之间的联系三个要素组成。数据库逻辑设计就是需要将E-R图转化为关系模型,将实体、实体属性和实体之间的联系转化为关系模式。 (1)数据库列表清单
根据数据库概念设计的E-R图,可以很容易的将E-R图转化为关系模式,下面的表4.1列出了数据库中所有的表。
表4.1 数据库表的清单
表名 admin book category customer orders order_detail 中文名称 管理员表 图书表 图书种类表 用户表 订单表 订单详情表 说明 存放管理员信息 存放图书信息 存放图书种类信息 存放会员信息 存放订单总体信息 存放订单详情
(2) 表属性描述
表4.2 customer(用户表)
列名 customer_id password name email telephone address join_time 数据类型 varchar2(30) varchar2(20) varchar2(30) varchar2(50) varchar2(20) varchar2(80) date 是否为空 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL 列中文名 用户名 密码 真实姓名 用户邮箱 用户电话 用户地址 注册时间 备注 Primary Key 表4.3 orders(订单表)
列名 order_id admin_name customer_id realname address state order_time telephone total_prise comments handle_time
表4.4 category(图书种类)
列名 category_id category_name category_desc
表4.5 admin(管理员)
列名 admin_name password type email address telephone
数据类型 varchar2(20) varchar2(20) varchar2(20) varchar2(40) varchar2(50) varchar2(20) 是否为空 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL 列中文名 管理员姓名 管理员密码 管理员类型 管理员邮箱 管理员地址 管理员电话 备注 Primary Key 数据类型 varchar2(50) varchar2(20) varchar2(50) 是否为空 NOT NULL NOT NULL NOT NULL 列中文名 种类ID 种类名称 种类描述 备注 Primary Key 数据类型 varchar2(30) varchar2(20) varchar2(30) varchar2(30) varchar2(50) varchar2(20) date varchar2(20) number(10,2) varchar(80) date 是否为空 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL 列中文名 订单号 管理员姓名 所属用户 真实姓名 送货地址 订单状态 订购时间 联系电话 总价 备注 处理时间 备注 Primary Key Foreign Key Foreign Key 表4.6 book(图书表)
列名 book_id category_id name prise discount pic_url banlance author press pub_date
表4.7 order_detail(订单详情表)
列名 order_id order_seq book_id count sub_total
数据类型 varchar2(30) number(4) varchar2(40) varchar2(10) number(10,2) 是否为空 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL 列中文名 订单号 订单序号 图书编号 购买数量 总价小计 备注 PK,FK Primary Key Foreign Key 数据类型 varchar2(40) varchar2(50) varchar2(60) number(6,2) number(3) varchar2(60) number(8) varchar2(20) varchar2(80) date 是否为空 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL 列中文名 图书ID 图书种类 图书名称 图书原价 图书折扣 图片地址 图书余量 作者 出版社 出版日期 备注 Primary Key Foreign Key 4.2 用户登陆注册模块的设计与实现
4.2.1 用户登陆模块 1.总体流程和文件设计
当会员输入用户名和密码之后,系统将用户名和密码传入到后台,查询数据库进行验证,如果正确则登陆成功,如果错误则提示错误信息,由此实现登陆的功能,登陆的总体流程,如图4.1所示。
图4.1 用户登陆程序流程图
为了实现上述功能和流程,设计了以下的类文件和JSP文件,它们之间有相互调用的关系,例如ProcessLogin.java处理loginHead.jsp的请求,如图4.2所示。
图4.2 登陆模块文件及调用关系图
其中,各个文件的作用如下:
(1)loginHead.jsp:首页中用于用户快速登陆。
(2)login.jsp:登陆页面。
(3)welcome.jsp:登陆成功的欢迎界面。
(4)ProcessLogin.java:处理用户登陆请求的Servlet。 (5)PasswordInvaild.java:用户密码不正确异常。 (6)Customer.java:存放用户相关信息。 (7)CustomerNotFound.java:用户未注册异常。
(8)CustomerDataStore.java:负责与数据库交互,验证用户名和密码。 2.界面截图,用户登陆主要实现用户的登陆功能,界面截图,如图4.3所示。
图4.3 登陆界面
4.2.2 用户注册模块 1. 总体流程和文件设计
用户注册基本流程是用户进入网站后,点击注册进入新用户注册界面,用户输入必须输入的信息,点击注册提交,系统提示注册成功。如果用户输入的信息不完整或者密码不符合要求,系统将提示相应信息,用户必须从新输入信息。其流程如图4.4所示。
图4.4 用户注册程序流程图
为了实现上述流程,设计以下的这些文件,这些文件之间有相互调用的关系,
ProcessRegist.java负责处理注册请求,成功则转向registeSuccess.jsp页面,失败则转向registe.jsp页面等等,如图4.5所示。
图4.5 用户注册模块文件结构及调用关系
其中,各个文件的作用如下: (1)regist.jsp:注册界面
(2)registSuccess.jsp:注册成功的欢迎界面。
(3)ProcessRegist.java: 处理注册信息,负责与后台交互。 (4)Customer.java:存放用户相关信息。 (5)CustomerExist.java:用户已经存在异常。
(6)CustomerDataStore.java:负责与数据库交互,验证用户名和密码。 2. 界面截图,用户注册模块界面截图,如图4.6所示。
图4.6 用户注册界面
4.3 图书浏览模块的设计与实现
4.3.1 文件关系
图书浏览模块主要负责图书的显示,并且能根据用户选择的了类别来显示,主要有2个JSP文件、1个Servlet和2个类文件组成,这些文件的设计采用了MVC的架构风格,leftclass.jsp和book.jsp属于视图层次,负责页面的显示;ProcessPage.java输入控制层次,负责控制页面的跳转流程、以及从业务逻辑层到视图层的数据传递;BookBean.java是模型层的文件,负责业务逻辑的处理,以及与数据访问对象的数据交互。这些文件之间的调用关系和在MVC中的层次,如图4.7所示。
图4.7 图书显示模块的文件调用关系即所处的层次
其中,各文件的作用如下所示:
(1)leftclass.jsp作用是让用户选择类别,这样可以根据类别显示图书。 (2)booklist.jsp作用是显示符合要求的图书列表。
(3)ProcessPage是一个Servle,用于处理客户请求和分页显示。 (4)BookBean 主要作用是用于分页显示。
(5)BookDataStore主要负责与数据库连接,返回结果给BookBean。
4.3.2 图书浏览模块截图
图书浏览模块主要是图书的显示功能,能看到用户指定条件的所有图书,如果书目太多,需要分页显示,图书浏览模块界面截图,如下图4.8所示。
图4.8 图书浏览模块截图
4.4 购物车模块的设计与实现
4.4.1 文件关系
购物车这个功能模块,主要功能包括所选图书的添加、查看购物车、单件图书数量的修改、清空购物车、返回指定图书。购物车功能模块文件调用关系,如图4.9所示。
图4.9 购物车模块的文件关系图
各个文件作用如下:
(1)booklist.jsp 显示图书,用户点击购买某本图书室将图书加入购物车。 (2)cart.jsp 显示购物车状态,包含已经购买的图书。
(3)account.jsp 显示送货信息,在将要结账时用于确认送货信息。 (4)ProcessOrder.java 处理订单,包括订单总体信息和订单详情。 (5)JudgeLogin.java 判断用户是否已经登录,未登录则不允许结账。 (6)ProcessAccount.java 在用户结账时,将订单和订单详情存入数据库。 (7)Order.java 保存、处理订单总体信息。 (8)OrderDetail.java 保存、处理订单详细信息。
(9)OrderDataStore.java 连接数据库,将订单信息保存到数据库。 4.4.2 购物车模块截图
购物车模块截图如图4.10所示。
图4.10 购物车截图
4.5 图书管理模块的实现
(1)图书管理模块流程设计
图书管理模块主要实现的功能有图书的修改、图书的添加、图书的删除等,在对图书进行操作之后用户在访问时要求能马上能显示修改之后的结果,以便用户能够及时的了解图书的最新信息。其大体流程,如图4.11所示。
图4.11 图书管理模块程序流程图
(2)图书管理模块截图
在图书管理界面,管理员能看见所有图书的信息,当点击修改/删除时,可以查看该图书详情,管理员可以修改和删除该图书。图书浏览,如图4.13所示。
图4.13 图书管理界面截图
当用户点击某本图书下的修改/删除按钮时,可以进入显示图书详情的界面,
管理员可以对图书进行修改和删除。如图4.14所示。
图4.14 图书修改/删除模块截图
第5章 系统测试
5.1 系统功能测试
测试是为了发现程序中的错误而执行程序的过程,成功的测试是发现了至今为止尚未发现的错误的测试。测试的目的就是最大限度的发现隐藏在程序中的错误。
测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道内部工作过程,可以通过测试来检验内部动作是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。对软件测试而言,黑盒测试是把程序看作一个黑盒子,完全不考虑程序内部结构和处理过程。白盒测试与黑盒测试的方法相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑来测试程序,检测程序中的主要执行通路是否都能按照预定要求正确工作。
本系统的测试采用黑盒测试方法,测试系统、各个子模块的功能是否都能正常使用。测试的步骤如下:
主页测试 用户登陆测试 用户修改资料测试 购物车子系统测试 图书检索子系统测试 添加新图书子系统测试
测试示例:普通用户登陆测试。分别输入正确的和错误的用户名或者密码,对不同的情况进行测试。然后需要对系统进行测试和排错,保证符合系统预定的要求。设计的测试用例如下。
(1)输入正确的用户名,错误的密码。
输入:用户名李强,密码111111 预期输出:密码错误,请重新输入 实际输出:密码错误,请重新输入 运行效果如图5.1所示
图5.1 输入错误密码运行结果
(2)输入未注册的用户名。
输入:用户名李明,密码123456 预期输出:用户名李明未注册,请先注册 实际输出:用户名李明未注册,请先注册 运行效果如图5.2所示。
图5.2 输入未注册的用户名运行结果
(3)输入正确的用户名和密码
输入:用户名李强,密码123456 预期输出:李强您好 实际输出:李强您好 运行效果如图5.3所示。
图5.3 成功登陆界面
5.2 系统实用性分析
2011年电子商务市场的竞争很激烈,整个电子商务市场的发展也越来越快。据中国电子商务研究中心发布报告预测显示:2011年全国网络购物用户将逼近2亿,达到1.93亿人。这7500亿元平均下来每人每年在网上消费超过3750元。电子商务快速发展的确给我们的生活带来了很大的方便,虽然业内人士普遍表示电子商务发展已经进入寒冬,不过电子商务的消费市场将是不断扩大的。
因此,在如此的大环境驱动下,开发一个基于J2EE技术平台的电子商务网站是非常实用且有意义的。本课题设计主要针对当前迅猛发展的电子商务来开发,采用B/S架构,来实现基本的购书、下订单的功能,并借用J2EE的很多组件和技术,成功实现了一个简单的电子商务网站。通过设计和开发该系统,使自己所学的理论知识成功的与实践相联系起来,也对电子商务网站的开发、J2EE的技术有了更深刻的认识和提高,大大提高了自己的动手能力和解决实际问题的能力,为今后的工作打下了坚实的基础。
第6章 总 结
对于一个软件系统应用的开发,整体的设计和对业务流程的熟悉是非常重要的。编码只是其中很小的一部分。只有掌握了整体的业务流程,设计出了优秀的数据库之后,才能编写出优秀的软件,进行相应的逻辑操作。作为一个计算机专业的学生,要具备一定的规划能力和设计能力,为未来的发展打下基础。
经过几个月的设计和开发,基于J2EE的网上书店系统基本开发完毕。在这期间,我完成了开发该系统的整个生命周期的工作,包括基础知识相关技术的学习和熟悉,需求分析、总体设计、详细设计、系统测试和用户界面的设计工作。所做出的系统符合需求分析中所提出的要求,能够实现浏览书籍、购买书籍、下订单等基本功能。
开发这套系统,使我对J2EE技术有了更清晰、更深刻的了解和认识,熟悉了对很多开发软件的使用,同时体会到了分布式部署、集群部署的用处,也体会到了整个J2EE体系的强大,对各种设计模式和MVC的架构风格也有深刻的体会,将以前学习过的编程理论与实践相结合并进行运用。
在毕业设计过程中,我遇到了很多困难,在编程的过程中对很多的技术和逻辑上的问题束手无策,通过在网上搜索和向周围的同学们请教,我解决了这些问题,虽然有些问题解决的不是很完善,但是也学到了不少东西。其实问题的关键在于自己在知识的掌握上的欠缺,在实际运用中的不足,正是出现了这些困难,才让我逐渐的学会去解决困难,锻炼了我的动手能力,也培养了我独立思考的能力。
此系统仍存在许多缺陷,但是通过该系统设计达到了系统设计目的意义,基本掌握了软件开发的主要步骤,了解了各环节在开发时要注意的问题,从方便用户的角度出发,去考虑开发出好的软件。本毕业设计虽然有许多不足之处,但是从学习和锻炼的角度来说很有意义。
参考文献
[1] 李秀芳,张福增,贾世祥.软件复用与Framework框架技术[J].科学技术与工程, 2006 [2] 陈传波,唐咸峰.J2EE框架的设计[J].计算机工程与科学, 2002
[3] 闫斐,王亚弟.基于J2EE应用软件的设计与开发[J].人民邮电出版社, 2006 [4] 官全龙,姚国祥.基于J2EE的应用架构的研究[J].计算机工程与设计, 2005, [5] 张桂元,贾燕枫.Struts开发入门与项目实践[M].人民邮电出版社, 2005 [6] 孙卫琴.基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004 [7] A.Keyton Weissinger. JSP技术手册[M].北京:中国电力出版社,2001
[8] Rogers Cadenhead. Java编程进门经典[M].梅兴文译.第4版.北京:人民邮电出版社,2007 [9] Bruce Eckel. Thinking In Java.英文第4版[M].北京:机械产业出版社,2007 [10] 陈轶,姚晓昆.Java程序设计实验指导[C].北京:清华大学出版社,2006 [11] 杨昭.二级Java语言程序设计教程[M].北京:中国水利水电出版社,2006 [12] 赵文靖.Java程序设计基础与上机指导[M].北京:清华大学出版社,2006
致 谢
大学四年的学习生活即将结束了,这篇论文作为我学习的最后一份答卷,敬礼给各位老师。
在辽宁大学信息学院计算机科学与技术专业这四年的学习和生活,我不仅学到了丰富的专业知识,更体会到了信息学院各位老师认真工作、爱岗敬业、为人师表的优良品质。在此,谨向各位老师表示深深的敬意和谢意!
在本文的构思和写作过程中,得到了任秀丽教授的悉心指导和帮助,在百忙之中抽出时间为我指导论文。在本文的选题、拟定提纲、成文、修改及定稿的整个过程中,任秀丽教授倾注了大量的心血,提出了许多宝贵的意见和建议,使得本文终能定稿。在论文的字里行间无不体现出她作为导师所具有的深厚理论水准、超前的思考方法和严谨的治学态度,给我留下了深刻的印象,必将使我受益终生,激励我前行!
同时,感谢四年中信息学院所有曾经关心我、培育我、鼓励我的各位老师和同学们,他们都在工作学习中给了我很大的帮助,教我如何将理论应用于实践,如何做好学习与工作。在这里一并表示感谢!
由于本人水平有限,加上时间紧促,本文一定有不少缺点和不足,恳请各位老师给予帮助和指正。人生的路还很长,我将把自己所学的知识全部奉献给社会!
康乐
2012年5月于沈阳
因篇幅问题不能全部显示,请点此查看更多更全内容