💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
基于SpringBoot的停车管理系统介绍
《基于SpringBoot的停车管理系统》是一套完整的智能停车场管理解决方案,采用当前主流的技术架构进行开发实现。系统后端基于SpringBoot框架构建,集成Spring、SpringMVC和MyBatis技术栈,提供稳定可靠的服务支撑;前端采用Vue.js结合ElementUI组件库开发,实现响应式的用户界面设计,同时支持传统HTML页面展示;数据存储采用MySQL关系型数据库,确保数据的安全性和一致性。系统整体采用B/S架构模式,支持多用户并发访问,便于维护和扩展。功能方面,系统涵盖了停车场运营管理的各个环节,包括系统首页展示、用户信息管理、用户充值记录跟踪、停车场基础信息维护、车位信息管理、在线车位预约、车辆入场登记、车辆离场结算等核心业务功能。此外,系统还提供留言反馈模块便于用户沟通、敏感词过滤确保内容安全、系统管理功能支持日常运维、公告资讯发布保持信息更新、系统操作日志记录、轮播图管理丰富页面展示、在线客服中心提供实时支持,以及完善的个人中心功能让用户可以管理个人信息和修改登录密码。整个系统设计合理,功能完备,技术架构成熟,非常适合作为计算机专业学生的毕业设计项目,既能展现扎实的编程基础,又能体现对实际业务场景的理解和系统设计能力。
基于SpringBoot的停车管理系统演示视频
基于SpringBoot的停车管理系统演示图片
基于SpringBoot的停车管理系统代码展示
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.*;
@Service
public class ParkingCoreService {
@Autowired
private ParkingSpaceMapper parkingSpaceMapper;
@Autowired
private VehicleEntryMapper vehicleEntryMapper;
@Autowired
private ReservationMapper reservationMapper;
private SparkSession spark = SparkSession.builder()
.appName("ParkingManagementAnalysis")
.master("local[*]")
.config("spark.sql.adaptive.enabled", "true")
.config("spark.sql.adaptive.coalescePartitions.enabled", "true")
.getOrCreate();
public Map<String, Object> reserveParkingSpace(Long userId, Long spaceId, LocalDateTime reserveTime) {
Map<String, Object> result = new HashMap<>();
ParkingSpace space = parkingSpaceMapper.selectById(spaceId);
if (space == null) {
result.put("success", false);
result.put("message", "车位不存在");
return result;
}
if (space.getStatus() != 0) {
result.put("success", false);
result.put("message", "车位已被占用或预约");
return result;
}
List<Reservation> existingReservations = reservationMapper.selectByUserIdAndTimeRange(userId, reserveTime, reserveTime.plusHours(2));
if (!existingReservations.isEmpty()) {
result.put("success", false);
result.put("message", "您在该时间段已有预约");
return result;
}
Reservation reservation = new Reservation();
reservation.setUserId(userId);
reservation.setSpaceId(spaceId);
reservation.setReserveTime(reserveTime);
reservation.setExpiryTime(reserveTime.plusMinutes(15));
reservation.setStatus(1);
reservation.setCreateTime(LocalDateTime.now());
reservationMapper.insert(reservation);
space.setStatus(2);
parkingSpaceMapper.updateById(space);
result.put("success", true);
result.put("message", "预约成功");
result.put("reservationId", reservation.getId());
result.put("expiryTime", reservation.getExpiryTime());
return result;
}
public Map<String, Object> vehicleEntry(String plateNumber, Long spaceId, String entryGate) {
Map<String, Object> result = new HashMap<>();
ParkingSpace space = parkingSpaceMapper.selectById(spaceId);
if (space == null || space.getStatus() == 1) {
result.put("success", false);
result.put("message", "车位不可用");
return result;
}
VehicleEntry existingEntry = vehicleEntryMapper.selectByPlateNumberAndStatus(plateNumber, 1);
if (existingEntry != null) {
result.put("success", false);
result.put("message", "该车辆已在场内");
return result;
}
Reservation reservation = reservationMapper.selectBySpaceIdAndStatus(spaceId, 1);
if (reservation != null && reservation.getExpiryTime().isBefore(LocalDateTime.now())) {
reservation.setStatus(3);
reservationMapper.updateById(reservation);
space.setStatus(0);
parkingSpaceMapper.updateById(space);
}
VehicleEntry vehicleEntry = new VehicleEntry();
vehicleEntry.setPlateNumber(plateNumber);
vehicleEntry.setSpaceId(spaceId);
vehicleEntry.setEntryTime(LocalDateTime.now());
vehicleEntry.setEntryGate(entryGate);
vehicleEntry.setStatus(1);
if (reservation != null && reservation.getStatus() == 1) {
vehicleEntry.setReservationId(reservation.getId());
reservation.setStatus(2);
reservationMapper.updateById(reservation);
}
vehicleEntryMapper.insert(vehicleEntry);
space.setStatus(1);
space.setOccupiedTime(LocalDateTime.now());
parkingSpaceMapper.updateById(space);
Dataset<Row> entryData = spark.read()
.format("jdbc")
.option("url", "jdbc:mysql://localhost:3306/parking_db")
.option("dbtable", "vehicle_entry")
.option("user", "root")
.option("password", "password")
.load();
long todayEntryCount = entryData.filter("date(entry_time) = current_date()").count();
result.put("success", true);
result.put("message", "入场成功");
result.put("entryId", vehicleEntry.getId());
result.put("spaceNumber", space.getSpaceNumber());
result.put("todayEntryCount", todayEntryCount);
return result;
}
public Map<String, Object> vehicleExit(String plateNumber, String exitGate) {
Map<String, Object> result = new HashMap<>();
VehicleEntry vehicleEntry = vehicleEntryMapper.selectByPlateNumberAndStatus(plateNumber, 1);
if (vehicleEntry == null) {
result.put("success", false);
result.put("message", "未找到该车辆的入场记录");
return result;
}
LocalDateTime exitTime = LocalDateTime.now();
long parkingMinutes = java.time.Duration.between(vehicleEntry.getEntryTime(), exitTime).toMinutes();
double parkingFee = calculateParkingFee(parkingMinutes);
vehicleEntry.setExitTime(exitTime);
vehicleEntry.setExitGate(exitGate);
vehicleEntry.setParkingDuration(parkingMinutes);
vehicleEntry.setParkingFee(parkingFee);
vehicleEntry.setStatus(2);
vehicleEntryMapper.updateById(vehicleEntry);
ParkingSpace space = parkingSpaceMapper.selectById(vehicleEntry.getSpaceId());
if (space != null) {
space.setStatus(0);
space.setOccupiedTime(null);
parkingSpaceMapper.updateById(space);
}
Dataset<Row> exitData = spark.read()
.format("jdbc")
.option("url", "jdbc:mysql://localhost:3306/parking_db")
.option("dbtable", "vehicle_entry")
.option("user", "root")
.option("password", "password")
.load();
Dataset<Row> revenueAnalysis = exitData.filter("status = 2 AND date(exit_time) = current_date()")
.groupBy().sum("parking_fee");
double todayRevenue = revenueAnalysis.collectAsList().get(0).getDouble(0);
result.put("success", true);
result.put("message", "离场成功");
result.put("parkingDuration", parkingMinutes + "分钟");
result.put("parkingFee", parkingFee);
result.put("todayRevenue", todayRevenue);
return result;
}
private double calculateParkingFee(long minutes) {
if (minutes <= 30) {
return 0.0;
} else if (minutes <= 60) {
return 5.0;
} else {
return 5.0 + Math.ceil((minutes - 60) / 60.0) * 3.0;
}
}
}
基于SpringBoot的停车管理系统文档展示
💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目