前言
💖💖作者:计算机程序员小杨 💙💙个人简介:我是一名计算机相关专业的从业者,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。热爱技术,喜欢钻研新工具和框架,也乐于通过代码解决实际问题,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💕💕文末获取源码联系 计算机程序员小杨 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目 计算机毕业设计选题 💜💜
一.开发工具简介
开发语言:Java+Python(两个版本都支持) 后端框架:Spring Boot(Spring+SpringMVC+Mybatis)+Django(两个版本都支持) 前端:Vue+ElementUI+HTML 数据库:MySQL 系统架构:B/S 开发工具:IDEA(Java的)或者PyCharm(Python的)
二.系统内容简介
本停车场管理系统基于SpringBoot+Vue架构开发,采用B/S模式设计,旨在解决传统停车场管理效率低下、信息记录不准确等问题。系统集成了用户管理、车辆登记信息管理、车位信息管理、固定停车位管理、入场信息管理、临时入场管理、离场信息管理、留言板管理、系统管理和个人中心等十大核心功能模块。后端采用Spring Boot框架构建RESTful API接口,结合MyBatis实现数据持久化操作,前端使用Vue.js配合ElementUI组件库构建响应式用户界面,数据存储采用MySQL关系型数据库。系统支持Java和Python双版本实现,管理员可以通过Web界面实时监控停车场运营状况,包括车位占用率、车辆进出记录、收费统计等关键指标,同时为车主提供便捷的停车服务体验,实现停车场运营的数字化转型和智能化管理。
三.系统功能演示
四.系统界面展示
五.系统源码展示
import org.apache.spark.sql.SparkSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.math.BigDecimal;
@Service
public class ParkingManagementService {
@Autowired
private VehicleMapper vehicleMapper;
@Autowired
private ParkingSpaceMapper parkingSpaceMapper;
@Autowired
private EntryRecordMapper entryRecordMapper;
private SparkSession spark = SparkSession.builder()
.appName("ParkingManagementAnalysis")
.master("local[*]")
.getOrCreate();
// 车辆入场管理核心功能
public Result vehicleEntry(VehicleEntryRequest request) {
Vehicle vehicle = vehicleMapper.findByLicensePlate(request.getLicensePlate());
if (vehicle == null) {
vehicle = new Vehicle();
vehicle.setLicensePlate(request.getLicensePlate());
vehicle.setOwnerName(request.getOwnerName());
vehicle.setOwnerPhone(request.getOwnerPhone());
vehicle.setVehicleType(request.getVehicleType());
vehicle.setCreateTime(LocalDateTime.now());
vehicleMapper.insert(vehicle);
}
List<ParkingSpace> availableSpaces = parkingSpaceMapper.findAvailableSpaces();
if (availableSpaces.isEmpty()) {
return Result.error("暂无可用停车位");
}
ParkingSpace assignedSpace = availableSpaces.get(0);
assignedSpace.setStatus(1);
assignedSpace.setOccupiedBy(vehicle.getId());
assignedSpace.setUpdateTime(LocalDateTime.now());
parkingSpaceMapper.updateById(assignedSpace);
EntryRecord entryRecord = new EntryRecord();
entryRecord.setVehicleId(vehicle.getId());
entryRecord.setSpaceId(assignedSpace.getId());
entryRecord.setEntryTime(LocalDateTime.now());
entryRecord.setStatus(0);
entryRecordMapper.insert(entryRecord);
return Result.success("车辆入场成功,分配停车位:" + assignedSpace.getSpaceNumber());
}
// 车辆离场管理核心功能
public Result vehicleExit(VehicleExitRequest request) {
Vehicle vehicle = vehicleMapper.findByLicensePlate(request.getLicensePlate());
if (vehicle == null) {
return Result.error("未找到该车辆信息");
}
EntryRecord activeRecord = entryRecordMapper.findActiveRecordByVehicleId(vehicle.getId());
if (activeRecord == null) {
return Result.error("该车辆无有效入场记录");
}
LocalDateTime exitTime = LocalDateTime.now();
long parkingMinutes = ChronoUnit.MINUTES.between(activeRecord.getEntryTime(), exitTime);
BigDecimal parkingFee = calculateParkingFee(parkingMinutes, vehicle.getVehicleType());
activeRecord.setExitTime(exitTime);
activeRecord.setParkingFee(parkingFee);
activeRecord.setStatus(1);
entryRecordMapper.updateById(activeRecord);
ParkingSpace space = parkingSpaceMapper.selectById(activeRecord.getSpaceId());
space.setStatus(0);
space.setOccupiedBy(null);
space.setUpdateTime(LocalDateTime.now());
parkingSpaceMapper.updateById(space);
ExitRecord exitRecord = new ExitRecord();
exitRecord.setVehicleId(vehicle.getId());
exitRecord.setSpaceId(activeRecord.getSpaceId());
exitRecord.setExitTime(exitTime);
exitRecord.setParkingDuration(parkingMinutes);
exitRecord.setParkingFee(parkingFee);
exitRecordMapper.insert(exitRecord);
return Result.success("车辆离场成功,停车费用:" + parkingFee + "元");
}
// 停车位状态管理核心功能
public Result manageParkingSpaceStatus(ParkingSpaceManageRequest request) {
ParkingSpace parkingSpace = parkingSpaceMapper.selectById(request.getSpaceId());
if (parkingSpace == null) {
return Result.error("停车位不存在");
}
if (request.getOperation().equals("reserve")) {
if (parkingSpace.getStatus() != 0) {
return Result.error("该停车位不可预订");
}
parkingSpace.setStatus(2);
parkingSpace.setReservedBy(request.getUserId());
parkingSpace.setReservationTime(LocalDateTime.now());
parkingSpace.setUpdateTime(LocalDateTime.now());
parkingSpaceMapper.updateById(parkingSpace);
ReservationRecord reservation = new ReservationRecord();
reservation.setUserId(request.getUserId());
reservation.setSpaceId(request.getSpaceId());
reservation.setReservationTime(LocalDateTime.now());
reservation.setStatus(0);
reservationMapper.insert(reservation);
} else if (request.getOperation().equals("cancel")) {
if (parkingSpace.getStatus() != 2 || !parkingSpace.getReservedBy().equals(request.getUserId())) {
return Result.error("无法取消该预订");
}
parkingSpace.setStatus(0);
parkingSpace.setReservedBy(null);
parkingSpace.setReservationTime(null);
parkingSpace.setUpdateTime(LocalDateTime.now());
parkingSpaceMapper.updateById(parkingSpace);
reservationMapper.cancelReservationBySpaceIdAndUserId(request.getSpaceId(), request.getUserId());
} else if (request.getOperation().equals("maintain")) {
parkingSpace.setStatus(3);
parkingSpace.setMaintenanceReason(request.getReason());
parkingSpace.setMaintenanceStartTime(LocalDateTime.now());
parkingSpace.setUpdateTime(LocalDateTime.now());
parkingSpaceMapper.updateById(parkingSpace);
}
return Result.success("停车位状态更新成功");
}
private BigDecimal calculateParkingFee(long parkingMinutes, String vehicleType) {
BigDecimal hourlyRate = vehicleType.equals("小型车") ? new BigDecimal("5.00") : new BigDecimal("8.00");
long hours = (parkingMinutes + 59) / 60;
return hourlyRate.multiply(new BigDecimal(hours));
}
}
```
## 六.系统文档展示

## 结束
💕💕文末获取源码联系 [计算机程序员小杨](https://blog.csdn.net/2501_92997004?spm=1000.2115.3001.5343)