基于JSP和MySQL的网上书城系统设计与实现
摘 要
随着科学技术的发展,网络在人们生活中的应用越来越广泛。人们越来越想在最短的时间内购买到自己所需的图书。但书目的繁多,给人们在繁忙的工作生活中的购书带来了很大的麻烦,于是网上购书便成了人们向往的事情。
图书销售系统的开发为人们带来了很大的方便,使他们足不出户就可以轻轻松松地买到自己想要的书,既省时又省力。有效地缩短了图书流通发行环节,将广大读者、图书、出版者、发行者紧密地结合在一起,大大提高了图书流通率。它有着经营成本低、库存是虚拟的、用户检索方便、地域限制少等特点。
系统以JSP为主要制作工具,实现了用户注册、登陆、验证身份及书籍的预览查询、对书籍的购买通过购物车实现等功能。
关键词 :传智播客;电子商务;网上书城;管理信息系统
Abstract
With the development of science and technology, Internet is applied more and more widely in people's lives. There is a growing desire to purchase books which peoples possibly want to buy in the shortest time. However, a wide range of books brought a lot of troubles to people in the busy life. So book online has become a matter of people yearn for.
The development of this system will make a lot of convenience for people, so that they can buy books which they liked easily, both convenience and effective. The system effectively reduce the length of the book links the flow of distribution, it can be a large number of readers, books, publishers, distribution worked closely together, improving the flow rate of the book greatly. The system has many advantages such as low operating costs, virtual inventory, the user searches convenient, less geographical restrictions and so on.
JSP in the system as the main tool what to achieve the user registration, login, authentication, book preview inquiries, through the shopping cart in order to achieve the purchase of books.
Keywords : itcast, E-commerce, Online bookstore, MIS
第一章 绪论
1.1 课题背景、目的及意义
1.1.1 课题背景
随着internet的普及和电子商务的兴起,网上图书销售是Internet电子商务在图书销售行业发展的必然结果,这种新型的图书销售形式,与传统利用书店进行销售的方式相比拥有许多优势:一是降低了销售成本;二是利用网络作为交易平台,改变传统的交易方式,使得交易活动不受空间和时间的限制;三是信息的传递更迅速灵活,新书信息上传后,客户可以立即看到,交易马上可以从网上进行,从而大大提高了交易的效率。正是由于这些优势,网上图书销售才能得以迅速地发展。网上图书销售系统的主要功能是利用网站作为交易平台,将图书的一些基本信息以网站的形式发布到Internet中,客户可以通过Internet登录图书销售网站来查看售书信息并提交订单订购图书,实现在线交易。
1.1.2 课题目的和意义
在各行各业竞争日益激烈的今天,提高工作效率和工作质量是每个企业必须面临并且必须解决的重大课题。
有了《传智播客网上图书商城》就不需要客户到书城手工查询需要的图书,而只需在自家的电脑前输入查询条件,或通过类别查询,快速而准确的找到需要的图书,大大加快了查询速度。
《传智播客网上图书商城》不仅可以大量减少人力、物力,降低了成本,而且突破了时间和空间的限制,使得图书交易活动可以在任何时间、任何地点进行,实现24小时营业,不需要营业员,网上书城可以被设置成一个自动售货机。同时,《传智播客网上图书商城》更容易开拓全球市场从而大大提高了效率,对推动《传智播客网上图书商城》未来的发展有着一定的实际意义。
鉴于互联网的优势以及对国内外相关网上书城网站现状的研究分析,我决定以基于Web的《传智播客网上图书商城》开发作为我的毕业设计主题。立足于设计一个在网络平台上运行的集购物、支付和配送等功能于一体的网上书城,以小小的力量推动中国互联网的发展。
1.2 国内外研究现状
1.2.1 国外的研究现状
网上售书这是信息社会发展的必然要求。国际互联网的开通,为信息社会的飞速发展创造了条件。在美、日等信息化程度较高的国家和地区,网上图书销售发展速度迅猛。据InternetWorldStatS的统计,今天的互联网有17亿用户。而目前的全球人口为67亿,到2020年毫无疑问会有更多的人使用互联网。美国国家科学基金会预计,到那时互联网的用户数量将接近50亿。网民队伍的迅速扩充,无疑为网上售书的发展提供了巨大的市场空间。加上图书因其具有标识清晰、规格统一、特征容易描述、同种商品个体之间无差异等特性而能成为发展电子商务的最为理想的商品类型。因此,网上售书成为各国发展电子商务的首选目标,国际互联网开通后,各国电子商务网站很大一部分都是网上书店。只要网络发展没有停止,网上售书的发展就不会停止。
1.2.2 国内的研究现状
近年来,随着计算机网络技术的飞速发展,网络技术应用已经相当普及,使得在线购买成为现实,各种各样的网上图书销售系统层出不穷,国内各大图书商都在创建自己的计算机网上电子商务系统。随着科学技术的飞速发展,Internet这个昔日少数科学家接触和使用的科研工具已经成了普通百姓都可以触及的大众型媒体传播手段。
第二章 可行性分析
2.1 社会可行性
随着计算机技术的发展和网络人口的增加,网络世界也越来越广博,越来越丰富,网上售书已经成为网上的一股潮流。相信要不了太长有时间,顾客就可以在网络世界上获得他们在现实世界上可以获得的任何图书。《传智播客网上图书商城》系统主要目的是进行网上售书,并且严格按照国家法律法规来进行研究和实践,并无法律和政策方面的限制。
2.2 技术可行性
本系统采用的是JSP、Servlet和MySQL开发,Windows XP Professional操作系统,用Dreamweaver进行前台网页界面设计、采用JDBC方式与后台数据库进行连接,完成数据的添加、修改、删除、查询等功能。由于JSP、Servlet功能强大,而MySQL灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用JSP、Servlet、MySQL是开发轻平台的最佳组合从而说明本系统在技术方面可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
2.3 操作可行性
目前,大多数计算机都能运行该系统,该系统的安装、调试、运行不会改变原计算机系统的设置和布局,并且系统界面简单,提示信息完整,由相关人员指导便能够方便的操作此软件。
2.4 系统的技术介绍
2.4.1 Javascript
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。
Javascript语言与Java语言在语法上比较相似,但随着对Javascript的深入了解后你会发现,它们说到底是两种语言!
2.4.2 JQuery
jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript框架,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。
2.4.3 MySQL
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
自从Oracle公司收购了MySQL后不久,就发行了MySQL的企业版(不再免费)!
2.4.4 MVC
MVC即模型-视图-控制器,是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。
MVC是一种设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务.
模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何的处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
综上所述,MVC的处理过程是首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
2.4.5 JDBC
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
2.4.6 DBUtils
Common Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List。传统操作数据库的类指的是JDBC(java database connectivity:java数据库连接,java的数据库操作的基础API。)。
DBUtils是java编程中的数据库操作实用工具,小巧简单实用,
特色 :
-
对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作
-
对于数据表的写操作,也变得很简单(只需写sql语句)
-
可以使用数据源,使用JNDI,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和重构这样的对象
2.4.7 C3P0
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
2.5 系统开发平台及运行环境
2.5.1 系统开发平台
系统的开发是在Tomcat环境下进行的。Tomcat是一个免费的开源的Servlet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被Java World杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。
Tomcat的环境主要有以下几方面技术优势:
-
Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包
-
在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压
-
Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理html页面
-
Tomcat也可以与其它一些软件集成起来实现更多的功能
2.5.2 运行环境
-
操作系统 :Windows 7以上版本
-
服务器软件 :Tomcat6.0以上版本
-
浏览器 :IE、Fire Fox、Google Chrome
第三章 需求分析
3.1 系统功能模块概述和分析
《传智播客网上图书商城》模型是典型的网上购物实践中最为普遍的电子商务企业对客户(B2C)模式,主要包括会员注册、订单管理、购物车、搜索、支付等基本功能。此外,本系统也将实现在线图书销售系统的后端管理,包括图书的添加、订单的处理等功能。本系统完全基于JSP技术,在系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的偶合,力求做到系统的稳定性、可重用性和可扩充性。
《传智播客网上图书商城》主要功能如下:
- 前台(客户购买)部分
- 用户管理:注册会员、登录、激活、退出、修改密码
- 分类显示:显示所有1级和2级分类
- 图书显示:按分类查询图书、通过关键字搜索图书、高级搜索图书、查看某本图书的详细等
- 购物车管理:向购物车中添加图书、修改购物车中图书数量、删除购物车中图书、我的购物车
-
订单管理:通过购物车中图书生成订单、查看我的订单、查看某个订单的详细、订单支付、确认收货、取消未付款订单
-
后台(管理员管理)部分
- 管理员:管理员登录
- 分类管理:查看所有分类、添加1级分类、添加2级分类、修改1级分类、修改2级分类、删除1级分类、删除2级分类
- 图书管理:按分类搜索图书、高级搜索图书、添加新图书、查看图书详细信息、编辑图书、删除图书
- 订单管理:按状态搜索订单、查看订单详细信息、取消订单、发货
3.2 系统功能模块设计
根据系统功能分析,可以画出系统的功能模块图。
前台用户购书功能图
后台管理员功能图
3.3 数据库分析
信息系统的主要任务是通过大量数据获得管理所需要的信息,这就要求系统本身能够存储和管理大量的数据,而这一功能的实现必须借助大型数据库系统。本系统的开发选择MySQL作为后台数据库开发工具。
3.3.1 概念模型设计
概念模型用于信息世界的建模,与具体的DBMS无关。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。人们常常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统和具体的DBMS,而是概念级的模型,然后再把模型转换为计算机上某一个DBMS支持的数据模型。实际上,概念模型是现实世界到机器世界的一个中间层次。
信息世界中包含的基本概念有实体和联系。
实体 (entity)
客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课、一个供应商、一个部门、一本 书、一位读者等都是实体。
联系 (relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。两个实体型之间的联系可以分为3类,一对一联系,(1:1);一对多联系(1 : n);多对多联系(m : n)。
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体,联系方法(Entity-Relationship Approach)简记为E-R表示法)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型,简称E-R模型。
根据数据流程分析,绘制ITCAST网上书城的全局E-R模型如图所示。
根据设计规划的主要实体有:用户、图书分类、图书、购物车、订单、管理员。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多的原因):
用户实体
图书分类实体
图书实体
购物车实体
订单实体
订单项实体
3.3.2 数据库表设计
数据库表设计主要是把概念结构设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。
本系统数据库表如下:
t_user
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
uid | char(32) | Y | N | 主键 |
loginname | varchar(50) | N | N | 登录名 |
loginpass | varchar(50) | N | N | 登录密码 |
varchar(50) | N | N | 邮箱地址 | |
status | boolean | N | N | 是否激活 |
activationCode | char(64) | N | N | 激活码(唯一) |
t_category
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
cid | char(32) | Y | N | 主键 |
cname | varchar(50) | N | N | 分类名称 |
pid | char(32) | N | Y | 父分类ID |
desc | varchar(100) | N | Y | 分类描述 |
orderBy | int | N | Y | 序号,用来排序 |
t_book
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
bid | char(32) | Y | N | 主键 |
bname | varchar(200) | N | N | 书图名称 |
author | varchar(50) | N | Y | 作者 |
price | decimal(8,2) | N | Y | 定价 |
currPrice | decimal(8,2) | N | Y | 当前价 |
discount | decimal(3,1) | N | Y | 折扣 |
press | varchar(100) | N | Y | 出版社 |
publishtime | char(10) | N | Y | 出版时间 |
edition | int | N | Y | 版次 |
pageNum | int | N | Y | 页数 |
wordNum | int | N | Y | 字数 |
printtime | char(10) | N | Y | 印刷时间 |
booksize | int | N | Y | 开本 |
paper | varchar(50) | N | Y | 纸质 |
cid | char(32) | N | Y | 所属分类ID |
image_w | varchar(100) | N | Y | 大图路径 |
image_b | varchar(100) | N | Y | 小图路径 |
orderBy | int | N | Y | 序号,用来排序 |
t_cartitem
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
cartItemId | char(32) | Y | N | 主键 |
quantity | int | Y | N | 数量 |
bid | char(32) | Y | N | 图书ID |
uid | char(32) | Y | N | 用户ID |
orderyBy | int | Y | N | 序号,用来排序 |
t_order
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
oid | char(32) | Y | N | 主键 |
ordertime | char(19) | Y | N | 下单时间 |
total | decimal(10,2) | Y | N | 合计金额 |
status | int | Y | N | 订单状态 |
address | varchar(1000) | Y | N | 收货地址 |
uid | char(32) | Y | N | 用户ID |
t_orderitem
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
orderItemId | char(32) | Y | N | 主键 |
quantity | int | Y | N | 数量 |
subtotal | decimal(8,2) | Y | N | 小计 |
bid | char(32) | Y | N | 图书ID |
bname | varchar(200) | Y | N | 图书名称 |
currPrice | decimal(8,2) | Y | N | 图书当前价 |
image_b | varchar(100) | Y | N | 图书小图路径 |
oid | char(32) | Y | N | 所属订单ID |
t_admin
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
adminId | char(32) | Y | N | 主键 |
adminname | varchar(50) | Y | N | 管理员名称 |
adminpwd | varchar(50) | Y | N | 管理员密码 |
第四章 前台设计与实现
《传智播客网上图书商城》的整个前台部分是供用户浏览、选购图书的部分,一个好的网站的前台部分一定非常精美,非常有条理,因此,前台的设计主要把握3点:简明扼要、条理清晰、层次分明。下面将一一介绍我的《传智播客网上图书商城》系统的前台部分的实现。
4.1 首页设计
首页模块包括3个主要的部分,采用内嵌框架技术。位置分别为上、左、中。
- 上部的实现,上部包含两大部分内容:
- 网站标题
-
菜单 菜单部分就是一系列的超链接,用户在未登录时看到的是“登录”和“注册”链接;在登录后看到的是“我的购物车”、“我的订单”、“修改密码”、“退出”超链接,以及当前用户名称。
-
左部的实现 左部显示所有分类,包含所有1级、2级分类。左部使用了Javascript的Q6Menu组件来完成显示所有分类。当用户点击某个1级分类名称时会展示当前1级分类的所有2级分类。
-
中部的实现 中部是网站的骨干,点击任何超链接都会在中部显示。默认只是使用纯文本显示欢迎信息。
4.2 用户模块
注册用户是构成网站主体的一个重要组成部分,网站设置注册用户的目的之一在于方便网站信息的管理。
4.2.1 用户注册
用户在登录之前需要先进行注册,在首页中点击“注册”链接就可以到达注册页面。
表单校验
注册页面使用JQuery对用户输入的数据进行校验:
- 用户名
- 不能为空
- 长度必须在2~15之间
-
不能是已注册过的
-
登录密码
- 不能为空
-
长度必须在2~15之间
-
确认密码
- 不能为空
-
必须与登录密码相同
-
Email
- 不能为空
- 必须是正确的Email格式
-
不能是注册过的Email
-
验证码
- 不能为空
- 必须与图片上的验证码相同
表单校验中,用户名是否被注册过、Email是否被注册过、验证码是否正确这三项都需要请求服务器,所以这里使用的是JQuery的ajax()来完成对服务器的访问。
激活
当用户注册成功后还需要激活成功后才能登录。在注册成功后,系统给用户的邮箱发送一份激活邮件。当用户登录自己的邮箱后,在激活邮件中点击激活链接完成激活后,才可以去登录。
4.2.2 用户登录
在首页点击“登录”链接就可以来到登录页面。
表单校验
- 用户名
- 不能为空
- 长度必须在2~15之间
-
用户名是否存在;
-
密码
- 不能为空
-
长度必须在2~15之间
-
验证码
- 不能为空
- 是否正确
登录表单校验使用的JQuery完成,其中用户名是否存在,以及验证码是否正确需要使用JQuery的ajax()向服务器发送异步请求。
登录成功
用户登录成功后,会回到首页。这时在首页会显示当前用户的名称,以及“我的购物车”、“我的订单”、“修改密码”、“退出”链接。也就是说,这几个功能只能登录用户才能使用,而游客是无法使用的。
4.2.3 修改当前用户密码
用户在登录成功后,点击修改密码链接就会到达修改密码页面。
表单校验
- 原密码
- 不能为空
- 长度必须在2~15之间
-
是否正确
-
新密码
- 不能为空
-
长度必须在2~15之间
-
确认密码
- 不能为空
-
必须与新密码相同
-
验证码
- 不能为空
- 是否正确
表单校验使用JQuery完成。其中原密码和验证码是否正确,需要异步访问服务器,这里使用的是JQuery的ajax()完成的。
4.2.4 退出
当用户登录后,点击退出链接可以完成退出。退出成功后会到达登录页面!
4.3 图书模块
4.3.1 图书列表
在首页左部点击某个2级分类,会在首页的中部显示图书列表页面。图书列表使用分页显示。
可以在图书列表上方输入关键字进行搜索。
4.3.2 图书详细
点击某本图书,会到达图书详细页面。
4.3.3 高级搜索
在图书列表页面点击高级搜索到达搜索页面。
高级搜索有三个条件:书名、作者、出版社,三个条件的关系是并列的。而且三个条件都是模糊查询。
4.4 购物车
购物车使用数据库来保存数据,也就是说添加到购物车中的图书,不会因为关闭浏览器,或者是关闭电脑而消失。而且修改数量,是通过异步请求来操作数据库的。
4.4.1 添加图书到购物车
在图书详细页面,给出数量,然后点击“购买”就可以把图书添加到购物车中,并且会到达购物车列表页面。
4.4.2 我的购物车
也可以在首页上部点击“我的购物车”链接查询购物车。购物车列表页面会显示所有车中所有条目,每个条目会显示图书图片、图书名称、图书当前价、数量,以及小计。
4.4.3 修改条目数量
在购物车列表页面中,点击某个条目上的数量来完成修改数量。这项操作会修改底层数据库。所以这里需要使用JQuery的异步处理访问服务器,完成对数据库表的修改。
当数量为1时,如果把数量减1,会弹出确认对话框,提示是否删除该条目。
4.4.4 删除条目
在购物车列表页面中,点击某个条目后面的“删除”链接会删除当前条目。也可以勾选N个条目,然后点击“批量删除”链接,完成一次删除多个条目。
4.5 订单模块
对订单的操作,对应数据库中的两张表,即订单表和订单条目表(t_order和t_orderitem)。而且订单模块的功能比较多:
-
生成订单 :通过购物车中勾选的条目来生成订单
-
我的订单 :显示当前用户的所有订单,每个订单所包含的订单条目也需要显示
-
订单支付 :使用易宝的第三方支付平台完成,对“在线支付”的理解也是一个挑战
-
订单详细 :显示指定的某个订单
-
订单取消和订单的确认收货 :这两个功能都是对订单状态的修改
4.5.1 选中条目,准备生成订单
在购物车列表页面中,勾选要购买的条目,然后点击“结算”按钮,完成选中条目,准备生成订单,这会到达订单准备页面。
4.5.2 生成订单
在订单准备页面,输入收货地址,然后点击“提交订单”按钮,完成下单(生成订单)。这时会到达“下单成功”页面。
这时订单已经生成,但状态为“未付款”。可以在“下单成功”页面点击“支付”按钮到达“支付”页面。
4.5.3 订单列表
在首页上部点击“我的订单”链接,就会到达订单列表页面。该页面会显示当前用户的所有订单信息。该页使用分页显示订单!
4.5.4 支付页面
在“下单成功”页面,或者“订单列表”页面中点击“支付”按钮都可以到达“支付”页面。在“支付”页面中选择银行,后点击下一步就会跳转到银行的支付页面了。这里使用的是“易宝”第三方支付平台!
4.5.5 订单详细页面
在订单列表页面中,点击某个订单的“查看”、“取消”、“确认收货”都会到达“订单详细”页面。其中点击“查看”到达“订单详细”页面后没有按钮;点击“取消”到达“订单详细”页面有“取消按钮”按钮;点击“确认收货”按钮到达“订单详细”页面有“确认收货”按钮。
4.5.6 订单状态
订单的状态分为5种:
-
未付款状态 :当订单刚刚生成时,就是1状态
-
已付款状态,但未发货 :当订单刚刚支付之后,就是2状态
-
已发货,但未消确认收货 :当订单刚刚发货之后,就是3状态
-
交易成功 :当订单确认收货之后,就是4状态。一旦订单为4状态后,就不能再改变状态
-
已取消 :当订单被取消后,就是5状态。只有1状态(未付款状态)的订单可以取消,其他状态的订单是不可以取消的。一旦订单为5状态后,就不能再改变状态
第五章 后台设计与实现
书城后台的设计是为管理员方便管理系统而设计的,其中包括分类管理、图书管理,以及订单管理。
5.1 管理员登录
后台管理员登录页面,登录成功后到达后台主页。
5.2 后台主页
管理员登录成功后,到达主页。主页是框架页,由上、下两部分构成。
-
上部显示标题和菜单,分别为:“退出”、“分类管理”、“图书管理”、“订单管理”,以及当前用户名称
-
中部默认显示欢迎图片,当点击上部链接后,都在中部显示
5.3 分类管理
5.3.1 分类列表
当点击首页上部的“分类管理”链接到达分类列表页面。
5.3.2 添加分类
在分类列表页面中有“添加一级分类”链接,点击该链接直接“添加一级分类页面”。
列表中每个一级分类后面都存在“添加二级分类”链接,添加可以到达“添加二级分类页面”。
添加二级分类需要指定父分类。
5.3.3 修改分类
在分类列表中,每个一级分类,以及二级分类后都存在“修改”链接。点击一级分类后的“修改”链接进入“修改一级分类页面”;点击二级分类后的“修改”链接进入“修改二级分类页面”。
5.3.4 删除分类
在分类列表中,每个一级分类,以及二级分类后都存在“删除”链接。点击一级分类后的“删除”链接完成删除一级分类;点击二级分类后的“删除”完成删除二级分类。
-
注意 ,如果一级分类下存在子分类,那么不能删除
-
注意 ,如果一级分类下存在图书,那么不能删除
5.4 图书管理
后台图书管理这一部分,很多地方都与前台的图书操作相同,例如:分页显示所有图书、按分类查询图书、高级查询图书、查看图书详细信息。后台图书管理还包括前台所没有的功能,例如:添加新图书、编辑和删除图书。
5.4.1 图书列表页面
图书列表页面分为两个部分:
-
左部 :显示所有分类,与前台是相同的,用来通过指定分类来查询图书
-
中部 :默认显示“添加图书”和“高级查询”两项功能,当管理员点击某一分类后,中部显示图书列表
5.4.2 添加图书
点击“图书管理”链接后,在中部会出现“添加图书”链接,点击后会进入添加图书表单页面。
表单使用了JQuery进行校验,如果校验无误,添加图书会成功!
5.4.3 高级搜索
点击“图书管理”链接后,在中部会出现“高级搜索”链接,点击后会进入高级搜索表单页面。
这个高级搜索与前台是相同的,只需要在表单中输入条件后搜索,即可在图书列表中显示结果。
5.4.4 图书详细
在图书列表中点击某一本图书后会进入图书详细页面。
图书详细页面上方有一个名为“编辑或删除”的复选框,如果管理员勾选它,那么页面会显示表单,并多出两个按钮:“编辑”和“删除”。
5.5 订单管理
5.5.1 订单列表
点击“订单管理”链接会到达订单列表页面。该页面会分页显示所有订单!
订单列表页面上包含按状态查询的链接,分别为:未付款、已付款、已发货、交易成功、已取消,管理员可以点击这几个链接按状态查询显示订单。
5.5.2 订单详细
在订单列表页面中,点击某个订单后面的:查看、取消、发货链接会进入到订单详细页面。订单详细页面会显示当前订单的信息,而且会根据点击的链接显示不同的按钮。
点击发货或取消按钮完成相应操作即可。
第六章 系统测试
6.1 测试的目的与目标
在此系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的Bug,通过测试,用提交的Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。
测试后的软件各模块基本功能可以顺利进行,尽可能的提高软件的健壮性。
6.2 测试方法
-
从是否关心软件内部结构和具体实现的角度划分:黑盒测试和白盒测试
-
从是否执行程序的角度:静态测试和动态测试
-
从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试
单元测试又称模块测试 ,是针对软件设计的最小单位 ─ 程序模块(这里所说的程序模块在Java中一个模块就是一个方法),进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
集成测试 (组装测试、联合测试) ,通常在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:
-
在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失
-
一个模块的功能是否会对另一个模块的功能产生不利的影响
-
各个子功能组合起来,能否达到预期要求的父功能
-
全局数据结构是否有问题
-
单个模块的误差累积起来,是否会放大,从而达到不能接受的程度
确认测试(Validation Testing) ,确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。
系统测试(System Testing) ,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。
验收测试(Acceptance Testing) ,在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用生产中的实际数据进行测试。在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
6.3 测试结论
把开始的代码写得越好,它出现的错误也就越少,你也就越能相信所做过的测试是彻底的。系统化测试以一种有序方式设法探测潜在的麻烦位置。同样,毛病最可能出现在边界,这可以通过手工的或者程序的方式检查。自动进行测试是最理想的,用得越多越好,因为机器不会犯错误、不会疲劳、不会用臆想某此实际无法工作的东西能行来欺骗自己。回归测试检查一个程序是否能产生与它们过去相同的输出。在做了小改变之后就测试是一种好技术, 能帮助我们将出现问题的范围局部化,因为新问题一般就出现在新代码里面。
测试和排错常常被说成是一个阶段,实际上它们根本不是同一件事。简单地说,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,排错是在你已经知道程序有问题时要做的事情。而测试则是在你在认为程序能工作的情况下,为设法打败它而进行的一整套确定的系统化的试验。
Edsger Dijkstra有一个非常有名的说法:测试能够说明程序中有错误,但却不能说明其中没有错误。他的希望是,程序可以通过某种构造过程正确地做出来,这样就不再会有错误了,因此测试也就不必要了。这确实是个美好生活的目标,但是,对今天的实际程序而言,这仍然还只是一个理想。所以应该集中精力讨论如何测试,如何才能够更快地发现程序错误,如何才可以使得工作更有成效、效率更高。
第七章 结论
通过开发《传智播客网上图书商城》,我较全面的掌握了JAVA的基本知识和编程技巧,并在开发过程中我的JAVA开发能力得到了进一步的提高。如:更进一步的深入了解MVC设计模式,软件三层框架;SQL语言的使用。
在开发过程中我学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码心底有数,有条不絮。当然也有些还需待继续深入地方如:控件的应用等。
参考文献
[1] 张孝祥,Java 就业培训教程(附盘),清华大学,(2007-07)
[2] 石志国,薛为民,董洁.JSP应用教程.北京:清华大学出版社.北京交通大学出版社,2004
[3] 李曙光.JSP开发实例完全剖析.北京:中国电力出版社,2006
[4] 杨易.JSP高级程序设计.人民邮电出版社,2006
[5] Vivek Chopra.JSP高级程序设计,机械工业出版社,2001
[6] 申吉红,廖学峰,余健.JSP课程设计案例精编.北京:清华大学出版社,2007
[7] 卢潇.软件工程.北京:清华大学出版社;北京交通大学出版社,2005
[8] 萨师煊,王姗.数据库系统概论.北京:高等教育出版社,2000
[9] 马运涛.Eclipse精要与高级开发技术.北京:电子工业出版社,2003
[10] PaulJPerrone etal,张志伟,谭郁松,张明杰.J2EE构建企业系统[M] .北京:清华大学出版社,2001
[11] Chuck Cavaness.Programming Jakarta Struts,2002
[12] Bruce Shive.Research Direction in Object-Oriented Programming,2002
[13] Miao H.K.McDermid J.A.andTony Ian,Proving the existence of the initial state in Z specification,Chinese Journal of Advanced Software Research,2003
[14] Apache Software.The Struts User's Guide.http://Jakarta.Apache.org/struts.
参考文献
- 基于B/S架构的博文网络书店的设计与实现(电子科技大学·彭媛媛)
- 基于SSH框架的网上书城系统设计与实现(成都理工大学·田涛)
- 基于JSP技术网上书店的设计与实现(吉林大学·佟彤)
- 基于SSH技术的网络书城设计与实现(北京工业大学·谢宗懿)
- 基于SSH框架的网上书城系统设计与实现(成都理工大学·田涛)
- 基于JSP的网上购书系统(华东师范大学·王莉)
- 基于JSP的购书系统的设计与实现(电子科技大学·况晶)
- 基于B/S架构的博文网络书店的设计与实现(电子科技大学·彭媛媛)
- 基于JSP的网上书店系统的设计与实现(吉林大学·马新)
- 基于JSP的购书系统的设计与实现(电子科技大学·况晶)
- 基于SSH技术的网络书城设计与实现(北京工业大学·谢宗懿)
- 基于JSP技术网上书店的设计与实现(吉林大学·佟彤)
- 基于SSH框架的网上书城系统设计与实现(成都理工大学·田涛)
- 基于JSP的购书系统的设计与实现(电子科技大学·况晶)
- 基于J2EE架构网上书店的设计与实现(同济大学·蔡玮)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码码头 ,原文地址:https://bishedaima.com/yuanma/35337.html