🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示(需要演示视频可以私信我)
摘 要
随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,商品交易当然也不能排除在外,随着商品交易管理的不断成熟,它彻底改变了过去传统的经营管理方式,不仅使商品交易管理难度变低了,还提升了商品交易管理的灵活性。这种个性化的网上商品交易特别注重交互协调经营与管理的相互配合,激发了管理人员的创造性与主动性,对商品交易的管理而言非常有利。
网上书城系统的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要的信息,还有系统平台后期的可操作性,通过对信息内容的详细了解进行技术的开发。
本设计的基本思想就是采用SSM框架开发网上书城系统,以Java为开发语言,MySQL为数据库,。测试结果表明,该网上书城系统能以一种简便、轻量级的方式实现了管理的基本功能,降低了开发的复杂性,提高了系统的可维护性,具有一定的应用价值。
关键词: 网上书城系统; Mysql;Java
1 绪论
1.1网站开发背景
计算机的普及和互联网时代的到来,使信息的发布和传播变得更加方便和快捷。人们通过计算机上的浏览器可以接触到很多应用系统,并从上面获取一些时事新闻和先进的科研知识,使人们在生活娱乐的过程中了解到很多免费资源。很多人在足不出户的情况下就能够通过上网搜集到自己所需资源,如果有需求可以直接进行网上购物,节省时间、而且还方便快捷,不受时间、空间等其他的因素的营销,世界也因此变得更小。综合以上种种优势,商品交易开始着手构建属于自己的网上商品交易平台,主要用于用户对图书信息的查找、在线购买等,在宣传商品网站内容的同时,增加用户对更多商品交易信息的了解,达到互利共赢的效果。
近年来,随着我国经济的不断发展,网站的管理制度越来越多。每个部门的系统管理也都将通过计算机进行整体智能化操作,对于网上书城系统所牵扯的管理及数据保存都是非常多的,举例像所有的用户的详细信息、商品信息、订单信息以及评论信息等,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的商品销售管理查询体系已经无法满足用户的需求。为此开发了本网上书城系统,为用户提供一个商品交易网站信息查看的平台,同时方便管理员对用户信息进行处理。该系统满足了不同权限用户的需求,即管理员、用户,管理相关信息可以及时、准确、有效地进行系统化、标准化和有效的管理工作。
1.2课题意义
据数据调查显示,对于电子商务的营业销售额达到5.6亿,相比往年增长较快,人们通过网上交易的方式已经形成了一种依赖,不管需要什么商品,直接上网查找,参考性比较大,还有就是可以详细了解商品的特性及与其他商品的优势,让用户可以更有针对性的选择。这也给用户带来非常大的方便,用户可以不用像传统的方式还要去实体店进行查看,比对,这样不仅耽误自己的时间,而且比对过程比较单一,产品的优势也了解不那么透彻,所以对于网上交易是人们现在所依赖的一种购物方式。
网上商品交易的开发和使用对于用户而言是非常有利的。首选,管理员可以将系统所有的商品信息、商品分类等上传到平台上,用户可以根据自身的实际情况进行相应信息查看及在线购买,不受空间和时间的限制,弥补了其在商品交易管理上的疏漏。如此一来,用户不仅可以在网站查看商品信息并且购买,在闲余的时间还能进行有针对性的对商品信息进行了解,与过去传统的管理方式相比,这种网络互动更具灵活性和新鲜感,更容易激发用户的需求。在网络平台上,还可以进行在线咨询等,即促进了管理员与用户的交流,还方便后期商品交易的统计和管理。网上商品交易销售互动实现了用户评价和反馈、商品信息处理和传递、资源的共享和存储,使得商品交易管理效率得到了极大的提高。
1.3研究内容
目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,实现网上书城系统的各种功能,从而达到对网上购物管理平台相关信息的管理。
详细内容介绍,将在以下六章中详细阐述:
第一章、绪论,介绍了研究课题选择的背景及意义、研究现状,简要介绍了本文的章节内容。
第二章、引入技术知识,通过引入关键技术进行开发,向系统中涉及直观表达的技术知识。
第三章、重点分析了系统的分析,从系统强大的供需市场出发,对系统开发的可行性,系统流程以及系统性能和功能进行了探讨。
第四章、介绍了系统的详细设计方案,包括系统结构设计和数据库设计。
第五章、系统设计的实现,通过对系统功能设计的详细说明,论证了系统的结构。
第六章、系统的整体测试,评判系统是否可以上线运行。
2.1 JSP技术介绍
JSP技术本身是一种脚本语言,但它的功能是十分强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了用户的需求。JavaBeans 可以对JSP技术的程序进行扩展,从而形成新的应用程序,而且JavaBeans的代码可以重复使用,所以就便于对程序进行维护。JavaBean 组件有内部的接口,可以帮助不同的人对系统进行访问。1999年,Sun微系统公司正式推出了JSP技术,这是一种动态技术,是基于整个JAVA体系和JavaServlet提出的,是具有普遍适用性的WEB技术,也是本系统设计的核心技术之一。JSP技术能够极大的提高WEB网页的运行速度。这些内容会与脚本结合,并且由JavaBean和Servlet组件封装。所有的脚本均在服务器端运行,JSP引擎会针对客户端所 提交的申请进行解释,然后生成脚本程序和JSP标识,然后通过HTML/XML页面将结果反馈给浏览器。因此,开发人员亲自设计最终页面的格式和HTML/XML标识时,完全可以使用JSP技术。
所以结合网上书城系统的需求及功能模块的实现,使用JSP技术是最合适的,而且JSP的拓展性比较好,对于系统在后期使用过程中可以不断对系统功能进行拓展,是系统更完成,更方便的满足用户管理。
2.2 JAVA简介
Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。
2.3 Tomcat服务器
Tomcat属于一种轻型的服务器,当程序员需要开发或调试JSP 程序时,则通常会将该服务器作为首选。对于一个仅具有计算机基础知识的人来说,计算机系统具有一个好的Apache服务器,可以很好的对HTML 页面进行访问。Tomcat 虽然是Apache的扩展,但是它们都是可以独立运行的,二者是不互相干扰的。当配置正确的时候,Apache服务器为HTML 页面的运行提供技术支持,Tomcat 的任务则是运行Servle和JSP 页面。Tomca也具有一定的HTML页面处理功能。
2.4 MySQL数据库
数据库是系统开发过程中不可或缺的一部分。 在WEB应用方面,MySQL AB开发了一个具有很大优势的MySQL关系数据库管理系统。 MySQL可以将数据存储在不同的表中,这非常灵活,并且还可以提高系统在实际应用中的速度。 数据库访问最常用于标准SQL语言,MySQL用于SQL语言,因此它具有高度兼容性。数据库的操作是必不可少的,包括对数据库表的增加、删除、修改、查询等功能。现如今,数据库可以分为关系型数据库和非关系型数据库,Mysql属于关系性数据库,Mysql数据库是一款小型的关系型数据库,它以其自身特点:体积小、速度快、成本低等,Mysql数据库是目前最受欢迎的开源数据库。
在WEB应用技术中, Mysql数据库支持不同的操作系统平台,虽然在不同平台下的安装和配置都不相同,但是差别也不是很大,Mysql在Windows平台下两种安装方式,二进制版和免安装版。安装完Mysql数据库之后,需要启动服务进程,相应的客户端就可以连接数据库,客户端可通过命令行或者图形界面工具登录数据库。
2.5 SSM框架
当今流行的“SSM组合框架”是Spring + SpringMVC + MyBatis的缩写,受到很多的追捧,“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架,通常更简单的数据源。Spring属于一个轻量级的反转控制框架(IoC),但它也是一个面向表面的容器(AOP)。SpringMVC常常用于控制器的分类工作模式,与模型对象分开,程序对象的作用与自动取款机进行处理。这种解耦治疗使整个系统的个性化变得更加容易。MyBatis是一个良好的可持续性框架,支持普通SQL查询,同时允许对存储过程的高级映射进行数据的优化处理。大型Java Web应用程序的由于开发成本太高,开发后难以维护和开发过程中一些难以解决的问题,而采用“SSM组合框架”,它允许建立业务层次结构,并为这个问题提供良好的解决方案。
3.1 可行性分析
3.1.1 技术可行性
系统的开发环境和配置都是可以自行安装的,使用比较成熟的Mysql数据库进行对系统用户之间的数据交互,根据技术语言对数据库管理,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。该系统目前采用比较成熟的JAVA技术,并利用其创建的脚本与结合创建动态网页。它可以在普通文本编辑器上编辑而无需编译,它可以直接在服务器上执行。它易于学习和操作,系统开发的基础是高度兼容和灵活的,从技术可行性上来分析系统开发时完全可行的。
3.1.2 经济可行性
网上书城系统的开发之前所做的市场调研及其他管理相关的系统,是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于系统的开发在经济上是完全可行的,没有任何费用支出的。
使用比较成熟的技术,系统是基于Java的开发,采用Mysql数据库。所以系统在开发人力、财力要求不高,具有经济可行性。
3.1.3 操作可行性
可操作性主要是对系统设计完成后,用户的使用体验度,通过界面导航菜单可以简单明了地进行查看所需的信息内容。对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
3.2 项目设计目标与原则
1、关于网上书城系统的基本要求
(1)功能要求:户管理、图书信息管理、一级分类管理、二级分类管理、订单评价管理、图书统计管理、系统管理、订单管理等功能模块。
(2)性能:在不同操作系统上均能无差错实现在不同类型的用户登入相应界面后能不出差错、方便地进行预期操作。
(3)安全与保密要求:用户都必须通过身份验证才能进入系统,并且用户的权限也需要根据用户的类型进行限定。
(4)环境要求:支持多种平台,可在Windows系列、Vista系统等多种操作系统下使用。
2、设计原则
系统架构设计应反映用户与整个系统接口模块之间的有效交互,以确保系统中实时数据的可扩展性和安全性。只有系统设计才能实现这一目标。可以扩展功能模块以适应系统的未来发展。
在系统的所有功能模块中,必须要保证系统的数据安全性、易用性、柔软性和扩展性,下面分别对四个性能进行详细分析。
(1)数据的安全性
对于用户进行网上购物管理所牵扯到的数据信息,必须保证系统数据的安全性,因此在系统设计过程中必须要有多方面的考虑到系统的安全问题并进行解决处理。
(2)易用性
对于易用性主要是对于系统实现完成交付给用户,用户是否可以不用培训就能够进行系统管理操作,也就是常说的傻瓜操作,一定简单明了,任何人都可以上手对数据信息进行操作管理。
(3)柔软性
对于任何一个系统的实现都会涉及的服务种类繁多,所以在设计时一定确保系统可以随时更改并且可以随时处理。
(4)扩展性
互联网的不断发展,对于系统实现的所有的功能随着用户需求的不断提高,功能模块也将要不断扩展。
由于这是一个网上书城系统,系统的设计是为了更好地节省人员成本和各种成本,因此需要考虑系统开发成本和效益。
3.3 系统流程分析
3.3.1 操作流程
对于系统的安全性的第一关,就是用户想要进入系统,必须通过登录窗口,输入自己的登录信息才可以进行登录,用户输入的信息准确无误后才可以进入到操作系统界面,进行功能模块的相对应操作,如果用户输入的信息不正确,则窗口出现提示框,用户登录失败,返回到第一步进行重新输入,如图3-1所示。
图3-1注册流程图
3.3.2 添加信息流程
对于网上书城系统,需要随时添加所需要的数据信息,对于用户添加信息,需要根据添加界面,根据选框的内容进行填写所要添加的数据信息,信息输入完成后判断数据信息是否符合要求,符合要求则添加完成,用户所添加的信息不符合要求,则需要返回到第一步,重新输入数据信息,再进行判断操作,如图3-2所示。
图3-2 添加信息流程图
3.3.3 购买操作流程分析
系统牵扯到交易过程,所以在这一流程把控是比较严格的,确保数据信息的安全。购买流程分析如图3-3所示。
图3-3 购买操作业务流程图
3.4 系统功能需求分析
任意一个新网站的开发都需要完整的任务需求分析,需求分析的质量好坏决定了一个网站开发的意义,俗话说好的开头是成功的一半,对于网上书城系统平台的设计与实现来说前期的分析更加显得尤为重要,任务分析决定了之后任务的开展和设计,只有完美的需求分析才能做出更好的让民众更为满意的网站,否则将会导致无法进行,更无法完成任务。
任务需求分析在整个系统开发的过程中是相当重要的一环,直接决定了开发过程中的软件质量,分析得是否完善,是否考虑到了每一步可能会出现的问题,这些都决定了软件能否正常运行,网站结构是否稳定,是否能让客户满意,需求分析决定了整个系统的框架、功能和要求。
本课题要求实现一套网上书城系统的设计与实现,系统主要分为前台和后台。主要包括前台:个人中心、后台管理、购物车、在线客服。后台:用户管理、图书信息管理、一级分类管理、二级分类管理、订单评价管理、图书统计管理、系统管理、订单管理等功能。
4.1系统结构设计
架构设计的目的是反映一个结构和其他元素之间的关系,抽象,通常用于指导大型软件系统。将一个巨大的任务细分为多个小任务的过程是系统架构的总体设计。完成小任务后,整个任务就可以完成了。具体的实现过程是分解系统,分析各部分的功能、接口和逻辑关系。页面是一个一个模块组建而成的,层次结构分明,思想运用的是面向对象,一个实体对应一个数据类型,还要对每个数据类添加一个实施类。
网上书城系统的实现主要包括用户和管理员两个用户角色,由于系统用户角色不同所使用的功能模块相应不同,管理员根据需求对系统功能模块进行维护管理操作。
根据我们对网上书城系统的功能要求进行分析,我们将本系统划分为以下几各主要的模块,如图4-1所示。
图4-1 系统结构图
4.2数据库设计
4.2.1 数据库E-R图设计
学习编程,我们都知道数据库设计是基于需要设计的系统功能,我们需要建立一个数据库关系模型,用于存储数据信息,这样当我们在程序中时,就没有必要为程序页面添加数据,从而提高系统的效率。数据库存储了很多信息,可以说是信息管理系统的核心和基础,数据库还提供了添加、删除、修改和检查,使系统能够快速找到自己想要的信息,而不是在程序代码中找到。数据库中信息表的每个部分根据一定的关系精确地组合,排列和组合成数据表。
通过网上书城系统的功能进行规划分成几个实体信息,实体信息将通过ER图进行说明,本系统的主要实体图如下:
(1)管理员数据E-R图,如图4-2所示:
图4-2 管理员信息实体属性图
(2)用户信息数据E-R图如图4-3所示:
图4-3 用户信息实体属性图
(3)图书信息数据E-R图如图4-4所示:
图4-4 图书信息实体属性图
(4)订单信息数据E-R图如图4-5所示:
图4-5 订单信息实体图
(6)订单评价信息数据E-R图如图4-6所示:
图4-6 订单评价信息实体图
4.2.2 数据库表设计
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
Field | Type | Comment |
id | bigint(20) | 主键 |
addtime | timestamp | 创建时间 |
userid | bigint(20) | 用户id |
address | varchar(200) | 地址 |
name | varchar(200) | 收货人 |
phone | varchar(200) | 电话 |
isdefault | varchar(200) | 是否默认地址[是/否] |
表4.2 cart信息表
Field | Type | Comment |
id | bigint(20) | 主键 |
addtime | timestamp | 创建时间 |
tablename | varchar(200) | 商品表名 |
userid | bigint(20) | 用户id |
goodid | bigint(20) | 商品id |
goodname | varchar(200) | 商品名称 |
picture | varchar(200) | 图片 |
buynumber | int(11) | 购买数量 |
price | float | 单价 |
discountprice | float | 会员价 |
表4.3 dingdanpingjia信息表
Field | Type | Comment |
id | bigint(20) | 主键 |
addtime | timestamp | 创建时间 |
dingdanbianhao | varchar(200) | 订单编号 |
pingjiabiaoti | varchar(200) | 评价标题 |
dingdanpingfen | varchar(200) | 订单评分 |
pingjianeirong | longtext | 评价内容 |
tianjiatupian | varchar(200) | 添加图片 |
pingjiariqi | date | 评价日期 |
yonghuming | varchar(200) | 用户名 |
lianxidianhua | varchar(200) | 联系电话 |
sfsh | varchar(200) | 是否审核 |
shhf | longtext | 审核回复 |
表4.4 discusstushuxinxi信息表
Field | Type | Comment |
id | bigint(20) | 主键 |
refid | bigint(20) | 关联表id |
userid | varchar(200) | 用户id' |
表4.5 erjifenlei信息表
Field | Type | Comment |
id | bigint(20) | 主键 |
addtime | timestamp | 创建时间 |
erjifenlei | varchar(200) | 订单编号 |
表4.6 shangpinchuku信息表
Field | Type | Comment |
id | bigint(20) | 主键 |
addtime | timestamp | 创建时间 |
shangpinmingcheng | varchar(200) | 商品名称 |
fenlei | varchar(200) | 分类 |
pinpai | varchar(200) | 品牌 |
guige | varchar(200) | 规格 |
shuliang | int(11) | 数量 |
beizhu | varchar(200) | 备注 |
chukuriqi | date | 出库日期 |
表4.7 news信息表
Field | Type | Comment |
id | bigint(20) | 主键 |
addtime | timestamp | 创建时间 |
title | varchar(200) | 标题 |
introduction | longtext | 简介 |
picture | varchar(200) | '图片 |
content | longtext | '图片 |
表4.8 yonghu信息表
Field | Type | Comment |
id | bigint(20) | 主键 |
addtime | timestamp | 创建时间 |
zhanghao | varchar(200) | 账号 |
mima | varchar(200) | 密码 |
xingming | varchar(200) | 姓名' |
xingbie | varchar(200) | 性别 |
shouji | varchar(200) | 手机 |
youxiang | varchar(200) | 邮箱 |
zhaopian | varchar(200) | 照片', |
dizhi | varchar(200) | 地址 |
money | float | 余额' |
表4.9 users信息表
Field | Type | Comment |
id | bigint(20) | 主键 |
username | varchar(100) | 用户名 |
password | varchar(100) | 密码 |
role | varchar(100) | '角色 |
addtime | timestamp | 新增时间' |
5 系统的实现
5.1前台功能模块
用户进入网上书城系统平台可以查看首页、图书信息、通知公告、个人中心、后台管理、购物车、在线客服等操作,系统前台主界面如图5-1所示。
正在上传…重新上传取消
图5-1 系统前台主界面
用户通过登录界面,进行在线填写用户名和密码,信息输入完成后选择提交,用户登录完成,如果用户没有自己的账号,需要在线注册成为网站会员,用户进入到注册界面,进行填写用户的基本信息内容,信息编辑完成后选择提交,如图5-2所示。
正在上传…重新上传取消
图5-2 用户注册界面
用户通过图书列表可以查看网站已有的图书类别,用户根据需求可以进行在线选择分类进行查看图书,通过图书列表查看界面展示的图书信息,如图5-3所示,用户根据自己的需求可以点击商品图片进入到图书详情界面,通过详情界面获取到图书名称、商品价格、图书编号、一级分类、二级分类、作者、出版社、出版时间、点击次数等信息,根据需求在线加入购物车操作,也可结合需求进行在线购买、点我收藏等操作,如图5-4所示。
正在上传…重新上传取消
图5-3 图列表界面
正在上传…重新上传取消
图5-4 图书详情界面
用户通过购物车界面,可以在线查看自己加入购物车的商品信息,核对购买商品、价格、数量、总价等信息,用户也可在线增减商品数量,确认信息无误后进行提交购买操作,如图5-5所示,用户提交订单,核对收货人的地址,再次确认所要购买的商品信息及订单金额,并根据需求可以在线进行支付操作,如图5-6所示。
正在上传…重新上传取消
图5-5 购物车界面
正在上传…重新上传取消
图5-6 订单界面
用户通过自己的用户中心,通过个人中心、我的订单、我的地址、我的收藏等功能模块,进行相对应操作,通过个人中心可以进行在线更新个人信息资料操作,如图5-7所示。我的订单:通过列表可以获取订单编号、商品、价格、数量、总价、地址等信息内容,进行查看或退款操作,如图5-8所示。
正在上传…重新上传取消
图5-7个人中心界面
正在上传…重新上传取消
图5-8我的订单界面
订单评价管理,用户根据自己的订单信息,可以进行订单评价操作,通过编辑订单编号、评价名称、图书评价、图书质量、综合评分、评语、账号、姓名等,信息编辑完成后进行提交,等待管理员审核完成后,通过前台的商品详情界面可以在线查看评论的内容,如图5-9所示。
正在上传…重新上传取消
图5-9用户订单评价界面
5.2后台功能模块
管理员通过登录窗口进行输入自己的账号信息进行在线登录,登录完成后可以对系统所有的个人中心、用户管理、图书信息管理、一级分类管理、二级分类管理、订单评价管理、图书统计管理、系统管理、订单管理等功能模块进行在线编辑或者删除等操作。
用户管理,管理员根据需求可以在线查看系统已有的用户信息,用户名、密码、姓名、头像、性别、联系电话、邮箱、照片、地址等信息,并结合需求可以对已有的用户信息进行在线查看或者删除等操作,如图5-10所示。
正在上传…重新上传取消
图5-10用户管理界面
图书信息管理,对于管理员可以查看系统所有的图书信息并对已有的图书信息进行编辑或者删除等操作,也可对已有的图书信息详情、修改或查看评论、删除操作,如图5-11所示,管理员根据需求可以在线添加新的商品信息,管理员进入到商品添加界面,编辑图书编号、图书名称、一级分类、二级分类、图片、作者、出版时间、简介等信息,信息编辑完成后核对信息无误后进行提交,新的图书信息添加完成,方便用户通过前台进行商品信息的查看等,如图5-12所示。
正在上传…重新上传取消
图5-11 商品管理界面
正在上传…重新上传取消
图5-12 添加商品信息界面
订单评价管理,订单评价数据信息都是由用户所购买的图书订单完成后所提交的订单评价,管理员根据用户提交的评价编号、图书名称、图书评价、图书质量、综合质量、综合评分、评语、账号、姓名等信息,管理员可以对已有的评价信息进行在线删除等操作,如图5-13所示。
正在上传…重新上传取消
图5-13 订单评价管理界面
6 系统测试
6.1系统测试的目的
程序设计不能保证没有错误,这是一个开发过程,在程序运行的过程中是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息,系统无法正常启动等,为了避免这些问题,我们需要测试程序,并发现这些问题,并纠正它们,并使系统更长时间稳定成熟,本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但长期非常重要和必要系统的开发。
网上书城系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在系统正式上传和使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
6.2系统测试方法
在对网上书城系统平台进行测试的时候在找到问题的情况下必须在第一时间找到解决问题的办法,不要存在侥幸的心理,这样才能让网上书城系统管理系统开发的质量可以过关,并且开发的周期会大大缩短,还有就是在测试时,不要出现重复性的错误,遇到一个错误问题,要将整个网上书城系统平台开发所牵扯的该问题都必须一一解决,提高网上书城系统管理平台的安全性、稳定性。
白盒测试与黑盒测试是测试中比较常用的两种方法。
①结构测试俗称白盒测试:这种测试是在对程序的处理过程与结构都有详尽谅解的前提下,顺从程序内部的逻辑而完成的系统测试,以确定系统中所有的通路都能够遵照设计要求正常工作,不出现任何偏差。
②功能测试又成黑盒测试:主要是针对程序功能能够按照设计正常实现的一种检测,在程序接口处进行,检测程序手法数据是否正常,与外部信息的交换是否完整。
6.3功能测试
测试系统是最新的Windows 10系统,通过对系统实现的功能模块进行每个功能模块的操作测试,查看每个用户的功能模块所对应的权限信息是否可以操作并且数据信息更新一致。
测试需求 | 测试重点 | 是否达成需求 | 结果 |
用户登录 | 输入账号密码 | 需求达成 | 通过 |
登录失败 | 输入错误账号密码 | 需求达成 | 通过 |
修改信息 | 修改成功 | 需求达成 | 通过 |
添加信息管理 | 增删查改 | 需求达成 | 通过 |
图书管理 | 增删查改 | 需求达成 | 通过 |
订单管理 | 增删查改 | 需求达成 | 通过 |
订单评价管理 | 增删查改 | 需求达成 | 通过 |
系统测试方面,我们通常运用的是白盒测试以及黑盒测试这两种方法。白盒测试是指在了解系统内部工作流程的前提下,可以根据需求规范验证系统内部操作是否能够正常运行的测试;而黑盒测试指的是,倘若知道了这个系统的全部功能,可以进行测试检测系统中的每一个功能是否满足正常使用。
为了方便用户使用“网上书城系统”,以及尽可能少的减少系统测试错误的发生,我们对该系统进行了相对应的测试。
对该系统的全部的功能界面进行测试,简单来说,就是我们输入一些数据并且对其进行提交,之后我们查看每个页面的反馈,检测页面的相关功能可不可以完全实现。
总 结
此时项目已经完成,即使实施的时间不是很长,但是这个过程中需要准备很长的一段时间去对系统设计开发所实际到的技术进行学习。在学习的过程中,我逐渐认识得到了我自身存在的一些不足。对于一些控制是必要的应用技能,能够理解,整个过程中仅仅是一个掌握了常用的性能和控制方法。从系统的分析调查数据到系统的设计实现,整个过程经历了几个月,自己也努力了几个月,但是系统仍有很多不成熟的地方,在系统设计过程中有许多技术缺陷存在其中也涉及到了很多自己无法解决的问题,主要通过找专业的网站和论坛来解决这些问题,对于圆满完成我的毕业设计,他们也贡献了很大一部分力量。系统的开发环境和配置都是可以自行安装的,系统使用Java开发工具,使用比较成熟的Mysql数据库进行系统数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
回顾毕业设计的整个过程,既付出汗水也收获了很多。虽然经历了各种各样的困难,自己的不断研究探索,系统的实现仍有不足之处。
在以后的学习及工作中,我仍然继续学习计算机方面的技术,让我在后期的平台开发中可以更好更快的实现需求功能。我相信我可以让更多的好工作,做出更大的贡献。
致 谢
网上书城系统的完成,如何实现的更好,其中付出的努力是很大的,这段时光将会终身难忘。
第一个要感谢的就是我的指导老师,谢谢您在设计和论文中给我的指导。在您的细心指导下我才能快速的掌握系统的相关功能,在您的大力帮助下我才能将课本上的知识与自己的项目结合,真正的做到学以致用。感谢您经常牺牲自己的休息时间,利用其丰富的教学和项目经验对我进行指导。
最终网上书城系统可以顺利的运行,我们在交流、谈论的这段时间将是我未来的财富,我要深深地感谢你们!
参考文献
- 范立峰,乔世全,程文彬 JSP程序设计 人民邮电大学出版社 2016。
- (美)Kevin Mukhar, Chris Zelenak , James L.Weaver,Jim Crume ,JavaEE 5 开发指南,机械工业出版社,2016。
- 陈雄华 企业应用开发详解 电子大学出版社,2017。
- 李宁Java Web开发技术大全--JSP+Servlet清华大学出版社,2017。
- 聂哲 JSP动态WEB技术实例教程。
- 李绪成,闫海珍 java Web开发教程—入门与提高篇(JSP+Servlet) 清华大学出版社 2009 。
- 史胜辉,王春明,沈学华 JavaEE基础教程 清华大学出版社 2013 。
- 霍尔等著 Mysql与JSP核心编程 北京 清华大学出版社 2013
- Joyce Farrell著 Java编程(英文影印版) 科学出版社 2011
- 郭克华编 JavaEE程序设计与应用开发 北京 清华大学出版社 2015
- 埃克尔著,陈昊鹏译.Java编程思想[M].(第4版).北京:机械工业出版社,2017:17-690.
- Robert W.Sebesta著,刘伟琴等译.Web程序设计[M].(第4版).北京:清华大学出版社,2018:9-450.
- 赵强 编著.精通JSP编程[M].北京:电子工业出版社,2016:34-56.
- 萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2015:10-180.
- 陈刚.MyEclipse从入门到精通[M].北京:清华大学出版社,2017:17-380.
- 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2014:19-421.
核心代码展示
/**
* 公告通知
* 后端接口
* @author
* @email
* @date 2021-03-09 11:33:59
*/
@RestController
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(NewsEntity news){
EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
NewsView newsView = newsService.selectView(ew);
return R.ok("查询公告通知成功").put("data", newsView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request){
//ValidatorUtils.validateEntity(news);
newsService.updateById(news);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
newsService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = newsService.selectCount(wrapper);
return R.ok().put("count", count);
}
}