@TOC
springboot552智能停车计费系统设计与实现_urqs9--论文
绪 论
1.1 研究背景
在新世纪的今天,计算机已经发展到一定的规模,带动了国内经济和科学技术的快速发展,科学技术的发展大大提高了生产效率,使人们的物质生活需求得到了很大的满足。现在各种类型的网站系统都很流行,将传统的管理模式转移到线上来实现,可以大大提高管理效率。基于以上情况,智能停车计费系统逐渐出现在人们的视野中,也将成为未来发展的一个潜在增长点。
1.2 研究意义
在日新月异的21世纪,全球进入快速运转的科技时代,我国也在各位科学家不懈努力下实现了科技社会化、信息技术底层化、网络运用全民化。我们处在一个“互联网+”的时代,信息化的建设成为了当代的发展基石以及重要组成部分。随着智能停车计费管理的常态化,同时也出现了多样化的人员管理方式。而智能停车计费系统就可以实现管理人员及用户的日常管理,实现进行更高效的信息互换、让用户的动态变得透明公开,让管理人员更好地实现对智能停车计费的动态监管、真正的实现快速、便捷、高效的管理以降低管理成本、减轻管理人员的负担,保证管理技术以及运用互联网技术的能力的快速提升,提高综合管理和竞争能力。在保证人们的安全的同时,真正达到更好的为国家经济建设和社会安全做贡献的目的。
1.3 系统主要功能
因我国智能停车计费的数量也逐步增加。如果智能停车计费管理还是沿用传统的、人工的操作,那管理难度是十分巨大的、效率也会不尽人意;而如今我国的信息科学技术已趋于成熟,我们的生活、工作、学习已离不开互联网,为了更好的提升智能停车计费管理,并且在保证用户的安全前提下使人们生活有序、有效开展,需要一套操作简单、能高效导出并录入数据、安全性高、可用性强的智能停车计费系统。
此篇论文中包括管理员和用户两个不同的角色,根据不同的身份以及工作机制,赋予不同的权限。该智能停车计费系统的功能如下列所示:
- 用户之间的使用权限设定:根据业务管理的需求以及智能停车计费管理体系,在使用前将每个角色的固定标签设定好,明晰每个角色权限,并将状态控制功能添加到用户状态上,最终达到本系统角色控制基础形成的目标。
- 用户登录功能:用户可以根据自己的角色选择相应的账号进行登录,在输入合法的账号和密码后就可进入系统,根据自己的权限选择想要进行的操作。
- 查看个人资料功能:用户登录系统之后可以点击右上角头像查看自己的个人资料,在核查发现错误之后还可以进行修改,用户还可在该模块进行密码的修改。
- 系统管理功能:在模块的功能又可以细化成以下几个部分
- 用户管理:管理员和用户可以在该模块进行用户信息的管理与修改。
- 角色管理:管理员和用户可以在该模块对用户进行权限的修改与设置。
1.4 拟解决的主要问题
- 与智能停车计费管理工作契合的工作流结构
目前,智能停车计费的人员管理工作中,一般采用纸质表单结合手工传递的方式或者Word、Excel填写在线发放的方式[3],进行信息的收集,在信息收集完成之后再交由各级管理人员进行审批、签字,存在工作耗时较长、难以全面收集所需信息、工作步骤冗杂繁琐、中间环节易出错等缺点,因此采用与网络系统结合的工作流模式,让用户在固定时间进行信息的填写,之后按照已经设定好的规则进行工作流程的运行,自动在完成上一级任务后执行下一步指令,这样的操作方式比较灵活,而且减少了管理者手动完成操作信息的步骤,提高了工作效率,缩减了工作完成所需要的时间,并且可以保证任务完成的精确性与科学性。
- 科学、有效的信息收集机制
在保证信息的全面收集的同时还需要兼顾所收集信息的科学性与适用性。使用互联网固然可以提高收集信息的效率,但如果所收集的信息只是为了表面上数据的增加那就造成了极大的资源浪费,虚假的形式主义会造成用户精力的大量流失、并且降低信誉值,因此在确定信息收集内容的时候要着重筛选对智能停车计费管理起到促进作用的信息。例如本系统所收集的智能停车计费信息就可以很好的掌控智能停车计费的日常动态,为智能停车计费管理工作的成功打下了基础。
- 准确、可行的效果评价标准
当前对我国的智能停车计费管理效果的评价已有一定的标准,例如用户人数的多少、智能停车计费管理所花费的物资及钱财数量,而作为智能停车计费系统,其效果体现在以下几个方面:
- 使用网络收集用户基础信息减少了填写信息的步骤,用户可在重合的时间分别进行信息的填写,缩短了信息收集所需的时间;
- 使用网络进行信息记录,减少了虚假信息的产生,使结果更加真实有效;
- 通过系统进行记录,并且更好的留痕,为以后的检查工作提供了可靠地证明。
2 相关概念和技术介绍
2.1 JAVA技术介绍
Java语言擅长开发互联网类应用和企业级应用,现在已经相当的成熟,而且也是目前使用最多的编程语言之一。Java语言具有很好的面向对象性,可以符合人的思维模式进行设计,封装是将对象的属性和方法尽可能地隐藏起来,使得外界并不知道是如何实现的,外界能通过接口进行访问,继承是指每个类都会有一个父类,所有的子类都有父类的方法,可以进行继承,但是只有final修饰的类不能被继承,通过继承可以使得代码得到重新利用,能够提高软件的开发效率,也是多态的前提。
Java就像C语言、C#语言等,也是一种程序开发语言,而它的特点就是面向对象。作为一种程序开发与设计的语言,它有很多特性,主要特性就是面向对象、夸平台以及可以分布式运行。Java语言项目不但安全性高、稳定性强,而且可以并发运行。
为了提高开发的速度及效率,必须做到代码的重复使用和简化程序的复杂度,要达到上述的要求java语言通过封装、继承与多态等方式实现,这样可以很大程度上达到信息的封装,提高代码复用率,减少冗余度,提高效率。在Java中难能可贵的一点就是它的垃圾回收机制,它使得以往程序中大量存在的内存泄漏的问题得到了较好的缓解。所谓的内存泄漏就是程序向操作系统申请了一块存储空间,比如定义了一个变量,但是由于某种原因,这个变量一直没有使用,但是仍然占用着系统的内存空间,可能一两个这样的变量对程序和操作系统造不成什么大的影响,但是试想如果这样的变量定义的多了系统的内存空间就会一步步减少,从而造成机器的性能降低甚至宕机。但是在Java中有垃圾回收机制的存在,这种机制极大地避免了内存泄漏的出现,在Java虚拟机中,垃圾回收机制会对长时间没有引用变量指向的对象实施垃圾回收,简单的说就是将这个对象销毁,以避免内存泄漏的情况出现。
2.2 SpringBoot框架
Spring Boot是由Pivotal的开发团队在2013年开发的一个免费、轻量级、开源的系统框架。SpringBoot的主要设计思想是约定大于配置,因此SpringBoot在设计时几乎达到零配置。SpringBoot集成了业界的开源框架。
SpringBoot是一个非常强大的后台框架,因为SpringBoot的开发基本上不需要写配置文件,所以利用SpringBoot来构建网站的后台环境,在SpringBoot的YML配置文件中写项目启动端口,项目就可以启动了。项目的Java和静态文件由SpringBoot管理。
2.3B/S架构
B/S(Browser/Server,浏览器/服务器)模式,是一种架构模式,属于WEB发展后的所出现的一种网络构造,而WEB又是主要的浏览器应用商品软件。B/S架构模式不仅将系统的重新开发、维修及利用等简单化,更将其重点放到了服务器上[8]。它使客户端得到了统一,服务器上集中了系统功能的最关键部分。
B/S架构的工作模式是浏览器发出请求后服务器进行相应的响应。Internet上文本、图片、动画等信息主要由Web服务器产生,而用户主要是通过浏览器访问这些信息。在Web服务器上下载程序时,如果在下载过程中遇到某些与数据库相关的指令,可以将这些指令交给数据库服务器来解释、进行执行。B/S架构工作流程图如2-1所示:
图2-1 B/S架构工作流程图
2.4 MySQL数据库
MySQL是一个关系型数据库管理系统,具有体积小、速度快、成本低等特点。MySQL数据库的功能强大,是可以处理存储着成千上万条记录的大型数据库;并且它是可以定制的,因为它采用了GPL协议,使用者可以通过修改源代码来开发自己的MySQL系统;MySQL支持多种操作系统,包括AIX、FreeBSD、Linux、Solaris等;它还可以提供用于管理、检索、升级数据库操作的处理工具;最重要的是MySQL是一个开源的、不收取任何费用的、适用范围较广产品,使用者可以直接在互联网上下载然后使用。MySQL工作架构图如图2-2所示:
图2-2 MySQL工作架构图
3 系统需求分析
在对一个软件进行设计与开发之前,需要对该系统进行深层次的调查、分析、研究。良好的需求分析不仅能使开发人员快速、准确地理解开发任务,还能提高开发效率,还能好地完成工作[6]。对系统进行需求分析是必不可少的,这是软件生存周期上一个很重要的部分,在这个阶段需要确定该系统需要实现什么功能,然后做成一个数据规范、图表清晰的文档,为接下来的系统设计工作提供一定的基础。
3.1 问题定义
问题定义也是软件开发中一个重要的环节,在这个阶段我们要清楚的找到以下问题的答案:开发这个系统的原因是什么,开发这个系统所需要的具备什么样的技术支持,需要获得什么样的物资基础,取得哪个方面的国家政策支持等。所采用的智能停车计费系统就可以很好的促进智能停车计费管理工作的完成、而且可以使得整体管理水平得到有效的提升。因为使用该系统的主要是管理员和用户,所以要准确的进行角色的定位,然后对不同的角色给予不同的使用权限,表现如下:
1.使用角色的明晰
智能停车计费是一个人数众多、规模庞大、工作机制复杂的机构,需要对管理范围内的人员进行清楚的角色定位。
2.使用角色的权限赋予
角色权限分配应灵活,尽量满足用户对于权限的使用需求以及适应工作变动[3]。管理权限级别由下往上的增加,上一级的管理人员可以对下一级管理人员进行部分权限的限制与赋予,不同级别的管理者也可能拥有相同的管理权限。
3.系统所需要达到的性能要求
1 实用性:可以满足同一时间不同人员的登录,系统操作简单,界面明了干净。 1 可操作性:对每个角色在进行操作权限之后,后期还可以对其权限进行修改,可以增加或删除使用角色、部门等。 1 及时性:在对系统进行修改之后可以实时的系统的同步变化。 1 安全性:在系统出现故障之时可以在较短时间内进行修复,并且保证用户信息的绝密性,防止信息泄露的发生。 1 效率:可以满足各大使用群体的需求,解决使用者的问题
3.2 可行性分析
可行性分析是需求分析中一个关键的部分,在进行可行性分析之后可以了解到系统实现所具备的条件,以此来判断系统实现的难度。本篇论文主要进行以下几个方面的分析:
- 经济切实性
该系统并没有独特、十分创新的地方,所需要的硬件设备可以从学校已经在使用或者目前闲置的存量里面选取;系统的后期维护和升级也比较容易,学校从事这个专业的老师或者学生就可完成,而学校所派发的日常经费就可满足需求;在系统开发完成之后还可将系统进行出租或者售卖,也可产生一定的经济效益;并且该系统所使用的MySQL数据库是免费的。
- 使用可行性
该系统在的开发,从设计的功能以及使用者的角度出发进行设计,可以更有针对性的对智能停车计费进行有效的监管,也符合智能停车计费管理工作的需要,并且操作简单,覆盖范围广,这就提高了使用者主动适应并使用该系统的几率。
- 技术可行性
该系统的设计所选用的都是经过时间筛选、比较成熟的技术,Spring boot都是当前使用率较高、可靠性和安全性有一定保障的开发框架,MySQL数据库是拥有强大服务器支撑的系统,这就让系统开发的效率、质量得到了一定的保障。
3.3系统用例分析
在设计系统的过程中,用例图是系统设计过程中必不可少的模型,用例图可以更为细致的,结合系统中人员的有关分配,能够从细节上描绘出系统中有关功能所完成的具体事件,确切的反映出某个操作以及它们相互之间的内部联系。
其中参与者就是和系统能够发生交互的外在实体,一般可以指系统的某个用户。一个用例图就能对应出系统中的一个功能过程,系统中完整的功能都是由不同的用例图所组成的。系统用例图下所示。
图3-1 管理员用例图
图3-2 用户用例图
3.4 系统流程分析
3.4.1 登录流程
每个用户都有专属的密码和账号,在输入合法的账号、密码以及验证之后即可进入系统。登录流程如图3-3所示:
图3-3 登录流程图
3.4.2 添加信息流程
用户和管理员可以添加信息,内容没有问题之后按下确定键就添加成功了。添加信息的流程图如图3-4所示:
图3-4 添加信息流程图
3.4.3 删除信息流程
用户可以选择把自己发布的信息删掉,选择要删除的信息确认之后,删除信息的操作就完成了。删除信息流程图如图3-5所示:
图3-5删除信息流程图
4 系统功能的设计与实现
4.1 总体设计思路
该系统采用了B/S架构,对使用网络没有特别的要求,使用者可以随时访问该系统。该系统运行原理如图4-1所示:
图4-1 系统工作原理图
4.2 系统功能结构设计
完成了设计思路的构想,接下来就是按照实际要求完成所需功能。该系统功能结构图如图4-2所示:
图4-2 系统功能结构图
4.3 数据库设计
4.3.1 数据库E-R图设计
E-R图即实体-联系图,主要作用是提供了解显示数据类型存在的联系的途径,是藐视现实世界的概念模型,其关键要素是实体型、属性、联系。以下是本系统主要的实体图,如下图所示。
(1)车位信息实体图
图4-3车位信息实体图
(2)用户实体图
图4-4用户实体图
(3)违规处罚实体图
图4-5违规处罚实体图
(4)在线交流实体图
图4-6在线交流实体图
(5)系统公告实体图
图4-7系统公告实体图
4.3.2 数据库表结构设计
该系统采用的数据库是MySQL,根据该系统的数据存储特点进行数据库关系表的设计。下面是该系统中关键部分关系表的详细信息。
表4-1:车位信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
tingchechangmingcheng | varchar | 200 | 停车场名称 | ||
quyu | varchar | 200 | 区域 | ||
cheweibianhao | varchar | 200 | 车位编号 | ||
cheweimingcheng | varchar | 200 | 车位名称 | ||
cheweileixing | varchar | 200 | 车位类型 | ||
cheweitupian | longtext | 4294967295 | 车位图片 | ||
cheweiweizhi | varchar | 200 | 车位位置 | ||
cheweizhuangtai | varchar | 200 | 车位状态 | ||
xiaoshidanjia | int | 小时单价 | |||
cheweixiangqing | longtext | 4294967295 | 车位详情 |
表4-2:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
xingming | varchar | 200 | 姓名 | ||
mima | varchar | 200 | 密码 | ||
xingbie | varchar | 200 | 性别 | ||
shouji | varchar | 200 | 手机 | ||
touxiang | longtext | 4294967295 | 头像 |
表4-3:车位分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
cheweileixing | varchar | 200 | 车位类型 |
表4-4:违规处罚
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
weiguishixiang | varchar | 200 | 违规事项 | ||
weiguibeizhu | varchar | 200 | 违规备注 | ||
chufajine | int | 处罚金额 | |||
chufashijian | datetime | 处罚时间 | |||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
xingming | varchar | 200 | 姓名 | ||
shouji | varchar | 200 | 手机 | ||
touxiang | longtext | 4294967295 | 头像 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-5:在线交流
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
adminid | bigint | 管理员id | |||
ask | longtext | 4294967295 | 提问 | ||
reply | longtext | 4294967295 | 回复 | ||
isreply | int | 是否回复 |
表4-6:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-7:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-8:系统公告
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | longtext | 4294967295 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-9:投诉建议
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 留言人id | |||
username | varchar | 200 | 用户名 | ||
avatarurl | longtext | 4294967295 | 头像 | ||
content | longtext | 4294967295 | 留言内容 | ||
cpicture | longtext | 4294967295 | 留言图片 | ||
reply | longtext | 4294967295 | 回复内容 | ||
rpicture | longtext | 4294967295 | 回复图片 |
表4-10:论坛交流
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 帖子标题 | ||
content | longtext | 4294967295 | 帖子内容 | ||
parentid | bigint | 父节点id | |||
userid | bigint | 用户id | |||
username | varchar | 200 | 用户名 | ||
avatarurl | longtext | 4294967295 | 头像 | ||
isdone | varchar | 200 | 状态 |
表4-11:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-12:车子离场
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
tingchechangmingcheng | varchar | 200 | 停车场名称 | ||
quyu | varchar | 200 | 区域 | ||
cheweibianhao | varchar | 200 | 车位编号 | ||
cheweimingcheng | varchar | 200 | 车位名称 | ||
cheweileixing | varchar | 200 | 车位类型 | ||
cheweiweizhi | varchar | 200 | 车位位置 | ||
xiaoshidanjia | int | 小时单价 | |||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
xingming | varchar | 200 | 姓名 | ||
shouji | varchar | 200 | 手机 | ||
touxiang | longtext | 4294967295 | 头像 | ||
chepaihao | varchar | 200 | 车牌号 | ||
jinchangshijian | varchar | 200 | 进场时间 | ||
lichangshijian | datetime | 离场时间 | |||
tingcheshizhang | float | 停车时长 | |||
tingchefeiyong | float | 停车费用 | |||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-13:车子进场
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
tingchechangmingcheng | varchar | 200 | 停车场名称 | ||
quyu | varchar | 200 | 区域 | ||
cheweibianhao | varchar | 200 | 车位编号 | ||
cheweimingcheng | varchar | 200 | 车位名称 | ||
cheweileixing | varchar | 200 | 车位类型 | ||
cheweiweizhi | varchar | 200 | 车位位置 | ||
xiaoshidanjia | int | 小时单价 | |||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
xingming | varchar | 200 | 姓名 | ||
shouji | varchar | 200 | 手机 | ||
touxiang | longtext | 4294967295 | 头像 | ||
chepaihao | varchar | 200 | 车牌号 | ||
jinchangshijian | datetime | 进场时间 |
5 系统详细功能的实现
5.1系统功能实现
当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示:
图5-1 系统首页界面
系统注册:在系统注册页面的输入栏中输入用户注册信息进行注册操作,系统注册页面如图5-2所示:
图5-2系统注册页面
车位信息:在车位信息页面的输入栏中输入停车场名称和车位编号进行查询,可以查看到车位详细信息,并根据需要进行进场操作;车位信息页面如图5-3所示:
图5-3车位信息详细页面
论坛交流:在论坛交流页面通过输入标题进行查询;论坛交流页面如图5-4所示:
图5-4论坛交流详细页面
系统公告:在系统公告页面输入标题进行查询,可以查看到系统公告详细信息并操作;系统公告页面如图5-5所示:
图5-5系统公告详细页面
个人中心:在个人中心页面可以对个人信息进行操作,还可以对我的发布进行详细操作;如图5-6所示:
图5-6个人中心界面
5.2管理员模块实现
管理员登录,在登录页面正确输入用户名和密码后,点击登录进入操作系统进行操作;如图5-7所示。
图5-7 管理员登录界面
管理员进入主页面,主要功能包括对系统首页,个人中心,用户管理,车位分类管理,车位信息管理,车子进场管理,车子离场管理,违规处罚管理,投诉建议,交流论坛,系统管理等进行操作。管理员主页面如图5-8所示:
图5-8 管理员主界面
管理员点击用户管理。在用户页面输入用户账号和姓名进行查询、新增或删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图5-9所示:
图5-9用户管理界面
管理员点击车位分类管理。在车位分类页面输入车位类型进行查询、新增或删除车位分类列表,并根据需要对车位分类详情信息进行详情、修改或删除操作;如图5-10所示:
图5-10车位分类管理界面
管理员点击车子进场管理。在车子进场页面输入停车场名称进行查询或删除车子进场列表,并根据需要对车子进场详情信息进行详情或删除操作;如图5-11所示:
图5-11车子进场管理界面
管理员点击车子离场管理。在车子离场页面输入停车场名称和选择是否通过进行查询或删除车子离场列表,并根据需要对车子离场详情信息进行详情、修改或删除操作;如图5-12所示:
图5-12车子离场管理界面
管理员点击系统管理。进入系统公告页面输入标题可以查询,新增或删除系统公告列表,并根据需要对系统公告详细信息进行详情,修改或删除操作。还可对在线交流,轮播图管理进行详细操作。如图5-13所示:
图5-13系统管理界面
5.3用户后台模块实现
用户进入主页面,主要功能包括对系统首页,个人中心,车子进场管理,车子离场管理,违规处罚管理等进行操作。用户主页面如图5-14所示:
图5-14 用户后台主界面
CheweifenleiController.java
package com.controller;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.CheweifenleiEntity;
import com.entity.view.CheweifenleiView;
import com.service.CheweifenleiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 车位分类
* 后端接口
* @author
* @email
* @date 2023-05-17 16:29:22
*/
@RestController
@RequestMapping("/cheweifenlei")
public class CheweifenleiController {
@Autowired
private CheweifenleiService cheweifenleiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,CheweifenleiEntity cheweifenlei,
HttpServletRequest request){
EntityWrapper<CheweifenleiEntity> ew = new EntityWrapper<CheweifenleiEntity>();
PageUtils page = cheweifenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cheweifenlei), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,CheweifenleiEntity cheweifenlei,
HttpServletRequest request){
EntityWrapper<CheweifenleiEntity> ew = new EntityWrapper<CheweifenleiEntity>();
PageUtils page = cheweifenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cheweifenlei), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( CheweifenleiEntity cheweifenlei){
EntityWrapper<CheweifenleiEntity> ew = new EntityWrapper<CheweifenleiEntity>();
ew.allEq(MPUtil.allEQMapPre( cheweifenlei, "cheweifenlei"));
return R.ok().put("data", cheweifenleiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(CheweifenleiEntity cheweifenlei){
EntityWrapper< CheweifenleiEntity> ew = new EntityWrapper< CheweifenleiEntity>();
ew.allEq(MPUtil.allEQMapPre( cheweifenlei, "cheweifenlei"));
CheweifenleiView cheweifenleiView = cheweifenleiService.selectView(ew);
return R.ok("查询车位分类成功").put("data", cheweifenleiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
CheweifenleiEntity cheweifenlei = cheweifenleiService.selectById(id);
return R.ok().put("data", cheweifenlei);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
CheweifenleiEntity cheweifenlei = cheweifenleiService.selectById(id);
return R.ok().put("data", cheweifenlei);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody CheweifenleiEntity cheweifenlei, HttpServletRequest request){
cheweifenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(cheweifenlei);
cheweifenleiService.insert(cheweifenlei);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody CheweifenleiEntity cheweifenlei, HttpServletRequest request){
cheweifenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(cheweifenlei);
cheweifenleiService.insert(cheweifenlei);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody CheweifenleiEntity cheweifenlei, HttpServletRequest request){
//ValidatorUtils.validateEntity(cheweifenlei);
cheweifenleiService.updateById(cheweifenlei);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
cheweifenleiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
MD5Util.java
package com.utils;
import cn.hutool.crypto.digest.DigestUtil;
public class MD5Util {
/**
* @param text明文
* @param key密钥
* @return 密文
*/
// 带秘钥加密
public static String md5(String text) {
// 加密后的字符串
String md5str = DigestUtil.md5Hex(text);
return md5str;
}
}
ChezijinchangServiceImpl.java
package com.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;
import com.dao.ChezijinchangDao;
import com.entity.ChezijinchangEntity;
import com.service.ChezijinchangService;
import com.entity.vo.ChezijinchangVO;
import com.entity.view.ChezijinchangView;
@Service("chezijinchangService")
public class ChezijinchangServiceImpl extends ServiceImpl<ChezijinchangDao, ChezijinchangEntity> implements ChezijinchangService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<ChezijinchangEntity> page = this.selectPage(
new Query<ChezijinchangEntity>(params).getPage(),
new EntityWrapper<ChezijinchangEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<ChezijinchangEntity> wrapper) {
Page<ChezijinchangView> page =new Query<ChezijinchangView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<ChezijinchangVO> selectListVO(Wrapper<ChezijinchangEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public ChezijinchangVO selectVO(Wrapper<ChezijinchangEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<ChezijinchangView> selectListView(Wrapper<ChezijinchangEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public ChezijinchangView selectView(Wrapper<ChezijinchangEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
IndexMain.vue
<template>
<div style="height: 100%;">
<index-aside v-if="'vertical' == 'vertical'" :style='{"boxShadow":"0px 4px 10px 0px rgba(0,0,0,0.3020)","padding":"0 0 100px","overflow":"hidden","top":"0","left":"0","background":"rgba(255, 255, 255, 1)","bottom":"0","width":"190px","fontSize":"0px","position":"fixed","height":"100%","zIndex":"1001"}'></index-aside>
<el-main :style='"vertical" == "vertical" ? {"minHeight":"100%","padding":"0","margin":"0 0 0 190px","backgroundImage":"url(http://codegen.caihongy.cn/20220804/febccfdcc12347f0afccab7938e90a2e.png)","display":"block","backgroundSize":"100% 100%","position":"relative"} : {"minHeight":"100%","margin":"0","position":"relative"}'>
<index-header :style='{"padding":"8px 20px","alignItems":"center","top":"0","left":"0","background":"linear-gradient(360deg, #3CB5AF 0%, #3CB5AF 13%, #FFFFFF 13%, #FFFFFF 86%, #3CB5AF 86%, #3CB5AF 99%)","display":"flex","width":"100%","position":"fixed","justifyContent":"center","fontWeight":"550","zIndex":"1004"}'></index-header>
<index-aside v-if="'vertical' == 'horizontal'" :style='{"width":"100%","borderColor":"#efefef","borderStyle":"solid","background":"#304156","borderWidth":"0 0 1px 0","height":"auto"}'></index-aside>
<bread-crumbs :title="title" :style='{"padding":"10px 20px","margin":"85px auto 0","borderColor":"#eee","borderRadius":"20px","borderWidth":"0 0 1px 0","background":"rgba(27, 167, 166, 1)","width":"calc(100% - 40px)","borderStyle":"solid"}' class="bread-crumbs"></bread-crumbs>
<router-view class="router-view"></router-view>
</el-main>
</div>
</template>
<script>
import IndexAside from '@/components/index/IndexAsideStatic'
import IndexHeader from '@/components/index/IndexHeader'
import menu from "@/utils/menu";
export default {
components: {
IndexAside,
IndexHeader
},
data() {
return {
menuList: [],
role: "",
currentIndex: -2,
itemMenu: [],
title: ''
};
},
mounted() {
let menus = menu.list();
this.menuList = menus;
this.role = this.$storage.get("role");
},
created() {
this.init();
console.log(console.log(this.$route.path))
},
methods: {
init(){
this.$nextTick(()=>{
})
},
menuHandler(menu) {
this.$router.push({
name: menu.tableName
});
this.title = menu.menu;
},
titleChange(index, menus) {
this.currentIndex = index
this.itemMenu = menus;
console.log(menus);
},
homeChange(index) {
this.itemMenu = [];
this.title = ""
this.currentIndex = index
this.$router.push({
name: 'home'
});
},
centerChange(index) {
this.itemMenu = [{
"buttons": ["新增", "查看", "修改", "删除"],
"menu": "修改密码",
"tableName": "updatePassword"
}, {
"buttons": ["新增", "查看", "修改", "删除"],
"menu": "个人信息",
"tableName": "center"
}];
this.title = ""
this.currentIndex = index
this.$router.push({
name: 'home'
});
}
}
};
</script>
<style lang="scss" scoped>
a {
text-decoration: none;
color: #555;
}
a:hover {
background: #00c292;
}
.el-main {
padding: 0;
display: block;
}
.nav-list {
width: 100%;
margin: 0 auto;
text-align: left;
margin-top: 20px;
.nav-title {
display: inline-block;
font-size: 15px;
color: #333;
padding: 15px 25px;
border: none;
}
.nav-title.active {
color: #555;
cursor: default;
background-color: #fff;
}
}
.nav-item {
margin-top: 20px;
background: #FFFFFF;
padding: 15px 0;
.menu {
padding: 15px 25px;
}
}
.detail-form-content {
background: transparent;
}
</style>
声明
本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。