springboot共享充电宝租赁系统—计算机毕业设计源码

摘 要

随着移动互联网的发展,人们对移动设备充电需求的增加导致了充电宝市场的兴起。然而,由于充电宝的价格相对较高且使用频率较低,共享充电宝租赁成为一种受欢迎的替代方案。共享充电宝租赁系统的发展也受益于移动支付技术的普及,使得用户能够方便快捷地租用充电宝并进行支付。此外,一些城市通过建设充电宝共享充电站来提供更多的充电便利服务,促进共享充电宝租赁系统的发展。因此,研究利用springboot技术设计与实现的共享充电宝租赁系统将为社会提供更便捷、经济和环保的充电解决。

关键词Java语言;springboot框架;共享充电宝租赁系统;MySQL数据库

Abstract

With the development of mobile Internet, people's increasing demand for charging mobile devices has led to the rise of the rechargeable bank market. However, due to the relatively high price and low frequency of use of power banks, shared power bank leasing has become a popular alternative. The development of shared power bank rental systems also benefits from the popularization of mobile payment technology, allowing users to conveniently and quickly rent power banks and make payments. In addition, some cities provide more convenient charging services by constructing shared charging stations for power banks, promoting the development of shared power bank rental systems. Therefore, studying the design and implementation of a shared power bank rental system using springboot technology will provide society with more convenient, economical, and environmentally friendly charging solutions.

Keywords: Java language; Springboot framework; Shared power bank rental system; MySQL database

目 录

第1章绪  论

1.1研究背景与意义

1.2国内外研究现状

1.3本文的组织结构

第2章相关技术介绍

2.1Java语言

2.2Springboot框架

2.3MySQL数据库

第3章系统分析

3.1可行性分析

3.1.1技术可行性分析

3.1.2经济可行性分析

3.1.3操作可行性分析

3.1.4运行可行性分析

3.2功能需求分析

3.3非功能需求分析

3.4数据流程分析

3.4.1 数据新增流程

3.4.2 数据删除流程

3.5 系统用例分析

第4章系统设计

4.1系统架构设计

4.2系统功能结构

4.3数据库设计

4.3.1概念模型

4.3.2逻辑模型

第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产品类型管理模块

5.4.3产品信息管理模块

5.4.4下单信息管理模块

5.4.5订单取消管理模块

5.4.6用户评价管理模块

6.1测试目的

6.2测试过程

6.2.1用户登录测试

6.2.2创建数据测试 

6.2.3修改数据测试 

6.2.4查询数据测试 

6.3测试结果

第7章总结与展望

参考文献

致谢

第1章绪  论

1.1研究背景与意义

随着移动互联网的发展、智能手机的普及和使用频率的增加,人们对移动设备充电需求的增加导致了充电宝市场的兴起。然而,由于充电宝的价格相对较高且使用频率较低,购买和拥有充电宝并不是一种经济实惠和便捷的解决方案,共享充电宝租赁成为一种受欢迎的替代方案。共享充电宝租赁系统的发展也受益于移动支付技术的普及,使得用户能够方便快捷地租用充电宝并进行支付。此外,一些城市通过建设充电宝共享充电站来提供更多的充电便利服务,促进共享充电宝租赁系统的发展。因此,研究利用springboot技术设计与实现的共享充电宝租赁系统将为社会提供更便捷、经济和环保的充电解决。

本文主要探讨如何通过Java编程语言,利用springboot开发框架,使用MySQL数据库快速搭建一个便捷、安全、友好的充电宝共享和租赁的平台,设计与实现共享充电宝租赁系统,可以利用互联网技术和移动支付技术,为用户在需要时提供充电宝的租赁服务,方便用户随时随地选择充电宝产品,在线下单和支付。该系统还可以减少充电宝的单独购买和拥有,有利于节约资源和减少环境污染。此外,通过管理用户下单信息、订单取消和用户评价,系统可以提供更好的用户体验和服务质量,同时也为管理员提供了有效的管理工具。因此,共享充电宝租赁系统的设计与实现具有重要的现实意义和应用价值。

1.2国内外研究现状

在国内外,共享充电宝租赁系统的研究和实施已经取得了一定的进展。例如国内杭州市共享充电宝租赁系统,在杭州市已经建立了共享充电宝租赁系统,提供充电宝租赁和充电服务。用户通过手机APP租用充电宝,并在指定的充电站进行充电。而在国外,美国的LimeBike是一家共享电动滑板车和共享充电宝的公司。用户可以通过手机APP租借电动滑板车,并在需要充电时使用共享充电宝。德国的Sharify是一家提供共享充电宝的公司。用户可以通过手机APP租用充电宝,并在需要时进行充电。

这些研究和实践表明,共享充电宝租赁系统的设计和实现可以提供便捷、经济和环保的充电解决方案。这些系统利用移动互联网和移动支付技术,为用户提供了方便快捷的充电服务,并且通过建设充电站和维护充电宝的方式,提供了可靠的充电设施。随着技术的发展和应用的推广,共享充电宝租赁系统有望在更多的城市和地区得到推广和应用。

1.3本文的组织结构

第一章是绪论,本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。

第二章研究了共享充电宝租赁系统的所采用的开发技术和开发工具。

第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。

第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。

第五章是系统的具体实现,介绍系统的各个模块的具体实现。

第六章在前几章的基础上对系统进行测试和运行。

最后对系统进行了认真的总结,以此对未来有一个新的展望。

第2章相关技术介绍

2.1Java语言

Java是一种流行的编程语言,能够面向对象的高级编程语言,具有简单、可移植、安全和高性能等特点,在软件开发领域广泛应用。其可移植性得益于Java虚拟机(JVM),使得Java程序可以在不同平台上运行,只需编写一次代码。Java注重安全性,提供了字节码验证、异常处理和访问控制等安全机制,确保程序的稳定和安全,能够帮助开发者轻松构建可靠、可移植和安全的应用程序。Java是美国sun公司所推出的一款程序设计语言,其能够在多个平台内应用,具有良好兼容性,进而其凭借自身优势在数据中心、个人PC与科技超级计算机等平台内广泛应用,具有目前最为庞大的开发者专业社群。

2.2Springboot框架

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。

2.3MySQL数据库

MySQL经过多次的更新,功能层面已经非常的丰富和完善了,从MySQL4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的MySQL支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷[8][9]。

针对本文中设计的捐赠信息管理系统在实际的实现过程中,最终选择MySQL数据库的主要原因在于在用户的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的MySQL来对捐赠信息管理系统后台数据进行存储操作[10][11]。

数据库管理系统的总体结构图如下图所示。

图2-1 数据库组成结构


第3章系统分析

3.1可行性分析

本研究系统基于Java开发技术下,运用Springboot技术,同时结合MySQL数据库进行设计与开发,总体的可行性共分为以下三个方面。

3.1.1技术可行性分析

所谓的技术可行性就是在限定时间,前期拟定的功能能否被满足。在开发设计上是否会遇上解决不了的问题。做完的项目能否被很好地应用,如果存在缺点在后期的维护上是否存在很大的难度。在对这个系统评估后,认定已存在的技术能达成目标。用Java技术来实现动态的页面,嵌入低依赖性的设计模式,灵活的数据库,配合稳定的服务器,整个系统的运行效率大大提升。因此,其研发具备技术可行性。

3.1.2经济可行性分析

项目在开发阶段使用的开发工具工具大部分都是当下流行开源免费的,并且只需要一台开发PC,同时这些开源软件在学校都进行过学习,可以独立操作完成,所以项目所需经费将会大大降低;而在生产阶段需要web服务器和数据库服务器,一台个人PC从经济上来看也没有什么问题,在后期的系统部署生产上来说,服务器的投入也不会过高,尽量用最少的花费去满足用户的需求。因此,其研发具备经济可行性。

3.1.3操作可行性分析

本系统实现功能的操作很简单,普通电脑的常见配置就可以运行本软件,并且只要粗通电脑使用的基本常识就可以流畅的使用本软件。电脑具备连接互联网的能力,并且可以正常访问系统,并不需要操作者有什么高超的能力,只需了解业务流程,并且按照专业知识进行正确操作即可。因此,其研发具备操作可行性。

3.1.4运行可行性分析

正因为本系统是在服务器的基础上开发的,系统开发成功以后,用户无需导航指导便可自己上手进行操作。系统一经开发测试后,在计算机移动客户端能上网的情况下,只需在浏览器里完成所有可用操作,也无需配置复杂的使用和运行环境,只需一个网址便可进入系统。因此,其研发具备运行可行性。

3.2功能需求分析

在系统开发设计前,应该对功能做初步设想,清楚这个管理系统有什么板块,每个板块有什么功能,整体的设计是否满足使用者的需求,接着对所开发的系统功能进行的详细分析总结,从而设计出完整的系统并将其实现。用户和开发人员的交流分析,使其达到最佳理解程度,使系统功能达到最佳。

共享充电宝租赁系统在对需求做解析后,整个系统主要分为管理员和注册用户和管理员两大模块,每个模块下的分支功能不一样。对功能做出如下说明:

注册用户模块:

  1. 注册登录:游客进行注册可成为系统用户,注册成功后可使用账号密码可进行登录,使用系统功能,并可对个人信息和密码进行管理。
  2. 产品信息管理:可查看和管理自己的产品信息详情内容,包括产品名称、产品编号、产品类型、产品品牌、产品内容、产品简介等,进行查询和删除操作,并可点击租借操作,填写并提交用户姓名、租借时间、租借备注等信息。
  3. 下单信息管理:可查看和管理自己的下单信息详情内容,包括注册用户、用户姓名、产品名称、产品编号、产品类型、产品价格、租借定金、租借数量、租借时间、归还时间、租借费用、租借备注、审核状态、审核回复等,进行查询和删除操作,并可点击取消和支付操作,填写并提交取消时间、取消原因等信息。
  4. 订单取消管理:可查看和管理自己的订单取消信息详情内容,包括注册用户、用户姓名、产品名称、产品编号、产品类型、产品价格、租借定金、租借数量、租借时间、归还时间、租借费用、取消时间、取消原因、审核状态、审核回复等,进行查询和删除操作。
  5. 用户评价管理:可查看和管理自己的用户评价信息详情内容,包括注册用户、用户姓名、产品名称、产品评分、产品评价、产品投诉等,进行增改删查操作。
  6. 个人信息:可对个人信息进行管控,可修改头像、昵称、邮箱等个人信息。
  7. 修改密码:可对密码进行管理,修改密码成功以后,需使用新密码登录。

管理员模块:

  1. 系统用户:可对注册用户和管理员进行管控,可点击查看详情,包括添加用户信息,修改、删除、查询。
  2. 产品类型管理:可查看和管理所有产品类型信息详情内容,进行增改删查操作,支持产品类型搜索。
  3. 产品信息管理:可查看和管理所有产品信息详情内容,包括产品名称、产品编号、产品类型、产品品牌、产品内容、产品简介等,进行增改删查操作,并可点击租借操作。
  4. 下单信息管理:可查看和管理所有下单信息详情内容,包括注册用户、用户姓名、产品名称、产品编号、产品类型、产品价格、租借定金、租借数量、租借时间、归还时间、租借费用、租借备注、审核状态、审核回复等,进行增改删查操作,对下单信息进行审核,并可点击取消和支付操作。
  5. 订单取消管理:可查看和管理所有订单取消信息详情内容,包括注册用户、用户姓名、产品名称、产品编号、产品类型、产品价格、租借定金、租借数量、租借时间、归还时间、租借费用、取消时间、取消原因、审核状态、审核回复等,进行增改删查操作。
  6. 用户评价管理:可查看和管理所有用户评价信息详情内容,包括注册用户、用户姓名、产品名称、产品评分、产品评价、产品投诉等,进行增改删查操作。
  7. 个人信息:可对个人信息进行管控,可修改头像、昵称、邮箱等个人信息。
  8. 修改密码:可对密码进行管理,修改密码成功以后,需使用新密码登录。

3.3非功能需求分析

系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。

3.4数据流程分析

3.4.1 数据新增流程

用户成功登入系统后就能够实现增加数据的操作,增加数据的编号由系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证通过后即可完成数据新增,数据新增的流程图如下图3-1所示。

图3-1  数据新增流程图

3.4.2 数据删除流程

如果系统里面存在一些没有用的数据,相关的管理人员还可以对这些数据进行删除,数据删除时流程图如下图3-2所示。

图3-2  数据删除流程图

3.5 系统用例分析

根据上文对基于springboot的共享充电宝租赁系统的功能需求分析,得出该系统的角色用例,具体如下:

注册用户用例图如下所示。

图3-3 注册用户用例图

管理员用例图如下所示。

图3-4 管理员用例图

第4章系统设计

4.1系统架构设计

系统主要的数据访问方式是:通过浏览器页面用户可以进入系统,系统可以自动对用户向服务器发送的请求进行处理,处理请求是在系统后台中进行的,用户在浏览器页面上进行相应操作,就能够看到服务端传递的处理结果。共享充电宝租赁系统主要分为视图-模型-控制三层架构设计。在视图层中,主要是操作在服务器端向客户端反馈并显示的数据,在模型层中,主要处理相关的业务逻辑、数据整合等,最后的控制层它介于视图和模型之间,主要是调整两层之间的关系,最终落实数据的传递。

系统架构图如下图所示。

图4-1系统架构图

4.2系统功能结构

系统设计的目的是分析系统包括的所有功能结构,为开发人员设计开发和实现系统做好准备工作。经过前期的需求调查、分析和整理之后,确定的总体需求主要包括多个模块,系统整体角色分注册用户和管理员,其中管理员是最高权限拥有者。系统功能结构图如下图所示。

图4-2系统功能结构图

4.3数据库设计

数据库的设计承载者系统的各种数据,在建立数据库的时候,主要是数据库模型的设计以及各个数据库表的设计两部分。

4.3.1概念模型

对于一个要开发的系统来说,E-R图可以让别人能更快更轻松的了解此系统的事务及它们之间的关系。根据系统分析阶段所得出的结论确定了在共享充电宝租赁系统中存在着多个实体。下面是整个基于springboot的共享充电宝租赁系统主要的数据库表总E-R实体关系图。

系统总体E-R图如下图所示。

图4-4系统总体E-R图

4.3.2逻辑模型

数据库逻辑结构就是将E-R图在数据库中用具体的字段进行描述。用字段和数据类型描述来使对象特征实体化,最后形成具有一定逻辑关系的数据库表结构。共享充电宝租赁系统所需要的部分数据结构表如下表所示。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表order_cancellation (订单取消)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

order_cancellation_id

int

10

0

N

Y

订单取消ID

2

registered_users

int

10

0

Y

N

0

注册用户

3

user_name

varchar

64

0

Y

N

用户姓名

4

product_name

varchar

64

0

Y

N

产品名称

5

product_number

varchar

64

0

Y

N

产品编号

6

product_type

varchar

64

0

Y

N

产品类型

7

rental_deposit

varchar

64

0

Y

N

租借定金

8

rental_quantity

varchar

64

0

Y

N

租借数量

9

lease_time

varchar

64

0

Y

N

租借时间

10

return_time

varchar

64

0

Y

N

归还时间

11

rental_fees

varchar

64

0

Y

N

租借费用

12

cancel_time

datetime

19

0

Y

N

取消时间

13

reason_for_cancellation

text

65535

0

Y

N

取消原因

14

examine_state

varchar

16

0

N

N

未审核

审核状态

15

examine_reply

varchar

16

0

Y

N

审核回复

16

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

17

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表order_information (下单信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

order_information_id

int

10

0

N

Y

下单信息ID

2

registered_users

int

10

0

Y

N

0

注册用户

3

user_name

varchar

64

0

Y

N

用户姓名

4

product_name

varchar

64

0

Y

N

产品名称

5

product_number

varchar

64

0

Y

N

产品编号

6

product_type

varchar

64

0

Y

N

产品类型

7

product_price

varchar

64

0

Y

N

产品价格

8

rental_deposit

int

10

0

Y

N

0

租借定金

9

rental_quantity

int

10

0

Y

N

0

租借数量

10

lease_time

datetime

19

0

Y

N

租借时间

11

return_time

datetime

19

0

Y

N

归还时间

12

rental_fees

int

10

0

Y

N

0

租借费用

13

lease_remarks

text

65535

0

Y

N

租借备注

14

examine_state

varchar

16

0

N

N

未审核

审核状态

15

examine_reply

varchar

16

0

Y

N

审核回复

16

pay_state

varchar

16

0

N

N

未支付

支付状态

17

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

18

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

19

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表product_information (产品信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

product_information_id

int

10

0

N

Y

产品信息ID

2

product_name

varchar

64

0

Y

N

产品名称

3

product_number

varchar

64

0

Y

N

产品编号

4

product_type

varchar

64

0

Y

N

产品类型

5

product_brand

varchar

64

0

Y

N

产品品牌

6

product_content

varchar

64

0

Y

N

产品内容

7

product_price

int

10

0

Y

N

0

产品价格

8

product_introduction

varchar

64

0

Y

N

产品简介

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表product_type (产品类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

product_type_id

int

10

0

N

Y

产品类型ID

2

type_name

varchar

64

0

Y

N

类型名称

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表registered_users (注册用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

registered_users_id

int

10

0

N

Y

注册用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

user_gender

varchar

64

0

Y

N

用户性别

4

mobile_phone_number

varchar

16

0

Y

N

手机号码

5

identification_number

varchar

255

0

Y

N

证件号码

6

examine_state

varchar

16

0

N

N

已通过

审核状态

7

user_id

int

10

0

N

N

0

用户ID

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表user_reviews (用户评价)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_reviews_id

int

10

0

N

Y

用户评价ID

2

registered_users

int

10

0

Y

N

0

注册用户

3

user_name

varchar

64

0

Y

N

用户姓名

4

product_name

varchar

64

0

Y

N

产品名称

5

product_rating

int

10

0

Y

N

0

产品评分

6

product_evaluation

varchar

64

0

Y

N

产品评价

7

product_complaints

varchar

64

0

Y

N

产品投诉

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间


第5章系统实现

5.1注册模块的实现

游客需要进行注册才能拥有系统账号,用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过JavaScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。

用户注册流程图如下图所示。

图5-1用户注册流程图

用户注册界面如下图所示。

图5-2用户注册界面

用户注册的关键代码如下:

    /**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

        query.put("username",user.getUsername());

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}

5.2登录模块的实现

系统的登录窗口是用户的入口,管理员和用户只有在登录成功后才可以进入访问。通过在登录提交表单,后台处理判断是否为合法用户,进行页面跳转,进入系统中去。

登录合法性判断过程:用户输入账号和密码后,系统首先确定输入输入数据合法性,然后在login.Java页面发送登录请求,调用src下的mainctrl类的dopost方法来验证。

用户登录模块的IPO如下所示:

输入:用户名和密码。

处理:

1)检测用户输入的账号、密码是否正确及在数据库已对应存在。

2)从数据库中提取记录,并储存在本地的session中(timeout默认=30min)。

3)根据用户名,将其显示在系统首页上。

输出:是否成功的信息。

登录流程图如下所示。

图5-3系统登录流程图

用户登录界面如下所示。

图5-4系统登录界面

登录的逻辑代码如下所示。

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

5.3注册用户模块的实现

5.3.1产品信息管理模块

可查看和管理自己的产品信息详情内容,包括产品名称、产品编号、产品类型、产品品牌、产品内容、产品简介等,进行查询和删除操作,并可点击租借操作,填写并提交用户姓名、租借时间、租借备注等信息。界面如下图所示。

图5-5产品信息管理界面

5.3.2下单信息管理模块

可查看和管理自己的下单信息详情内容,包括注册用户、用户姓名、产品名称、产品编号、产品类型、产品价格、租借定金、租借数量、租借时间、归还时间、租借费用、租借备注、审核状态、审核回复等,进行查询和删除操作,并可点击取消和支付操作,填写并提交取消时间、取消原因等信息。

下单信息管理取消流程图如下所示。

图5-6下单信息管理取消流程图

下单信息界面如下图所示。

图5-7下单信息管理界面

5.3.3订单取消管理模块

可查看和管理自己的订单取消信息详情内容,包括注册用户、用户姓名、产品名称、产品编号、产品类型、产品价格、租借定金、租借数量、租借时间、归还时间、租借费用、取消时间、取消原因、审核状态、审核回复等,进行查询和删除操作。界面如下图所示。

图5-8订单取消管理详情界面

5.3.4用户评价管理模块

可查看和管理自己的用户评价信息详情内容,包括注册用户、用户姓名、产品名称、产品评分、产品评价、产品投诉等,进行增改删查操作。界面如下图所示。

图5-9用户评价管理界面

5.4管理员模块的实现

5.4.1系统用户模块

可对注册用户和管理员进行管控,可点击查看详情,包括添加用户信息,修改、删除、查询。界面如下图所示。

图5-10系统用户界面

系统用户关键代码如下:

  @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

5.4.2产品类型管理模块

可查看和管理所有产品类型信息详情内容,进行增改删查操作,支持产品类型搜索。界面如下图所示。

图5-11产品类型管理界面

添加数据表关键代码如下:

 @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

删除数据关键代码如下:

 @RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

    }

    public void delete(Map<String,String> query,Map<String,String> config){

        QueryWrapper wrapper = new QueryWrapper<E>();

        toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);

        baseMapper.delete(wrapper);

        log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());

    }

5.4.3产品信息管理模块

可查看和管理所有产品信息详情内容,包括产品名称、产品编号、产品类型、产品品牌、产品内容、产品简介等,进行增改删查操作,并可点击租借操作。界面如下图所示。

图5-12产品信息管理详情界面

5.4.4下单信息管理模块

可查看和管理所有下单信息详情内容,包括注册用户、用户姓名、产品名称、产品编号、产品类型、产品价格、租借定金、租借数量、租借时间、归还时间、租借费用、租借备注、审核状态、审核回复等,进行增改删查操作,对下单信息进行审核,并可点击取消和支付操作。界面如下图所示。

图5-13下单信息管理详情界面

5.4.5订单取消管理模块

可查看和管理所有订单取消信息详情内容,包括注册用户、用户姓名、产品名称、产品编号、产品类型、产品价格、租借定金、租借数量、租借时间、归还时间、租借费用、取消时间、取消原因、审核状态、审核回复等,进行增改删查操作。界面如下图所示。

图5-14订单取消管理界面

5.4.6用户评价管理模块

可查看和管理所有用户评价信息详情内容,包括注册用户、用户姓名、产品名称、产品评分、产品评价、产品投诉等,进行增改删查操作。界面如下图所示。

图5-15用户评价管理界面


第6章系统测试

6.1测试目的

在对该系统进行完详细设计和编码之后,就要对共享充电宝租赁系统的程序进行测试,检测程序是否运行无误,反复进行测试和修改,使之最后成为完整的软件,满足用户的需求,实现预期的功能。

6.2测试过程

在软件的测试过程中,通常测试人员需要针对不同的功能模块设计多种测试用例。通过测试用例能够及时发现代码业务逻辑上是否与真实的业务逻辑相对应,及时发现代码上或逻辑上的缺陷,以此来来完善系统,提高软件产品的质量,使软件具有良好的用户体验。

6.2.1用户登录测试

用户登录功能测试用例如下表所示。

6-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

6.2.2创建数据测试 

在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。

创建数据用例如下表所示。

表6-2 创建数据测试用例

测试用例编号

YL_05

测试用例名称

系统使用者进行创建数据

测试用例描述

使用者输入要创建的数据

系统入口

浏览器

步骤

预期结果

实际结果

输入完整并且格式正确的数据

提示“创建成功”,并显示所有数据

预期结果

核心位置数据但非必要位置不输入数据

提示“创建成功”,并显示所有数据

预期结果

核心数据位置不输入数据

提示“创建失败”

预期结果

6.2.3修改数据测试 

在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。

修改数据用例如下表所示。

表6-3 修改数据测试用例

测试用例编号

YL_06

测试用例名称

系统使用者进行修改数据

测试用例描述

使用者对可修改的数据项进行修改

系统入口

浏览器

步骤

预期结果

实际结果

将现有数据修改成正确的数据

提示“修改成功”,并显示所有数据

预期结果

将现有数据修改成错误的数据

提示“修改失败”

预期结果

6.2.4查询数据测试 

在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。

查询数据用例如下表所示。

表6-4 查询数据测试用例

测试用例编号

YL_05

测试用例名称

系统使用者进行查询数据

测试用例描述

全部查询以及输入关键词查询

系统入口

浏览器

步骤

预期结果

实际结果

界面自动查询全部

显示对应所有记录

预期结果

输入已存在且能匹配成功的关键字

显示所查询到的数据

预期结果

输入不存在的关键字

显示数据界面为空

预期结果

6.3测试结果

在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都是能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。经过对此系统的测试,得出该系统足以满足用户日常需求,在功能项目和操作等方面也能满足操作员对于其他用户的管理。但是,还有很多功能有待添加,这个系统仅能满足大部分的需求,还需要对此系统的功能更进一步的完善,这样使用起来才能更加的完美。

第7章总结与展望

通过共享充电宝租赁系统的开发,本人巩固了之前学过的知识,包括Java开发语言、springboot技术框架等,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。

目前本系统,正在试运行阶段,用户反馈良好,基本完成用户所需,实现包括用户登录、注册、后台首页、系统用户、产品类型管理、产品信息管理、下单信息管理、订单取消管理、用户评价管理等功能,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在租赁的云平台服务器中。

本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。

系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。

参考文献

[1]福建教育杂志社“在线云阅读”平台正式上线[J].福建教育,2023,(52):2.

[2]赵旭东.计算机软件开发与设计中Java语言的应用研究[J].信息与电脑(理论版),2023,35(24):31-33.

[3]吴伶琳.基于SpringBoot的客户关系管理系统设计与实现[J].无线互联科技,2023,20(24):60-62.

[4]翟祥栩,陈谦民,陈宗玉.基于SpringBoot的农业大数据一站式分析预测平台的设计与实现[J].现代信息科技,2023,7(24):6-10+15.DOI:10.19850/j.cnki.2096-4706.2023.24.002.

[5]袁琳琳.计算机软件Java编程特点及技术分析[J].数字通信世界,2023,(12):87-89.

[6]马庆.计算机软件开发中JAVA编程语言的应用[J].山西电子技术,2023,(06):84-86+98.

[7]吴昊,张丹.基于SpringBoot框架的大学生网上兼职系统设计与实现[J].电脑知识与技术,2023,19(35):68-72.DOI:10.14004/j.cnki.ckt.2023.1860.

[8]艾钰承,朱海风,刘舟.基于SpringBoot的“喵站”宠物服务平台的设计与实现[J].科技资讯,2023,21(22):22-25.DOI:10.16661/j.cnki.1672-3791.2305-5042-0756.

[9]游晶,邱淑丽,李敬文.基于SpringBoot的校园智慧报修系统的设计与实现[J].电脑知识与技术,2023,19(32):50-52+65.DOI:10.14004/j.cnki.ckt.2023.1718.

[10]黄赛英.基于Springboot的医院档案管理系统设计[J].集成电路应用,2023,40(11):384-385.DOI:10.19339/j.issn.1674-2583.2023.11.176.

[11]杨志俊,侯江华.基于SpringBoot的智慧养老系统设计[J].无线互联科技,2023,20(17):87-89.

[12]李琴,崔名扬,钱奕文等.基于SpringBoot的研究生学术档案管理系统开发[J].电脑知识与技术,2023,19(18):46-48+51.DOI:10.14004/j.cnki.ckt.2023.0900.

[13]陈欣,阮锦新,邬依林等.基于SpringBoot的物联网智能家居方案设计[J].现代计算机,2023,29(11):76-83.

[14]张瑶.社会化阅读平台用户评论行为研究[D].山东大学,2023.DOI:10.27272/d.cnki.gshdu.2023.004736.

[15]王霏儿.基于SpringBoot的在线考试系统设计与实现[D].江西师范大学,2023.DOI:10.27178/d.cnki.gjxsu.2023.000429.

[16]李羊羊.免费网络文学阅读平台内容生产模式研究[D].兰州财经大学,2022.DOI:10.27732/d.cnki.gnzsx.2022.000424.

[17]王凯琪,兰全祥.网络订单取消管理爬取与管理系统的设计与实现[J].信息记录材料,2022,23(05):116-119.DOI:10.16009/j.cnki.cn13-1295/tq.2022.05.026.

[18]马睿,王振,梁栋茂等.基于SSH框架的小说网站管理系统设计与实现[J].电脑编程技巧与维护,2020,(07):75-76+98.DOI:10.16184/j.cnki.comprg.2020.07.026.

[19]张翔.个性化小说推荐系统的设计与实现[D].北京交通大学,2019.

[20]江宇.探析新媒体环境下的网络小说[J].新闻研究导刊,2019,10(02):216-217.

致谢

本次设计历时多月月。在这个毕业设计中,它离不开指导教师的指导,使事情基本顺利。指导老师无论是在毕业设计历经中,还是在论文做完中都给了我特别大的助益。另一方面,教师认真负责的工作姿态,谨慎的教学精神厚重的理论水准都使我获益匪浅。他勤恳谨慎的教学育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中,我的技能得到了特别大的提高。在此,特向指导老师表示由衷的感激,同时也感谢在大学生涯中每一位教导我的老师,是你们教给了我丰富的知识,更教会了我遇到问题时,如何去应对并解决。谢谢你们的帮助与支持。

经过对该毕业设计的全部研究和开发,我的系统研发经历了从需求分析到实现详细功能,再到最终测试和维护的特殊进展。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理疑惑的本领也获取到了特别大的演练学习增多,这是这次毕业设计最好的收获。

最后,在整个系统开发过程中,我周围的同学和朋友给了我很多意见,所以我很快就确认了系统的商业思想。在此,我由衷的向他们表示感激。此外,感谢一起学习,一起成长同学们,和成长过程悉心教导的老师们,非常感激有你们的陪伴。

免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值