近年来,随着城市化水平的持续提升,机动车数量呈现出快速增长态势。根据公安部发布的数据,截至2024年末,全国机动车总量已超过4.3亿辆,其中汽车保有量占比达75%以上。车辆激增带来了诸多城市管理难题,尤其是停车难、违规停放、收费不透明等现象愈发严重,不仅影响市民出行便利性,也对城市交通运行秩序构成挑战。
传统的停车场管理模式依赖人工操作,在效率、准确性及运营成本方面存在明显短板,难以满足现代智慧城市建设的发展要求。与此同时,“十四五”规划中明确提出要加快新型基础设施建设,重点推进智慧城市与智能交通系统的融合发展。在此政策推动下,借助信息技术实现停车场的智能化管理与自动收费已成为行业转型升级的重要方向。
基于上述背景,设计并实现一套高效、稳定且具备良好扩展性的停车场收费管理系统具有重要的现实价值。本项目以解决当前停车场运营中的核心痛点为目标,采用前后端分离架构,后端基于SpringBoot框架,前端使用Vue3技术栈,构建集车辆进出管理、自动计费、在线支付和数据分析于一体的综合平台。系统旨在提升管理效能的同时,为用户提供更加便捷、公开的服务体验。
本系统的研发在理论探索与实际应用层面均具备显著价值:
本课题聚焦于“停车场收费管理系统”的设计与实现,主要涵盖以下研究任务:
欧美国家自20世纪90年代起便开始布局智能停车系统建设。例如,美国的ParkWhiz、欧洲的EasyPark等平台已实现车位预约、无感支付和动态调价等功能。近年来,随着物联网(IoT)与人工智能(AI)技术的进步,国外系统普遍整合了车牌识别摄像头、地磁感应器和移动App等设备,形成“感知—决策—执行”的闭环管理体系。部分城市还将停车数据接入“城市大脑”,用于宏观交通流量调控与资源调配。
我国智能停车系统起步相对较晚,但发展速度较快。目前市场上主流的商业平台如ETCP、停简单、捷停车等,依托微信和支付宝生态系统,提供扫码进出、电子发票开具、会员积分奖励等服务。然而,这些平台多采用SaaS模式,缺乏灵活性,难以满足中小停车场的个性化需求。同时,部分系统存在数据孤岛、接口封闭、计费机制固化等问题,限制了其广泛应用。
现有解决方案主要集中服务于大型商业综合体,缺少面向社区、企事业单位内部停车场的轻量化、低成本系统。本课题拟开发一款开源、可本地部署且支持灵活配置的停车场管理系统,支持多种计费策略(如分时计费、包月套餐、免费时段设定等),并配备完整的后台管理界面,填补中小型停车场在数字化管理方面的空白。
SpringBoot是由Pivotal团队推出的一款基于Spring框架的快速开发工具,秉持“约定优于配置”的设计理念,极大简化了Spring应用的初始化与开发流程。其核心特性包括自动配置、起步依赖引入以及内嵌服务器(如Tomcat),有效降低了项目搭建复杂度。
在本系统中,SpringBoot承担后端核心职责,负责HTTP请求处理、业务逻辑调度、事务控制以及安全认证等功能。其主要优势体现在:
MyBatis是一款优秀的持久层框架,它将SQL语句与Java代码解耦,允许开发者通过XML或注解方式定义数据库操作,提升了SQL的可控性与可维护性。相比传统JDBC,MyBatis减少了大量模板代码,同时避免了完全自动化ORM可能带来的性能损耗。
在本系统中,MyBatis用于实现Java对象与MySQL数据库之间的映射操作,配合SpringBoot的整合支持,实现了数据访问层的高效开发与灵活管理。其特点包括:
技术可行性:系统选用的技术组合(SpringBoot + Vue3)具备良好的成熟度与稳定性,拥有活跃的社区支持和丰富的文档资源。开发团队对相关技术有扎实掌握,能够高效完成系统构建。
经济可行性:项目基于开源技术栈实现,无需支付商业授权费用;部署环境要求较低,适合中小型停车场的实际应用场景,整体成本控制良好。
操作可行性:用户界面设计简洁直观,操作逻辑符合日常使用习惯,管理员经过简短培训即可熟练操作系统。
功能性需求:
非功能性需求:
车辆进出停车场的主要流程如下:
系统采用 B/S 架构模式,前后端完全分离。前端基于 Vue3 与 Ant Design Vue 搭建响应式交互界面;后端通过 SpringBoot 提供 RESTful API 接口,并利用 JWT 实现用户身份认证与权限控制。
ER 图简要说明:
系统包含多个核心实体,包括用户、车辆、车位、订单、计费规则、支付记录、管理员和操作日志,各实体之间通过外键关联形成完整数据模型。
数据库共设计不少于 8 张表,涵盖系统主要业务对象及其关系。
-- 1. 用户表
CREATE TABLE `user` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`username` VARCHAR(50) UNIQUE NOT NULL,
`password` VARCHAR(100) NOT NULL,
`phone` VARCHAR(20),
`role` TINYINT DEFAULT 0 COMMENT '0:普通用户,1:管理员',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 2. 车辆表
CREATE TABLE `vehicle` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`license_plate` VARCHAR(20) UNIQUE NOT NULL,
`owner_id` BIGINT NOT NULL,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`owner_id`) REFERENCES `user`(`id`)
);
-- 3. 车位表
CREATE TABLE `parking_spot` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`spot_number` VARCHAR(20) UNIQUE NOT NULL,
`status` TINYINT DEFAULT 0 COMMENT '0:空闲,1:占用',
`zone` VARCHAR(50)
);
-- 4. 入场记录表
CREATE TABLE `entry_record` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`vehicle_id` BIGINT NOT NULL,
`spot_id` BIGINT,
`entry_time` DATETIME NOT NULL,
`exit_time` DATETIME NULL,
`status` TINYINT DEFAULT 0 COMMENT '0:未离场,1:已离场',
FOREIGN KEY (`vehicle_id`) REFERENCES `vehicle`(`id`),
FOREIGN KEY (`spot_id`) REFERENCES `parking_spot`(`id`)
);
-- 5. 计费规则表
CREATE TABLE `pricing_rule` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`rule_name` VARCHAR(100) NOT NULL,
`base_price` DECIMAL(10,2) NOT NULL COMMENT '首小时价格',
`extra_price` DECIMAL(10,2) NOT NULL COMMENT '每增加一小时价格',
`free_minutes` INT DEFAULT 15,
`is_active` TINYINT DEFAULT 1
);
-- 6. 订单表
CREATE TABLE `order` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`record_id` BIGINT NOT NULL,
`total_amount` DECIMAL(10,2) NOT NULL,
`status` TINYINT DEFAULT 0 COMMENT '0:未支付,1:已支付',
`pay_time` DATETIME NULL,
FOREIGN KEY (`record_id`) REFERENCES `entry_record`(`id`)
);
-- 7. 支付记录表
CREATE TABLE `payment_log` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`order_id` BIGINT NOT NULL,
`amount` DECIMAL(10,2) NOT NULL,
`payment_method` VARCHAR(20),
`transaction_id` VARCHAR(100),
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`order_id`) REFERENCES `order`(`id`)
);
-- 8. 系统日志表
CREATE TABLE `sys_log` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`user_id` BIGINT,
`operation` VARCHAR(100),
`ip` VARCHAR(50),
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
);
前端实现(Vue3 + Composition API):
<!-- Login.vue -->
<script setup>
import { ref } from 'vue'
import axios from 'axios'
const username = ref('')
const password = ref('')
const handleLogin = async () => {
const res = await axios.post('/api/auth/login', { username: username.value, password: password.value })
localStorage.setItem('token', res.data.token)
// 跳转首页
}
</script>
后端实现(SpringBoot Controller):
@PostMapping("/login")
public Result login(@RequestBody LoginDTO dto) {
User user = userService.findByUsername(dto.getUsername());
if (user == null || !BCrypt.checkpw(dto.getPassword(), user.getPassword())) {
throw new RuntimeException("用户名或密码错误");
}
String token = JwtUtil.generateToken(user.getId());
return Result.success(Map.of("token", token));
}
MyBatis 是一个轻量级但功能强大的持久层框架,支持自定义 SQL 查询、存储过程以及高级结果映射。相较于 Hibernate 的全自动 ORM 模式,MyBatis 避免了“黑盒”操作的问题,允许开发者直接编写 SQL 语句,在保证灵活性的同时优化执行性能。
在本系统中,MyBatis 负责将 Java 对象与 MySQL 数据库中的表记录进行映射。通过注解或 XML 配置方式定义 CRUD 操作。其核心组件包括:
@Mapper
MySQL 是一款广泛使用的开源关系型数据库管理系统,以高性能、高可靠性和易用性著称,适用于各类 Web 应用场景。本系统采用 MySQL 8.0 版本,启用 InnoDB 存储引擎,支持事务处理、行级锁机制,并具备 JSON 数据类型、窗口函数等现代数据库特性。
当一条 SQL 语句被提交至 MySQL 时,其内部经历一系列解析与执行步骤:
软件测试是保障系统稳定性、安全性和可用性的关键环节,有助于提前发现缺陷,提高产品质量。
JDK 17, MySQL 8.0, Node.js 18, Chrome 浏览器
实测平均响应时间为 800ms,服务器 CPU 占用率低于 30%,系统资源消耗合理,运行平稳。
系统功能完整,界面友好,满足中小型停车场的管理需求,具备较强的实用价值。
本文设计并实现了一套基于 SpringBoot 与 Vue3 的智能停车场收费管理系统。系统采用前后端分离架构,后端以 SpringBoot 为核心,结合 MyBatis 与 MySQL 实现数据持久化操作;前端使用 Vue3 搭配 Ant Design Vue 构建响应式用户界面。
通过深入的系统分析、合理的数据库设计(共设计 8 张以上数据表)以及详细的功能开发,系统成功实现了车辆出入场管理、智能计费、在线支付模拟、数据统计分析等核心功能。
测试结果显示,系统运行稳定,性能表现优良,响应速度快,资源占用低。未来可通过集成车牌识别硬件、对接微信小程序等方式进一步提升系统的智能化水平和用户体验。该项目不仅解决了实际管理问题,也为类似智慧停车系统的开发提供了可借鉴的设计范例。
扫码加好友,拉您进群



收藏
