基于java的网上书店系统设计(含源文件)

欢迎添加微信互相交流学习哦!

二维码

项目源码:https://gitee.com/oklongmm/biye

摘 要
网上书店是电子商务中发展最快、最成功的典型代表之一,与传统书店相比较,网上书店突破了传统图书销售模式的局限性,既能迅速传递丰富的图书信息,又能超越时空的限制,提高人们采购新书的效率。随着互联网在国内的进一步普及,这种购书方式将越来越容易为大众所接受,因为它使得“足不出户却能尽知天下事”成为可能。
本系统的研究意义是为了帮助经营实物书店的销售者扩大市场和增加知名度。论文从理论和实践两个角度出发,对一个具有数据挖掘功能的网上书店进行了分析、设计与实现。论文主要阐述了此课题的研究意义,研究背景,系统的总体设计方案,以及电子商务平台的详细设计过程,以及在开发的过程中所采用的技术的研究与学习,以及在开发中遇到的问题和解决的办法。另外还阐述了对以后的网上书店以及对电子商务的前景的展望。
本文最后对系统的设计和实现进行了总结,并阐述了将来进一步对该系统进行扩充和完善的一些工作。
关键词:网上书店;电子商务;JAVA 
 
Abstract
The net bookstore is one of the representative example which the most developed and the most successful in the commercial of electron compared with traditional bookstore, the special of net bookstore is that it can breakthrough the model of traditional sales, is not only can deliver the abundant books information but also can break the admit of time and save the time for people purchase new books. With the spread of the internet in our country, 
This shopping books style will more and more easy accept by people ,because it let people’s dream that couldn’t out but can know everything in the world to be a possible.
The most important foundation of this system is to help the sale people who manage the object bookstore expand the market and improve the famous. This thesis start from theory and practice, Papers on a has the function of online bookstore of data mining analysis, design and implementation. Paper mainly expounds the significance of the subject, the research background, the design of the whole system solutions, and e-commerce platform of detailed design process, and in the process of the development of the technology research and learning, and the problems in development and the solution and also discussed on the future development of online bookstore of electronic commerce and the prospect of the future.
This article proposes the design and implementation of the system are summarized, and expounds the further in the future of the system expanded and improved some of the work.
Key words:Online bookstore; electronic commerce; JAVA
 
目 录
第一章 绪 论    1
1.1 研究意义    1
1.2 研究背景    1
1.3系统构建的目标分析    2
1.4系统解决方案    3
第二章 系统关键技术概述    4
2.1 JSP技术    4
2.1.1 JSP,ASP,PHP三种技术的比较    4
2.1.2 从应用范围看三种技术的优劣    4
2.1.3 JSP运行环境    5
2.1.4 JSP与javabean    5
2.2 WEB服务器简介    6
2.3 数据库的选择    6
第三章 系统的详细设计与实现    7
3.1 系统功能概述    7
3.1.1 系统功能介绍    8
3.1.2 系统特点    8
3.2 系统总体设计    8
3.2.1 利用MVC设计模式设计系统    9
3.2.2 系统功能模块划分    9
3.3 用户管理的详细设计    10
3.3.1 用户注册模块    10
3.3.2 用户验证模块    12
3.3.3 用户登录模块    13
3.4 浏览商品信息的详细设计    14
3.4.1 显示页面整体设计概述    14
3.4.2 各个浏览页面的详细设计    14
3.5 购物车模块详细设计    16
3.5.1 购物车的页面    16
3.5.2 购物车确定页面    17
3.6 订单模块详细设计    17
3.6.1 收货地址设计    17
3.6.2 订单信息提示设计    18
3.7 数据库详细设计    19
第四章 系统测试    23
4.1 链接测试    23
4.2 表单测试    23 

4.3 数据库测试    23
第五章 总结与展望    25
致 谢    26
参考文献    27
附录    28
 
第一章 绪 论
1.1研究意义
我们对Internet可以说是在熟悉不过的了,它最早在美国出现,如今,世界各国纷纷加入到这个行列,使Internet成为全球化的网际网络。随着用户的不断增加,其规模迅速扩大,它的领域也走向多元化。Internet的普及是一种必然的趋势,现在的很多家庭有很多都拥有了PC机,所以人们上网看新闻、查资料、聊天、玩游戏、购物已成为许多人日常生活不可缺少的一部分,尤其是网上购物,更以它的超远距离、方便和快捷吸引了无数的目光。因此,所以 Internet 的网上购物在如今是越来越多、很实用的。并且发展前景非常之好。
书籍交易网站就是Internet和电子商务发展的产物,近几年在我国发展迅猛,如同一些书店纷纷在各地开设分店以拉近书店与顾客间距离一样。随着现今全民素质和科学技术水平的不断提高,知识更新的越来越快,人们随时都会有被淘汰的危机,为了不让社会淘汰,做到与时俱进就必须多读书不断的学习。21世纪是网络的时代、信息的时代,时间是非常宝贵的,人们由于种种原因没有时间到书店去,也不知道哪家书店有自己需要的书籍,同时那些传统书店的经营者又没什么好的方法让人们知道我这就有顾客需要的书籍,这种买卖双方之间信息交流上的阻碍成为“网上书店”网站发展的原动力。
网上书店网站的建立可以更好的解决这方面的问题,我们向广大用户推出的是一种全新的网上信息服务,旨在书店与消费者之间架起了一座高速、便捷的网上信息桥梁,我们的目的是节省您的时间、方便您的购书,使您永远走在时代的前沿。
1.2研究背景
计算机的出现给人类社会带来了第三次工业革命,计算机和计算机网络已经深入到了各行各业和各个领域,随着Internet的不断扩大和发展,电脑网络把每一个国家、每一个城市甚至每一个家庭连接到一起,形成了一条“信息高速路”,就像高速公路大大提高了车辆行驶的速度一样。
电子商务是于九十年代初,在欧美兴起的一种全新的商业交易模式,它实现了交易的无纸化、效率化和自动化,表现了网络最具魅力的地方。快速的交换信息、地理界限的模糊,这所有的一切也必将推动传统商业行为在网络时代的一次新变革。
网上书店是电子商务中发展最快、最成功的典型代表之一,它的出现改变了人们以往购书的习惯,用户通过网上查询、电子订购以及货到付款或是电子支付的方式,即可轻松买到称心如意的书籍。基于电子商务的网上书店系统是一个由硬件、软件、图书信息、前台浏览和购物及后台管理和维护等组成的一体化有机系统。
现代人工作繁忙、生活节奏快,常常无暇到传统书店购书,而网上书店恰好能够使他们足不出户即可轻松购得自己所需书籍,既省时又省力。网上书店的创建满足了广大读者的不同需求,节省了读者逛书店所花费的时间,使用户根据自己的安排在家罩就可以购买到想要的书籍,这对忙碌中的读者来说提供了最大的便利。读者也不必为找不到自己想要的书籍而烦恼,因为网上书店与传统书店有着皆然不同,它提供了强大的搜索功能,用户只需按自己的需求设置简单的搜索,就能立刻找到自己所需要的书籍。同时网上提供的书籍都是最新出版的书籍、并且附有对相关书籍内容的详细介绍,帮助你快速找到自己理想的书籍。在网上购买书籍价格比在商店要实惠得多,不受时间和空间的限制,随时随地可以进行购买,并且根据所购数量设置为会员价或VIP价格或折扣处理,还实行相应的积分,这对用户的购买热情起了很大的激发作用。
网上书店网站的建立向广大用户推出的是一种全新的网上信息服务,旨在书店与消费者之间架起了一座高速、便捷的网上信息桥梁。对下游读者:图书品种全和图书信息全面,方便读者选择,全年365天、每天24d,时足不出户就可以购买图书,结算方便,快捷安全,价格低廉;对上游出版机构:展示的图书品种全,容易积累具有极大商业价值的图书市场基本数据,能够主动针对读者进行图书宣传和营销,可以进行多种创新的图书营销手法,有效降低经营成本。
正是是因为网上书店的巨大优势给消费者带来的便利,使得现在人们上网的目的已经不像原来那样只是简单的浏览网页,越来越多的用户开始在网上购买自己所需要的书籍.网上书店作为一种全新的购物方式正逐步渗透到人们生活中,并被大众所接受和欢迎。为了刺激消费,扩大自己图书的知名度,各出版社或书店纷纷建立起自己的网上书店。本人正是在这种情况下,一方面是受书店的委托,另一方面是为了更好的完成本次的毕业设计,故需要开发一个网上书店交易系统。
1.3系统构建的目标分析
网上书店的开展,需要投入资金、人力、物力,重新整合企业的业务流程,对企业经营管理方式进行变革,以适应新的网络经济模式;因而在网站上的管理成功与否直接关系到企业的生存与发展,企业的投入必须得到回报,那么企业应该怎样构建自己的网站系统才能实现企业的发展策略需要呢?因此首先需要明确网站构建要实现的目标和目的:
(1)实现网上电子化交易
书店B TO C电子商务系统构建的首要目的就是销售商品,网站必须提供完善的购物功能并且实现交易过程全电子化,提供高效、可靠、安全的交易平台,保证网上购物的方便性、快捷性、安全性。
(2)提高企业经营管理信息化水平
通过构建书店商务网站系统,使重整企业业务流程,整合各部门资源,提高企业信息利用率;从而加强企业的经营管理、提高经营效率,降低成本,合理配置资源。
(3)加强企业与客户沟通,动态掌握市场需求
利用网站商务系统平台,通过网络收集客户反馈信息,了解市场变化与客户需求,制定书店经营策略;为客户提供商品售前、售中、售后服务,建立书店与客户的紧密良好沟通关系。
(4)宣传和推广企业文化
通过书店网站的构建达到宣传企业文化、展示书店商品及服务、提高企业知名度、扩大销售渠道与挖掘更多的商业机会等目的。
1.4系统解决方案
(1)系统功能:此系统分为客户端模块和服务器模块,服务器模块是同tomcat作为服务器支撑整个服务器的运行,而客户端模块使用浏览器与服务器交互信息,实现整体的功能。面对客户的购物全过程,包括推荐书显示、图书查询、购物车、查询订单、结帐、用户资料修改、用户注册/登录。
(2)系统架构:使用Struts2[8]+JSP+Hibernate+Mysql数据库基于MVC设计模式来构建。
 
第二章 系统关键技术概述
2.1 JSP技术
JSP[1]是Java Server Page的缩写,是由Sun公司倡导、许多公司参与建立一种动态网页技术标准。采用JSP技术,Web页面开发人员可以使用HTML或者XML标记来设计和格式化最终页面,使用JSP代码或者小脚本程序来生成页面上的动态内容。在服务器中,JSP引擎解释JSP代码和小脚本程序,生成所请求的内容,并且将结果以HTML或者XML页面的形式发送回浏览器。JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。由于JSP页面的内置脚本语言是基于Java编程语言的,拥有Java编程语言“一次编写,各处运行”的特点。
JSP几乎可以执行于所有平台。如Win NT,Linux,Unix。优点:一次编写,随处运行、有统一的技术标准、自由扩展JSP标签、执行性能高、开发工具多而强大。缺点:必须熟悉JAVA语言、难以调试。
JSP的优势在于JSP是以JAVA[2]技术为基础的,JavaBean、Servlet等,J2EE技术是JSP强大生命力的所在。对于大型的电子商务网站的开发,JSP及J2EE技术是广大Web开发人员的首选。
2.1.1 JSP、ASP、PHP三种技术比较
ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Java script)作为自己的开发语言。 
PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。
JSP是Sun公司推出的新一代网站开发语言,Sun公司借助自己在Java上的不凡造诣,除了Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。JSP[3]可以在Servlet和JavaBean的支持下,完成功能强大的站点程序。
2.1.2 从应用范围来看三种技术的优劣
ASP是Microsoft开发的一套服务器脚本环境,它内含与IIS(Internet Information Server,Internet信息服务)中,利用ASP可以结合HTML页面、ASP指令和ActiveX建立动态的、交互的、高效率的Web服务器应用程序。优点:易学易用、安装、配置简单、与浏览器无关、组件具有扩充性。缺点:只能在Windows平台上运行、开发环境不开放、执行速度比较慢。
PHP与ASP类似。是一种服务器端脚本语言。PHP的语法混合了C、JAVA、PERL以及PHP式的新语法。PHP能支持多种数据库,如Oracle、Sybase、MYSQL、SQL Server等。优点:PHP是跨平台的、语法简单、具有面向对象特点、良好的安全性。缺点:数据库支持不足,每种数据库都要对应相关的开发语言、不是工业标准、不支持ASP中的ActiveX和JSP中的Servlet组件开发技术。
JSP同PHP类似,几乎可以执行于所有平台。如Win NT,Linux,Unix。在NT下IIS通过一个外加服务器,例如JRUN或者ServletExec,就能支持JSP。优点:一次编写,随处运行、有统一的技术标准、自由扩展JSP标签、执行性能高、开发工具多而强大。缺点:必须熟悉JAVA语言、难以调试。
这三种技术中,JSP和ASP、PHP相比较,本身并没有特别明显的优势,JSP的优势在于JSP是以JAVA技术为基础的,JavaBean、Servlet等,J2EE技术是JSP强大生命力的所在。对于中小型站点的开发来说,JSP、ASP、PHP并有什么明显区别,但是对于大型的电子商务网站的开发,JSP及J2EE技术是广大Web开发人员的首选。
2.1.3 JSP运行环境
Sun推出的JSP是一种执行于服务器端的动态网页开发技术,他基于JAVA技术。执行JSP时需要在WEB服务器上架设一个编译JSP网页的引擎。配置JSP环境可以有多种途径,但主要工作就是安装和配置WEB服务器及JSP引擎。
2.1.4 JSP与JavaBean
一些实际应用的系统可能很复杂,JSP页面文本也会变得庞大,有的JSP文本可能有成千上万行,大量的嵌入Java代码和HTML语句交织在一起,其中,嵌入Java代码、HTML语句,还有JavaScript语句,使编写和维护JSP网页变得很困难。
使用JavaBean就是一个好办法。JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用于帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)。
JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。将JSP和JavaBean结合起来,在JavaBean中处理逻辑,然后在JSP网页中调试,而用JSP文本着重是网页见面设计,这样会使得JSP网页变的清晰,可以节省软件开发时间和降低以后维护的难度。
2.2 WEB服务器简介
Tomcat服务器是Apache组织开发的一种JSP引擎,本身具有WEB服务器的功能,可以作为独立的WEB服务器来使用。但是,在作为WEB服务器方面,Tomcat出来静态HTML页面时不如Apache迅速,也没有Apache健壮,所以一般将Tomcat与Apache配合使用,让Apache对网站的静态页面请求提供服务,而Tomcat作为专用的JSP引擎,提供JSP解析,以得到更好的性能。Tomcat是Java程序,所以只要有JDK就可以使用,不需要考虑操作系统平台。
2.3 数据库的选择
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库[4]的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
此次研究是对网上商场的研究,所以只是测试使用,这里只要使用MySQL小型数据库。
 
第三章 系统的详细设计与实现
3.1系统功能概述
基于JAVA的网上电子书店,实现网上购书的整个流程,用户进入网站的主页,可以先浏览书籍,也可以选择先注册用户成为书店的合法用户,如果用户没有注册并且登陆,是不能够实现下单操作的。用户可以通过网站上的图书查询或者战士的图书,浏览商品的详细信息,如果要购买该书籍,则可以点击购买按钮将该书籍加入购物车,然后可以选择继续浏览书籍,或者去结账下单操作,如果此时用户没有注册登陆,则是不能够进行下单操作的,在对购物车进行操作时候,用户可以选择修改商品的数量,也可以选择删除该商品,删除的将放在下面的页面显示删除过的商品,用户可以选择恢复操作,恢复刚刚删除的商品,用户可以直接点击结账进入确定购买的商品,然后用户选择下一步填写收货地址,收货用户以及一些其他的基本信息,如果用户以前购买商品,用户可以选择以前使用过的商品地址,直接生成,减少用户的数量两,最后,最后生成一个订单信息,告诉用户。此时用户还可以继续购买书籍。整体流程图如下图3.1所示。
 
图3.1 系统流程图
3.1.1系统的功能介绍
(1)用户模块:用户注册部分:网上书店规定只有合法用户才能购买图书,所以要购买图书的新用户必须进行注册,为了能及时发货给用户以及随时联系用户,所以系统必须记录每一位用户的详细信息。在用户注册的时候,提供用户名的唯一性验证,密码安全性验证,以及验证码的验证,账户邮箱激活验证。用户登录部分:提供用户登录功能,如果用户名和密码不正确,不允许登录,同时如果用户没有进行账户激活,则提供用户邮箱激活功能。用户名密码验证成功就提示用户登录成功,用户就可以进行购买操作。用户验证部分:提供用户进行邮箱验证。验证通过则激活用户信息,如果验证不通过则每次登陆都要验证。
(2)浏览商品模块:提供用户浏览各个商品的功能,用户能够根据自己的需要浏览需要的商品,同时还提供购买操作功能,将用户需要购买的商品加入购物车。
(3)购物车模块:记录用户浏览购买的商品,提供用户删除指定的商品,清空购物车里面的商品,恢复删除指定的商品到购物车中。
(4)订单模块:用于生成用户的订单信息,并且记录用户的订单信息到数据库中,同时记录用户的地址信息。
(5)数据库模块:用于存放用户的数据,图书的数据,以及用户订单的数据等。
3.1.2系统特点
1、页面模块化:
本系统在界面设计上都采用了模块化处理思想。本系统前台设计了5个模块,分别是用户注册模块,用户登录模块,浏览商品模块,购物车模块,订单模块,数据访问模块。在用户使用时候实现这些模块之间的跳转是通过struts2[9]实现的。
2、三层结构MVC设计:
本系统采用MVC模式设计,即程序逻辑结构分为用户界面层、业务逻辑处理层和数据存储层。三层在实际的物理结构上也是独立的,业务逻辑层采用JavaBean[5]实现,用户界面与业务逻辑分离,系统的安全性、可维护性、重用性和可扩展性都大大提高。
3、人性化设计:
本系统导航的另一个亮点就是导航明晰。这样,不管客户位于本“书店” 的哪个角落,都不会迷路。
3.2系统总体设计
3.2.1利用MVC[10]设计模式设计系统
1、    页面模块化
本系统把页面中一些常用的部分集成为模块,例如页面的头和尾巴,这样设计新的页面时如果有重新出现的部分,只需要拿现成的模块来组装就可以了。
2、三层结构架构
本系统采用三层架构设计,采用三层架构以后,用户界面通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将查找的数据返回给用户界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。这种方式在一定程度上增加了数据库的安全性,同时也降低了用户界面层开发人员的要求。工作原理下图3.2所示
 
图3.2 工作原理图
3.2.2  系统功能模块划分
整个系统模块划分结构如图3.3:
 
图3.3 系统模块划分
3.3用户管理的详细设计
3.3.1用户注册模块
(1)功能简介
用户注册,完成用户在网站的身份标示,须确保登录身份的唯一性,因此需要给出重复验证,须保证用户的密码的安全准确,需要确认验证。注册的相关信息可考察上面数据库中用户表项。在数据表中存在非空项,在注册时,须给出完整性验证。用户可根据提示信息完成一步一步注册工作。
(2)用户注册流程如图3.4所示。


 
图3.4 用户注册流程图
(3)注册细节功能
1,用户注册时候,邮箱输入框要判断是不是为空,如果为空,提示用户邮箱不能为空。
当用户的邮箱输入后要判断用户的邮箱的格式是否符合要求。不符合则提示用户。
最后前两个条件满足,还要判断用户的邮箱是不是已经被注册过。如果已经注册过则提示用户邮箱不可用。
2,用户名要符合条件,不能为空,长度限制。
3,密码长度要有限制,两次输入的密码要一致。
4,验证码要输入正确。
(4)Email的验证
在邮箱判断是不是为空,和邮箱的格式是否符合要求,是通过javascript进行验证。邮箱的格式通过正则表达式进行判断。
而邮箱是否被注册,则是通过javascript发送一个ajax请求到sturts2调用相应的组件,到数据库中查找是否有相同的邮箱,如过有相同的邮箱,则返回此邮箱已经被注册过信息,如果没有注册,则返回此邮箱可用信息。
(5)验证码验证
验证码的验证,在页面加载的时候,就先调用生成验证码的组件生成一个验证码图片返回到页面,同时将验证码信息保存在session中,用于用户注册时候的输入验证码的验证,如果用户输入的验证码与session中保存的验证码相同,则验证码验证通过,如果不同则返回验证码不对。同时,如果用户看不清验证码,可以点击一个链接,让jsp重新发送一个请求到相应的组件重新生成一个验证码信息到jsp页面,直到用户输入正确的验证码信息,然后才可以提交注册按钮,否则,用户的提交注册时不能通过的。
(6)注册页面的jsp如下图所示。
 
图3.5 注册页面
3.3.2用户验证模块
(1)功能介绍
    用户验证模块用于验证用户的邮箱是否是自己的邮箱,在用户注册以后,需要用户进行邮箱验证,其主要的业务逻辑是用户注册以后,页面跳转到用户验证页面,同时后台服务器发送一个验证码到注册时候填写的邮箱,用户需要在页面上指定的地方输入邮箱里面的验证信息,如果与服务器里面保存的验证信息一致,则提示用户邮箱验证成功,反之则不成功。
(2)用户验证流程如图3.6所示。
 
图3.6 用户验证流程图
(3)验证时候的细节功能
在验证邮箱验证码时候,首先在javascript中判断是否为空,如果是空,则提示用户验证码不能为空,然后再通过ajax方式发送给指定的组件验证验证码是否正确,如果正确,返回验证通过的信息,否则,验证不通过。只有验证通过了验证,才能够进入用户登录的页面。
(4)验证界面的jsp如图3.7.
 
图3.7 验证界面
3.3.3用户登录模块
(1)功能描述
用户登录模块相对来说比较简单,只是提供用户登录,验证用户身份,提供用户输入用户名,密码,点击登录,然后将页面上的信息发送给服务器,服务器根据浏览器的请求,执行相应的组件,完成用户身份的验证,如果验证通过,则返回主页面信息,用户将直接进入主页面浏览商品。如果用户验证身份不成功,则提示用户输入的信息不正确,并且停留在登录界面。
(2)用户登录流程图如图3.8所示。
 
图3.8 登录流程图
(3)登录页面jsp如图3.9。
 
图3.9 登录页面
3.4浏览商品信息的详细设计
3.4.1显示页面整体设计概述
网上书店的页面是一系列的JSP页面[7]构成,当用户访问系统的主页或者通过登录验证后跳转到系统主页时候,就会看到系统主页的页面信息,主页面是有一系列的小的页面组合而成,有页面的头部,页面的脚部,左侧栏,右侧栏,中间栏的页面组成,每个页面都由一个jsp构成,用户可以通过点击各个链接,从而进行页面之间的跳转。
3.4.2各个浏览页面的详细设计
(1)主页面
主页面包括头部,脚部,左侧栏,右侧栏,中间部分五个部分的jsp页面组成。
头部和脚部的jsp是两个静态的jsp页面,在主页面指定的位置通过导入命令就可以导入到主页面。
左侧栏的jsp主要是显示图书的分类信息,在jsp页面里面使用标签技术,从而获得从数据库里面获得的信息,然后显示在jsp上。
右侧栏的jsp是显示新书热销榜,同样也是通过访问数据库获得信息,然后显示在页面上。
中间栏分成三块jsp,第一个页面时显示编辑推荐的图书页面,第二个是显示新书上架的页面,第三个则是显示最火的图书页面,这三个也是从数据库中读取信息,然后显示在指定的页面。
 
图3.10 主页面
(2)分类显示页面
分类显示页面有三个部分组成,同样也有头部和脚部的jsp这两个静态页面。左侧栏的jsp是用来显示分类信息,并且显示当前浏览的图书是属于哪个分类,用不同的颜色标记显示,中间栏则是显示所查看的分类图书的信息,这个地方的页面时动态显示的,从数据库中读取指定数据然后解析成指定的信息,显示在当前的页面位置。同时,页面还提供按照不同的要求将指定的页面信息进行排序,提供分页浏览页面的功能。
 
图3.11 分类显示页面
(3)图书详细信息页面
图书详细信息页面,从数据库中读取指定图书,然后按照指定的格式显示一个图书的详细信息,以及图书的介绍一切信息。
在图书的详细信息页面,还要提供用户可以点击购买的按钮,方便用户直接点击要购买的图书,以及提供用户查看当前自己的购物车信息。
 
图3.12 图书详细信息页面
3.5购物车模块详细设计
3.5.1购物车的页面
(1)页面显示
购物车将显示当前登录的用户所购买过的商品信息,以及数量。并且提供增删改功能。
(2)细节功能
在购物车的页面,将显示当前所购买过的所有商品的信息,提供增删改的商品的功能。
增加商品数量:用户通过在指定的输入框输入商品的数量,点击更改,就可以修改购买商品的数量信息。同时也将即时显示更改所有商品的总价信息。
删除商品:用户可以点击每个商品后面的删除按钮,从而删除指定的商品,删除的商品将显示在下面删除了的商品,同时删除了的商品,还提供恢复商品的功能,从而将删除过的商品恢复的购物车中。
清空购物车:用户可以点击清空按钮,从而清除购物车中所有的商品信息,方便用户操作。
结算:此页面将提供用户提交购物车准备结算商品。
(3)购物车jsp
 
图3.13 购物车页面
3.5.2购物车确定页面
(1)页面显示
此功能知识提示用户所确定要购买的商品信息,以及所需要的总的价格信息。用户确定主需要直接点击下一步按钮。
(2)确定购物车jsp
 
图3.14 购物车确定页面
3.6订单模块详细设计
3.6.1收货地址设计
(1)页面显示
收货地址信息页面提供用户输入收货用户名,收货地址,联系方式等一系列信息。
(2)细节功能
在用户输入信息时候,jsp会通过javascript对输入的内容进行验证是否符合要求。
此页面还提供用户所有使用过的地址信息选择,如果用户以前使用过地址,则在地址下拉菜单可以选择以前使用过的地址,当用户提交地址后,jsp会调用相应的组件,将地址信息写入数据库中,同时还要判断是不是已经存在此地址,如果此地址存在,则不用写入数据库中。
(3)收货页面jsp
 
图3.14 收货地址填写页面
3.6.2订单信息提示设计
(1)页面显示
订单信息显示用户的订单号,以及所花费的费用信息。
(2)细节功能
此页面提供用户的订单信息,为了人性化功能,提供用户查看订单信息,以及继续选择商品功能。
(3)订单信息jsp
 
图3.14 订单生成页面
3.7数据库详细设计
数据库的数据表的整体关系图如下所示:
 
图3.15 数据库表关系图

数据库各个表字段详细描述
(1)d_user 用户表
主要字段    数据类型    描述
id    Int    主键
Email    Varchar    邮箱
Nickname    Varchar    用户名
Password    Varchar    用户密码
User_integral    Int    用户积分
Is_email_verify    Char    邮箱是否验证
Email_verify_code    Varchar    邮箱验证码
Last_login_time    Bigint    最后登录时间
Last_login_ip    varchar    最后登录的IP

(2)d_receive_address:用户收货地址表
主要字段    数据类型    描述
Id    Int    主键
User_id    Int    用户id,参照d_user的id
Receive_address    Varchar    用户收货地址
Full_address    Varchar    用户收货的详细地址
Postal_code    Varchar    邮政编码
Mobile    Varchar    用户的电话
Phone    Varchar    用户的手机

(3)d_product:产品信息表
主要字段    数据类型    描述
Id    Int    主键
Product_name    Varchar    产品名称
    Description    Varchar    产品描述
Add_time    Bigint    产品添加时间
Fixed_price    Double    产品报价
Dang_Price    Double    当当价格
Keywords    Varchar    关键词
Has_delete    Int    是否删除
Product_pic    Varchar    产品图片名称

(4)d_category:产品类别表
主要字段    数据类型    描述
Id    Int    主键
Turn    Int    图书分类标号
En_name    Varchar    图书分类名称
Name    Varchar    名称
Description    Varchar    描述
Parent_id    Int    上一级类别的ID号

(5)d_category_product:产品类别对照表
主要字段    数据类型    描述
Id    Int    主键
Cat_id    Int    产品类别id 参照d_category表id
Product_id    Int    产品id 参照d_product表id

(6)d_book:书籍表
主要字段    数据类型    描述
Id    Int    主键
Author    Varchar    作者
Publishing    Varchar    出版社
Publish_time    Bigint    出版时间
Word_number    Varchar    字数
Witch_edition    Varchar    编辑
Total_page    Varchar    总页数
Print_time    Int    印刷时间
Print_number    Varchar    印刷数目
Isbn    Varchar    Isbn号
Author_summary    Text    作者介绍
catalogue    Text    目录

(7)d_order:订单表
主要字段    数据类型    描述
Id    Int    主键
User_id    Int    用户id
Status    Int    状态
Order_time    Bigint    下单时间
Order_desc    Varchar    订单描述
Total_price    Double    总价格
Receive_name    Varchar    收货人
Full_address    Varchar    详细地址
Postal_code    Varchar    邮政编码
Mobile    Varchar    收货人电话
Phone    Varchar    收货人手机

(8)d_item:商品条目表
主要字段    数据类型    描述
Id    Int    主键
Order_id    Int    订单id 参照d_order表主键
Product_id    Int    产品id 参照d_product表id
Product_name    Varchar    商品名
Dang_price    Double    当当网价格
Product_num    Int    产品数量
Amount    Double    节省价钱
 
第四章 系统测试
软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。它的任务是尽可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统做得怎样咄圳。软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予任务。通常意义上的系统测试包括功能测试、可用性测试、安全测试、容错测试等。以下将着重介绍一下功能测试在本中的使用。
本系统在进行功能测试时,着重从以下三方面进行:
4.1链接测试
在进行链接测试时,着重从下面三个方面进行。首先,测试网上书店系统所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在或是否符合链接的要求;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。链接测试必须在集成测试阶段完成。
4.2表单测试
当用户给应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登录、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交信息的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。例如网上书店在用户使用表单进行注册时,要求用户必须在表单中输入“用户名”、“密码’’及“身份证号”等信息,以保证用户所提交信息的完整性。同时表单中的“户名”的长度不能小于2,“密码”的长度不能小于6个字符,必须输入J下确的电子邮箱地址等,通过指定表单中的值来保证输入信息的正确性。所以在具有表单信息的页面,就需要对表单的各个对象及对象的所有取什都需一一进行测试,以保证系统的功能正确性。
4.3数据库测试
在Web应用技术中,数据库起着重要的作用,数据库为应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空问。最常用的数据库类型是关系型数据库,可以使用SOL对信息进行处理。一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,例如网上书店的用户在填完注册信息后,需向数据库中的“用户’’表中添加一条记录,这时就需要保证该条记录与数据库中的相应字段数据类型要一致,否则就会造成数据不一致的错误发生。而输出错误主要是由于网络[6]速度或程序设计问题等引起的,如果是程序设计问题就需要对相应的代码进行检查,再可分别进行测试。
 
第五章 总结与展望
经过不断地努力,网上书店销售系统基本开发完毕。其实现的功能基本符合要求,能够实现前台用户在线购买图书、后台数据库管理员对图书类别管理及订单管理等的功能。
通过这次毕业设计以及撰写本毕业论文,我学会了利用先进的JSP技术建立基于B/S模式三层结构动态网站的方法和技术,而且对网页上的错误有进一步的认识。我将大学四年学到的软件工程和网络安全等知识充分应用于实践,除此之外,我还掌握了MyEclipse等IDE开发工具,提高了自己的动手能力。
本次毕业设计主要完成传统网上书城的用户注册、登录、图书分类浏览、图书信息查询、在线购买、生成订单、后台信息编辑管理等功能,以上提出的改进想法以后再去完善。
通过这次设计,使我学到了很多东西,收益非浅,我感觉理论到实践是一个艰难的过程,必须勤动手,才能发现问题,使自己得到真正的提高。这次的毕业设计在我今后的工作和学习上也提供了不少宝贵的经验。并且通过这次做毕业设计也使我也发现了自己在学习上的不足,主要是动手能力的不足,我会努力在以后的工作道路上继续充实自我,完善自我。
 
致 谢
通过这短短的几个月努力,我终于完成了基于JAVA网上电子书店的设计与实现。通过这次的毕业设计我,锻炼了自己的动手实践能力。更重要的是,通过这次的毕业设计,我培养出了刻苦钻研的学习精神和严肃认真的学习态度,这对我以后的学习和工作有很大的益处。在这次毕业设计过程中,我得到了来自我身边很多人的悉心指导和帮助。在此,我对他们表示衷心的感谢!首先我要感谢我的指导老师成立教授、刘超老师,无论在理论上还是在实践中,都给予我很大的帮助,使我受益匪浅,学到了很多东西,这对于我以后的工作和学习都是一种巨大的帮助。更重要的是他们对学生平易近人,工作认真负责的态度使我非常感动。
同时我也非常感谢我身边的很多同学,在我做这个系统的过程中他们给了我很多的帮助和鼓励,帮助我解决了很多的问题,使我更有信心做好本系统。最后,在我即将毕业之际,衷心的祝愿江苏大学,宿迁学院的明天会更辉煌,祝这四年来对我关心、指导的所有老们身体健康、工作顺利、万事如意。
 
参考文献:
[1] 张新曼精通JSP-WEB开发技术与典型应用 人民邮电出版社 2007 
[2] 李刚 疯狂java讲义 电子工业出版社 2008.9.1
[3] 王国辉,李文立,杨亮,JSP数据库系统开发完全手册[M],北京:人民邮电出版社, 2000.3
[4] 汪孝宜,徐佳晶,刘中兵,JSP数据库开发实例精粹[M],北京:电子工业出版社,2005.1 
[5] 刘洁,基于JSP和JavaBean技术的网上书店设计与实现[J],现代情报.2005第11期.
[6] 邹竹彪 JSP网络编程从入门到精通 清华大学出版社 2007.6
[7] 老虎工作室,JSP动态网页制作基础培训教程[M],北京:人民邮电出版社,2005.5
[8] 张贵元,贾燕枫,Struts开发入门与项目实践[M],北京:人民邮电出版社,2005.8
[9] 陆舟 Struts2技术内幕 机械工业出版社 2012.1.1
[10] 李刚Struts2.1 权威指南——基于webWork核心的MVC开发 电子工业出版社 2009.5.1

 
附 录
部分程序源代码:
数据库初始化SQL语句: 
DROP TABLE IF EXISTS d_product;
CREATE TABLE d_product (
  id int(12) NOT NULL auto_increment,
  product_name varchar(100) NOT NULL,
  description varchar(100) default NULL,
  add_time bigint(20) default NULL,
  fixed_price double NOT NULL,
  dang_price double NOT NULL,
  keywords varchar(200) default NULL,
  has_deleted int(1) NOT NULL default '0',
  product_pic varchar(200) default NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
//
DROP TABLE IF EXISTS d_book;
CREATE TABLE d_book (
  id int(12) NOT NULL,
  author varchar(200) NOT NULL,
  publishing varchar(200) NOT NULL,
  publish_time bigint(20) NOT NULL,
  word_number varchar(15) default NULL,
  which_edtion varchar(15) default NULL,
  total_page varchar(15) default NULL,
  print_time int(20) default NULL,
  print_number varchar(15) default NULL,
  isbn varchar(25) default NULL,
  author_summary text NOT NULL,
  catalogue text NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

//
DROP TABLE IF EXISTS d_category;
CREATE TABLE d_category (
  id int(12) NOT NULL auto_increment,
  turn int(10) NOT NULL,
  en_name varchar(200) NOT NULL,
  name varchar(200) NOT NULL,
  description varchar(200),
  parent_id int(10),
  PRIMARY KEY  (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS d_category_product;
CREATE TABLE d_category_product (
  id int(12) NOT NULL auto_increment,
  product_id int(10) NOT NULL,
  cat_id int(10) NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS d_item;
CREATE TABLE d_item (
  id int(12) NOT NULL auto_increment,
  order_id int(10) NOT NULL,
  product_id int(10) NOT NULL,
  product_name varchar(100) NOT NULL,
  dang_price double NOT NULL,
  product_num int(10) NOT NULL,
  amount double NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS d_order;
CREATE TABLE d_order (
  id int(10) NOT NULL auto_increment,
  user_id int(10) NOT NULL,
  status int(10) NOT NULL,
  order_time bigint(20) NOT NULL,
  order_desc varchar(100) default NULL,
  total_price double NOT NULL, 
  receive_name varchar(100) default NULL,
  full_address varchar(200) default NULL,
  postal_code varchar(8) default NULL,
  mobile varchar(20) default NULL,
  phone varchar(20) default NULL, 
  PRIMARY KEY  (id)
) ENGINE=InnoDB;


DROP TABLE IF EXISTS d_receive_address;
CREATE TABLE d_receive_address (
  id int(12) NOT NULL auto_increment,
  user_id int(11) NOT NULL,
  receive_name varchar(20) NOT NULL,
  full_address varchar(200) NOT NULL,
  postal_code varchar(8) NOT NULL,
  mobile varchar(15) default NULL,
  phone varchar(20) default NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB;

DROP TABLE IF EXISTS d_user;
CREATE TABLE d_user (
  id int(12) NOT NULL auto_increment,
  email varchar(50) NOT NULL,
  nickname varchar(50) default NULL,
  password varchar(50) NOT NULL,
  user_integral int(12) NOT NULL default '0',
  is_email_verify char(3),
  email_verify_code varchar(50) default NULL,
  last_login_time bigint default NULL,
  last_login_ip varchar(15) default NULL,
  PRIMARY KEY  (id),
  UNIQUE KEY email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

注册页面源代码:
<%@page contentType="text/html;charset=utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>用户注册 - 当当网</title>
        <link href="../css/login.css" rel="stylesheet" type="text/css" />
        <link href="../css/page_bottom.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" 
                src="../js/jquery-1.4.3.js"></script>
        <script type="text/javascript" 
                src="../js/registerform.js"></script>
    </head>
    <body>
        <%@include file="../common/head1.jsp"%>
        <div class="login_step">
            注册步骤:
            <span class="red_bold">1.填写信息</span> > 2.验证邮箱 > 3.注册成功
        </div>
        <div class="fill_message">
            <form name="ctl00" method="post"
                     action="register.action" id="f">
                <h2>
                    以下均为必填项
                </h2>
                <table class="tab_login" >
                    <tr>
                        <td valign="top" class="w1">
                            请填写您的Email地址:
                        </td>
                        <td>
                            <input name="user.email" type="text" id="txtEmail" class="text_input"/>
                            <div class="text_left" id="emailValidMsg">
                                <p>
                                    请填写有效的Email地址,在下一步中您将用此邮箱接收验证邮件。
                                </p>
                                    <span id="email.info" style="color:red"></span>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td valign="top" class="w1">
                            设置您在当当网的昵称:
                        </td>
                        <td>
                            <input name="user.nickname" type="text" id="txtNickName" class="text_input" />
                            <div class="text_left" id="nickNameValidMsg">
                                <p>
                                    您的昵称可以由小写英文字母、中文、数字组成,
                                </p>
                                <p>
                                    长度4-20个字符,一个汉字为两个字符。
                                </p>
                                <span id="name.info" style="color:red"></span>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td valign="top" class="w1">
                            设置密码:
                        </td>
                        <td>
                            <input name="user.password" type="password" id="txtPassword"
                                class="text_input" />
                            <div class="text_left" id="passwordValidMsg">
                                <p>
                                    您的密码可以由大小写英文字母、数字组成,长度6-20位。
                                </p>
                                <span id="password.info" style="color:red"></span>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td valign="top" class="w1">
                            再次输入您设置的密码:
                        </td>
                        <td>
                            <input name="password1" type="password" id="txtRepeatPass"
                                class="text_input"/>
                            <div class="text_left" id="repeatPassValidMsg">
                            <span id="password1.info" style="color:red"></span>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td valign="top" class="w1">
                            验证码:
                        </td>
                        <td>
                            <img class="yzm_img" id='imgVcode' src="imagecode" />
                            <input name="number" type="text" id="txtVerifyCode"
                                class="yzm_input"/>
                            <div class="text_left t1">
                                <p class="t1">
                                    <span id="vcodeValidMsg">请输入图片中的四个字母。</span>
                                    
                                    <span id="number.info" style="color:red"></span>
                                    <a href="javascript:;"
                                        οnclick="document.getElementById('imgVcode').src='imagecode?'+new Date()">看不清楚?换个图片</a>
                                
                                </p>
                            </div>
                        </td>
                    </tr>
                </table>

                <div class="login_in">

                    <input id="btnClientRegister" class="button_1" name="submit"  type="submit" value="注 册"/>
                </div>
            </form>
        </div>
        <%@include file="../common/foot1.jsp"%>
    </body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_55459367/article/details/114148875