
毕业设计实战基于SpringBoot的停车场管理系统设计与实现全攻略在开发“基于SpringBoot的停车场管理系统”毕业设计时曾因“车位预订与车位状态数据不同步”踩过关键坑——初期未设计清晰的车位状态机和预订冲突检测机制导致用户预订车位后管理员审核通过但车位状态未及时更新、同一时段车位被重复预订耗费3天重构车位预订模块、引入状态流转和时间冲突检测算法才解决问题。基于此次实战经验本文精简拆解核心开发流程附避坑要点与实操细节为同类毕设提供可落地的实施参考。一、需求分析聚焦车位预订双核心避免功能冗余部分同学易陷入“功能堆砌”误区比如我曾耗时2天开发“停车场地图可视化”模块最终因偏离“车位管理、预订管理、车辆管理、违规记录”核心需求被导师要求删减。明确“车位发布→用户预订→管理员审核→车辆入场→违规处理”的业务闭环是降低返工率的关键。1. 核心角色与功能精简版角色核心功能管理员用户管理、员工管理、车位管理增删改查、车位预订审核、违规记录管理、公告发布员工车位状态查看、入场车辆登记、出场收费处理、违规上报用户车位浏览、车位预订、车辆管理、预订记录查询、违规查询、公告查看2. 需求避坑要点拒绝空想调研邀请10名同学模拟“用户预订车位→管理员审核→车辆入场→停车计时→出场缴费→违规处理”完整流程基于“用户需要知道预订进度和剩余时间”需求增设“预订状态跟踪”和“停车计时提醒”模块实用性远大于冗余的“停车场地图”明确约束条件提前规定“预订编号自动生成格式YD年月日序号”“车位预订需审核确认”“同一时段车位不能重复预订”“停车费用按小时自动计算”为系统实现提供明确依据。二、技术选型稳定框架冲突检测算法新手可上手前期曾尝试引入Redis缓存车位状态因数据一致性难保证且学习成本高调试耗时3天。最终确定“成熟框架数据库事务时间冲突算法”组合技术工具选型理由避坑提醒Spring Boot 2.x MyBatis-Plus快速开发简化配置高效实现CRUD和业务逻辑声明式事务管理方便事务注解Transactional记得在Service层添加预订操作和车位状态更新必须加事务Vue 2.x ElementUI组件丰富快速构建前后台界面表格和表单组件好用预订状态用标签展示车位状态用颜色区分MySQL 5.7存储用户、车位、预订、车辆等核心业务数据时间字段用datetime类型事务要保证预订和车位状态一致性Thymeleaf可选服务端模板引擎适合快速开发后台管理界面毕设时间充裕可统一用Vue三、数据库设计业务关联清晰支撑车位-预订-车辆闭环数据库设计直接影响后续开发效率。前期因未设计“预订状态字段”和“时间冲突检测机制”导致用户预订车位后同一时段被重复预订。1. 核心表结构精选9张表管理员表usersid、username、passwordMD5加密、role、addtime用户表yonghuid、yonghu_uuid_number用户编号、yonghu_name、yonghu_phone、yonghu_id_number、yonghu_photo、yonghu_email、new_money余额、create_time员工表yuangongid、yuangong_uuid_number员工编号、yuangong_name、yuangong_phone、yuangong_id_number、yuangong_photo、yuangong_email、create_time车辆表cheliangid、yonghu_id所属用户、cheliang_name、cheliang_uuid_number车辆编号、cheliang_photo、cheliang_paizhao车辆牌照、cheliang_file车牌图片、cheliang_types车辆类型、cheliang_content、cheliang_delete逻辑删除、insert_time、create_time车位表cheweiid、chewei_name、chewei_uuid_number车位编号、chewei_photo、chewei_address车位地点、chewei_tingchefei金额/小时、chewei_types车位类型、chewei_content、shangxia_types是否上架、chewei_delete、insert_time、create_time车位预订表chewei_yuyueid、chewei_yuyue_uuid_number预订编号、chewei_id预订车位、cheliang_id预订车辆、chewei_yuyue_text预订理由、chewei_yuyue_file车牌图片、chewei_yuyue_shichang预计停车时间、insert_time申请时间、chewei_yuyue_yesno_types预订状态0待审核/1通过/2拒绝、chewei_yuyue_yesno_text审核回复、chewei_yuyue_shenhe_time审核时间、chewei_yuyue_time预约时间、create_time违规表weiguiid、cheliang_id违规车辆、weigui_name、weigui_uuid_number违规编号、weigui_photo、weigui_address违规地点、weigui_types违规类型、weigui_content、weigui_delete、insert_time、create_time公告表gonggaoid、gonggao_name、gonggao_photo、gonggao_types公告类型、insert_time、gonggao_content、create_time字典表dictionaryid、dic_code、dic_name、code_index、index_name、super_id、beizhu、create_time。2. 关键业务SQL示例示例SQL查询用户预订记录及当前状态-- 查询用户的预订记录包含车位信息和审核状态SELECTy.*,c.chewei_name,c.chewei_address,c.chewei_tingchefei,cl.cheliang_name,cl.cheliang_paizhaoFROMchewei_yuyue yLEFTJOINchewei cONy.chewei_idc.idLEFTJOINcheliang clONy.cheliang_idcl.idWHEREy.yonghu_id#{yonghuId}ORDERBYy.insert_timeDESC关键避坑预订状态用整数表示0待审核/1通过/2拒绝预订审核通过时必须进行时间冲突检测车辆需关联用户违规记录需关联车辆。四、核心功能实现7大模块满足答辩需求无需复杂功能优先完成以下7个核心模块其中车位预订与时间冲突检测是答辩重点。1. 用户/员工管理基础模块核心逻辑管理员管理用户和员工信息增删改查用户注册登录页面设计用户列表显示姓名、手机号、身份证、余额员工列表显示工号、姓名、部门代码要点密码MD5加密存储用户余额用于支付停车费。2. 车辆管理车辆信息模块核心逻辑用户添加自己的车辆信息车牌号、车型、照片→车辆关联用户页面设计车辆列表显示车牌号、车型、照片支持新增/编辑/删除代码要点车辆新增publicvoidaddCheliang(Cheliangcheliang){// 生成车辆编号CL年月日随机4位StringuuidCLnewSimpleDateFormat(yyyyMMdd).format(newDate())String.format(%04d,newRandom().nextInt(10000));cheliang.setCheliangUuidNumber(uuid);cheliang.setCheliangDelete(0);// 未删除cheliang.setInsertTime(newDate());cheliang.setCreateTime(newDate());cheliangMapper.insert(cheliang);}3. 车位管理核心资源模块核心逻辑管理员发布车位信息位置、类型、每小时费用→设置是否上架页面设计车位列表显示名称、地点、费用、状态空闲/占用支持上架/下架操作代码要点车位状态通过预订情况动态计算支持按类型筛选。4. 车位预订管理关键业务流程核心逻辑用户选择车位提交预订选择车辆、预约时间、预计停车时长→管理员审核→审核通过则锁定车位页面设计预订列表显示预订编号、车位、车辆、时间、状态标签审核弹窗带时间冲突提示代码要点审核核心 时间冲突检测TransactionalpublicvoidauditYuyue(LongyuyueId,Integerstatus,Stringreply){// 1. 查询预订信息CheweiYuyueyuyuecheweiYuyueMapper.selectById(yuyueId);// 2. 如果审核通过进行时间冲突检测if(status1){// 通过// 查询同一时间段同一车位是否已有通过的预订LambdaQueryWrapperCheweiYuyuewrappernewLambdaQueryWrapper();wrapper.eq(CheweiYuyue::getCheweiId,yuyue.getCheweiId()).eq(CheweiYuyue::getCheweiYuyueYesnoTypes,1)// 已通过.eq(CheweiYuyue::getCheweiYuyueTime,yuyue.getCheweiYuyueTime())// 同一预约时间.ne(CheweiYuyue::getId,yuyueId);LongcountcheweiYuyueMapper.selectCount(wrapper);if(count0){thrownewRuntimeException(该车位此时段已有预订请选择其他时间);}}// 3. 更新预订状态yuyue.setCheweiYuyueYesnoTypes(status);yuyue.setCheweiYuyueYesnoText(reply);yuyue.setCheweiYuyueShenheTime(newDate());cheweiYuyueMapper.updateById(yuyue);// 4. 如果审核通过可发送通知给用户可选if(status1){// 这里可以调用消息通知功能log.info(用户 {} 的预订已通过审核,yuyue.getYonghuId());}}5. 违规记录管理监管模块核心逻辑员工/管理员记录车辆违规信息违规类型、地点、照片→用户可查看页面设计违规列表显示车牌号、违规类型、地点、时间支持按车辆查询代码要点违规记录关联车辆支持上传违规照片。6. 停车计费功能扩展功能核心逻辑车辆入场开始计时→出场时根据停车时长和车位单价计算费用→从用户余额扣款页面设计入场登记界面、出场结算界面代码要点出场计费TransactionalpublicBigDecimalcheckout(LongyuyueId,DateexitTime){CheweiYuyueyuyuecheweiYuyueMapper.selectById(yuyueId);CheweicheweicheweiMapper.selectById(yuyue.getCheweiId());// 计算停车时长小时DateentryTimeyuyue.getCheweiYuyueTime();// 预约时间作为入场时间longhours(exitTime.getTime()-entryTime.getTime())/(1000*60*60);if(hours0)hours1;// 不足1小时按1小时计算// 计算费用BigDecimalfeechewei.getCheweiTingchefei().multiply(newBigDecimal(hours));// 从用户余额扣款YonghuuseryonghuMapper.selectById(yuyue.getYonghuId());if(user.getNewMoney().compareTo(fee)0){thrownewRuntimeException(余额不足请充值);}user.setNewMoney(user.getNewMoney().subtract(fee));yonghuMapper.updateById(user);// 更新预订状态为已完成yuyue.setCheweiYuyueYesnoTypes(3);// 3表示已完成cheweiYuyueMapper.updateById(yuyue);returnfee;}7. 公告管理资讯模块核心逻辑管理员发布停车规则、优惠活动等公告→用户首页查看页面设计公告列表显示标题、类型、发布时间详情页富文本展示代码要点公告按发布时间倒序排列首页轮播显示最新3条。五、停车场特色功能设计关键加分项停车场管理系统的核心在于“车位资源合理利用”即车位发布、用户预订、车辆入场、计费结算全流程自动化以下是实测有效的设计方案1. 车位-预订-车辆全流程追溯环节记录内容可追溯信息车位发布车位编号、位置、类型、每小时费用什么车位、在哪、多少钱一小时用户预订预订编号、用户、车辆、预约时间、状态谁预订了什么车位、什么时间、是否通过车辆入场入场时间、车牌号、车位号什么车什么时间停在了哪个车位出场结算出场时间、停车时长、费用停了多久、花了多少钱2. 时间冲突检测算法增强版// 预订前进行时间冲突检测支持时间段重叠判断publicbooleancheckTimeConflict(LongcheweiId,DatestartTime,DateendTime,LongexcludeId){LambdaQueryWrapperCheweiYuyuewrappernewLambdaQueryWrapper();wrapper.eq(CheweiYuyue::getCheweiId,cheweiId).eq(CheweiYuyue::getCheweiYuyueYesnoTypes,1)// 只检测已通过的预订.and(w-w.between(CheweiYuyue::getCheweiYuyueTime,startTime,endTime).or().between(CheweiYuyue::getCheweiYuyueEndTime,startTime,endTime).or().and(w2-w2.le(CheweiYuyue::getCheweiYuyueTime,startTime).ge(CheweiYuyue::getCheweiYuyueEndTime,endTime)));// 排除自身用于修改时if(excludeId!null){wrapper.ne(CheweiYuyue::getId,excludeId);}returncheweiYuyueMapper.selectCount(wrapper)0;}3. 自动释放过期预订// 定时任务自动拒绝过期未处理的预订ComponentpublicclassYuyueTimeoutTask{Scheduled(cron0 0 1 * * ?)// 每天凌晨1点执行publicvoidautoRejectTimeoutYuyue(){// 查询超过24小时未审核的预订CalendarcalendarCalendar.getInstance();calendar.add(Calendar.HOUR,-24);Datedeadlinecalendar.getTime();LambdaQueryWrapperCheweiYuyuewrappernewLambdaQueryWrapper();wrapper.eq(CheweiYuyue::getCheweiYuyueYesnoTypes,0)// 待审核.lt(CheweiYuyue::getInsertTime,deadline);ListCheweiYuyuelistcheweiYuyueMapper.selectList(wrapper);for(CheweiYuyueyuyue:list){yuyue.setCheweiYuyueYesnoTypes(2);// 拒绝yuyue.setCheweiYuyueYesnoText(超时未处理自动拒绝);cheweiYuyueMapper.updateById(yuyue);}}}六、测试与答辩流程演示为主突出车位资源分配闭环1. 核心测试用例测试场景操作步骤预期结果车位发布全流程管理员新增车位→设置费用→前台查看车位信息正确显示状态为空闲用户预订全流程用户提交预订→管理员审核通过预订状态更新车位该时间段被锁定时间冲突检测同一车位同一时间段提交两个预订→审核通过第一个→审核第二个第二个审核时提示“该车位此时段已有预订”出场计费功能车辆入场→计时→出场结算费用正确计算用户余额扣减违规记录功能员工添加违规记录→用户查看违规信息正确显示2. 答辩准备技巧演示流程分角色演示管理员端 员工端 用户端→ 管理员发布车位 → 用户添加车辆 → 用户预订车位 → 管理员审核展示时间冲突检测→ 员工车辆入场登记 → 出场结算展示计费→ 员工记录违规 → 用户查看违规 → 展示完整的车位-预订-计费-违规闭环业务讲解准备一页PPT展示系统功能结构图图4.1说明每个模块的作用和角色定位技术亮点重点讲解预订审核与时间冲突检测的事务一致性、自动计费算法、过期预订自动处理机制突出问题解决讲清“如何保证同一时间段车位不被重复预订”时间冲突检测算法、“停车费用如何自动计算”按小时计费不足1小时按1小时、“过期预订如何处理”定时任务自动拒绝提前预判“为什么要设计逻辑删除”回答“防止重要数据被物理删除便于数据恢复和追溯”。结语本文核心是“聚焦车位-预订-计费核心业务、实现车位资源合理分配、设计完整的停车场管理闭环”。毕设无需复杂系统把车位管理预订管理车辆管理计费结算的业务逻辑讲透、实现一个可运行的停车场管理系统、展示完整的资源分配闭环即可成为答辩亮点。若需完整项目源码带详细注释、测试数据SQL脚本、时间冲突检测完整代码可在评论区留言“SpringBoot停车场管理系统”获取开发中遇问题如事务一致性、时间冲突算法、自动计费逻辑也可留言咨询 祝毕设顺利