基于SSH和MySQL的智博书店系统设计与实现
1 开发背景
1.1 系统开发背景与意义
自从进入互联网时代以来,网络以其前所未有的速度改变着人们的生活方式,改变着人们的价值观念。如果说这是一次经济革命,它比工业革命所带来的影响价值更深入彻底得多,它将传统经济推向了无形的虚拟空间。地球村即真是地体现了经济全球化的趋势。网络经济模式以迅猛势头席卷我们生活的各个领域:随着电子商务的日益成熟,网上购书应运而生,并以其方便、快捷等一系列优点冲击着我们传统的图书发行产业,这既是机遇又是挑战。网络时代的今天,谁能更好的利用好这柄双刃剑必将成为威力啊图书出版发行业新的主宰者。我过由于网络技术起步较晚,电子商务体系还不很完善,与欧美等国有一定的差距。
网上购书是电子商务网站的一种类型。网上购书是近年来随着网络技术的发展而产生的一种新型的书店形式。随着网络的发展,电子商务的不断完善,卖书商家越来越强烈地意识到网络带来的巨大商机,几乎都进行图书的线上销售经营活动,不管对于商家网上销售还是对于消费者网上购书都是种新型的销售和购书模式,并很受欢迎。
当今人类社会的生活方式因为互联网的蓬勃发展而发生了质的变化,网络给人们带来了足不出户即可了解新鲜事物和获得自己想要的东西的便利,所以正是需求推动社会发展,在虚拟网络中买卖交易商品,人们越来越来喜欢这种网上购物方式。
互联网行业刚兴起才露出其新面容是上世纪90年代,国内也发展起来了几大互联网企业,一些商业人士也就泛起了通过网络进行交易买卖图书的别人没想过的主意。但是在互联网初期还存在一些问题,比如企业的信誉不是一时半会能建立起来的、不完善的国家对于的网络的政策、当时不发达的物流等一连串的原因致使网上交易生意发展的步伐有所迟缓。新世纪以来,整个社会成长进步了不少,影响网上业务买卖的各大问题被消灭,越来越多的企业看出互联网势不可挡,互联网的队伍日益壮大。
小时候购买图书都是现场商家与消费者面对面销售,卖书的地点对于大部分商家来说都是固定的,客流量也是固定的,并且图书种类偏向固定,这样导致利润上涨缓慢,甚至不盈利。
从商家角度来看,当打点店铺的职工想查找哪一类图书销量大需要进货时,要根据每一天的销量情况来决定。当然用数据说话更准确,例如用库房的电脑查看销售图书数量以及类别,这样就很繁琐。从买家为出发点的话,想要购买书籍还要先去图书馆查看是否有心中所想的那本书及价钱,要想比较不同书店同一本书的价格还要跑到另一家去让工作人员手工查找,很费时间及人力。随着社会发展,网店的出现,机械以精准、快速而远超过手工运转的大优势替代手工,职员再也不用手工查书了,更方便的是其可在电脑上输入书名就能快速出现结果;消费者也可以通过在同一个平台的不同页面查询自己需要的书籍及单价,还能同时登陆不同的平台来进行比较不同商家的同一件商品,很大水平上节省了人们的时间,因此网上购书既节约时间又不耗费人力、不必要的费用,让卖家和买家间的沟通矛盾有效减少了。
1.2 研究内容
近年来,随着计算机的普遍推广,电子商务得以快速发展,网上购书不仅成为一种时尚,也成为人们学习必做的功课。网上购书系统运用计算机技术将卖家、买家、厂商等紧密地结合在一起,大大弥补了过去时间和空间带来的障碍,从而帮助人们节约了成本,扩大了营销市场,同时通过此次项目的开展,我可以更进一步了解项目开发的一般流程,深化对基于B/S模式下开发项目的了解,进一步了解和掌握Web开发技术。
基于JSP的网上购书系统是在当今网上购物风靡一时的情况下根据老师的指导和建议得出的课题,重点在于检验学生知识的运用能力和实际操作能力。随着时间的推移,电子商务得到快速发展同时人们的生活节奏也越来越快,更多的人追求速度和效率,实物店购买图书难以满足人们的要求,因此网上购物成为人们必要的选择。网上购书系统包括:查看图书信息、增加图书信息、删除图书信息、用户注册、订单处理、后台管理等工作。
1.3 文档的组织结构
文档的组织结果安排如下:
-
第一章 绪论介绍了系统开发的背景与意义,对主要研究内容进行了说明,对文档的组织结构进行了阐述
-
第二章 主要讨论了系统的需求以及实现相关功能的关键技术和方法
-
第三章 对系统进行了业务建设与设计,对系统的用户角色和功能需求作了初步设计
-
第四章 主要对系统相关实现作了更详细的阐述,阐述了系统开发过程中所设计的代码、接口等
-
第五章 主要对网上书店管理系统进行系统安全测试,对测试的过程进行总结
-
第六章 主要对网上书店管理系统开发的总结和对未来的展望,以及一些致谢语
2 系统需求分析
2.1 系统开发目的与意义
该系统作为基于网络平台的书籍交易系统,跟以前旧销售方式比较,主要优点有:
-
检索便捷 :网上购书提供了比较多的检索途径,比如可以根据分类查找、根据价格查找、根据是否是特价商品或根据图书的作者等多种途径进行检索,方便、快速、准确
-
信息量大 :与以前在某个地点卖书的旧形式不同,老形式销售老板带的书数量有限,种类不会那么齐全,而该系统基于网络不受时间、地点的限制,遍及世界各地,这也就极大限度地扩大了出版物的发行范围
-
成本低,无区域限定 :网上购书最大的优势是消费者可于任何时间、地点购买心仪的书籍,增多了消费者群体,提高了商家竞争力,更节约了开实体店所需投入的资本(人力、生产力以及物力)和租赁钱财
基于以上网上购书的优点,网上购书才能得以在短时间内迅速发展起来。其目的与意义就是为了让人们更方便购书,更快乐地享受生活。
2.2 可行性分析
任何一个系统的开发,都有时间和资源上一定的限制。所以每一个项目在开发之前,对其进行可行性分析是必不可少的,这样才能降低项目开发过程中的风险,较少及避免财力、物力、人力的浪费。以下在技术、操作、经济还有法律4个方面进行可行性分析的阐述。
2.2.1 经济可行性
由于本系统是毕业设计课题这一特殊性,通过使用含有标准配置的电脑,下载JDK以及开发所需要的jar包即可进行开发,由于该系统中使用的软件是开源的,这就节省了开发系统节所需的大部分的资金和时间,实现了更低的开发成本,提高了系统开发的效率。
2.2.2 技术可行性
该软件系统使用我们学过的开发工具Eclipse开发,用具有性能高、跨平台、代码可重载的Java编程语言编码,数据库使用开源软件MySQL。而且对于ssh框架这些都有所学习, ssh框架有良好的可扩展性和可维护性,提高了对象管理方法,因此对我而言,在技术上实现该系统是行得通的。 本软件体系的协议传输和请求返回原理工作图如下图2.1:
2.2.3 操作可行性
本系统操作简单,页面框架基本上使用统一风格,且页面简单,可根据需要和文字提示即可完成图书的搜索和购买,很容易上手操作,学起来是比较简单的,对操作人员的要求条件不高,只需要熟练操作Windows操作系统,另外再对系统运行的操作稍加训练即可,而系统的可视性很好,所以不会很难使用。
2.2.4 法律可行性
本网上购书系统是一个自主开发的购书系统,是一个对大部分消费者来说很实用的系统,开发环境工具和数据库的操作都有开源的代码,该系统的开发与普通软件系统的开发有不同的地方,在法律上没有任何侵犯,是可行的。
2.2.5 管理可行性
系统设计目标应该放长远,让此系统的开发具有良好的扩展性,不会因企业的变动而随之淘汰。
具体实施体现为以下几点:
-
标准性 :一保证系统运行质量,二在此标准技术上有所进步
-
可靠性 :系统的软硬件质量必须保证
-
安全性 :控制用户接触数据的权限。确保用户只可操作对应的数据
-
高效性 :数据库的大小影响浏览器的响应
-
可维护性 :系统设计分成几个模块来设计,这样既能减少工作人员工作量,又能便于开发及维护
2.3 需求分析
2.3.1 功能需求分析
该系统所具有的功能需求有:
- 前台网站
- 一般游客 :浏览书店简介、浏览图书信息、搜索图书、根据分类 查寻图书、注册信息等功能
-
在线用户 :包含上边普通游客所有功能,登陆网站、添加书籍到购物车、管理已购买书籍订单等功能
-
后台管理 :管理员可管理图书、设置是否是促销或最新图书;工作人员可以查看、增添用户;管理图书种类,包含查看所有分类、增添书籍类型;管理订单包括查看所有用户订单、标记订单是否已处理、查看详情、删除等功能
2.3.2 数据逻辑分析
在网站系统页面,若注册信息,用户填写的信息会提交到UserAction类,判断用户名和密码是否正确从而调用service层,service层调用dao层添加用户信息,以此类推,各种数据只要和数据库打交道那就需要经过action类,在对应action类中进行逻辑处理,跳转到相应页面,需要操作数据库时action类调用service层类,再调用dao层类来实现数据的保存或更新及删除。
2.3.3 性能需求分析
系统的安全性
在管理限定上严格管制,本软件体系要求如下:
-
对于后台管理系统,首先必须是系统的管理员才能对系统各方面进行更新,其次须凭借无误的昵称和密码口令登陆到系统,没有权限包含不是管理工作人员或者是工作人员时输入不正确的昵称或密码口令登陆系统的人员都不能登陆进后台,对系统中任何信息都不能查看或更新,这样来保证系统的安全性和可靠性
-
对于前台网站首页,对于拥有不同权限的用户来说,有两种权限分别是一般游客和在线用户,这两种消费者不能跨越本级别操作。具体:一般游客只能在网站首页浏览虚拟书店的介绍信息、书籍的基本信息以及分类查询书籍和搜索书籍,这类用户通过在网站注册信息登录即可变成在线用户;在线用户不但具备一般游客全部能力,而且可以生成订单、管理订单、更改个人基本信息
数据的完整性
-
系统用到的全部信息的完整性,包含保存用户个人信息和书籍的信息
-
信息和信息保持一定的互动
-
同一种信息在不同表中保存的数据应保持相同
2.4 关键技术
2.4.1 JSP
JSP在服务端器实现给客户端浏览器响应的是html页面,因此客户端只要有浏览器方可看到响应内容,JSP页面包括两部分一个是Java语言写的脚本代码,另一个是html代码。客户端发出请求之后,页面上的Java脚本代码在客户端请求web页面之后被解析处理,然后返回给浏览器响应的html页面。
JSP技术的优势:
-
一次编码,各个系统平台都能运转
-
JSP组件跨平台。在不同的平台上都能运行
-
拥护多种网页格式。JSP支持html、wml等浏览器样式
-
JSP标签可扩充性。JSP技术准许开发人员扩展JSP标签,还能自定义标签,降低了制作网页的复杂度
-
健壮性与安全性。JSP页面包含Java代码,而Java有健壮的存储管理机制和高安全性,因此JSP也有健壮性和安全性
2.4.2 JavaScript
JavaScript脚本语言是动态弱类型的语言,它的解释器是浏览器所包含的,运行在客户端,通常应用在网页端的脚本语言中。它一开始用于HTML(超文本标记语言)页面,以向HTML网页增添动态功能。
JavaScript的特点是:
-
js是一种执行时再翻译的动态语言(代码未预先编译)
-
提高用户界面交互体验,为页面添加动态验证
-
脚本部分的代码要放在特定的标记中间,或者单独写成js文件,并引用进来
-
js是基于浏览器,是运行在浏览器中的,就算在不同的平台上也可运作
2.4.3 Struts2
Struts2优势:
-
Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题
-
Struts2强大的标签库提高开发效率
-
页面脉络清晰,通过查看配置文件把握整个系统的关系,方便开发人员岗位流动时的维护
2.4.4 Spring
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。
Spring优势:
-
Spring提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”
-
有利于面向接口编程习惯的养成,使代码结构清晰
-
采用了分层结构,可以增量引入到项目中
-
目的之一是为了写出易于测试的代码
-
非侵入性,应用程序对SpringAPI的依赖可以减至最小限度
-
一致的数据访问介面
-
一个轻量级的架构解决方案
2.4.5 Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate优势:
-
Hibernate是JDBC轻量级的封装,占用内存较少,性能比较高。与JDBC相比,如果开发JDBC的人员技术能力非常强,hibernate执行效率会比JDBC弱一些,但是大部分情况是程序员在使用JDBC时是不可能做到最高效率,hibernate可以帮大部分开发人员提高运行效率
-
可以引入第三方二级缓存,提高系统查询效率,减少系统里存在大量单例类(singleton),大量的单例类,会降低系统的可测试性和面向对象程度
-
优秀的ORM框架,理论上节省开发人员95%的开发工作量
-
Hibernate兼容JDBC
3 系统设计
3.1 设计思想
设计思想遵循以下几点:
-
本系统使用浏览器 / 服务器模式开发,因为考虑到许多用户已经习惯于在页面上搜索
-
Java面向对象的思想应融合在整个系统的开发中,每个模块都是独立的,各模块组成一个整体,零散而聚集
-
系统应具有安全性以及可靠性,分配角色权限是解决他们的最好途径
-
操作方便,界面从优
-
设计不仅要重点突出,而且要细致周到。为满足设计要求,在可能的基础上改进系统的扩展,以适应用户的需求
3.2 功能模块设计
该系统使用起来容易,操作简单,有清晰明了的提示文字,让用户的整个购书过程很轻松享受。本体系实现的基本功能如下:
-
一般游客 :浏览书店简介、浏览图书信息、搜索图书、根据分类查寻图书、注册信息等功能
-
在线用户 :包括一般游客全部功能,除此之外,还有登录网站首页、管理购物车、生成订单、查看订单等功能
-
管理员具有图书类型管理、图书信息管理、订单查看删除管理、用户添加删除管理、后台管理功能
-
除了以上,该系统的用户交互界面简易明了,易于使用,还有友善的不正确的提示信息,有比较好的安全性
系统整体的功能模块图如图3.1所示:
软件体系的总体功能模块图,分普通用户模块,管理员模块。
普通用户的模块图说明:普通用户在网店首页可以进行了解书店简介,浏览图书信息;如果要在线操作首先需要备案一个个人账号,再登录上网站,可进行在线下订单,书籍查询操作,如图3.2所示:
管理员功能结构模块图说明:作为一种用户角色,管理员的权限能力最高。管理员功能结构模块图,如图3.3所示:
-
用户管理模块 :该模块可观察浏览用户信息、更正、消除用户信息功能
-
订单管理模块 :该模块主要处理买家完成的订单,查察、删除等功能
-
图书管理模块 :该模块主要管理书籍,包括增添图书、更新图书信息、设置最新图书、推荐图书、促销图书等
-
书籍分类管理模块 :该模块对图书类型信息进行打理,包含添加新类型、查询类别意思、改动、和消除等功能操作。其中图书类别信息主要是类别称号、类别含义
-
系统管理模块 :书店简介信息的更新,系统维护
-
修改密码模块**:修改管理员密码功能
3.3 界面设计
目前,软件质量评估的重要指标就是界面设计,良好的用户界面可以加强用户对整个软件体系使用的信念和感觉。用户界面可以说是用于在系统和顾客之间交互和交换信息的媒介,用户界面实现了数据的内部形式和人本身可接受的形式之间的更调。
3.3.1 输出设计
使得网上购书系统的成果能满足用户需求的一些数据和效果即输出。输出设计的目标是实时反映和构成各部门无误管理需求所需的信息,信息是否满足人们的需求,直接关系到软件体系的投入使用和该体系是否是告成的。
设计系统的过程刚好与实施过程相反,并不是从输入设计到输出设计,而与其正好是相反的,输出设计的准则是不但要周全的反映不同工作人员的要求,并且要简洁,而不是把用户需求和不必要的全供应给用户。[10]
3.3.2 输入设计
提高效率、减小误差是输入设计的最终目的。输入接口把信息系统与用户链接起来,根据用户的需求来设计准确的输入格式,使得输出更准确即让管理员及消费者能得到正确信息。
通过以下几点可以实现其目的:克制输入量;尽可能快的输入;降低输入误差;减少不必要的步骤。
3.4 系统用户用例图
用例图的主要作用有:
-
获取需求
-
指导测试
-
对整个系统开发过程中其它工作流起到指导作用
3.4.1 普通用户用例图
从安全方面的角度思量,为了对买家信息和订单保密,普通用户即没有登录系统的游客不能生成订单、更新自己基本信息,只有在网站首页浏览图书基本信息和对图书查询、浏览书店简介等功能,其它功能须登录实现,普通用户用例图如图3.4所示:
3.4.2 管理员用例图
管理工作人员是该系统的焦点角色,共包含六大功能模块,管理人员的权利最大,该软件的全部功能管理人员都能操作,其能够实时更新系统所包含的书籍、订单信息,而且是动态的。管理员用户用例图如下图3.5所示:
3.5 数据库的设计
数据库是一种对信息的保存的过程,它建立在选定好数据库的基础之上。进行数据库的设计除了分析用户需求之外,还需要进行概念结构的设计、逻辑结构设计以及物理结构的设计,做到与系统分析与设计的阶段相对应。根据系统需要在数据库中创建订单、用户、书籍类别、图书等表。
3.5.1 数据库概念结构设计
概念结构设计的任务是将它们笼统为不依靠任何必定机械的数据模型,即概念模型,其是建立在需求分析阶段生成的需求规范的基础上。概念模型让设计者能集中注意力于最重要的新闻的组织结构和处理模式上。
概念结构设计最直观的表达方式是E-R图即是实体-联系图,它更加清晰的、方便的、直观的去看实体属性之间的联系,将现实社会物体非常好的展现出来,其能直观的看出实体具有的属性,对数据库设计起到辅助作用。
综上,使用E-R图的设计方法对数据库设计,以下对数据表进行E-R图设计,可以直观地观察到表中各属性的结构。
系统主要的实体及其属性如下:
普通用户实体
主要说明普通用户个体的基本信息,如图3.6所示:
管理员登录信息实体
主要说明了管理员要登录后台管理系统需要的用户名和密码有效信息,如图3.7所示:
书籍信息实体
主要说明了每本书的基本信息,如图3.8所示:
图书类别实体
主要说明了书籍的分类的类目,包括类目名称和介绍,其实体结构如图3.9所示:
书籍信息实体
主要说明用户在线生成的订单的各种信息,如下图3.10所示:
3.5.2 数据库逻辑结构设计
上边的数据库概念设计是在系统需求分析结果中总结实体信息,这个过程很重要,在这个基础上再对各实体及属性进行详细设计在,因此根据在数据库概念结构设计中的E-R图来设计出本系统中,涉及到的数据项和表结构,逻辑结构设计首先要把E-R图转换为关系模型,转换时要留意:一是E-R图中每个实体和关系模型一一对应;二是表中主键不能为空;三是实体之间的联系其中多对多这种情况应该将这种关系独立为一个关系模型。
下图为各实体转换后的关系模型,如图3.11所示:
由上边关系模型图可知有6个表,以下是详细的表结构:
普通用户表
描述登录该系统网站用户的登录信息,具体字段类型如表3-1所示:
字段名称 | 数据类型 | 可否空 | 默认值 | 注释 | 备注 |
---|---|---|---|---|---|
id | int(20) | 否 | 1 | 用户id(自增) | 主键 |
username | varchar(50) | 否 | 无 | 用户名 | 无 |
password | varchar(50) | 否 | 无 | 用户密码 | 无 |
图书类别信息表
描述了书籍分类的类别信息,具体字段类型如表3-2所示:
字段名称 | 数据类型 | 可否空 | 默认值 | 注释 | 备注 |
---|---|---|---|---|---|
id | int(20) | 否 | 1 | id(自增) | 主键 |
name | varchar(50) | 否 | 无 | 名称 | 无 |
图书信息表
描述每本图书的基本介绍,具体字段类型如下表3-3所示:
字段名称 | 数据类型 | 可否空 | 默认值 | 注释 | 备注 |
---|---|---|---|---|---|
id | int(20) | 否 | 1 | id(自增) | 主键 |
name | varchar(50) | 否 | 无 | 名称 | 无 |
cover | varchar(50) | 否 | 无 | 封面地址 | 无 |
price | floatprice | 否 | 无 | 价格 | 无 |
intro | varchar(50) | 否 | 无 | 简介 | 无 |
author | varchar(50) | 否 | 无 | 作者 | 无 |
press | varchar(50) | 否 | 无 | 出版社 | 无 |
pubdate | date | 否 | 无 | 出版日期 | 无 |
special | bit | 否 | 无 | 是否特卖 | 无 |
news | bit | 否 | 无 | 是否最新 | 无 |
sale | bit | 否 | 无 | 是否促销 | 无 |
category_id | bit | 否 | 无 | 类目id | 外键 |
管理员信息表
描述管理工作人员的基本信息,具体字段类型如表3-4所示:
字段名称 | 数据类型 | 可否空 | 默认值 | 注释 | 备注 |
---|---|---|---|---|---|
id | int(20) | 否 | 1 | 用户id(自增) | 主键 |
username | varchar(50) | 否 | 无 | 用户名 | 无 |
password | varchar(50) | 否 | 无 | 用户密码 | 无 |
phone | varchar(50) | 否 | 无 | 电话 | 无 |
订单项表
该表主要描述了买家全部订单的明细信息,具体字段类型如表3-5所示:
字段名称 | 数据类型 | 可否空 | 默认值 | 注释 | 备注 |
---|---|---|---|---|---|
id | int(20) | 否 | 1 | 用户id(自增) | 主键 |
price | floatprice | 否 | 无 | 购买时价格 | 无 |
amount | int(10) | 否 | 无 | 数量 | 无 |
book_id | int(10) | 否 | 无 | 图书id | 外键 |
indent_id | int(10) | 否 | 无 | 订单id | 外键 |
订单表
描述了用户购买图书产生的订单条目,包括订单id、书籍总价、订单是否被处理、用户昵称、订单产生时间等,具体字段类型如下表3-6所示:
字段名称 | 数据类型 | 可否空 | 默认值 | 注释 | 备注 |
---|---|---|---|---|---|
id | int(20) | 否 | 1 | 用户id(自增) | 主键 |
total | float | 否 | 无 | 总价 | 无 |
amount | float | 否 | 无 | 商品总数 | 无 |
status | tinyint | 否 | 无 | 状态 | 1未处理/2已处理 |
name | varchar(50) | 否 | 无 | 收货人姓名 | 无 |
phone | varchar(50) | 否 | 无 | 收货人电话 | 无 |
address | varchar(50) | 否 | 无 | 收货人地址 | 无 |
systime | timestamp | 否 | 无 | 下单时间 | 无 |
3.6 部分模块时序图
时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
3.6.1 用户登录系统时序图
3.6.2 书店列表数据交互时序图
4 系统实现
4.1 管理员登录页面
描述 :从确保本系统的安全性方面思量,作为管理工作者要想操作该系统后台管理系统必需先登录进系统的后台管理中。下图是后台登陆界面,界面简洁大方。
运行效果如图4.1所示:
功能实现
管理员在后台系统登录界面输入用户名和密码,点登录请求跳转到后台的action类中,在该类中进行逻辑判断,用户名和密码都对的情况下跳转到管理主界面,其中一项信息错误就出现“用户名或密码错误”提示信息,没有任何页面跳转。
登录界面判断输入信息准不准确,不准确提示错误信息的部分代码:
java
if (adminService.checkUser(admin.getUsername(), admin.getPassword())) {
getSession().put("admin", admin.getUsername());
return "main";
}
addActionError("用户名或密码不正确!");
return "login";
4.2 管理员模块
描述 :管理员对系统管理的主界面:左侧页面显示管理员可进行操作的四大功能,而且各个模块都有对应的二级子菜单来选择具体操作。
运行效果如图4.2所示:
4.2.1 图书类目管理
描述 :工作人员输入类目名称,不用输入类别id,存入类别后id会自增。
运行效果如图4.3所示:
添加类别关键代码
Action层:
java
categoryService.add(category);
return "recategory";
Service层:
java
public Integer add(Category category) {
return categoryDao.save(category);
}
Dao层:
java
getSession().save(object);
描述 :管理员点左边的“类目管理”菜单,下边出现子菜单,点击“类目列表”,调用后台的逻辑处理类从数据库中查找所有的图书分类信息,右侧出来所有图书类别名称和对应操作。该页面左下角点击增添类目即可跳到增添类目页面。每个类目右边有对应修改和删除操作。
运行效果如图4.4所示:
功能实现
java
categoryService.update(category);
return "recategory";
描述 :点左侧“类目管理”菜单,点击“类目列表”,在类目列表页面,点击修改或者删除来实现对应操作。
运行效果如图4.5所示:
功能实现
java
categoryService.delete(category);
public boolean delete(Category category) {
return categoryDao.delete(category);
}
try {
getSession().delete(object);
} catch (HibernateException e)
4.2.2 图书信息管理
描述 :点左边“图书管理”、“添加图书”,在右侧添加图书信息,填写下图中包含的图书信息,在此也可将图书直接划分到所属的类别中,使用下拉框实现。
运行效果如图4.6所示:
功能实现
- 在该页面出版日期组件使用datepicker组件完成,初始日期是本天,对应设置语句为:
java
$( "#datepicker" ).datepicker('setDate', new Date());
描述 :在管理主页面上点击左边“图书管理”菜单,在二级子目录中点击“图书列表”,调用后台的逻辑处理类查找出全部的书籍信息,将封装这些信息的collection放入请求对象中,然后带着这些数据转跳到响应的jsp页面,从而书籍信息展现在右侧页面中。
运行效果如图4.7所示:
图书管理关键代码
Action层:
java
bookList = bookService.getList(status, page, rows);
return "book";
Service层:
java
return bookDao.getList(status, page, rows);
Dao层:
java
public List<Book> getList(int status, int page, int rows){
return getSession().createQuery("from Book "+packSql(status)+" order by id desc");
}
描述 :点击“图书管理”,出现推荐列表、最新列表、促销列表,在图书列表中,每个书后边的操作一栏中,可将该书设置成为推荐图书或最新图书或促销图书,然后可在左边栏中点击推荐列表、最新列表、促销列表来查看该书。
运行效果如图4.8所示:
功能实现
其他功能“设为最新”、“设为促销”类似代码。
描述 :点击“图书管理”,点击“推荐列表”,右侧出现的图书均为商家对买家推荐的书籍,用户可根据爱好需求下订单。
运行效果如图4.9所示:
功能实现
java
public String bookSet(){
book = bookService.get(id);
switch (flag) {
case 10:
book.setSpecial(false);
break;
case 11:
book.setSpecial(true);
break;
case 20:
book.setNews(false);
break;
case 21:
book.setNews(true);
break;
case 30:
book.setSale(false);
break;
case 31:
book.setSale(true);
break;
}
bookService.update(book);
return "rebook";
}
描述 :点击“图书管理”,点击“最新列表”,右侧出现的图书均为商家对买家推荐的最新书籍,用户可根据爱好需求进行浏览下订单。
运行效果如图4.10所示:
功能实现
java
public String bookSet(){
book = bookService.get(id);
switch (flag) {
case 10:
book.setSpecial(false);
break;
case 11:
book.setSpecial(true);
break;
case 20:
book.setNews(false);
break;
case 21:
book.setNews(true);
break;
case 30:
book.setSale(false);
break;
case 31:
book.setSale(true);
break;
}
bookService.update(book);
return "rebook";
}
描述 :点击“图书管理”,点击“促销列表”,右侧出现的图书均为商家对买家推荐的最新书籍,用户可根据爱好需求进行浏览下订单。
运行效果如图4.11所示:
功能实现
java
public String bookSet(){
book = bookService.get(id);
switch (flag) {
case 10:
book.setSpecial(false);
break;
case 11:
book.setSpecial(true);
break;
case 20:
book.setNews(false);
break;
case 21:
book.setNews(true);
break;
case 30:
book.setSale(false);
break;
case 31:
book.setSale(true);
break;
}
bookService.update(book);
return "rebook";
}
4.2.3 用户信息管理
描述 :消费者进入该网站首页就成为了该系统的一位用户,管理员登录后台系统后能对注册后的用户信息进行管理,点击左边栏目“用户管理“,页面链接到后台的逻辑处理类(userAction),在这个类里边,和数据库打交道取出信息,把用户信息查寻出来,进一步输出到响应的jsp显示页面。
运行效果如图4.12所示:
功能实现
java
userList = userService.getList(page, rows);
描述 :管理员在后台能增添管理员用户,这些用户都是系统保护用户,不会被删除。
运行效果如图4.13所示:
功能实现
```java
if (adminService.isExist(admin.getUsername())) {
addActionError("用户名已存在!");
return "adminadd";
}
adminService.add(admin);
return "readmin";
````
4.2.4 订单信息管理
描述 :管理人员在后台管理页面能看到所有用户完成的订单,进而对订单进行管理。
运行效果如图4.14所示:
4.3 普通用户模块
4.3.1 系统主页面实现
描述 :网站首页界面由四部分组成:上面是关于主题书的照片以及导航条、搜索栏,左边是各页面展示的区域,右边的上方是固定的对于网站书店(该书店是虚拟的)的简介,右边的下方是图书的分类信息以及促销书籍的展示,下方是固定区域显示其他信息。
运行效果如图4.15所示:
功能实现
页面由JSP完成,具体代码不做展示。
4.3.2 图书查询
描述 :用户在搜索框中输入图书名称查寻。调用后台的java类search.Action查询图书,在显示层jsp展示出来。
运行效果如图4.16所示:
搜索功能关键代码
```html
```
4.3.3 用户登录注册
描述 :游客能在网站首页浏览图书信息和书店简介信息,想成为网站的一名用户,必须通过注册登记自己的信息,成为了用户,在没有登录网站时,能做的操作有浏览书籍信息,图书查询,分类查询等,能把看好的书加入购物车,然则再提交订单时必须登录才能完成订单的生成。
运行效果如图4.17所示:
普通用户登录关键代码
java
public boolean checkUser(String username, String password){
return userDao.getByUsernameAndPassword(username, password);
}
4.3.4 图书分类查询
描述 :用户可根据不同类别的名称点进去查找心仪图书,这样可减小查寻范围。
运行效果如图4.18所示:
功能实现
```html
```
4.3.5 在线下单
描述 :一般游客若没有登录系统则不能生成订单,若登录系统就可在线买书了。
用户没有登录系统下订单失败如图4.19所示:
用户登录后下订单成功如图4.20所示:
判断用户是否在线下订单关键代码
java
if (getSession().get("username")==null || getSession().get("username").toString().isEmpty()) {
addActionMessage("请登录后提交订单!");
return "login";
}
要想提交订单只有登录的用户才能成功提交。以此来升高系统的安全性,防止用户没通过登录页面直接进入子菜单页面。
4.3.6 管理订单功能
描述 :用户在成功登陆网站并完成订单后,点击【我的订单】可查询所有订单,但不能删除已下订单,删除可与管理员取得联系,因为若用户可随意删除已下订单的话,对管理员很不好处理用户的订单,所以设计成只能管理员单向删除订单。
运行效果如图4.21所示:
用户查看所有订单关键代码
html
<a href="order.action">我的订单(<s:property value="#session.username"/>)</a>
5 系统测试
5.1 系统测试目的与意义
一个完整的系统的实现所经历的周期中非常重要和历时最长完成的阶段就是系统测试,本网上购书系统也不例外,确保该系统的方方面面的质量和实用性是系统测试过程中非常重要的,是最终的系统实现,包含系统平台的分析、系统模块的设计以及系统平台完成的最后的一道程序。
尽可能多的检验出代码中的错误是系统测试环节的目的,从而增强系统的实用和可靠性,系统检测的目的是测试系统“用户体验怎么样”。系统测试过程又分三阶段从不同的角度测试:分别是单元测试、组装测试、确认测试;第一步测试每个单元模块代码的准确性,第二步测试模块间衔接的准确性,第三步对整个软件体系经过调试后看是否满足用户功能要求和性能要求进行测试,找出不准确地方的原因和位置,然后纠正。测试的目的是想给用户更好的体验,让工作人员根据不用的测试用例,不同的思路去发现系统中可能出现的错误或者说是安全隐患,为企业的利益做到最大化。
5.2 测试过程
5.2.1 网站首页用户登录测试
测试步骤:
-
进入系统主页面,输入多次不同类型错误的信息
-
尝试登录查看效果
-
最后输入对的用户名和密码
-
点击登录查看效果
设计该模块的测试用例如表5-1所示:
测试模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
---|---|---|---|---|
登录模块 | 用户名:null 密码:null | 登录失败,显示不正确提示信息 | 失败,提示:“用户名或密码错误!” | 否 |
登录模块 | 用户名:fh22 密码:空 | 登录失败,显示不正确提示信息 | 失败,提示:“用户名或密码错误!” | 否 |
登录模块 | 用户名:hhm 密码:102 | 登录失败,显示不正确提示信息 | 失败,提示:“用户名或密码错误!” | 否 |
登录模块 | 用户名:1 密码:1 | 正确 | 登录成功 | 是 |
5.2.2 管理员删除图书信息测试
测试步骤:
-
管理员登录后台管理,在图书管理中先删除一本书籍
-
在前台搜索栏中用关键字搜索图书,看能否找到该图书
-
查看测试结果
结论:图书删除的功能正常。
删除前如图5.1所示:
删除后如图5.2所示:
5.2.3 生成订单测试
测试步骤:
-
打开系统网站首页,不登录时往购物车添加一本图书,看能不能成功
-
登录后再添加,看能不能添加成功
-
查看测试结果
结论:未登录时用户只能将商品添加到购物车,不能生成订单,登录后才能提交订单,所以生成订单功能正常。
效果图如图5.3所示:
5.2.4 其他错误测试
在执行程序的过程中肯定会产生种种不可预知的错误,好比说写入错误,值类型不匹配,参数的传递等问题。这些不仅需要仔细的测试,而且需要连续调试去解决掉。例如,当由于粗心错误导致的action路径配置错误引起的操作时。
参考文献
- 基于SSH三层架构的数字图书馆设计与实现(华中科技大学·张甲)
- 基于SSH架构的高校自助化图书管理系统的设计与实现(大连理工大学·杨议)
- 基于B/S模式的社区图书馆管理系统的设计与实现(大连理工大学·丁娟娟)
- 基于SSH框架的网上书城设计与实现(江西农业大学·曾磊)
- 基于SSH三层架构的数字图书馆设计与实现(华中科技大学·张甲)
- 网上购书电子商务系统(吉林大学·谷丰)
- 基于B/S架构的网上书店系统的设计与实现(电子科技大学·陈云英)
- 基于B/S架构的图书管理系统(山东大学·彭鹏)
- 高校图书管理系统的设计与实现(东北大学·黄鑫)
- 基于RBAC的SSH架构下的图书管理应用研究(大连理工大学·姜楠)
- 基于WEB的JSP网络售书系统(吉林大学·郭志峰)
- 网上购书电子商务系统(吉林大学·谷丰)
- 绍兴市新华书店网上销售系统的设计与实现(电子科技大学·崔欣荣)
- 基于二维码影票在线订购系统的研究和实现(吉林大学·董鹏)
- 基于SSH框架技术的网上花店系统的设计与实现(南昌大学·楼明珠)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码工厂 ,原文地址:https://m.bishedaima.com/yuanma/35302.html