基于J2EE的网上书店系统的设计和实现_第1页
基于J2EE的网上书店系统的设计和实现_第2页
基于J2EE的网上书店系统的设计和实现_第3页
基于J2EE的网上书店系统的设计和实现_第4页
基于J2EE的网上书店系统的设计和实现_第5页
免费预览已结束,剩余27页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕 业 论 文题 目 基于J2EE的网上书店系统 的设计与实现 专 业 软件工程 基于J2EE的网上书店系统的设计和实现 摘要:随着电子商务的快速发展,网上购书已经成为一种新型图书销售渠道。网上书店提供了更快速的交易和低廉的价格,使得一个商家可以面对全球的消费者,而一个消费者可以在全球的任何一家网上书店购物,从而大大降低了商品流通和交易的成本。本论文对网上书店系统的设计与实现进行了详细阐述。论文主要从实现技术、系统分析、设计、实现以及测试等方面做了详细介绍。本系统选择Java为开发语言,选择MyEclipse为前端开发工具,采用MySQL建立和维护后台数据库。系统功能主要包括用户管理、购物车管理、商品管理、订单管理和公告管理。最后本系统经过测试,能够安全稳定地运行,满足各功能的需求并且达到了预期的效果,具有一定的实用价值。关键词:网上书店;MyEclipse;购物车;订单管理 Abstract: With the rapid development of electronic commerce, online bookshop has become a new type of book sales channel. Online bookstores provide faster transaction and lower price that makes businesses can face global consumers and a consumer can shop at any online bookstore in the world. Thus it greatly reduces the cost of the circulation and transactions of commodities. The design and implementation of an online bookstore system are elaborated in this thesis. This thesis mainly introduces the implementation techniques, system analysis, design, implementation and test. In order to implement the system, Java is used as the development language. MyEclipse is used as the front-end development tool. MySQL is used to establish and maintain the back-end database. The system functions mainly include user management, shopping cart management, goods management, order management and announcement management. In the end, the system has passed the test and it can work safely and stably, which satisfies all kinds of functions as expected. It has a certain pratical value.Key words: Online Bookstore; MyEclipse; Shopping Cart; Order Management目 录绪 论11 实现技术与开发工具31.1 Java31.2 J2EE31.3 Spring41.4 MyEclipse41.5 MySQL41.6 Tomcat52 可行性分析与需求分析72.1 可行性分析72.1.1 技术可行性72.1.2 经济可行性72.1.3 操作可行性72.2 需求分析72.2.1 功能需求72.2.2 性能需求83 系统设计93.1 系统概要设计93.1.1 系统总体结构93.1.2 系统流程设计103.2 系统详细设计103.2.1 用户管理模块的设计103.2.2 商品管理模块的设计113.2.3 购物车管理模块的设计113.2.4 订单管理模块的设计113.2.5 公告管理模块的设计123.2.6 数据库设计124 系统实现154.1 数据库的实现154.1.1 数据库的建立154.1.2 数据表代码生成154.1.3 数据库的连接164.2 系统整体环境搭建164.3 系统功能模块实现164.3.1 系统主界面的实现164.3.2 用户管理模块的实现174.3.3 商品管理模块的实现184.3.4 购物车管理模块的实现194.3.5 订单管理模块的实现204.3.6 公告管理模块的实现215 系统测试225.1 测试目的225.2 测试平台225.3 测试用例225.3.1 系统登录225.3.2 用户注册235.3.3 添加书籍235.3.4 公告修改235.3.5 查询书籍245.4 测试难点245.4.1 数据源连接245.4.2 信息的提交24结 论25参考文献26致 谢27II绪 论随着全球经济一体化的逐步发展和深入,网上书店已成为传统书店必不可少的经营策略之一。目前,网上书店在国际互联网上可以实现的业务功能已经多样化,可以说,传统书店所具备的功能几乎都可以在互联网上进行电子化的高效动作。虽然传统书店规模有所不同,随着网上交易的开展,都将有力地改变企业的发展空间,会对企业的竞争力产生不可忽视的影响。网上书店为人们提供了更广阔的环境:人们不受时间的限制,不受空间的限制,不受传统购书的诸多限制,可以随时随地在网上交易。在网上,这个世界将会变得很小,一个商家可以面对全球的消费者,而一个消费者可以在全球的任何一家书店购物;网上书店提供了更快速的流通和低廉的价格:网上书店减少了商品流通的中间环节,节省了大量的开支,从而也大大降低了商品流通和交易的成本。网上书店更符合时代的要求,具有长远的社会效益和经济效益。西方国家网上书店起步较早,现今已较为成熟。首先从技术上来讲,国外对于网上书店的开发有一套完整的开发流程规范,无论从安全性还是系统的扩展性都有良好的应对措施;从功能上来讲,能满足在网上购书所涉及到的所有合理的功能,包括畅销书、在线书籍、书评社区和积分商场等。世界上第一家网上书店是1991年在美国联机公司(AOL)在网络上建立的“阅读美国”书店。1994年贝佐斯在西雅图成立的亚马逊网上书店,如今已成为全球最大网上书店,控制着美国80%的网上图书销售市场。而国内的网上书店起步较迟,虽然目前已初具规模,但是由于信息服务不完善、低质量,查询、分类形式单一,注重图书数量的丰富而忽略图书及其相关知识和信息的提供、介绍,并且经营模式未走出传统书店模式,从而导致国内网上书店系统与国外相比有一定的差距1。现在的网上书店系统大多数是由大型书店商家按照自身需求开发而成,没有达到统一及成熟的程度。因此,在运用方面还有广大的研究空间。未来网上书店系统将会变得更加专业化、更加高质量、更有特色,并且系统将逐渐成熟,达到统一的标准,更具有安全性的支付、可扩展性的功能和可维护性,系统的使用会易于操作,为用户提供网上购书的便利享受。系统的网络管理也将会随着更加自动化。实现开发平台标准化,业务流程自动化和应用系统集成化。本论文主要研究一款网上书店系统的设计与实现。该系统主要实现网上购买书籍的基本业务处理,主要包括会员管理、商品展示管理、购物车管理、订单管理、商品管理、公告管理等功能。本文的各个章节的主要研究内容如下:第1章针对该系统的可行性分析与需求分析进行了详细的介绍,以减少项目开发的盲目性,保证系统开发建立在更科学的基础上。第2章针对该系统的主要实现技术与开发工具进行详细的介绍。第3章对系统设计进行详细的说明,包括系统概要设计和系统详细设计。第4章对系统实现进行详细的说明,按照各个模块具有针对性的说明。第5章对系统测试进行详细的介绍,以保证系统能够正常的运行。1 实现技术与开发工具系统以Myeclipse 8.5为应用程序开发工具,选择Java为开发语言,采用Mysql建立和维护后台数据库。以下对系统的实现技术与开发工具进行了详细说明。1.1 Java Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库2。1.2 J2EEJ2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。J2EE是Java2平台企业版(Java 2 Platform,Enterprise Edition)J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构3。J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。1.3 SpringSpring 也表示是一个开源框架,是为了解决企业应用程序开发复杂性由Rod Johnson创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Sping的优点包括低侵入式设计,代码污染极低,独立于各种应用服务器,Spring的DI机制降低了业务对象替换的复杂性,Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部4。1.4 MyEclipse本项目代码开发选用的IDE工具是MyEclipse。MyEclipse是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是对EclipseIDE的扩展,利用它可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, Spring, SQL, Hibernate。1.5 MySQL本项目开发选用的数据库软件是MySQL。MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性。为多种编程语言提供了API。这些编程语言包括C、C+、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。支持多线程,充分利用CPU资源。优化的SQL查询算法,有效地提高查询速度。既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。提供TCP/IP、ODBC和JDBC等多种数据库连接途径。提供用于管理、检查、优化数据库操作的管理工具。可以处理拥有上千万条记录的大型数据库。支持多种存储引擎。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。1.6 TomcatTomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是7.0。Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为:当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为7.0.27 Released。2 可行性分析与需求分析本章主要对系统的可行性分析与需求分析进行详细的介绍。在项目开发前,对系统开发的必要性和可能性进行分析和论证,以减少项目开发的盲目性,保证系统开发建立在更科学的基础上5。2.1 可行性分析针对本系统以全面、系统的分析为主要方法,经济效益为核心,围绕影响项目的各种因素,运用大量的数据资料论证拟建项目是否可行。2.1.1 技术可行性本系统采用MyEclipse集成开发工具作为该系统前端应用程序的开发,以JAVA做为主要开发语言和MySQL进行后台数据库的建立和维护。主要可行性如下:(1)MyEclipse集成了很多插件和功能,能进行页面的可视化设计和和后台代码的规范性。(2)MySQL是一个小型关系型数据库管理系统,操作简单,上手简单。(3)Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,具有卓越的通用性、高效性、平台移植性和安全性。所以从技术来上说,该系统的设计和完成是可行的。2.1.2 经济可行性Java是一种免费的开源语言,采用的数据库MySQL也是免费的,所用的开发工具MyEclipse在网上也可以下载的,而对于相关的资料,可以从图书馆以及网络平台获得。因而,该系统在经济上是可行的。2.1.3 操作可行性该系统操作简易,用户购书不需要了解整个书店的工作流程,只需要按照提示一步步操作即可完成购书等活动。而对于系统管理员,该系统设计时遵循简单、直观和合理,能和用户进行很好的交互。因而,该系统在操作上是可行的。2.2 需求分析本节主要对于系统的需求分析进行了详细的介绍,主要包括功能需求和性能需求。对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果6。2.2.1 功能需求本系统是一个网上书店系统,实现其基本的网上购书功能,因此应该使本系统的操作尽量简单使它能够吸引更多的在线顾客。通过对当当网,卓越网等网上书店的认识和分析,我对网上书店有了基本的了解,主要功能需求如下:(1)用户本系统的用户包括后台管理员和会员用户,即需要对用户进行添加,并且具有修改、删除和查询的功能。(2)书籍本系统可以对书籍信息进行添加、修改、删除,并且书籍是分类别的,所以对于书籍的类别也可以进行添加、修改和删除。(3)购物车对于本系统应提供了购物车功能,可以让顾客像在超市中购物一样,将想要购买的物品放入购物车,如果顾客看中了其他物品不想买刚才的物品时可以从购物车将物品清出,添加新物品。通过购物车给顾客提供最大的选择空间。(4)公告本系统还具有公告功能,提供最新的系统信息和新书资讯,实现的功能包括对于公告信息的添加、修改、删除和展示。(5)订单当购买书籍后会生成相应的订单,实现的功能包括订单的生成、修改和订单的删除。2.2.2 性能需求由于该系统实现的是网上购买书籍的完整流程,既包括了对大量书籍和大量会员用户的管理,又包括了对大数据量的书籍的查询,因此,本系统在性能上需要满足一下几点:(1)整个系统长时间处于稳定的运行状态。(2)系统正常运行时,保证大量用户的并发访问。(3)系统在满足数据的正确性的前提下,搜索的时间最大不超过10秒。3 系统设计本章主要根据系统的需求分析和开发时的实际情况进行系统设计,包括概要设计和详细设计。3.1 系统概要设计概要设计是将软件系统需求转换为未来系统的设计,为了逐步开发强壮的系统构架做铺垫,使设计适合于实施环境,为提高性能而进行设计,使整个软件开发工作可以协调有序地进行7。3.1.1 系统总体结构通过对当当网,卓越网等网上书店的认识和分析,再根据需求分析,对系统模块进行了设计。本系统的功能可以分为以下几个模块8:(1)用户管理模块用户管理模块又包括了管理员模块和会员用户模块。管理员模块要实现登录、添加、修改、删除和查询功能。会员用户模块要实现会员登录、注册和会员的添加、修改、删除、和查询等基本功能。(2)商品管理模块商品管理模块由商品展示模块、商品类别管理模块、商品信息模块三个子模块组成。商品展示模块要实现对商品的查询,其中又包括热门书籍查询、畅销书籍查询、推荐书籍查询、按书籍类别查询、书籍排行榜查询和自定义书籍查询。商品类别管理模块要实现对商品类别的添加、修改、查询和删除功能。商品信息模块实现商品基本信息的添加、修改、查询和删除。(3)购物车管理模块购物车管理模块要实现商品加入购物车、移除购物车、清空购物车。(4)订单管理模块订单管理模块包括会员用户对订单的管理和管理员对订单的管理。会员用户管理订单实现提交订单、修改订单、删除订单和查看订单,管理员管理订单实现查看订单和删除订单。(5)公告管理模块公告管理模块实现对公告的添加、修改、查询和删除。系统功能总体结构如图3-1所示。图3-1 系统功能总体结构图3.1.2 系统流程设计本系统的流程是:首先进入系统时,显示的是前台的主界面,主界面展示了一些热门和畅销的书籍,会员登录框以及公告。当用户输入正确的会员名和密码后,点击登录,系统会刷新页面,并且登录框消失变成相应会员的信息。然后已经登录的会员可以添加书籍到购物车、修改个人资料、下订单等。在每个前台页面下面都有个“后台管理”的超链接,点击后会跳转到后台管理登录页面,输入管理员的帐号后就会跳转到后台管理页面,就可以针对商品、订单、会员、系统等信息进行数据管理。3.2 系统详细设计本节对系统的数据库和各个模块的详细设计进行了说明。3.2.1 用户管理模块的设计用户管理模块包括会员管理和管理员管理。(1)会员管理会员管理包括前台用户注册、登录和后台管理员对会员的管理操作。会员信息包括会员编号、用户名、用户密码、用户昵称、用户电话、用户地址和Email。针对用户注册能够对用户名、密码进行简单验证;能够对电子邮箱、Email进行有效性验证。如果所填的信息不符合要求,将会出现提示框,提示格式不对;能够防止利用页面刷新重复注册,以及已经注册的用户不能重复注册。用户登录时,如果输入的用户名和密码错,将会跳转到一个公共的错误页面。而后台管理员能对注册的会员用户进行增加、删除、修改,也会对数据进行验证。(2)管理员管理管理员管理主要实现对管理员的基本信息进行添加、修改、删除、查询、管理员登录和修改密码。管理员信息包括管理员编号、用户名、密码、昵称和联系电话。对管理员信息进行操作时都要进行数据格式验证,如果验证失败将弹出提示框,并且操作终止。3.2.2 商品管理模块的设计商品管理模块主要由商品展示模块、商品类别管理模块、商品信息模块三个子模块组成9。(1)商品展示模块商品展示模块主要是针对书籍的各个条件进行查询展示。主要包括热门书籍展示、畅销书籍展示、新书上市展示、排行榜展示、按书籍类别展示、用户自定义条件展示,并显示商品详情,提供购买链接。用户自定义展示即是根据用户输入的关键词进行模糊查询。(2)商品类别管理模块商品类别管理模块主要是对商品类别进行管理,商品类别信息主要包括类别名称、类别简介和类别编号。实现对商品类别信息的添加、修改、删除和查询。(3)商品信息模块商品信息模块主要是针对商品的基本信息进行管理,商品的基本信息包括书籍名称、书籍价格、书籍作者、出版社、简介、封面、出版日期、书籍类别和书籍编号。实现对商品基本信息的添加、修改、删除和查询,增添商品时候可以上传图片。其中与商品类别有级联关系,书籍的类别为商品类别的主键,书籍要保证一致性。3.2.3 购物车管理模块的设计购物车管理模块是针对购物车进行管理。欲购买商品可以增添到购物车;也可以从购物车退回商品,清空购物车;对于同一件商品的多次购买只能在原来的商品上增添数量,还可以修改购物车中某个商品的数量,统计商品总金额。3.2.4 订单管理模块的设计订单管理模块主要针对订单基本信息的管理,订单的基本信息包括订单编号、会员编号、书籍编号、书籍名称、购买数量、下单时间、邮寄地址、邮编、订单状态、联系电话、留言和支付金额。只有登录的用户可下订单,用户可以查看自己的订单。管理员可以修改订单的状态;也可以按某个时间段,状态查询订单及分页列表显示查询结果。当商品基本信息删除的时候,存在订单的商品不能够被删除。3.2.5 公告管理模块的设计公告管理模块主要对公告基本信息进行管理,公告的基本信息包括公告编号、公告标题、公告内容、公告发布时间。管理员可以增加系统公告,并可以删除、修改。在前台首页会按照时间顺序展示系统公告标题,点击可以显示公告的详细内容。3.2.6 数据库设计根据对各个模块的分析后,系统数据表主要包括:(1)管理员信息表管理员信息表用来存储管理员的基本信息,包括用户名、密码、昵称和联系电话,为了辨别每个管理员的唯一性,还增加了一个管理员ID的字段,并设置管理员为主键递增10。管理员信息表如表3-1所示。表3-1 管理员信息表列名类型说明midint用户IDusernamevarchar管理员用户名passwordvarchar管理员密码namevarchar昵称phonevarchar联系电话(2)会员用户信息表会员用户信息表是用来存储会员用户的基本信息,包括会员用户名、用户密码、用户昵称、用户电话、用户地址和Email,为了保证会员用户的唯一性,还增加了名称为uid的用户编号字段,并设置为递增主键。由于考虑到用户账户的安全性,表中的用户密码存储的实际上不是用户的明文密码,而是经过MD5加密后的一串字符,保证数据的安全性。(3)书籍类别表书籍类别表是用来存储书籍类别的基本信息,包括类别名称、类别简介和类别ID,并设置类别ID为递增主键,保证书籍类别信息的唯一性。该表是为书籍表提供的辅助表。书籍类别表如表3-2所示。表3-2 书籍类别表列名类型说明tidint类别IDbooktypevarchar类别名称introducevarchar简介(4)书籍表书籍表主要是用来存储书籍的基本信息表,包括书籍名称、书籍价格、书籍作者、出版社、简介、封面、出版日期、书籍类别和书籍ID,书籍ID为该表的主键,以保证书籍信息的唯一性。书籍的封面这个字段实际存储的是封面图片的URL,因为上传图片时,将图片存储到了服务器上,所以picurl字段指向的就是存储在服务器上的相应的图片。在该表中书籍类别的字段为int类型,是因为类别是可以随时增加,随时减少的,选择书籍类别时是从数据库动态获取的,而如果存储类别名称,那么当类别名称别修改时书籍表却没有得到同步,类别ID才是辨别类别的唯一性,即应选择int类型。并且当书籍的类别被删除后,相应的书籍表里的数据也要被删除,达到级联删除效果,确保数据的正确性和完整性。书籍表信息如表3-3所示。表3-3 书籍表列名类型说明bidint书籍IDbooknamevarchar书籍名称pricevarchar书籍价格authorvarchar书籍作者publishersvarchar出版社introducevarchar简介picurlvarchar封面publishdatevarchar出版日期booktypeint书籍类别(5)订单信息表订单信息表是用来存储订单的基本信息,主要包括订单编号、会员编号、书籍编号、书籍名称、购买数量、下单时间、邮寄地址、邮编、订单状态、联系电话、留言和支付金额。其中订单编号为主键,保证订单的唯一性。表中关联了会员表和书籍表,由于会员编号和书籍编号都具有唯一性,用会员编号和书籍编号来表示,以防止会员表和书籍表的基本信息修改后无法同步到订单表,保证了数据的完整性。订单信息表如表3-4所示。表3-4 订单信息表列名类型说明oidint下单编号uidint会员idbidInt书籍idbooknamevarchar书籍名称amountvarchar购买数量datevarchar下单时间addressvarchar邮寄地址postcodeint邮编statevarchar订单状态phonevarchar联系电话notevarchar留言moneydouble金额(6)公告信息表公告信息表主要用来存储系统公告基本信息,包括公告ID、公告标题、公告内容、公告发布时间。其中公告ID为主键,保证公告信息的唯一性。该表用于公告管理模块,实时记录公告管理模块数据的更新。公告信息表如表3-5所示。表3-5 公告表列名类型说明nidint公告IDtitlevarchar公告标题contentvarchar公告内容publishdatevarchar发布时间4 系统实现本章主要对系统实现进行详细介绍,包括数据库的实现和各个模块的实现。4.1 数据库的实现本小节主要介绍本网上书店系统的数据库的实现,包括如何建立数据库、如何生成数据表以及对数据库的连接。4.1.1 数据库的建立本系统后台数据库采用的是MySQL,数据库的建立采用数据库中可视界面生成的方法。首先进入Navicat for MySQL,然后选择新建数据库。接着在新建数据库窗口中填写数据库的相关参数。如:数据库名称、数据库所有者、初始大小、自动增长量的大小以及存放位置等等。创建数据库如图4-1所示。图4-1 创建数据库4.1.2 数据表代码生成新建数据库成功后,进行数据表的创建。下面以会员用户设置数据表作为介绍,会员用户设置数据表中将字段用户编号设置为主键,不可为空,其余字段均可为空。该数据表生成SQL代码:CREATE TABLE user ( uid int(11) NOT NULL AUTO_INCREMENT, username varchar(255) DEFAULT NULL, password varchar(255) DEFAULT NULL, name varchar(255) DEFAULT NULL, phone varchar(255) DEFAULT NULL, address varchar(255) DEFAULT NULL, email varchar(255) DEFAULT NULL, PRIMARY KEY (uid) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;4.1.3 数据库的连接由于本系统采用Hibernate框架,引入所需的包后,只需要在配置文件里配置上相应的数据库用户名、密码和连接地址等,就可以通过面向对象的思想来操作关系数据库。4.2 系统整体环境搭建打开软件MyEclipse 8.5,建立一个名为onlineBook的web project项目。首先,导入系统所需要使用到的jar包,导入jar包过程如下所示:将系统所需的数据库连接包和所用框架所必须的包直接复制到WEB-INF目录下的lib中,MyEclipse 8.5将自动完成后续工作。创建好项目导入jar包之后,就需要对系统的框架进行搭建。在项目的src目录下对系统进行分层,建立项目包,并将框架相关的配置文件放在该目录下。然后在WebRoot目录下新建admin和app文件夹,分别表示后台管理界面和前台界面文件的存放位置,在这两个文件夹里又分别都建立image文件夹,用于存放界面所需的图片。4.3 系统功能模块实现本小节主要对系统的各个功能模块的实现进行详细介绍,包括系统界面实现、用户管理模块、商品管理模块、购物车管理模块、订单管理模块、公告管理模块。4.3.1 系统主界面的实现一个网站的页面就如同其门面一样,是给用户第一感官印象的重要途径。本项目在页面的设计上秉承了简单易用、布局合理、大方美观、清新明了的设计思想,用户在首次接触本系统的时候,能感觉到亲切、容易上手,但也能感受得到本系统鲜明的特色。打开Dreamweaver CS5,新建一个HTML文件,通过网页标签设计好登录界面。利用Dreamweaver的可视化设计,对页面进行模块的划分和排版,包括会员登录窗口、畅销书推荐、精品推荐界面、图书分类、新书上架、最新公告、热卖排行、网友书评和书籍搜索组成完整的首页界面。然后将HTML文件内容拷贝到JSP页面。所用页面利用了Div+CSS的灵活布局方式,首页利用了JSP和Struts2的特性,由多个Action构成(每个Action负责不同的显示模块)。本系统利用Struts2框架来管理JSP页面,在JSP页面中,Action的Bean属性(即提供了getter和setter方法的全局变量)被推到ValueStack的栈顶,与JSP页面进行交互(根据JSP页面的需求访问其属性的getter或setter方法),这样的JavaBean有别于Entity Bean,它们更多的用来封装业务(Server Bean),根据请求来完成相应的业务操作流程,这将在下文具体功能模块实现中进行叙述其作用。系统主界面如图4-2所示。图4-2 系统主界面4.3.2 用户管理模块的实现用户管理模块包括了会员用户管理和管理员管理。具体实现如下:(1)登录注册新用户必须进行注册后才能进行浏览购买图书等操作,注册信息包括用户名,密码,昵称,电话,邮件等。并对用户名,密码的简单验证;能够对电子邮箱,Email进行有效性验证;能够防止利用页面刷新重复注册,以及已经注册的用户不能重复注册。用户在注册站内会员的时候,将填写一张表单,在用户书写完用户名焦点切换时候,页面利用了Ajax和JQuery技术,动态访问后台,调用服务,查询该用户名是否已经被占用(数据库中存在该用户),若占用,则返回的requestBean的booleanValue属性为true,message消息属性为“你所输入的用户名已经存在,请重新输入”;若没被占用,则返回的requestBean的booleanValue为flase;消息为“你可以使用该用户名”。注册页面会根据Ajax返回的值,动态的显示给用户11。本系统将管理员和会员用户的登录分开为两个界面,管理员和会员用户的数据分别是保存在不同的数据表里,通过用户名查询出相应的数据(hibernate是对对象的操作,取出的数据封装相应的Entity Bean,这里用的是UserBean)。在项目的三层架构中,传递是就是UserBean,在web层(即Struts2的Action),进行判定,若UserBean为null,就提示用户“帐号或用户名不存在”,若非null,调用action服务,其表现为:普通用户登录后停留在本页(即主页,通过Struts2的过滤器机制,对用户的登录状态进行判定,如果用户session中存放的UserBean为null,则显示登录的输入场,如session中存在UserBean对象,则显示相应的欢迎语句),管理员则进入后台管理页面(后台页面也包含拦截器和过滤器,拦截等级权限非Admin的用户对象)。用户登录成功的标志就是:通过用户名取得的用户对象的password属性,与用户输入的password相同。这一个判断是在biz层实现的,登录成功后,将取得的UserBean返回给web层,若不成功,则返回null。在Web层中,会将该UserBean对象存放于session中,以便后续的操作需要使用到UserBean时,不用再次访问数据库,降低系统开销12。(2)用户信息维护用户个人信息的维护功能归根结底就是一个CRUD的过程。用户登录成功后,点击“个人中心”,进入用户的个人中心(信息维护界面),此时触发的Action服务为“显示”用户信息操作的服务(userInfo),该Action服务只负责显示,而所需要显示的内容为用户各相关信息,即UserBean中的信息都已经存在于session中了。用户进入个人中心后,用户可以修改一些根据业务需求开放给用户的个人信息,点击保存后,会触发相应的Action,完成Update的操作。4.3.3 商品管理模块的实现商品管理模块主要由商品展示模块、商品类别管理模块、商品信息模块三个子模块组成。具体实现如下:(1)商品展示模块首先在项目的dao层建立名为IndexDao的JAVA文件,在该文件里分别写上针对不同条件的书籍查询,比如按照订单的数量排序的书籍做为畅销书等,然后在相应的action层也建立相应的JAVA文件,在index方法中调用每个查询首页需要展示的数据方法,再把所有接收的数据放入request里,在首页JSP文件中使用struts2的标签将所有的数据分别迭代出来显示在页面13。(2)商品类别管理模块首先建立该模块所需的dao、service和action文件,在dao写上增删查改的方法,方法中使用HibernateTemplate模版类型进行对数据库的交互,并把结果返回到action层,再通过ajax回调将数据封装返回到js,通过返回的内容进行判断是否执行成功并弹出相应的友好系统提示。(3)商品信息模块实现对商品基本信息的添加、修改、删除和查询,增添商品时候可以上传图片。添加商品时,首先会去访问Action,这个Action会去执行查询所有的书籍类别,然后通过Struts的标签将数据填充到JSP页面的下拉列表,当用户填写好商品的基本信息后点击提交,会将请求转交给另一个Action,首先会将选择的图片通过数据流上传到服务器文件夹,再将所返回的图片路径得到,和其他的商品信息封装到POJO里,传到数据库层,执行SQL语句添加到数据库。管理页面如图4-3所示。图4-3 管理页面4.3.4 购物车管理模块的实现用户在选中喜欢的商品后,选择购买按钮,调用相应Action服务,系统会根据用户选择的商品来生成一个对应的订单项(一个商品对应一个订单项,相同的商品再次购买,订单项中的商品数量+1),添加到一个List中,并且将这个List放入session中,用户购买其它商品的时候,从session中取出该List,添加新的订单项,再将其放入session中。 用户可以点击“购物车”,进入购物车中查询已经购买的商品。此时,系统会从session中取出存放订单项的List中取出所有的数据,以列表的形式遍历显示给用户。用户可以对相关商品进行“删除”和“修改数量”的操作,删除的订单项(即商品)不会从List中删除,而是将其isDelete属性设置为true,同时显示给用户剩余的和已删除的,提供恢复操作14。购物车页面如图4-4所示。图4-4 购物车页面4.3.5 订单管理模块的实现订单模块分为提交订单模块和订单管理模块。具体实现如下:(1)提交订单用户在进入“购物车”后,点击“下单”按钮,会将进行生成并提交订单操作(当用户购物车为空时,此按钮不生效,当用户没登录的时候,提示用户登录)用户点击“下单”后,会跳转到“订单确认”页面,该页面会显示用户所购买的所有商品的信息,包括:商品名称,商品单价,商品折扣,商品数量,总价等。用户在确认无误后,点击“确认”按钮,此时,系统会新生成一个订单对象,将所有订单项存入订单对象的List中,并且进入配送地址确认页面。系统会默认显示并使用用户设定的默认地址为当前订单的配送地址,用户也可以选择其它非默认的地址,或者新建一个配送地址来作为当前订单的配送地址,用户在确认完配送地址无误后,点击“确认提交”,系统会清空Session中购物车的相关信息(即删除所有订单项),系统会将地址赋值给订单对象的相应属性,并且触发提交订单的操作,将OrderBean传入biz层,进行其余,如:下单时间、下单User的装配,将所有属性都已确认好的OrderBean传入给dao层,进行写入数据库。根据Hibernate的配置,OrderBean的List中存放的ItemBeans也会被写入数据库。订单提交成功后,跳转到提示用户成功页面,在该页面,用户可以选择“为当前订单付款”或是“离开并回到主页” 15。(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论