基于SpringBoot的闲置商品管理系统

目 录

摘 要 I

Abstract II

引 言 1

1 相关技术 3

1.1 SpringBoot框架 3

1.2 MyBatis框架 4

1.3 MySQL数据库 4

1.4 Bootstrap框架 5

1.5 JQuery技术 6

1.6 本章小结 6

2 系统分析 7

2.1 功能需求分析 7

2.2 非功能需求 9

2.3 本章小结 10

3 系统设计 11

3.1 系统总体设计 11

3.1.1 系统体系结构 11

3.1.2 系统层次结构 11

3.1.3 系统功能结构 12

3.2 系统详细设计 12

3.2.1 数据库设计 12

3.2.2 系统功能设计 17

3.2.3 核心功能设计 21

3.3 本章小结 22

4 系统实现 23

4.1 开发环境 23

4.2 开发规范 23

4.3 数据库实现 23

4.4 功能实现 24

4.5 本章小结 27

5 系统测试 28

5.1 用例测试 28

5.2 压力测试 29

5.4 本章小结 30

结 论 31

致 谢 32

参考文献 33

摘 要

当今世界随着科技和经济的迅猛发展,新商品如喷泉一样涌入市场,商品市场可以说是琳琅满目、日新月异,这促使人们买卖速度不断增加。随着新型商品的不断更迭,旧的物品将会受到轮换淘汰的命运,但是它们并未失去其作为商品的本质实用价值,这是由于物品的社会属性在不同的消费群体中,有着不一样的物价标准。

虽然目前市场上有很多的商品回收系统,如各手机厂商回收手机、电脑厂商回收电脑等,也有很多闲置商品交易系统,如咸鱼、二手货等,但是还没有发现一家能够收购所有物品,并对物品维修分类,将物品再次处理的系统。为了旧物品重新焕发青春,实现其本质实用价值,建立一个循环利用闲置淘汰物品的服务交易平台是十分必要的。

通过对物品回收的应用及流程进行业务流程调研,本文运用瀑布式开发模式,使用SpringBoot+Mybatis作为后台java架构,采用JQuery+Bootstrap作为视图层框架,采用MySql作为后台数据库开发并实现了基于SpringBoot的闲置商品管理系统,本文所使用技术使开发变得更敏捷,使系统更加高效、扩展性更好。通过系统行的开发编码,严密的用例、压力测试,基于SpringBoot的闲置商品管理系统中各模块均已成功实现。

关键词:Springboot; 物品回收; 管理系统

Abstract

With the rapid development of science and technology and economy in the world today, new commodities flow into the market like fountains. The commodity market can be said to be dazzling and changing with each passing day, which makes people's buying and selling speed increasing. With the continuous change of new goods, the old goods will be eliminated by rotation, but they do not lose their essential practical value as goods, because the social attributes of goods in different consumer groups have different price tandards.

Although there are many commodity recycling systems in the market at present, such as mobile phone manufacturers recycling mobile phones, computer manufacturers recycling computers, and many idle commodity trading systems, such as salted fish, second-hand goods, etc., no system has been found that can purchase all items, maintain and classify the items, and dispose of the items again. In order to rejuvenate the old goods and realize their essential practical value, it is necessary to establish a service trading platform for recycling unused and obsolete goods.

Through the business process research on the application and process of item recycling, this paper uses waterfall development mode, spring boot + mybatis as the background Java architecture, jQuery + Bootstrap as the view layer framework, MySQL is used as the backstage database to develop and implement the idle commodity management system based on spring boot. The technology used in this paper makes the development more agile, and makes the system more efficient and extensible. Through the development coding of the system line, tight use case and stress test, all modules in the idle commodity management system based on spring boot have been successfully implemented.

Keywords: Springboot; Item recycling; management system

引 言

随着互联网经济的蓬勃发展,电子商务也发展的日益强大,商家的促销,使得网购人群频频冲动购物[1],这样就导致有一部分人,会积压很多自己已经用不到的物品,但这些物品并不是完全没有使用价值,同时也无法全部处理,使得了手闲置商品的交易日趋繁荣。

放眼国内外,由于互联网的发展,网购的流行,欧美发达国家发展越为成熟,相对于欧美地区和其他发达国家来说,中国在该领域的起步较晚,但是由于中国人口众多,还是有很强的发展潜力。本文针对当前存在的此种需求开发了基于SpringBoot的闲置商品管理系统。该系统将通过合理的定价,完善的交易规则,拟让消费者和出售者都能满意。让有价值的物品换一个环境,充分发挥价值,让合适的人选择合适的商品,达到互惠互利的效果。

本项目拟采用瀑布开发模式,使用JavaWeb技术进行设计,使用SpringBoot作为Java后台开发框架[2],使用Mybatis作为持久层框架对数据库操作进行了统一管理,并利用Mybatis官方提供的逆向工程方法生成entity层、mapper及xml文件,使用JQuery作为前端的脚本语言,使用Bootstrap作为CSS框架,将JSP页面结合JQuery+Bootstrap以及Ajax完成页面相关功能[3],这些技术的结合使开发变得更加的敏捷,并且可以效的提高开发效率和降低耦合性,同时使用开源的MySql作为本系统的储存数据库,解决方案丰富且开发零成本。志在制作出一款界面美观、操作简捷、实施维护方便、系统稳定可靠且真正惠利于人们的系统,解决用户一方面又给自己带来了困扰,另一方面又造成了不必要的浪费困难。

本系统采用分层模式,将整个系统分为五个层次:dao层、entity层、service层、controller层、view层,并使每个层次进行分离,有利于对业务进行单独管理,为程序二次开发提供更多便利。本系统设计并完成五个模块:系统管理模块、公司管理模块、库存管理模块、物品管理模块、估价系统模块、其他功能模块。

本文的大致结构是:引言,描述本系统的选题背景意义和发展趋势;第一章为相关技术,对开发此系统Java框架、持久层框架、页面框架、数据库进行了综述,;第二章为需求分析,通过对系统进行需求分析,综述了本系统需要完成的功能;第三章为系统设计,综述了系统体系结构、层次结构、功能结构、系统功能、数据库的设计;第四章为功能实现,综述了开发环境、开发规范、数据库实现、核心功能实现;第五章为系统测试,综述了用例测试及压力测试;最后对论文及系统做了总结。

1 相关技术

1.1 SpringBoot框架

SpringBoot是于2014年4月由Pivotal团队开源的一种基于Spring的全新框架,它基于Spring4.0设计[4],在Spring框架原有的优秀特性上,秉持着"约定大于配置"的思想,大大简化了Spring应用程序各个方面的配置,大多数的SpringBoot程序,只需要很少的配置,就可以创建一个稳定的、优秀的、产品级别的Spring应用,极大地提高了开发效率,并且可以添加更多的微服务,而不会互相影响。

同时,SpringBoot框架还具有以下几个优点:

(1)SpringBoot提供了可以针对大多数Spring应用常用功能的相关配置。

(2)提供了新型的POM启动方式,简化了Spring与Maven的配置[5]。

(3)定义了部分注解,并且可以形成AOP,可以高效的降低代码的重复率及各组件间的耦合。

SpringBoot框架结构如图1.1所示。

图1.1 SpringBoot框架示意图

1.2 MyBatis框架

在JavaEE程序开发过程中,程序对数据库的操作通常通过JDBC数据库连接技术实现。随着敏捷开发观点的提出、计算机技术的不断发展,开发人员对JDBC进行封装,形成基于Java的持久层框架Ibatis[6]。

Ibatis在2001年由Clinton Begin发起的开放源代码项目, 2016年6月被Google托管,Ibatis3.x正式改名为Mybatis3.x,之后一直沿用名称Mybatis。Mybatis的配置文件和有些注解都可以改变Mybatis的配置参数,在程序运行时,Mybatis会将需要执行的SQL与入参出参配置信息加载为MappedStatement,并将其放入内存中,以便调用。Mybatis工作流程如图1.2所示。

图1.2 Mybatis工作流程

1.3 MySQL数据库

MySQL是一种处理关系型的数据库系统,能够支持标准的数据结构化的查询语句。MySQL把服务器的数据相关的行和列组织起来管理关系数据库,所以叫做关系型数据库管理系统,关系型可以理解为一张二维表。MySQL的优点是速度快、可靠性强以及适应性高[7]。如果不进行事务处理的话,MySQL无疑是最好的选择。

MySQL是主流的数据库产品,它具有的兼容性、可移植性、可联结性、高生产率和开放性的特点[8]。选择MySQL作为基于SpringBoot的闲置商品管理系统的数据库,是为今后更复杂的项目开发打下基础,从而避免被相关技术问题所困扰。MySQL现在已经归属于Oracle公司了,运用Oracle数据库的人越来越多,但是由于Oracle使用会产生费用的问题,大部分的中小企业仍旧使用MySQL作为数据管理工具。

1.4 Bootstrap框架

Bootstrap最初由Twitter公司的几个前端开发工作人员于2010年6月创建的工具包,2011年8月由Twitter公司将其开源,至今Bootstrap已发展到包括几十个组件,是一种精致的、经典的、得到充分认可的,并已成为最受欢迎的Web前端框架之一。Bootstrap目录结构如图1.3所示。

图1.3Bootstrap目录结构

Bootstrap学习成本低,可以让所有开发者快速的上手开发,可以适配大多数设备。并且提供了一个带有链接样式、栅格系统、背景的基本结构,并且自带了全局CSS设置,自带了基本的HTML样式[9]。

Bootstrap结合了常见的CSS样式和JavaScript插件封装成的性能良好的库[10]。这方便了开发者,使开发者即使对前端代码不够熟悉,也可以迅速的上手开发。很大程度上提高了开发的效率,并且根据一定的规则编写符合规范的CSS和JavaScript代码。这帮助开发者省去了前端页面开发的时间。

1.5 JQuery技术

jQuery库是一个快速、简洁的对浏览器兼容性较强的JavaScript库,jQuery的宗旨是用更少的代码[11],做更多的事情。jQuery对JavaScript进行封装,为使用者提供一种简便的解决方案,可以更方便的处理HTML,可以很轻易的将结构与行为分离。jQuery具有独特的链式语法和短小清晰的多功能接口,具有高效灵活的CSS选择器[12],并且可对CSS选择器进行扩展,拥有便捷的插件扩展机制和丰富的插件,jQuery能够修改dom节点为页面增加更多效果。

1.6 本章小结

本章主要介绍了基于SpringBoot的闲置商品管理系统在开发过程中将会使用到的技术,后台开发框架使用SpringBoot,持久化框架使用Mybatis,使用JQuery作为前端的脚本语言,使用Bootstrap作为CSS框架,使用MySQL作为系统数据库。通过对这些技术的深入学习,为整个项目的实现打下良好的基础。

2 系统分析

2.1 功能需求分析

经过对现有系统常规功能和闲置商品管理系统等为目的的系统功能的分析,确定闲置商品管理系统的基本功能包括:门店管理、员工管理、财务信息管理、物品分类管理、收支管理、使用者管理、门店显示、物品管理、新增库存管理、维修管理、估计、出库管理、库存管理、入库管理、角色管理、权限管理、系统监控信息管理、日志信息管理[13]、字典信息管理功能。功能用例图如图2.1所示。

图2.1 闲置商品管理系统用例图

字典信息管理应当实现如下功能:系统用户通过规定所用的浏览器,访问本系统时,可以进入到字典信息管理页面查看字典信息,通过特定的行为,还可以对字典信息进行相应的增删改等操作,并且还应当具有分页和模糊查询的功能。

收支管理应当实现如下功能:系统用户通过规定所用的浏览器,访问本系统时,可以进入到收支管理页面查看收支信息,通过特定的行为,还可以对字典信息进行相应的增删改等操作,并且还应当具有分页和模糊查询的功能。

商品分类管理应当实现如下功能:系统用户通过规定所用的浏览器,访问本系统时,可以进入到商品分类管理页面查看看商品分类信息,通过特定的行为,还可以对字典信息进行相应的增删改等操作,并且还应当具有分页和模糊查询的功能。

财务信息管理应当实现如下功能:系统用户通过规定所用的浏览器,访问本系统时,可以进入到财务管理页面查看财务信息,通过特定的行为,还可以对字典信息进行相应的增删改等操作,并且还应当具有分页和模糊查询的功能。

用户角色管理应当实现如下功能:系统用户通过规定所用的浏览器,访问本系统时,可以进入到用户角色管理页面查看用户角色信息,通过特定的行为,还可以对字典信息进行相应的增删改等操作,并且还应当具有分页和模糊查询的功能。

系统用户管理应当实现如下功能:系统用户通过规定所用的浏览器,访问本系统时,可以进入到系统用户管理页面查看系统用户信息,通过特定的行为,还可以对字典信息进行相应的增删改等操作,并且还应当具有分页和模糊查询的功能。

库存信息管理应当实现如下功能:系统用户通过规定所用的浏览器,访问本系统时,可以进入到库存信息管理页面查看库存信息,通过特定的行为,还可以对字典信息进行相应的增删改等操作,并且还应当具有分页和模糊查询的功能。

系统权限管理应当实现如下功能:系统用户打开规定所用的浏览器,访问本系统时,可以进入到系统权限管理页面查看系统权限信息,通过特定的行为,还可以对字典信息进行相应的增删改等操作,并且还应当具有分页和模糊查询的功能。

估价系统应当实现如下功能:用户打开规定所用的浏览器,访问本系统时,可以进入到估价系统,用户可以从系统提供的估价商品中进行选择,在根据物品的各方面完好程度进行对应性的估价,且可以联系到系统维护者。

门店地图展示功能:用户打开规定所用的浏览器,访问本系统时,可以进入到首页,首页应当在地图上展示出所有的门店信息,并可以对地图做相应的操作。

基于SpringBoot的闲置商品管理系统的大部分功能如表2.1所示。

表2.1 闲置商品管理系统用例表

序号 参与者 用例名称 用例说明

1 AbnormalsSelect 查询异常信息

2 Add Admins 增加系统用户

3 Delete Admins 删除系统用户

4 Update Admins 修改系统用户

5 Get Admins 查询系统用户

6 Add Budgets 增加收支信息

7 Delete Budgets 删除收支信息

8 Update Budgets 修改收支信息

9 Get Budgets 查询收支信息

10 Add Dictionaries 增加字典信息

11 Delete Dictionaries 删除字典信息

12 Update Dictionaries 修改字典信息

13 Get Dictionaries 查询字典信息

14 用户 Get Journals 查询日志信息

15 Add Classifications 增加商品分类信息

16 Delete Classifications 删除商品分类信息

17 Update Classifications 修改商品分类信息

18 Get Classifications 查询商品分类信息

19 Add Finances 增加财务信息

20 Delete Finances 删除财务信息

21 Update Finances 修改财务信息

23 Get J Finances 查询财务信息

24 Add Roles 增加用户角色

25 Delete Roles 删除用户角色

26 Update Roles 修改用户角色

2.2 非功能需求

非功能需求包括对服务器硬件和软件要求、客户端软件要求、访问容量以及响应时间。软件要求主要是指对相关操作系统、Web服务器等要求。

非功能需求的符合程度,将会直接影响程序是否能够正常运行,影响用户的体验程度。基于SpringBoot的闲置商品管理系统的非功能需求是功能需求分析介绍的功能以外的特性,包括对服务器硬件、软件要求要求、访问容量以及响应时间。软件要求主要是指对相关操作系统、数据库服务器等之类的要求。如图2.2所示。

图2.2非功能需求清单

2.3 本章小结

本章主要介绍了基于SpringBoot的闲置商品管理系统的需求分析,分别从功能需求和非功能需求进行分析[14],使用用例图展示了用例之间的关系及其功能,使用图表分别介绍了服务器硬件要求、服务器端软件要求、客户端软件要求等。

3 系统设计

3.1 系统总体设计

3.1.1 系统体系结构

本系统将采B/S结构。把业务逻辑的代码放在服务器端,很大程度上减轻了浏览器端的负担,用户在浏览器端只需要传输数据,数据传入到后端服务器后就会处理此功能的业务逻辑。客户机上只要安装一个主流浏览器[15],就可以实现系统的功能。

3.1.2 系统层次结构

在系统操作过程中,用户通过操作view层产生请求,controller层接到请求调用service层进行逻辑处理,并将相应的数据库操作请求提交到dao层,dao层再通过特定的方法操作数据库,并将结果一路返回到view层[16],其中entity层作为参数参与到整个流程中。具体层次结构如图2.1所示。

图2.1层次结构图

entity层:又称为bean层,存放与数据表数据类型、名称相同的实体类。实体类对象与数据库中的数据表具有一一对应的映射关系,所有需要进行数据处理的字段都需要依赖对象模型,所以在开发项目时传入的参数和用到的方法都依赖于该层。

dao层:又称为mapper层,它的功能都是对数据库中各个表的进行执行SQL的操作。dao层的类仅仅为方法接口,具体的操作SQL在mapper.xml中定意。

service层:又称为业务层,存放系统功能的逻辑处理,不直接操作数据库,操作数据库依赖于dao层[17],为controller层提供方法,进行相应的业务处理。

controller层:又称为控制器层,接收view层传过来的AJAX请求并接收其参数,自动注入加载service层,在对数据简单处理后调用service层方法,再将service处理后的数据返回给view层。

View层:又称为UI、User Interface层,向用户展示经过基于SpringBoot的闲置商品管理系统处理后的数据,即展示的需求功能、图表等。用户对界面做出相应的操作,通过AJAX将数据提交到后台controller层,做出相应操作。

3.1.3 系统功能结构

本系统的功能分为六大模块:系统管理模块、公司管理模块、库存管理模块、物品管理模块、估价系统模块、其他功能模块。系统管理模块包括:系统异常管理、字典信息管理、日志信息管理、系统监控、权限管理、角色管理;公司管理模块包括:使用者管理、收支管理、商品分类管理、财务信息管理、员工管理、门店管理;库存管理包括:入库管理、库存管理、出库管理;物品管理模块包括:维修管理、新增库存管理、物品管理;估价模块:估价;其他模块:登录、门店显示、退出登录[18]。具体功能结构图,如图3.2所示。

图3.2 系统功能结构图

3.2 系统详细设计

3.2.1 数据库设计

根据上面描述的需求分析和系统设计,以及分析整个系统的业务流程根据功能设计,形成数据概念模型,具体如图3.3所示。

图3.3 数据库设计ER图

收支管理表(budgets)用来储存收支管理,以自增长字段BudgetId为主键,使每条记录具有唯一性,储存用户所搜索过的收支管理内容。具体字段如表3.1所示。

表3.1 收支管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

BudgetId INT(11) 非空 Al PK 编号

type VARCHAR(45) 非空 收支类型

money FLOAT 非空 收支金额

content VARCHAR(45) 非空 备注内容

addtime DATETIME 非空 添加时间

商品分类表(classifications)用来储存商品分类,以自增长字段classificationid为主键,储存用户所搜索过的商品分类内容。具体字段如表3.2所示。

表3.2 商品分类表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

classificationid INT(11) 非空 Al PK 编号

Grade INT(11) 非空 商品等级

Superior INT(11) 非空 上级

name VARCHAR(45) 非空 名称

price FLOAT 非空 价格

字典管理表(dictionaries)用来储存字典管理,以自增长字段dictionarieId为主键,储存用户所搜索过的字典管理内容。具体字段如表3.3所示。

表3.3 字典管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

dictionarieId INT(11) 非空 Al PK 编号

title VARCHAR(45) 非空 标题

intCon VARCHAR(45) 非空 数字内容

StringCon VARCHAR(45) 非空 文字内容

addtime DATETIME 非空 添加时间

财务管理表(finances)用来储存财务管理,以自增长字段FinanceId为主键,储存用户所搜索过的财务管理内容。具体字段如表3.4所示。

表3.4 财务管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

FinanceId INT(11) 非空 Al PK 编号

money FLOAT 非空 金额

addtime DATETIME 非空 添加时间

入库管理表(inputstocks)用来储存入库管理,以自增长字段dictionarieId为主键,储存用户所搜索过的入库管理内容。具体字段如表3.5所示。

表3.5 入库管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

inputStockid INT(11) 非空 Al PK 编号

name VARCHAR(45) 非空 物品名称

staffName VARCHAR(45) 非空 负责人

price FLOAT 非空 价格

number INT(11) 非空 数量

phone VARCHAR(45) 非空 联系电话

source VARCHAR(45) 非空 物品来源

remarks VARCHAR(45) 非空 备注

addtime DATETIME 非空 入库时间

系统日志表(journals)用来储存系统日志,以自增长字段Journalid为主键,储存用户所搜索过的系统日志内容。具体字段如表3.6所示。

表3.6 系统日志表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

Journalid INT(11) 非空 Al PK 编号

Grade INT(11) 非空 日志等级

content VARCHAR(200) 非空 日志内容

addtime DATETIME 非空 产生时间

权限管理表(jurisdictions)用来储存系统权限管理,以自增长字段JurisdictionId为主键,储存用户所搜索过的权限管理内容。具体字段如表3.7所示。

表3.7 权限管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

JurisdictionId INT(11) 非空 Al PK 编号

Grade INT(11) 非空 权限等级

content VARCHAR(45) 非空 权限内容

addtime DATETIME 非空 添加时间

系统监控表(monitors)用来储存系统监控,以自增长字段monitorId为主键,使每条记录具有唯一性,储存用户所搜索过的系统监控内容。具体字段如表3.8所示。

表3.8 系统监控表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

monitorId INT(11) 非空 Al PK 编号

Monitorscol VARCHAR(45) 非空 监控内容

state VARCHAR(45) 非空 状态

addtime DATETIME 非空 更新时间

出库管理表(outstocks)用来储存出库管理信息,以自增长字段outStockId为主键,储存用户所搜索过的出库管理内容。具体字段如表3.9所示。

表3.9 出库管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

outStockId INT(11) 非空 Al PK 编号

name VARCHAR(45) 非空 物品名称

staffName VARCHAR(45) 非空 负责人

money FLOAT 非空 价格

number INT(11) 非空 数量

addtime DATETIME 非空 出库时间

价格管理表(prices)用来储存价格管理信息,以自增长字段PriceId为主键,使每条记录具有唯一性,储存用户所搜索过的价格管理内容。具体字段如表3.10所示。

表3.10 价格管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

PriceId INT(11) 非空 Al PK 编号

name VARCHAR(45) 非空 名称

Price FLOAT 非空 价格

addtime DATETIME 非空 更新时间

维修管理表(repairs)用来储存维修管理信息,以自增长字段RepairId为主键,使每条记录具有唯一性,储存用户所搜索过的维修管理内容。具体字段如表3.11所示。

表3.11 维修管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

RepairId INT(11) 非空 Al PK 编号

warehousingid INT(11) 非空 入库ID

staffName VARCHAR(45) 非空 负责人

money FLOAT 非空 维修价格

remarks VARCHAR(45) 非空 备注

addtime DATETIME 非空 添加时间

角色管理表(roles)用来储存维角色管理信息,以自增长字段roleid为主键,使每条记录具有唯一性,储存用户所搜索过的角色管理内容。具体字段如表3.12所示。

表3.12 角色管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

roleid INT(11) 非空 Al PK 编号

name VARCHAR(45) 非空 角色名称

jurisdictionId INT(11) 非空 权限id

addtime DATETIME 非空 添加时间

员工管理表(staffs)用来储存维角色员工信息,以自增长字段roleid为主键,使每条记录具有唯一性,储存用户所搜索过的员工管理内容。具体字段如表3.13所示。

表3.13 员工管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

staffId INT(11) 非空 Al PK 编号

name VARCHAR(45) 非空 员工姓名

idCard BRIGINT(20) 非空 身份证号

age INT(11) 非空 年龄

gender VARCHAR(45) 非空 性别

birthday DATETIME 非空 生日

addTime DATETIME 非空 添加时间

salary FLOAT 非空 工资

reserve1 VARCHAR(45) 非空 预留1

reserve2 VARCHAR(45) 非空 预留2

reserve3 VARCHAR(45) 非空 预留3

Reserve4 VARCHAR(45) 非空 预留4

Reserve5 VARCHAR(45) 非空 预留5

库存管理表(stocks)用来储存维库存管理信息,以自增长字段Stockid为主键,使每条记录具有唯一性,储存系统所需要的库存管理内容。具体字段如表3.14所示。

表3.14 库存管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

Stockid INT(11) 非空 Al PK 编号

WarehousingId INT(11) 非空 总如入库数

Repairid INT(11) 非空 修理

stsffName VARCHAR(45) 非空 负责人

name VARCHAR(45) 非空 物品名称

Price FLOAT 非空 价格

addTime DATEMATE 非空 添加时间

门店管理表(stores)用来储存维门店管理信息,以自增长字段storeId为主键,使每条记录具有唯一性,储存用户所搜索过的门店管理内容。具体字段如表3.15所示。

表3.15 门店管理表

列名 数据类型(Datatype) 空/非空(NN) 约束条件 备注

storeId INT(11) 非空 Al PK 编号

name VARCHAR(45) 非空 名称

phone VARCHAR(45) 非空 联系方式

urgentPhone VARCHAR(45) 非空 紧急联系方式

province VARCHAR(45) 非空 省/直辖市/自治区

city VARCHAR(45) 非空 市

area VARCHAR(45) 非空 区/县

detailed VARCHAR(100) 非空 详细地址

addTime DATEMATE 非空 添加时间

3.2.2 系统功能设计

这一部分主要描述的是该系统对各个功能模块的设计。在设计系统功能时,用时序图来对功能进行更直观地展现,并配以功能描述来对功能进行详细解释。以下完成了主要核心功能的系统设计。

系统权限管理,用户首先登录闲置商品管理系统,点击系统权限管理,进入系统权限管理主页面,用户点击查询,用户进入Jurisdictions界面,输入数据,在当前界面将信息传递到JurisdictionInsert,调用service层功能增加权限信息,通过mapper将数据传入数据库,根据对应的方法调用xml文件的新增功能,再调用SQL方法,根据结果并返回数据。该功能的时序图如图3.4所示。

图3.4 新增系统管理权限时序图

系统权限管理功能设计,用户首先登录闲置商品管理系统,进入Jurisdictions界面,选择是否可立项,将当前界面将信息传递到JurisdictionInsert,调用service层新增系统权限信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的增加系统权限,并返回数据。具体功能描述见表3.16。

表3.16 新增系统管理权限功能描述

编号 类名 功能描述

1 Jurisdictions 调用新增方法,查到原有内容,输入新增内容,并提交信息给后台

2 Jurisdictions Insert 在控制层获取到的新增权限管理信息并调用对应增加权限管理的service方法

3 Jurisdictions Service 通过传入的数据进行业务逻辑的处理并调用对应的mapper方法

4 Jurisdictions Mapper 在数据访问层增加用户权限,增加后的信息返回前端界面

5 Jurisdictions 增加完成后,自动跳转至系统权限管理列表页

系统权限管理功能设计,用户首先登录闲置商品管理系统,进入Jurisdictions界面,选择是否可立项,将当前界面将信息传递到JurisdictionDelete,调用service层删改系统权限信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的删改系统权限,并返回数据。该功能的时序图如图3.5所示。

图3.5 删改系统管理权限时序图

系统权限管理功能设计,用户首先登录闲置商品管理系统,进入Jurisdictions界面,选择是否可立项,将当前界面将信息传递到JurisdictionDelete,调用service层删改系统权限信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的删改系统权限,并返回数据。具体功能描述见表3.17。

表3.17 删改系统管理权限功能描述

编号 类名 功能描述

1 Jurisdictions 调用删改方法,查到原有内容,输入需要删除或修改的内容,并提交信息给后台

2 Jurisdictions Delete 在控制层获取到的需要删除或修改的权限管理信息并调用对应增加权限管理的service方法

3 Jurisdictions Service 通过传入的数据进行业务逻辑的处理并调用对应的mapper方法

4 Jurisdictions Mapper 在数据访问层删改用户权限,删改信息后返回前端界面

5 Jurisdictions 删改完成后,自动跳转至系统权限管理列表页

收支信息管理,用户首先登录闲置商品管理系统,点击收支管理,进入收支管理主页面,用户点击查询,用户进入Budgets界面,输入数据,在当前界面将信息传递到BudgetsInsert,调用service层功能增加收支信息,通过mapper将数据传入数据库,根据对应的方法调用xml文件的新增功能,并返回数据。该功能的时序图如图3.6所示。

图3.6 新增收支信息时序图

收支管理功能设计,用户首先登录闲置商品管理系统,进入Budgets界面,选择是否可立项,将当前界面将信息传递到BudgetsInsert,调用service层新增系统权限信息的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的增加系统权限,并返回数据。具体功能描述见表3.18。

表3.18 新增收支信息功能描述

编号 类名 功能描述

1 Budgets 调用新增方法,查到原有内容,输入新增内容,并提交信息给后台

2 Budgets Insert 在控制层获取到的新增收支管理信息并调用对应增加收支管理的service方法

3 Budgets Service 通过传入的数据进行业务逻辑的处理并调用对应的mapper方法

4 Budgets Mapper 在数据访问层增加收支信息,增加后的信息返回前端界面

5 Budgetsdictions 增加完成后,自动跳转至收支管理列表页

3.2.3 核心功能设计

用户通过估价系统与收购员取得联系后,将在线上与收购员进行沟通,并与收购员协商进行最终的定价,用户和收购员谈拢后,需自行处理即将物品快递至门店,收购员对回收的物品进行检查等操作,如果该物品符合公司的规定即要求,则收购员收下此物品,并将约定好的钱转账给用户,进行清算,之后收购员操作后台管理系统,将物品信息核实好并进行正确填写后提交维修申请,并将物品提交至维修部门,维修部门核对物品信息并将物品进行维修,在此过程后,操作后台管理系统会将物品信息提交至入库申请,与此同时并将物品提交至审核部门,审核部门接收到物品后,对物品之前提交的信息进行审核,审核通过后操作后台管理系统通过物品的入库申请,库存信息管理表将正确的显示物品的数量等其他信息,并分配专门的库存管理员对物品进行保养、管理。售货员可以将库存管理中的物品销售到专门进行物品交易的平台、软件进行贩卖。就此形成了对闲置商品循环利用的核心功能群,具体实现流程如图3.6所示。

图3.7 闲置物品循环流程图

3.3 本章小结

本章主要介绍了基于SpringBoot的闲置商品管理系统系统功能与数据库的设计,通过功能分析设计出ER图,再经由ER图设计了每个数据表的具体内容,如字段名、数据类型、约束等,并设计了几个功能的具体时序图和功能描述。系统设计的越详细就会为以后的开发过程中节省很多成本。通过本章介绍可以使用户对该系统的使用功能一目了然。

4 系统实现

4.1 开发环境

本系统的开发系统是Windows10 64位操作系统,JDK版本是1.8,开发工具使用Eclipse2017,服务器使用Tomcat7,数据库使用MySQL5.6版本的数据库来存储数据,电脑性能为Intel® i5处理器,足以满足开发需求。

4.2 开发规范

本系统完全按照Java的命名规范来进行命名,包括包名、类名、接口名、方法名等。其中包名全部由小写字母组成,并且见名知意,看见包名就知道里面是关于哪个方面的内容。在类或接口中的方法名一般小写字母开头,以驼峰命名法来进行命名。规范的命名和注释可以增加代码的可读性,方便开发人员找到对应的方法。

4.3 数据库实现

根据实体关系,设计出18张表,如图4.1所示。

图4.1 系统数据库界面

4.4 功能实现

用户按照指定网址进入该页面,按照说明输入内容,按下回车或者点击登录就可触发事件发送请求,后台可自行判断是否有该账号,账号和密码是否匹配,并会根据后台返回的数据提示用户登录情况。登录功能核心代码如下图所示,界面如图4.2所示。

public Msg login(@RequestParam Map<String,String> map){

String userName = map.get("userName");String password = map.get("password");

AdminsBean adminsBean = AdminsService.selectByUsername(userName);

if(adminsBean==null) return Msg.fali("无该账号!");

else if(adminsBean.getPassword().compareTo(password)!=0)

return Msg.fali("密码错误!");

else return Msg.add("adminsBean", adminsBean);

}

图4.2 登录功能界面

系统用户登录后,点击使用者管理,进入使用者管理详情页,点击编辑即可进入,可以对用户名、密码、手机号等进行编辑。进入页面后可以对用户名、密码、手机号、角色、邮箱等进行修改。系统用户管理核心代码如下图所示,界面如图4.3所示。

public Msg AdminsSelect(@RequestParam Map<String,String> map){

String searchKey = map.get("searchKey");

PageInfo AdminsBeans = new PageInfo();

if(searchKey!=null&&searchKey!="undefined"&&searchKey!=""){

AdminsBeans = AdminsService.

selectAllPaging(pageNum, pageSize,searchKey);

}

else{AdminsBeans = AdminsService.selectAllPaging(pageNum, pageSize); }

}

图4.3 使用者管理的界面

系统用户登录后,点击维修管理,进入维修管理页面,可已将维修后的物品进行登记,将物品信息提交至审核部门进行审核以便物品完成入库。核心代码如所示,界面如图4.4所示。

RepairsBean repairsBean = new RepairsBean();

if(map.get("number")!=null){

for(int i=0;i<Integer.valueOf(map.get("number"));i++){

if(map.get("warehousingid") != null)

repairsBean.setWarehousingid(Integer.valueOf(map.get("warehousingid")));

repairsBean.setStaffname(map.get("staffname"));

if(map.get("money") != null)

repairsBean.setMoney(Float.valueOf(map.get("money")));

repairsBean.setRemarks(map.get("remarks"));

RepairsService.insert(repairsBean);

JournalsService.insert("超级维修内容新增维修内容,"+repairsBean.toString(), 3);

}

}

图4.4 维修管理的界面

系统用户登录后,点击"物品管理"下的"新增库存管理",进入新增库存管理页面,该功能为审核部门使用,将通过维修的物品审核后,进行新增库存操作。核心代码如所示,界面如图4.5所示。

public Msg StaffsSelect(@RequestParam Map<String,String> map){

String searchKey = map.get("searchKey");

PageInfo StaffsBeans = new PageInfo();

if(searchKey!=null&&searchKey!="undefined"&&searchKey!=""){

StaffsBeans = StaffsService.selectAllPaging(pageNum, pageSize,searchKey);

}

else{StaffsBeans = StaffsService.selectAllPaging(pageNum, pageSize); }

}

图4.5 新增库存管理的界面

用户通过打开指定的网址,进入物品价格估算,点击选择需要估价的物品,系统会根据选择的物品,生成物品情况选择器,选择物品情况后,点击计算价格,系统就会根据所选物品、及所选物品情况,来估算该物品的大概价格。估算系统核心代码如下图所示,界面实现如图4.6所示。

StocksBean stocksBean = new StocksBean();

stocksBean.setStsffname(map.get("staffname"));

stocksBean.setName(map.get("name"));

if(map.get("number") != null)

stocksBean.setNumber(Integer.valueOf(map.get("number")));

JournalsService.insert("超级管理员新增库存内容,"

+stocksBean.toString(), 3);

if(StocksService.insert(stocksBean)>=1){

RepairsService.delect(Integer.valueOf(map.get("repairid")));

return Msg.success("成功");

}

else return Msg.success("失败");

图4.6 估价功能界面实现

4.5 本章小结

本章主要介绍了基于SpringBoot的闲置商品管理系统的工作完成情况。在本章中规定了开发环境、开发规范[19],完成了数据库创作、完成了SpringBoot项目搭建,使前后端联调成功。

5 系统测试

为了保证基于SpringBoot的闲置商品管理系统的用户体验和使用质量,尽量找出该系统存在的错误并及时加以改正,以确定软件产品符合要求。有制度的测试可以规避以后错误的发生,为了减少错误的存在,优化系统功能。在整个项目的实现过程中,将严格按照科学的软件测试方法,进行测试用例,针对项目各个模块都进行测试。

5.1 用例测试

用例测试就是将软件测试的行为,做一个科学的归纳,本系统的用例将采用黑盒测试方法,着眼于程序外部结构,不考虑内部逻辑结构[20],针对于系统功能和系统页面进行针对性测试,本次测试将系统分为六个模块,分别为其他功能、公司管理、库存管理、物品管理、估价系统、系统管理,针对于每个功能模块的主要操作进行用例测试,用例测试结果如图5.1、5.2所示。

表5.1测试结果表1

用例编号 用例分类 用例目的 预期结果 测试结果

Case1 系统管理模块 系统异常管理 增删改查正确 结果相同

Case2 系统管理模块 字典信息管理 增删改查正确 结果相同

Case3 系统管理模块 日志信息管理 增删改查正确 结果相同

Case4 系统管理模块 系统监控 增删改查正确 结果相同

Case5 系统管理模块 权限管理 增删改查正确 结果相同

Case6 系统管理模块 角色管理 增删改查正确 结果相同

Case7 公司管理模块 使用者管理 增删改查正确 结果相同

Case8 公司管理模块 收支管理 增删改查正确 结果相同

Case9 公司管理模块 商品分类管理 增删改查正确 结果相同

Case10 公司管理模块 财务信息管理 增删改查正确 结果相同

Case11 公司管理模块 员工管理 增删改查正确 结果相同

Case12 公司管理模块 门店管理 增删改查正确 结果相同

Case13 库存管理模块 入库管理 增删改查正确 结果相同

Case14 库存管理模块 库存管理 增删改查正确 结果相同

Case15 库存管理模块 出库管理 增删改查正确 结果相同

Case16 物品管理模块 维修管理 增删改查正确 结果相同

Case17 物品管理模块 新增库存管 增删改查正确 结果相同

表5.2 测试结果表2

用例编号 用例分类 用例目的 预期结果 测试结果

Case18 物品管理模块 物品管理 增删改查正确 结果相同

Case19 估价系统模块 选择分类 正确选择 结果相同

Case20 估价系统模块 选择物品情况 正确选择 结果相同

Case21 估价系统模块 估价 准确估价 结果相同

Case22 其他功能模块 登录 跳转主页 结果相同

Case23 其他功能模块 门店显示 正确显示 结果相同

Case24 其他功能模块 退出登录 跳转页面 结果相同

5.2 压力测试

打开Jmeter软件,添加线程组,配置名称、注释,添加HTTP请求,配置Web服务器协议、服务器名称、端口号,并配置HTTP请求方法、请求路径、内容编码,添加汇总图,设置线程数为100,启动测试,结果如图5.1所示。

图5.1测试信息汇总图1

对10个接口每个测试100次,测试完成后,打开测试结果,可以看到共发送1000次HTTP请求,平均响应时间604ms,最快响应速度45ms,最慢反应速度2956ms,异常发生率0%,数据吞吐量182.1sec。

进行再次测试,依然使用这10个接口,将线程数设置为500,启动测试,结果如图5.2所示。

图5.2测试信息汇总图2

测试完成后,平均响应时间1396ms,最快响应速度29ms,最慢反应速度12063ms,异常发生率0%,数据吞吐量51.6sec。明显可以看到,访问数量增多后,平均反应速度增加翻倍,最慢反应速度甚至激增五倍,数据吞吐量也从182.1sec降至51.6sec,但仍没有异常发生,这足以证明该系统的健壮性。

5.4 本章小结

本章主要叙述了测试的相关功能,使用了JMeter等测试工具来高效完成测试工作。软件工程的总目标高效率、高质量地完成软件开发项目[21]。不充足、不系统的测试可能会使得软件存在隐患,这样可能就会导致系统在运行中出现问题,破坏系统的口碑,甚至造成更大的损失。故此软件测试十分有必要。

结 论

网购的繁荣,使得有一部分人,会积压很多自己已经用不到的物品,但这些物品并不是完全没有使用价值,但是又不知道怎么处理,就促使了闲置商品交易的高速发展,线下交易已经不能够满足这些用户的需求,线上闲置商品回收、交易系统应运而生。基于SpringBoot的闲置商品管理系统,填补了目前没有能够收购所有物品,并对物品维修分类将物品再次处理的系统空白,使旧物品重新焕发青春,并实现其本质实用价值,建立了一个循环利用闲置淘汰物品的服务交易平台。

本文的系统在设计与实现的过程中充分考虑了系统二次开发的可能,使用dao、entity、service、controller、view分层,能够面对随时可变的需求等要求,具有代码重用性强,系统可伸缩性好,安全性高等特点[22],所采用的开发技术也保证了系统具有一款界面美观、操作简捷、实施维护方便、系统稳定可靠。

该系统前景良好,具有较大需求的市场,能够提供,用户一方面给自己带来了困扰,另一方面又造成了不必要浪费闲置物品的新型处理方式。项目所用软件、程序皆为免费产品,所以语言、技术皆为开源,项目成本除人工外几乎为零,因此项目非常有意义和可行性。但是系统目前还缺少一套在线聊天功能,可以使客户和入库员直接联系,系统的UI设计还需要美化。未来该项目还需要完善业务流程,完善物品来源-物品整理-物品处理各级用户的稳定性。

致 谢

经过四个月左右的时间,基于SpringBoot的闲置商品管理系统系统得以实现,独立完成一个这样的系统遇到了许多困难,大部分问题是由于基础信息没有掌握,这让我意识到了掌握基础知识的重要性,以及需要将学到的知识应用好的重要性。

在这里十分感谢我的指导老师黄志宇老师和苏畅老师对我的耐心教导,通过老师的指导,我论文的总体结构、功能结构和系统设计都有了完善的修改,让我少走了不少的弯路。还要感谢所有教授过我知识的老师,感谢可以让我的学识更加渊博,同时也要感谢学院、学校给我们提供了美好、健康、舒适的学习环境。

写完这篇论文,有些许的伤感,想到了一首歌"凤凰花开的路口",对即将再见的学校、老师多有不舍之情,但也如释重负,一切都即将尘埃落定,是时候要给自己的学生时代和校园生活划上一个句号了。

参考文献

1\]孙思. 基于电子商务的二手闲置商品交易模式分析\[J\]. 知识经济,2016(04):66. \[2\]刘振国. 基于WEB的企业信息交流平台的设计与实现\[D\]. 南京邮电大学,2018. \[3\]Ying Xin Liu, Xi Yuan Li. Design and Implementation of a Business Platform System Based on Java. 2020, 166:150-153. \[4\]Shufan Liu. Design and Implementation of Communication Base Station Survey System based on Springboot\[A\]. 香港新世纪文化出版社(Hongkong New Century Cultural Publishing House).2018年智慧教育与人工智能发展学术会议论文集(第一部分)\[C\].香港新世纪文化出版社(Hongkong New Century Cultural Publishing House):,2018:3. \[5\]王照方. 基于LBS的智能公车监管系统设计与开发\[D\]. 长安大学,2018. \[6\]吴宏波. Struts2和Ibatis在毕业答辩管理系统中的应用\[J\]. 电子科技,2011,24(08):70-72. \[7\]郑智方,李彬,刘世坤,李鹏. 探究mysql的运用实例-对数据库的宏观把握\[J\]. 科技风,2020(06):129. \[8\]赵金霞. 论数据库及其管理软件研究和发展的方向\[J\]. 包钢科技,1998(02):54-56. \[9\]陈经优,肖自乾. Web前端开发任务教程 HTML+CSS+JavaScript +jQuery\[M\]. 北京:人民邮电出版社,2017.08. \[10\]梁弼,肖丽利,刘在欢. 基于HCJB的旅游景点一体化平台自适应页面设计\[J\]. 计算机技术与发展,2019,29(10):100-104. \[11\]高佳忆,魏乃晓,徐文辉,贾燕.基于Web前端开发的公司网站设计研究\[J\]. 无线互联科技,2018,15(11):65-67. \[12\]孙仕云.WEB系统前端开发技术分析\[J\]. 通讯世界,2017(12):267-268. \[13\]谢朝军,袁俊,陈宗遒,李晓宁,陆剑云,丁海元,杨智聪.融合互联网的新发重大传染病应急处置联动平台的建立\[J\]. 热带医学杂志,2017,17(09):1231-1236. \[14\]涂刚. 运用JSP开发Web系统\[M\]. 北京:北京大学出版社,2012.01. \[15\]李肖. 基于部门级的B/S架构信息化项目管理及经费系统的建设与实践\[J\]. 信息系统工程,2017(08):67. \[16\]路晓艳. 纳税评估系统的设计与实现\[D\]. 厦门大学,2013. \[17\]朱德建,胡平. 基于SSM的冷链云平台设计与实现\[J\]. 电脑知识与技术,2019,15(24):42-44+56. \[18\]瓦力斯江·帕尔哈提,瓦依提·阿不力孜,买合木提·买买提,王路路,古丽尼格尔·阿不都外力. 医院骨科随访信息处理软件的设计与实现\[J\]. 电脑知识与技术,2018,14(10):80-83. \[19\]Andrea Capiluppi,Nemitari Ajienka. Lexical content as a cooperation aide: A study based on Java software\[J\]. Elsevier Inc.,2020,164. \[20\]李香菊,孙丽,谢修娟,操凤萍,朱林. 软件工程课程设计教程\[M\]. 北京:北京邮电大学出版社,2016.01. \[21\]王素芬. 软件工程与项目管理\[M\]. 西安:西安电子科技大学出版社,2010.03. \[22\]石磊. 21世纪数据挖掘技术与传统挖掘技术的相关研究\[J\]. 信息技术与信息化,2010(03):26-29. \[23\]刘一卫. 基于SpringMVC及MyBatis框架的在线教育平台的设计与实现\[D\].沈阳:沈阳师范大学, 2019 \[24\]任桥.基于SpringBoot+SSM框架的Web应用系统搭建与实现\[J\].电脑编程技巧与维护,2019,(10):23-25. \[25\]Information Technology - Data Visualization; Study Findings on Data Visualization Discussed by Researchers at Johns Hopkins University Applied Physics Laboratory (A substrate for modular, extensible data-visualization)\[J\]. Information Technology Newsweekly,2020,(01):12-13.

相关推荐
pobu1686 分钟前
aksk前端签名实现
java·前端·javascript
一个天蝎座 白勺 程序猿39 分钟前
飞算JavaAI进阶:重塑Java开发范式的AI革命
java·开发语言·人工智能
前端 贾公子42 分钟前
tailwindCSS === 使用插件自动类名排序
java·开发语言
没有bug.的程序员1 小时前
JAVA面试宝典 -《Spring Boot 自动配置魔法解密》
java·spring boot·面试
hnlucky1 小时前
《Nginx + 双Tomcat实战:域名解析、静态服务与反向代理、负载均衡全指南》
java·linux·服务器·前端·nginx·tomcat·web
hnlucky1 小时前
同时部署两个不同版本的tomcat要如何配置环境变量
java·服务器·http·tomcat·web
yngsqq2 小时前
netdxf—— CAD c#二次开发之(netDxf 处理 DXF 文件)
java·前端·c#
A了LONE2 小时前
h5的底部导航栏模板
java·前端·javascript
经典19923 小时前
spring boot 详解以及原理
java·spring boot·后端