摘 要
伴随着社会的发展和进步,互联网的使用也越来越普遍,同时这也极大的方便了人们的生活。当今社会,书籍的涉及的内容越来越广泛,书籍种类也变的越来越繁多,人们想在短时间内找到所需的书籍变得很困难。所以,能够在网上快速购买书籍成为人们的一大潮流。
网上购书可以给人们带来极大的便利,不仅节省了时间还能够快速找到自己所需要的书籍。这样省时省力的操作系统能够缩短书籍的流通和发行阶段,还可以将顾客,书籍,出版社,发行者各个环节连接在一起,有效的提高了书籍的流通率。网上售卖书籍不仅降低了卖家的经营成本,还方便了卖家销售过程的管理。
购书系统以JSP作为制作的工具,让用户注册,登录,验证身份,书籍查询,购物车购买书籍来的功能得以实现。
关键词 书籍 用户 网上书城 信息管理
第一章 绪论
1.1 课题背景、目的及意义
1.1.1 课题背景
随着科学技术和网络的飞速发展,人们从网上购买商品也成为一种流行趋势。在未来,电商行业势必会越来越受消费者的欢迎。网上书城系统作为一种新型的图书销售方式,让顾客可以足不出户购买到自己所需要的书籍,比传统的线下书店购买方式增加了许多优势,顾客可以很快的搜索查询到所需书籍的信息,可以及时的了解到书籍更新消息,可以根据分类信息快速选择书籍,对于卖家来说,网上书城系统也极大的降低了开店所需成本,更好的对书店进行管理,让卖家与买家都可以不受时间和空间的限制进行交易。种种优势,都预示着网上书城系统在未来有美好的发展前景。
1.1.2 课题目的和意义
社会在发展,时代在创新,思维在进步,各个行业竞争也越来越激烈,想要求发展就要不断进步,不断创新。
使用《青农网上书城》的顾客就可以足不出户寻购买所需的书籍,只需要在家用电脑进入《青农网上书城》并输入所需要的书籍名称,或是利用类别筛选查找,就能够在最短的时间内找到自己需要的书籍,这比到店购买要大大节省了时间。
《青农网上书城》在节约时间的同时还降低了成本,让交易不在受时间地点的控制,随时随地都可以进行购买。不分时间段,并且不需要营业员,《青农网上书城》能够自动售出书籍,不易出错,效率高。与此同时,《青农网上书城》更加容易拓展全球的市场,对推动《青农网上书城》以后的发展有着一定的实际意义。
在考察了互联网的优势和对各种书城网站的分析,我决定用基于Java Web的《青农网上书城》项目作为我的毕业设计主题。本次毕业设计将设计一个在网络平台上运行书城,主要集购物、支付和配送等各项功能于一体,也可以推动我国互联网的发展。
1.2 国内外研究现状
1.2.1 国外的研究现状
网上书城的出现是社会发展在网络方面的必然结果。互联网在全球使用范围的扩大使科技化、信息化社会的飞速发展提供了基本条件。像X、日本等发达国家,他们的信息化程度比较高,网上书城系统等类似平台发展速度更为迅速。据网上现有的数据表示,截至2018年互联网用户约达到了43.88亿人。到现如今2020年毫无疑问会有更多的互联网使用者。互联网用户数量的增加速率也是较以往有很大的提高,这必定会让更多的人趋向于使用网上书城系统进行书籍买卖交易。比较其他商品,书籍具有规格一定、同种书籍之间基没有区别等特点,势必让其成为发展电子商务最受欢迎的的商品类型。所以,网上书城成为一些国家进行电子商务的第一个发展对象。因此互联网进步的同时,电子商务在进步,网上书城系统也会持续发展。
1.2.2 国内的研究现状
在科技突飞猛进的时代,互联网技术也越来越广泛,让在线购买变为现实,各式各样的的网上书城系统也层出不穷。互联网交易也成为人们不可缺少的购物方式,各种网上书城也日渐火热。网上电子商务系统已经是各大电子商务必不可少的重要渠道。随着社会科技进步,互联网时代已经是大势所趋,慢慢进入大众的生活。
第二章 可行性分析
2.1 社会可行性
越来越多的人都在使用互联网,伴随着社会发展,互联网也成为人们必不可少的一部分。互联网的内容也越来越丰富,互联网销售也是一种常态。在不久的以后,越来越多的人就会在网上购买到在现实中所购买到的所有书籍。《青农网上书城》系统主要的目的是在网上销售图书,是严格按照国家法律法规来进行研究和实践的,并没有法律和政策方面的限制。
2.2 技术可行性
本次毕业设计——《青农网上书城》,我利用的是JSP、Servlet与MySQL来进行的开发,Windows 10操作系统,前台网页界面设计使用的是Dreamweaver、采用JDBC方式跟后台的数据库进行连接,建立数据的查询、修改、添加、删除、等一些个功能。因为JSP、Servlet的功能很强大,MySQL在开发方面使用灵活给用户方便快捷的体验,因为它们自身得到优势使得它们在实际应用方面颇受欢迎,开发者使用JSP、Servlet、MySQL作为组合是普遍的现象,由此可以证明本次项目在技术方面的可行性。
考虑到硬件,现如今科技飞速发展,硬件的更新速度迅速,容量越来越大,不仅提高了可靠性,还降低了价格,其硬件平台完全可以支持此系统。
2.3 操作可行性
经过多次测试后证实,此系统在大多数计算机上都可以运行,系统的安装、调试、运行也并未使原计算机系统的设置和布局发生改变,而且系统界面很简单,提示信息也完整,根据相关人员的指导便可以方便快捷的操作此软件。
2.4 系统的技术介绍
2.4.1 JavaScript
JavaScript是由Brendan Eich进行设计,由Netscape、Mozillo基金会进行实现,在1995年发行的编程语言。JavaScrip是一种解释型的编程语言,是基于原型、函数先行的语言,是基于对象和事件驱动的一种客户端脚本语言。用户经常用来做html的动态功能,在开发客户端web中广泛使用,被全球的主要浏览器支持。
JavaScript语言提供语法操控文本、数组等,它跟Java语言有着较相似的语法,但是它不支持I/O,当你对它们进行深入学习研究就会知道,Java语言跟JavaScript语言确实是有着不同的。
2.4.2 JQuery
JQuery(中文名:极快端)是在2006年一月由John Resig发布的,其核心理念是write less,do more.是一个可以方便快捷且兼容多个浏览器的JavaScript框架,具有独特的多功能接口,JQuery受到了广大用户使用者的欢迎,全球访问量最多的一些网站中约有超过一半的用户用的是JQuery。
JQuery提供了对基本JavaScript结构的增强,像元素迭代和数组处理这些操作,增强的事件处理。由于JQuery提供了各种各样页面事件,所以可以程序员不必在html中添加太事件处理代码。并且,JQuery的事件处理器解决了大多数浏览器兼容性的问题。
JQuery的语法设计的独特性能够让使用者在操作文本对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他各种功能的时侯方便快捷。并且,它所提供的API让用户编写插件更加方便。
2.4.3 MySQL
Mysql是开放源码的一种关系型数据库管理系统,是瑞典Mysql AB公司设计开发的,不仅可以在客户端服务器网络环境中作为一个单独的应用程序使用,也可以,在其他的软件中充当一个库来使用。Mysql提供多种语言支持,并且它的体积小、速度快、成本低,支持多个操作系统,所以受到中小型网站的极大欢迎。
2.4.4 MVC
MVC(模型-视图-控制器),是Xerox PARC在1982年设计的。Model(模型)、View(视图)、Controller(控制器)的缩写,其中Model层是用来定义实体对象跟处理业务逻辑的,View层是用来处理界面显示的,Controller层则是用来处理用户的交互与事件的,
MVC是一种设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
(1)模型
模型是表示企业数据、业务规则,是一组类,用来描述被处理的数据,同时也定义这些数据如何被变更和操作的业务规则,与数据访问层非常类似。与其它两个部件相比,模型处理任务是最多的。模型跟数据格式是没有关系的,因此,被它返还的数据是中立的,即同一模型可以为多个视图提供数据。在模型应用的代码写一次就可以,这一特点大大减少了代码的重复性。
(2)视图
视图是使用者眼见并跟它交互的一个界面,通常,视图是根据模型数据创建。在Web应用程序中,html在视图中充当着至关重要的一部分,视图就是用html元素合成的界面。一些新技术的出现,例如Macromedia Flash与XHTML,XML/XSL,WML等一些标识语言和Web services。开发者怎样把应用程序的界面做的越来越好是他们面临的难题。
MVC的一个独特之处是可以在应用程序中处理多个不一样的视图。在视图中其实并没有真正的处理发生,不论这些数据的存储是联机的还是一个雇员列表,对于视图来说,它只是被当作一种输出数据、允许用户操纵的方式。
(3)控制器
控制器,是处理来自用户各种信息的一组类,全部程序流和具体的程序逻。用户输入请求,控制器接收到信号开始调用模型和视图去满足用户的请求。当用户点击页面中的超链接和发送html表单时,控制器的工作是不需要输出任何东西和做任何的处理。控制器仅仅负责接收用户请求然后选择调用具体的模型构件去回应处理请求,选择确定的视图显示模型处理返回的数据界面。
根据以上的介绍,MVC的处理过程是:控制器接收用户的请求,并选择调用具体的模型来进行处理,模型用业务逻辑来处理用户的请求并且返回数据,接下来,控制器选择合适的视图格式化模型返回的数据利用表示层给用户呈现出来。
2.4.5 JDBC
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API。换句话说,它是用于在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编程中的数据库操作实用工具,小巧简单实用,
特色:
1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;
2.对于数据表的写操作,也变得很简单(只需写sql语句)
3.可以使用数据源,使用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的环境主要有以下几方面技术优势:
1.Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。
2.在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。
3.Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理html页面。
4.Tomcat也可以与其它一些软件集成起来实现更多的功能。
2.5.2 运行环境
操作系统:Windows 10以上版本。
服务器软件:Tomcat7.0以上版本。
浏览器:IE、Fire Fox、Google Chrome。
第三章 需求分析
3.1 系统功能模块概述和分析
《青农网上书城》模型是典型的网上购物实践中最为普遍的电子商务企业对客户(B2C)模式,主要包括会员注册、订单管理、购物车、搜索、支付等基本功能。此外,本系统也将实现在线图书销售系统的后端管理,包括图书的添加、订单的处理等功能。本系统完全基于JSP技术,在系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的偶合,力求做到系统的稳定性、可重用性和可扩充性。
《青农网上书城》主要功能如下:
前台(客户购买)部分:用户管理:注册会员、登录、激活、退出、修改密码;分类显示:显示所有1级和2级分类;图书显示:按分类查询图书、通过关键字搜索图书、高级搜索图书、查看某本图书的详细等;购物车管理:向购物车中添加图书、修改购物车中图书数量、删除购物车中图书、我的购物车;订单管理:通过购物车中图书生成订单、查看我的订单、查看某个订单的详细、订单支付、确认收货、取消未付款订单。后台(管理员管理)部分:
管理员:管理员登录;分类管理:查看所有分类、添加1级分类、添加2级分类、修改1级分类、修改2级分类、删除1级分类、删除2级分类;图书管理:按分类搜索图书、高级搜索图书、添加新图书、查看图书详细信息、编辑图书、删除图书;订单管理:按状态搜索订单、查看订单详细信息、取消订单、发货;
3.2 系统功能模块设计
根据系统功能分析,可以画出系统的功能模块图。
前台:用户购书功能图
后台管理员功能图:
3.3 数据库分析
信息系统的主要任务是通过大量数据获得管理所需要的信息,这就要求系统本身能够存储和管理大量的数据,而这一功能的实现必须借助大型数据库系统。本系统的开发选择MySQL作为后台数据库开发工具。
1.概念模型设计
概念模型用于信息世界的建模,与具体的DBMS无关。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。人们常常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统和具体的DBMS,而是概念级的模型,然后再把模型转换为计算机上某一个DBMS支持的数据模型。实际上,概念模型是现实世界到机器世界的一个中间层次。
信息世界中包含的基本概念有实体和联系。
(1) 实体 (entity)
客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课、一个供应商、一个部门、一本 书、一位读者等都是实体。
(2) 联系 (relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。两个实体型之间的联系可以分为3类,一对一联系,(1:1);一对多联系(1 : n);多对多联系(m : n)。
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体,联系方法(Entity-Relationship Approach)简记为E-R表示法)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型,简称E-R模型。 根据数据流程分析,绘制books网上书城的全局E-R模型如图所示。
根据设计规划的主要实体有:用户、图书分类、图书、购物车、订单、管理员。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多的原因):
用户实体
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:未付款状态。当订单刚刚生成时,就是1状态;2:已付款状态,但未发货。当订单刚刚支付之后,就是2状态;3:已发货,但未消确认收货。当订单刚刚发货之后,就是3状态;4:交易成功。当订单确认收货之后,就是4状态。一旦订单为4状态后,就不能再改变状态;5:已取消。当订单被取消后,就是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 测试的目的与目标
初步实现本系统之后,紧接着对系统进行测试,查看系统是否有错误,通过测试,用提交的错误分析报告来为之后的软件改进提供标准和参考,可以在以后的系统改进中有所依据。
经过测试的软件其各个模块的基本功能都能正常进行,尽可能的提高软件的可靠性。
6.2 测试方法
从是否关心软件内部结构和具体实现的角度划分:黑盒测试和白盒测试;从是否执行程序的角度:静态测试和动态测试;从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试;单元测试又叫作模块测试,这是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。它的目的是发现各个模块内部有可能存在的一些差错。单元测试则是要从程序的内部结构出发设计测试用例。各个模块能够平行地独立进行单元测试。
集成测试 (组装测试、联合测试),一般是在单元测试的基础上,需要把全部模块按照设计的要求组装成系统。在这时候需要考虑以下问题:
在将各模块连接起来的时候,考虑穿越模块接口的数据是否会丢失;各个模块的功能是否会对彼此模块的功能产生不利的影响;各个子功能组合起来,是否达到预期要求的父功能;全局的数据结构是否有错误;各个模块的误差加起来,是否会放大,进而达到更坏的程度。确认测试(Validation Testing),确认测试又叫作有效性测试。它是负责验证软件的功能和性能以及qi’ta其它特性是否与预期的一致。要求软件的功能和性能在软件需求规格说明书中有着明确的规定。其包括的信息便是软件确认测试的基础。
系统测试(System Testing),是把通过确认测试的软件作为整个基于计算机系统的一个元素,跟计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合,在实际运行环境下,对计算机系统做一系列的组装测试与确认测试。系统测试的目的是通过与系统的需求定义作比较进而发现软件与系统的定义不符合或是有矛盾的地方。
验收测试(Acceptance Testing),通过系统的有效性测试和软件配置审查以后,接着开始系统的验收测试。验收测试以用户为主。软件开发人员和质量保证人员也参加。由用户参加设计测试用例,使用生产中的实际数据进行测试。测试时,不仅要考虑软件的功能和性能外,还应该对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
6.3 测试用例
表6.1是书城系统会员登入的测试表,依据测试结果来看跟期望结果是完全相同的。
登入系统测试用例
功能特性 | 用户登录验证 | ||||
测试目的 | 验证是否输入合法的信息 | ||||
测试数据 | 用户名称:1111 密码:1111 | ||||
测试内容 | 操作描述 | 数据 | 期望结果 | 实际结果 | 测试状态 |
1 | 输入用户姓名,按“登陆”按钮。 | 用户姓名:1111,
密码为空 | 显示警告信息“用户名或密码误!” | 显示警告信息“用户名或密码误!” | 与期望结果相同 |
2 | 输入密码,按“登陆”按钮。 | 用户姓名为空,密码:1111 | 显示警告信息“用户名或密码误!” | 显示警告信息“用户名或密码误!” | 与期望结果相同 |
3 | 输入用户姓名和密码,按“登陆”按钮。 | 用户姓名:1,
密 码:1 | 显示警告信息“用户名或密码误!” | 显示警告信息“用户名或密码误” | 与期望结果相同 |
4 | 输入用户姓名和密码,按“登陆”按钮。 | 用户名:1111,密 码:1111 | 正确登入到会员操作界面 | 正确登入到会员操作界面 | 与期望结果相同 |
6.4 测试结论
只要一开始我们代码写好了,在后面出现的错误也就越少,也就充分相信做过的测试是彻底性的。系统化测试是用一种有序的方式设法查寻潜在的问题位置。与此同时,边界出问题的可能性最大,这是能够使用手工的或是程序的方式检查。最理想的是自动进行测试,用得越多越好,原因是机器不会出错、不用休息。回归测试检查一个程序是不是会产生跟它之前一样的输出。在做了改动以后就测试是一种好技术,可以帮我们把出现问题的范围进行局部化,是因为新的问题往往出现在新的代码中。
测试和排错总被人说成是一个阶段,事实上两者根本不是同一个事。通俗地说,你本知道程序有错误时要做的事情叫作排错。而测试是在你相信程序可以工作的情况下,想办法解决它而进行的一整套确定的系统化的试验。
测试可以说明程序中有错误,但是不可以说明程序中没有错误。程序可以通过某种构造过程完整地做出来,这样就不可能会有错误了,所以测试也就不被需要了。这也的确是一个美好生活理想。但是,对于现在的实际程序来说,这依然是个理想而已。因此更应集中精神讨论怎样测试,怎样才可以更早地发现程序问题,怎样才能够提高工作效率,让工作更有成效。
第七章 结论
通过开发《青农网上书城》系统,对JAVA的基本知识进行了全面的复习,进一步学习探索到了新知识,掌握了新的编程技巧,并且我的JAVA项目开发能力在此次毕业设计中得到了更进一步的提高。例如:对三层架构的模式有了新的全面的理解,对数据库的掌握和SQL语言的使用也较以往熟练了许多。
在这个过程中我总结了一些经验,一款软件开发成功离不开一份好的分析,我认为这是一款软件开发要做到的的首要前提。不能急于去编程,在这之前一定要做好软件分析工作,做好调查报告,并且还能够写出一份详细完整的分析报告等等。接下来就可以着手准备编写程序的代码,这样在编写的过程中就会容易很多。有时候,有些东西还需要继续深入,比如控件的应用等。
因为平时接触开发软件的工作比较少,所以在这次毕业设计中也出现过很多问题,主要是对于这方面经验不足,以后还需要付出很多的努力。
这次设计对我产生了很大的影响。整个过程中我学习到了很多课堂中没有的知识,得到了一些宝贵的经验,这是一笔非常宝贵的财富。通过老师的细心指导,通过自己的不断努力,让我在回顾专业知识的同时还提高了自己的能力,思想上也得到了锻炼,对个人是一个极大的提升。
我深知本次毕业设计还有较大的改进空间,诚挚的请各位指导老师提供专业的指导和意见。
第八章 致谢
时间如白驹过隙,大学四年的时光马上就要结束了。这四年的时间里,我从每一位老师那里都获得了很多知识,在室友同学那里得到了很多关怀。趁此机会,我要感谢大学四年的时间里带给我帮助和关怀的老师,感谢带给我欢乐陪伴我成长的同学们。
在本次毕业设计过程中,我要感谢xxx老师的细心指导。从毕业设计的选题到毕业设计的构思和最后的定稿,都是在李老师严谨的态度、细心的指导下完成的。她为我的毕业设计提供了很大的帮助,在一次次反复的修改中给了我很多的建议和启发。我还要感谢带给我帮助教给我知识的所有老师,正是有了你们我才能够顺利完成这次毕业设计。
在此,我诚挚的请各位指导老师对我的毕业设计提出不足和修改意见,让我能够及时修改自己的不足之处。
最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位老师表示衷心地感谢。
第九章 参考文献
[1] 张孝祥,Java 就业培训教程,清华大学,(2007-07)
[2] 石志国,薛为民,董洁.JSP应用教程.北京:清华大学出版社.北京交通大学出版社,2004
[3] 李曙光.JSP开发实例完全剖析.北京:中国电力出版社,2006
[4]杨易.JSP高级程序设计.人民邮电出版社,2006
[5]Vivek Chopra.JSP高级程序设计,机械工业出版社,2001
[6]顼宇峰.ASP+SQLServer典型网站建设案例[M].北京:清华大学出版社,2006:147.
[7]黄斯伟.HTML完全使用详解[M].北京:人民邮电出版社,2006:218-220.
[8]萨师煊,王姗.数据库系统概论.北京:高等教育出版社,2000
[9]马运涛.Eclipse精要与高级开发技术.北京:电子工业出版社,2003
[10] PaulJPerrone etal,张志伟,谭郁松,张明杰.J2EE构建企业系统[M] .北京:清华大学出版社,2001
[11]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
[12]Apache Software.The Struts User’s Guide.http://Jakarta.Apache.org/struts.
[13] Chuck Cavaness.Programming Jakarta Struts,2002
[14] Bruce Shive.Research Direction in Object-Oriented Programming,2002
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:1158,如若转载,请注明出处:https://www.447766.cn/chachong/132119.html,