《蓝桥网上书城系统毕业论文.doc》由会员分享,可在线阅读,更多相关《蓝桥网上书城系统毕业论文.doc(34页珍藏版)》请在三一办公上搜索。
1、 摘 要随着国民经济和互联网地快速发展,网上图书的应用成了人们生活中必不可少的一部分。一方面,人们对网络服务的快捷、便利性要求越来越高,从而他们对网上的图书建设与管理提出了更高的要求;另一方面,由于图书数量与种类不断增加,人们对图书的选择和图书的管理上也越来越难。然而传统的图书购买方式存在着很多方面的不足,比如实时差、交易时间过长、运营成本高、信息不共享等。为适应和推动图书行业的发展,各大图书销售系统和部门开始广泛采用计算机管理系统,推出网上书城服务,大大减轻了订书、售书、买书管理等部门工作人员的劳动强度,提高了各部门的工作效率。同时,也为人们带来了很大的方便,使他们足不出户就可以轻轻松松地买
2、到自己想要的书,既省时又省力。有效地缩短了图书流通发行环节,将广大读者、图书、出版者、发行者紧密地结合在一起,大大提高了图书流通率。相对于传统的图书方式,它有着经营成本低、库存是虚拟的、用户检索方便、地域限制少等优点。因此,本系统基于现实的情况设计出一个以JSP语言、SQL Server2005数据库为主要工具,并且利用CommonUtils、MailUtils等小工具来实现蓝桥网上书城系统的用户功能中心模块。将一个完善的用户功能模块融于蓝桥网上书城系统中,来让人们通过对用户模块的使用实现书籍的浏览、查询、购买等功能,更加真实化、系统化的置身于蓝桥网上书城系统中,从而更深刻的体验到系统前台的完
3、整的运作过程。关键词: 用户功能;网上书城系统;JSP;SQL ServerABSTRACT With the national economy and the Internet fast development, the application of the online book became an indispensable part of life.On the one hand, quick, convenience of service demand is higher and higher, thus their online books put forward higher r
4、equirements for construction and management;On the other hand, due to the rising number and type book, the selection of books and books on the management of people is becoming more and more difficult.However there are many aspects of the traditional book purchasing is insufficient, such as poor real
5、-time, trading time is too long, high operating costs and information sharing.In order to adapt to and promote the development of book industry, major book sales system and department began to widespread adoption of computer management system, online bookstore service, greatly reduce the order books
6、, books, books, and fare management department staff labor intensity, improve the work efficiency of each department.At the same time, also has brought great convenience for people, that they never leave home can easily buy what you want to book, save time and effort.Effectively shortens the book ci
7、rculation distribution link, to the general readers, books, publishers, issuers closely together, greatly increases the circulation rate of books.Compared with the traditional way of books, it has a low operating cost, inventory is virtual, users convenient access, less regional restriction, etc.The
8、refore, this system is based on the reality design a JSP language, SQL Server2005 database as the main tool, and the use of small tools such as CommonUtils, MailUtils module to achieve the blue bridge online bookstore system user center.A perfect function of user management module into blue bridge o
9、nline bookstore system, to get people through the use of the user module to realize the function such as browsing, inquiry, purchase of books, more strips, systematic in blue bridge online bookstore system, thus a more profound experience to the full process of system at the front desk.Keywords: use
10、r function; Online bookstore system; JSP; SQL Server目录第一章 绪论11.1 课题背景、目的及意义11.1.1 课题背景11.1.2 课题目的和意义1第二章 可行性分析32.3系统可行性分析32.4 系统的技术介绍32.4.1 MVC32.4.2 MySQL42.4.3 JQuery52.4.4 JDBC52.4.5 C3P062.4.6 MailUtils62.4.7 JdbcUtils6第三章 需求分析73.1 用户功能模块概述和分析73.1.1 创建用户模块相关类73.2 用户功能模块设计73.3 数据库分析8第四章 用户模块具体设计与
11、实现114.1首页设计概要114.2用户模块的具体设计124.2.1 User124.2.2 UserDao124.2.3 UserService134.2.4 UserServlet134.3用户功能的具体实现144.3.1用户注册144.3.1.1 regist.jsp页面功能实现144.3.1.2 UserServlet对前端异步请求的支持154.3.1.3 UserServlet#regist()174.4用户登录214.4.1 login.jsp214.4.2 实现服务器端代码234.4.3 top.jsp页面234.5退出244.5.1 top.jsp代码244.5.2 服务器端代
12、码实现244.6修改密码254.6.1 pwd.jsp254.6.2 实现服务器端代码26第五章 系统测试285.1 测试的目的与目标285.2 测试用例285.3 测试结论29结 论30参考文献31致 谢32第一章 绪论1.1 课题背景、目的及意义1.1.1 课题背景网上书店在WTO、互联网和新经济的时代背景下近两年迅速崛起,使传统的图书销售业发生了根本性的变革,同时也使传统的购书方式发生了根本性的变化。与传统书店相比,网上书店拥有许多的优势。网上书店的建立可以大大减少图书销售中的中间环节,节省大量的人力、物力,并且能够提供更多的书目信息。另外,网上购书的读者不会再受地域的限制,而是遍及世界
13、各地,这也就极大限度地扩大了出版物的发行范围。正是由于这些优势,网上书店才能得以在短时间内迅速发展起来。网上书店的兴起,实际上是 Internet 电子商务在图书业发展的必然结果。1.1.2 课题目的和意义鉴于互联网的优势以及对国内外相关网上书城网站现状的研究分析,本系统决定以基于Web的蓝桥网上书城中用户功能的开发作为我的毕业设计主题,设计并实现一套完整,高效的基于B/S架构的用户功能系统。通过网上售书系统的实现,可以提高自己的开发经验,同时也解决了传统售书效率低的问题。通过这个系统,可以为人们节约更多的时间,可以更方便的查询图书的信息、价钱,效率更高,更加便捷,同时也降低了传统工作人员的工
14、作量和工作成本。一个完善的网上在线图书系统的用户功能管理可以有效的解决客户自主化、轻松化购书,增加用户对购书网站的体验度,为购书网站挽留用户。本网站设计利用MVC层结构和Servlet技术开发用户个人中心功能。用户访问一个网站并注册进入个人中心,其本身就是对网站界面产生好感的一种心理体验。申请成为注册用户进入个人中心,利用AJAX异步刷新技术可以实现验证码校验,用户注册、图书查询等功能;也可以参与网站相关功能页面的访问使用权限,判断账户的安全级别;可向网站为用户提供实时提醒用户未完成的订单与任务,及时获取网站相关信息。而网站运营方也可以通过注册用户,了解用户喜好,性格特点等各方面的信息,推荐用
15、户可能喜爱的图书,不断收集相关数据把握网站运营的方向。个人中心功能相当于整个网站的接纳用户的平台,个人中心体验的良好性直接影响的用户的使用心理,注册功能简单、客户功能管理模块明快便于操作,会大大吸引用户对成为网站会员的兴趣。同时,友好型的使用体验也促使用户乐于分享。而对于运营官方,提高行业知名度,技术影响力,减少对服务器的资源占有率。而客户功能管理本身的功能、性能以及用户体验,决定的相当用户对网站的粘度,体验感知心理,以及认可和分享。第二章 可行性分析2.3系统可行性分析 基于系统实现的可行性考虑,主要有以下三方面: 社会可行性:基于计算机技术的发展和网络人口数量的增加,网络世界也越来越丰富,
16、网上售书已经成为网上的一股潮流。顾客可以利用闲暇之余在网络世界上获得他们在现实世界上可以获得的任何图书。蓝桥网上书城系统主要目的是进行网上售书,并且严格按照国家法律法规来进行研究和实践,并无法律和政策方面的限制。技术可行性:软件方面:开发技术:JSP、Servlet和MySQL 操作系统:Windows7版本 前台界面的设计:Dreamweaver 数据库:MySQL(用JDBC方式与后台数据库进行连接) 服务器软件:Tomcat6.0以上版本。 浏览器:IE、Fire Fox、Google Chrome。 硬件设施方面:采用当下的硬件设备 操作可行性:目前,人们使用的大多数计算机都能运行该系
17、统,该系统的安装、调试、运行不会改变原计算机系统的设置和布局,并且系统界面简单,提示信息完整,一般懂得和了解计算机简单操作的顾客,都可以使用。2.4 系统的技术介绍2.4.1 MVCMVC全名是Model View Controller,是模型(model)视图(view)控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人
18、员)集中精力于表现形式上。MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。MVC在Java 平台企业版 (J2EE)中的应用和其他的各种框架不一样,J2EE为模型对象(Model Objects)定义了一个规范:视图(View):在J2EE应用程序中,视图(View)可能由Java Server Page(JSP)承担。生成视图的代码则可能是一个servlet的一部分,特别是在客户端服务端交互的时候。控制器(Controller):J2EE应用中,控制器可能是一个servlet,现在一般用Struts2/Spring Framework实现。模型(Model)
19、:模型则是由一个实体Bean来实现综上所述,MVC的处理过程是首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。2.4.2 MySQL MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网
20、站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。本系统中主要使用的图形管理工具是GUI管理工具navicat。2.4.3 JQueryjQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。继而随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype、YUI、 jQuery、mootools、Bindows以及国内的JSVM框架等,通过将这些JS框架应用到我们的项目中能够使程序员从设计和书写繁杂
21、的JS应 用中解脱出来,将关注点转向功能需求而非实现细节上,从而提高项目的开发速度。使用jQuery时只需要在使用JQuery的页面中引入JQuery的js文件即可。例如:引入之后便可在页面的任意地方使用jQuery提供的语法。而且jQuery本身具有如下的一些优点:代码简练、语义易懂、学习快速、文档丰富。2、jQuery是一个轻量级的脚本,其代码非常小巧,最新版的JavaScript包只有20K左右。3、jQuery支持CSS1-CSS3,以及基本的xPath。4、jQuery是跨浏览器的,它支持的浏览器包括IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+。
22、5、可以很容易的为jQuery扩展其他功能。6、能将JS代码和HTML代码完全分离,便于代码和维护和修改。7、插件丰富,除了jQuery本身带有的一些特效外,可以通过插件实现更多功能,如表单验证、tab导航、拖放效果、表格排序、DataGrid,树形菜单、图像特效以及ajax上传等2.4.4 JDBCJava数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的 SQL标准并
23、支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。MIS 管理员们都
24、喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务, Java 和JDBC 可为外部客户提供获取信息更新的更好方法。2.4.5 C3P0C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。2.4.6
25、 MailUtilsMailUtils是用来发邮件的小工具,底层使用JavaMail完成,所以它这件事mail.jar和activaion.jar。2.4.7 JdbcUtilsJdbcUtils用来获取Connection对象,以及开启和关闭事务。Connection getConnection():从c3p0连接池获取Connection对象,所以 需要提供c3p0-config.xml配置文件;beginTransaction():为当前线程开启事务;commitTransaction():提交当前线程的事务;rollbackTransaction():回滚当前线程的事务;release
26、Connection(Connection):如果参数连接对象不是当前事务的连接对象,那么关闭它,否则什么都不做;第三章 需求分析3.1 用户功能模块概述和分析在蓝桥网上书城系统中,用户模块主要功能是实现客户的登录、注册、对图书的查询、对自己订单的查看、密码修改等基本功能。在基于这些功能的基础上实现系统对客户的前台的管理,本系统完全基于JSP技术,在系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的偶合,力求做到系统的稳定性、可重用性和可扩充性。3.1.1 创建用户模块相关类在每个模块开始时,都要创建如下基本类:实体类、DAO类、Service类、Servle
27、t类:cn.itcast.goods.user.domain.User;cn.itcast.goods.user.dao.UserDao;cn.itcast.goods.user.service.UserService;cn.itcast.goods.user.web.servlet.UserServlet。3.2 用户功能模块设计3.3 数据库分析3.3.1 数据库概述数据库是一个系统数据存放的核心,怎样合理的设计数据库是本系统必不可少的一个环节,良好的数据库才能更好的支持界面前台的管理和应用,才能更好的展现给客户我们网上书城的信息。首先,数据库,简单来说是本身可视为电子化的文件柜存储电子文
28、件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。同时按一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。而每个信息系统的主要任务是通过大量数据获得管理所需要的信息,这就要求系统本身能够存储和管理大量的数据,而这一功能的实现必须借助大型数据库系统。本系统的开发选择MySQL作为后台数据库开发工具。数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。以内模式为框架所组成的数据库叫做物理数据库;以概念模式为框架所组成的数据叫概念数据库;以外模式为框架所组成的数据库叫用户数据库。物理数据层:它是数据库的最内层,是物理存贮设备上实际存储的
29、数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。概念数据层:它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。逻辑数据层:它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。3.3.2 用E-R模型表示: 用户实体3.3.3数据库表设计数据库表设计主要是把概念结构设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记
30、录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。本系统数据库表如下:(1) t_user数据类型主键是否空说明uidchar(32)YN主键loginnamevarchar(50)NN登录名loginpassvarchar(50)NN登录密码emailvarchar(50)NN邮箱地址statusbooleanNN是否激活activationCodechar(64)NN激活码(唯一)(2) t_admin字段名称数据类型主键是否空说明adminIdchar(32)YN主键adminnamevarchar(50)YN管
31、理员名称adminpwdvarchar(50)YN管理员密码第四章 用户模块具体设计与实现蓝桥网上书城的整个前台部分是供用户浏览、选购图书的部分,一个好的网站的前台部分一定非常精美,非常有条理,而整个前台中用户有占有重要的部分。因此,用户模块的的设计要更好的把握以下几方面:界面人性化、友好、方便操作。4.1首页设计概要首页模块包括3个主要的部分,采用内嵌框架技术。位置分别为上、左、中。1. 上部的实现上部包含两大部分内容:l 网站标题;l 菜单。菜单部分就是一系列的超链接,用户在未登录时看到的是“登录”和“注册”链接;在登录后看到的是“我的购物车”、“我的订单”、“修改密码”、“退出”超链接,
32、以及当前用户名称。2. 左部的实现左部显示所有分类,包含所有1级、2级分类。左部使用了Javascript的Q6Menu组件来完成显示所有分类。当用户点击某个1级分类名称时会展示当前1级分类的所有2级分类。3. 中部的实现中部是网站的骨干,点击任何超链接都会在中部显示。默认只是使用纯文本显示欢迎信息。4.2用户模块的具体设计4.2.1 UserUser类作为实体类需要与数据库表对应,即t_user表对象。而且User类还要用来封装表单数据,所以User类还要与表单对应。User类对照着t_user表来写即可。我们要保证User类的属性名称与t_user表的列名称完全相同。public clas
33、s User private String uid;private String loginname;private String loginpass;private String reloginpass;private String email;private String verifyCode;private boolean status;private String activationCode;4.2.2 UserDaoUserDao封装了对数据库的基本操作。UserDao需要使用TxQueryRunner来完成对数据库的操作。因为刚开始准备User模块,还不知道要完成怎样的功能,所以
34、我们现在不用在UserDao中添加任何方法,但我们可以给出一个TxQueryRunner类型的成员。public class UserDao private TxQueryRunner qr = new TxQueryRunner();4.2.3 UserServiceUserService封装了业务功能,在UserService中每个方法对应一个业务功能,例如:注册方法、登录方法等等。一个业务方法可能需要多次调用DAO中的方法!所以,Service依赖Dao,我们需要在UserService中给出一个UserDao类型的成员。public class UserService private
35、UserDao userDao = new UserDao();4.2.4 UserServletUserServlet用来接收客户端请求,处理与WEB相关的问题。例如获取客户端的请求参数,然后转发或重定向等。在UserServlet中完成业务功能需要使用UserService,所以我们需要在UserServlet中给出一个UserService的成员。因为可以让一个Servlet中有多个请求处理方法,我们让UserServlet继承BaseServlet!public class UserServlet extends BaseServlet private UserService user
36、Service = new UserService();注册用户是构成网站主体的一个重要组成部分,网站设置注册用户的目的之一在于方便网站信息的管理。4.3用户功能的具体实现4.3.1用户注册4.3.1.1 regist.jsp页面功能实现 图4.1 用户注册图片注册从regist.jsp页面开始。我们需要在regist.jsp页面中对表单数据使用JQuery进行校验。当用户在文本框中输入数据后,光标离开文件框时对数据进行校验!如果校验未通过,会在文本框后台显示错误信息。图4.2验证用户注册图片l 用户名校验: 用户名不能为空; 用户名长度必须在3 20之间; 用户名已被注册(需要异步访问服务器
37、)。l 登录密码校验: 密码不能为空; 密码长度必须在3 10之间;l 确认密码校验: 确认密码不能为空; 两次输入不一致;l Email校验: Email不能为空; Email已被注册(需要异步访问服务器);l 验证码校验: 验证码不能为空; 验证码错误(需要异步访问服务器);当点击“立即注册”按钮时,还要对表单每项进行校验!因为一开始可能填写了正确的验证码,所以光标离开时没有错误,但用户又点击了“换一张”链接,这时填入的验证码就是错误的了,所以我们需要在提交表单时再次进行校验。4.3.1.2 UserServlet对前端异步请求的支持regist.jsp页面中有异步请求服务器来对表单进行校
38、验:l 校验登录名是否已注册过;l 校验Email是否已注册过;l 校验验证码是否正确。这说明在UserServlet中需要提供相应的方法来支持前端的请求。UserServlet.javapublic class UserServlet extends BaseServlet private UserService userService = new UserService();/* * 异步校验登录名 * param req * param resp * return * throws ServletException * throws IOException */public String
39、 validateLoginname(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException String loginname = req.getParameter(loginname);boolean flag = userService.validateLoginname(loginname);/如果登录名已被注册返回trueresp.getWriter().print(flag + );return null;/* * 异步校验Email * param req * par
40、am resp * return * throws ServletException * throws IOException */public String validateEmail(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException String email = req.getParameter(email);boolean flag = userService.validateEmail(email);/如果Email已被注册返回trueresp.getWriter(
41、).print(flag + );return null;/* * 异步校验验证码 * param req * param resp * return * throws ServletException * throws IOException */public String validateVerifyCode(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException String vCode = (String) req.getSession().getAttribute(vC
42、ode);String verifyCode = req.getParameter(verifyCode);boolean flag = vCode.equalsIgnoreCase(verifyCode);/如果验证码正确返回trueresp.getWriter().print(flag + );return null;4.3.1.3 UserServlet#regist()当表单校验通过后,客户端会请求UserServlet#regist() 方法。regist()方法的工作内容如下:l 封装表单数据到User对象中;l 对User对象数据进行服务器端校验; 如果校验失败,把错误信息保存到
43、Map中; 把Map保存到request中; 把user保存到request,用来在表单中回显; 转发到regist.jsp页面,return;l 调用UserService#regist(User)方法完成注册; 对user进行数据补全:uid、activationCode、status; 通过userDao的add(User)方法完成向数据库表插入记录; 使用TxQueryRunner的update()完成插入记录; 发送激活邮件。l 保存成功信息,转发到msg.jsp。UserDao.javapublic void add(User user) throws SQLException S
44、tring sql = insert into t_user values(?,?,?,?,?,?);Object params = user.getUid(), user.getLoginname(), user.getLoginpass(), user.getEmail(), user.isStatus(), user.getActivationCode();qr.update(sql, params);UserService.javapublic void regist(User user) try /* * 1. 对user进行数据补全 */user.setUid(CommonUtil
45、s.uuid();user.setActivationCode(CommonUtils.uuid() + CommonUtils.uuid();user.setStatus(false);/* * 2. 向数据库添加记录 */userDao.add(user);/* * 3. 向用户注册邮箱地址发送“激活”邮件 */ 读取email模板中的数据Properties props = new Properties();props.load(this.getClass().getClassLoader().getResourceAsStream(email_template.properties);String host = props.getProperty(host);/获取邮件服务器地址