【开源】基于JAVA的停车场收费系统

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 停车位模块
    • 2.2 车辆模块
    • 2.3 停车收费模块
    • 2.4 IC卡模块
    • 2.5 IC卡挂失模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 数据库设计
      • 3.2.1 停车场表
      • 3.2.2 车辆表
      • 3.2.3 停车收费表
      • 3.2.4 IC 卡表
      • 3.2.5 IC 卡挂失表
  • 四、系统实现
  • 五、核心代码
    • 5.1 查询停车位
    • 5.2 查询车辆
    • 5.3 新增停车记录
    • 5.4 查询 IC 卡
    • 5.5 新增 IC 卡挂失
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的停车场收费系统,包含了车辆管理模块、停车场模块、停车记录模块、IC卡档案模块和IC卡挂失模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,停车场收费系统基于角色的访问控制,给停车管理员、车主、工作人员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

随着我国经济的不断发展,人民生活水平的也日益提高,外出购物、旅游意向也越来越强,对交通出行的需求也越来越大。在一些大型商贸场所,无论是人流量还是车流都格外大,而道路承载压力也随之增加,所以城市停车问题的解决也越发急迫。由此观之,如何解决商场等人流量多等地的停车问题,是解决交通拥堵的关键点。

综上所述,设计一个停车场收费系统能够简化人们停车流程,提高停车效率,从而解决拥挤问题,节省人们时间的同时也间接推动经济发展。本文研究的系统采用JAVA开发,停车场收费系统的应用取得了显著的效果。通过停车场收费系统的运行,停车场实现了车辆进出的自动化、停车场管理的精细化和收费流程的标准化,从而提高停车场管理效率和准确性,为停车场管理决策提供更完整、准确的数据支持。

1.2 项目录屏


二、功能模块

在这里插入图片描述

2.1 停车位模块

停车位是城市不可或缺的一部分,在城市和人民的生活、工作和流动中具有重要意义。随着城市化进程的加快和汽车保有量的增加,城市交通拥堵问题越来越明显。如果有足够的停车位,可以更好地引导交通,防止交通混乱,缓解交通拥堵,在城市内驾驶车辆的效率取决于停车位的数量和位置。良好的停车位规划和管理可以提高车辆停车效率,减少道路拥堵,提高城市交通效率。停车位的可用性直接影响市民的出行体验。当停车位紧张时,市民很难开车出去,如果有足够的停车位,市民出行将更加方便和舒适。停车位的可用性也会影响商业中心区域的吸引力,如果没有足够的停车位,消费者会选择其他商业中心,这将影响经济发展。

2.2 车辆模块

车辆模块是停车场收费系统的关键组件之一,用于记录、管理和监控车辆信息和状态。车辆模块可以实现车辆进出的自动化和数据处理的自动化,从而提高停车管理的效率和准确性。通过车辆模块,停车可以为用户提供更智能、更方便的服务,减少用户等待时间和不良体验。车辆模块可以有效控制车辆的交通流量,缓解道路拥堵,改善城市交通拥堵问题。车辆模块可以记录和监控车辆的进出,可以减少非法侵入和车辆盗窃等安全问题。车辆模块在停车管理系统中具有重要的研究意义,可以提高停车管理的效率和服务质量,改善城市交通拥堵,加强安全监督管理,为停车管理提供数据支持。

2.3 停车收费模块

停车收费是对车辆的停车位置、停留时间和计费状态等信息的有效记录和管理。停车收费可以让车主清楚地知道他们的车辆停在哪里和什么时候停,避免车辆被盗和其他安全问题。通过停车收费,可以获得停车位使用情况、停车流量等信息,让停车场管理者更好地分析和制定停车策略,帮助维护停车场的秩序和安全。停车收费也可以用于精细化管理,例如通过针对特定高峰时间和特定情况的差异化定价政策来提高停车利用率和管理效率。通过停车收费,可以了解车主的停车习惯和需求,为车主提供更好的停车服务,提高停车场的服务质量和用户体验。

2.4 IC卡模块

IC卡是智能卡的缩写,车主可以拥有一张或多张的IC卡,用于停车费用的缴纳,IC卡字段包括IC卡号、开卡日期、所属人、经办人、服务电话、余额、创建人、创建时间,车主可以申请新的IC卡,停车场管理员可以新增、挂失、编辑、条件查询车主的IC卡。

2.5 IC卡挂失模块

IC卡是一张实体卡,车主难免会遗失或损坏,当出现这类情况时则无法完成停车费用缴纳,这就需要建一个IC卡挂失模块,给车主的挂失卡替换为新的IC卡,IC卡挂失字段包括原卡号、新卡号、申请人、申请日期、申请状态、审核状态、经办人、创建时间,车主可以选择自己名下的IC卡发起挂失申请,停车场管理员可以审核车主的IC卡挂失申请。


三、系统设计

3.1 用例设计

在这里插入图片描述

3.2 数据库设计

3.2.1 停车场表

在这里插入图片描述

3.2.2 车辆表

在这里插入图片描述

3.2.3 停车收费表

在这里插入图片描述

3.2.4 IC 卡表

在这里插入图片描述

3.2.5 IC 卡挂失表

在这里插入图片描述


四、系统实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 查询停车位

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询停车位")
public Result<IPage<ParkingSpace>> getByPage(@ModelAttribute ParkingSpace parkingSpace ,@ModelAttribute PageVo page){QueryWrapper<ParkingSpace> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(parkingSpace.getTitle())) {qw.like("title",parkingSpace.getTitle());}if(!ZwzNullUtils.isNull(parkingSpace.getStatus())) {qw.eq("status",parkingSpace.getStatus());}IPage<ParkingSpace> data = iParkingSpaceService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<ParkingSpace>>().setData(data);
}

5.2 查询车辆

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询车辆")
public Result<IPage<Vehicle>> getByPage(@ModelAttribute Vehicle vehicle ,@ModelAttribute PageVo page){QueryWrapper<Vehicle> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND (role_id = '1536606659751841799' OR role_id = '1720347028472598528')");if(iUserService.count(userQw) < 1L) {qw.eq("owner_id",currUser.getId());}if(!ZwzNullUtils.isNull(vehicle.getCarNumber())) {qw.like("car_number",vehicle.getCarNumber());}if(!ZwzNullUtils.isNull(vehicle.getCarType())) {qw.like("car_type",vehicle.getCarType());}if(!ZwzNullUtils.isNull(vehicle.getOwnerName())) {qw.like("owner_name",vehicle.getOwnerName());}IPage<Vehicle> data = iVehicleService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Vehicle>>().setData(data);
}

5.3 新增停车记录

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增停车记录")
public Result<ParkingData> insert(ParkingData parkingData){Vehicle car = iVehicleService.getById(parkingData.getCarId());if(car == null) {return ResultUtil.error("车辆不存在");}// 判断余额QueryWrapper<IcCard> icQw = new QueryWrapper<>();icQw.eq("user_id",car.getOwnerId());icQw.last("limit 1");IcCard ic = iIcCardService.getOne(icQw);if(ic == null) {return ResultUtil.error("您没有IC卡,请申请");}if(parkingData.getCost().compareTo(ic.getBalance()) > 0) {return ResultUtil.error("您IC卡余额不足");}// 记录数据parkingData.setCarNumber(car.getCarNumber());parkingData.setOwnerId(car.getOwnerId());parkingData.setOwner(car.getOwnerName());iParkingDataService.saveOrUpdate(parkingData);ic.setBalance(ic.getBalance().subtract(parkingData.getCost()));iIcCardService.saveOrUpdate(ic);return new ResultUtil<ParkingData>().setData(parkingData);
}

5.4 查询 IC 卡

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询IC卡")
public Result<IPage<IcCard>> getByPage(@ModelAttribute IcCard icCard ,@ModelAttribute PageVo page){QueryWrapper<IcCard> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND (role_id = '1536606659751841799' OR role_id = '1720347028472598528')");if(iUserService.count(userQw) < 1L) {qw.eq("user_id",currUser.getId());}if(!ZwzNullUtils.isNull(icCard.getCarNumber())) {qw.like("car_number",icCard.getCarNumber());}if(!ZwzNullUtils.isNull(icCard.getWorkUser())) {qw.like("work_user",icCard.getWorkUser());}IPage<IcCard> data = iIcCardService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<IcCard>>().setData(data);
}

5.5 新增 IC 卡挂失

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增IC卡挂失")
public Result<IcCardLoss> insert(IcCardLoss icCardLoss){IcCard ic = iIcCardService.getById(icCardLoss.getCarId());if(ic == null) {return ResultUtil.error("IC卡不存在");}icCardLoss.setCarNumber(ic.getCarNumber());User currUser = securityUtil.getCurrUser();icCardLoss.setApplyId(currUser.getId());icCardLoss.setApplyUser(currUser.getNickname());iIcCardLossService.saveOrUpdate(icCardLoss);return new ResultUtil<IcCardLoss>().setData(icCardLoss);
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/638784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在达沃斯,人工智能引发的乐观情绪可谓一分为二

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

基于STM32的基础实验(一)

LED实验 采用STM32单片机设计电路&#xff0c;控制LED灯的亮灭&#xff0c;对单片机端口的位操作进行演示。 实验需要&#xff1a; STM32核心板独立LED 电路原理图 LED灯实际上是一个特殊的二极管&#xff0c;通过控制高低电平亮灭。如图所示&#xff0c;当1为低电平&#…

数据可视化 | 期末复习 | 补档

文章目录 &#x1f4da;介绍可视化&#x1f407;什么是可视化&#x1f407;科学可视化&#xff0c;信息可视化&#xff0c;可视分析系统三者之间有什么区别&#x1f525;&#x1f407;可视化的基本流程&#x1f407;可视化的两个基本设计原则&#x1f407;数据属性&#x1f407…

数学建模学习笔记||层次分析法

评价类问题 解决评价类问题首先需要想到一下三个问题 我们评价的目标是什么我们为了达到这个目标有哪几种可行方案评价的准则或者说指标是什么 对于以上三个问题&#xff0c;我们可以根据题目中的背景材料&#xff0c;常识以及网上收集到的参考资料进行结合&#xff0c;从而筛…

GEE:最小距离分类器(minimumDistance)分类教程(样本制作、特征添加、训练、精度、最优参数、统计面积)

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上进行最小距离分类(minimumDistance)的方法和代码,其中包括制作样本点教程(本地、在线和本地在线混合制作样本点,合并样本点等),加入特征变量(各种指数、纹理特征、时间序列特征、物候特征等),运行…

本地git切换地区后,无法使用ssh访问github 22端口解决方案

问题 由于放假回家&#xff0c;发现之前一直使用正常的git&#xff0c;与github无法通讯&#xff0c;pull和push都无法连接。报错如下&#xff1a; connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. 原因 可能是所…

docker常用基础命令

文章目录 1、Docker 环境信息命令1.1、docker info1.2、docker version 2、系统日志信息常用命令2.1、docker events2.2、docker logs2.3、docker history 3、容器的生命周期管理命令3.1、docker create3.2、docker run 总结 1、Docker 环境信息命令 1.1、docker info 显示 D…

Linux 命令大全 CentOS常用运维命令

文章目录 1、Linux 目录结构2、解释目录3、命令详解3.1、shutdown命令3.1、文件目录管理命令ls 命令cd 命令pwd 命令tree 命令mkdir 命令touch 命令cat 命令cp 命令more 命令less 命令head 命令mv 命令rm 命令ln 命令tail 命令cut命令 3.2、用户管理useradd/userdel 命令用户的…

使用残差网络识别手写数字及MNIST 数据集介绍

MNIST 数据集已经是一个几乎每个初学者都会接触的数据集, 很多实验、很多模型都会以MNIST 数据集作为训练对象, 不过有些人可能对它还不是很了解, 那么今天我们一起来学习一下MNIST 数据集。 1.MNIST 介绍 MNIST 数据集来自美国国家标准与技术研究所, National Institute of S…

2. SpringBoot3 实战之用户模块接口开发

文章目录 开发模式和环境搭建开发模式环境搭建 1. 用户注册1.1 注册接口基本代码编写1.2 注册接口参数校验 2. 用户登录2.1 登录接口基本代码编写2.2 登录认证2.2.1 登录认证引入2.2.2 JWT 简介2.2.3 登录功能集成 JWT2.2.4 拦截器 3. 获取用户详细信息3.1 获取用户详细信息基本…

openEuler安装KVM

1、关闭防火墙和selinux [rootlocalhost ~]# systemctl stop firewalld[rootlocalhost ~]# setenforce 0 2、下载软件包 libvirt&#xff1a;用于管理虚拟化平台的开源的 API&#xff0c;后台程序和管理工具。 qemu&#xff1a;开源&#xff08;模拟&#xff09;软件&#…

【MySQL】InnoDB 什么情况下会产生死锁

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;数据库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在数据库管理系统中&#xff0c;特别是使用 InnoDB 存储引擎的 MySQL 中&#xff0c;死锁是一个可能影响…

Win10下在Qt项目中配置SQlite3环境

资源下载 官网资源&#xff1a;SQLite Download Page 1、sqlite.h sqlite-amalgamation-3450000.zip (2.60 MiB) 2、sqlite3.def&#xff0c;sqlite3.dll sqlite-dll-win-x64-3450000.zip (1.25 MiB) 3、 win10下安装sqlite3所需要文件 sqlite-tools-win-x64-3450000.zipht…

万界星空科技MES系统的生产管理流程

对于生产型工厂来说&#xff0c;车间生产流程无疑是最重要的管理环节&#xff0c;繁琐的生产细节让企业很难找到合理的生产管理方法&#xff0c;导致人工效率低、错误多、成本高。如果想要解决这些问题&#xff0c;工厂就必须要有一套自己的生产管理系统&#xff0c;这样才能提…

【Leetcode】410. 分割数组的最大值

文章目录 题目思路1.max_element2.partial_sum3.upper_bound4.distance 代码运行结果 题目 题目链接 给定一个非负整数数组 nums 和一个整数 k &#xff0c;你需要将这个数组分成 k 个非空的连续子数组。 设计一个算法使得这 k 个子数组各自和的最大值最小。 示例1&#xff1…

玩转 SpEL 表达式

本文概览 欢迎阅读本文&#xff0c;其中我们将深入探讨 Spring Expression Language&#xff08;SpEL&#xff09;的语法和实际应用。从基础概念到高级用法&#xff0c;我们将在本文中了解如何使用 SpEL 提高代码的灵活性和表达力。无论大家是初学者还是有经验的开发者&#x…

ACM题解Day2|1.台风, 2.式神考试,3.DNA,4.方程求解

学习目标&#xff1a; 博主介绍: 27dCnc 专题 : 数据结构帮助小白快速入门 &#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d;&#x1f44d; ☆*: .&#xff61;. o(≧▽≦)…

Python 算法交易实验67 第一次迭代总结

说明 在这里对第一次迭代&#xff08;2023.7~ 2024.1&#xff09;进行一些回顾和总结&#xff1a; 回顾&#xff1a; 1 实现了0~1的变化2 在信息隔绝的条件下&#xff0c;无控制的操作&#xff0c;导致被套 总结&#xff1a; 思路可行&#xff0c;在春暖花开的时候&#x…

企业Oracle1 数据库管理

Oracle的安装 一、基础表的创建 1.1 切换到scott用户 用sys 账户 登录 解锁scott账户 alter user scott account unlock;conn scott/tiger;发现并不存在scott账户&#xff0c;自己创建一个&#xff1f; 查找资料后发现&#xff0c;scott用户的脚本需要自己执行一下 C:\ap…

三、MySQL库表操作

3.1 SQL语句基础&#xff08;SQL命令&#xff09; 3.1.1 SQL简介 SQL&#xff1a;结构化查询语言(Structured Query Language)&#xff0c;在关系型数据库上执行数据操作&#xff0c;数据检索以及数据维护的标准化语言。使用SQL语句&#xff0c;程序员和数据库管理员可以完成…