毕业设计实战:基于SpringBoot+Vue+MySQL的垃圾分类回收系统设计与实现指南

27 阅读6分钟

毕业设计实战:基于SpringBoot+Vue+MySQL的垃圾分类回收系统设计与实现指南

在开发“基于SpringBoot+Vue+MySQL的垃圾分类回收系统”毕业设计时,曾因“垃圾出库申请表未通过垃圾ID与用户ID双外键关联”踩过关键坑——初期仅单独设计申请表的编号字段,未与垃圾回收表、用户表建立关联约束,导致统计某垃圾的出库记录时需手动匹配数据,耗费1.2天重构表结构、补全关联SQL才解决问题📝。基于此次实战经验,本文精简拆解核心开发流程,附避坑要点,为同类毕设提供高效落地参考。

一、需求分析:聚焦核心功能,避免冗余返工

部分同学易陷入“功能堆砌”误区,比如笔者曾耗时1.5天开发“垃圾数据可视化大屏”,最终因偏离“垃圾管理、运输跟踪、出库申请、公告通知”核心需求被导师要求删减。明确“角色-功能”对应关系是关键。

1. 核心角色与功能(精简版)

角色核心功能
管理员垃圾管理(新增/编辑/删除垃圾信息)、运输管理(跟踪运输进度)、出库审核、公告发布、用户管理
用户垃圾回收查询、出库申请(提交申请理由/时间)、公告查看、个人中心管理

2. 需求避坑要点

  • 拒绝空想调研:邀请5-6名同学模拟“管理员录入垃圾-用户提交出库申请-管理员审核”流程,基于“用户需快速查看垃圾库存”需求,增设“库存状态标签”,实用性远大于冗余的“可视化大屏”;
  • 明确约束条件:提前规定“垃圾照片仅限JPG/PNG(≤5MB)”“垃圾编号自动生成(格式:LJ+年份+序号,如LJ2024001)”“出库申请理由≥10字”,为编码提供依据。

二、技术选型:优先稳定适配,拒绝盲目追新

前期曾跟风选用SpringBoot 3+Vue 3+Redis技术栈,因Redis缓存配置不当导致垃圾库存数据丢失,调试耗时1天。最终确定“稳定型”技术组合,新手易上手:

技术工具选型理由避坑提醒
SpringBoot 2.7简化配置,支持自动装配,高效实现垃圾管理、出库审核等模块配置数据库连接时需加“useSSL=false”,避免连接失败
Vue 2.x轻量易上手,组件化开发,快速实现垃圾列表、申请表单等页面搭配ElementUI,避免Vue 3.x兼容问题
MySQL 5.7支持事务与外键,满足多表关联(垃圾-出库申请-用户),utf8mb4解决生僻字乱码手动设置编码为utf8mb4,避免申请备注乱码
Tomcat 8.5适配SpringBoot与Vue,支持热部署,减少重启耗时端口设为8081,避免与默认8080端口冲突

三、数据库设计:精简关联,避免数据混乱

数据库是系统核心,前期因未关联“垃圾回收表”与“出库申请表”,导致无法追溯垃圾出库历史,后续用“实体-属性-关系”分析法梳理,效率显著提升。

1. 核心表结构(精简版,共7张表)

  • 管理员表(admin):id(主键)、username(账号)、password(MD5加密)、role(角色);
  • 用户表(yonghu):id(主键)、yonghu_name(姓名)、yonghu_phone(手机号)、yonghu_photo(头像路径);
  • 垃圾回收表(huishou):id(主键)、huishou_name(垃圾名称)、huishou_uuid_number(编号)、huishou_photo(照片路径)、huishou_kucun_number(库存)、huishou_address(回收地点);
  • 垃圾出库申请表(huishou_yuyue):id(主键)、huishou_id(垃圾ID,外键关联垃圾表)、yonghu_id(用户ID,外键关联用户表)、huishou_yuyue_text(申请理由)、huishou_chuku_time(出库时间)、huishou_yuyue_yesno_types(申请状态);
  • 运输表(chuku):id(主键)、chuku_name(运输名称)、chuku_address(运输地点)、chuku_mudi_address(目的地)、chuku_photo(运输照片);
  • 公告表(gonggao):id(主键)、gonggao_name(标题)、gonggao_content(详情)、insert_time(发布时间);
  • 字典表(dictionary):id(主键)、dic_code(字段)、index_name(编码名称),用于统一垃圾类型、申请状态等数据。

2. 核心关联测试

建表后立即验证关联逻辑,示例SQL:

SELECT h.huishou_name, h.huishou_kucun_number,
       hy.huishou_yuyue_text, hy.huishou_chuku_time, hy.huishou_yuyue_yesno_types,
       y.yonghu_name, y.yonghu_phone
FROM huishou h
JOIN huishou_yuyue hy ON h.id = hy.huishou_id
JOIN yonghu y ON hy.yonghu_id = y.id
WHERE h.id = 1;

若能查询出“垃圾信息+出库申请+用户信息”,说明关联正确;若报错,检查字段类型是否匹配(如huishou_id与垃圾表id是否同为Integer)。

关键避坑:切勿将垃圾照片、申请材料存入数据库!前期尝试导致数据库体积骤增(50张照片占250MB),改为存储文件路径(如/static/huishou/photo1.jpg),查询速度提升40%。

四、核心功能实现:3大模块满足答辩需求

无需开发所有功能,优先完成以下3个核心模块,突出开发重点:

1. 管理员端:垃圾管理与出库审核(必做)

  • 核心逻辑:管理员录入垃圾信息(名称、库存、地点),生成唯一编号;审核用户出库申请,通过则更新垃圾库存,驳回需填写理由;
  • 页面设计:用ElementUI表格展示垃圾列表,操作列设“编辑/删除/查看库存”;审核页面设“通过/驳回”按钮,驳回弹窗需填写理由(≥5字)。

2. 用户端:出库申请与垃圾查询(核心)

  • 核心逻辑:用户按地点/类型筛选垃圾,查看库存;提交出库申请(选择垃圾、填写理由、预约时间),跟踪审核状态;
  • 页面设计:垃圾列表用卡片式展示(含名称、库存、照片);申请表单标红必填项,提交后显示“3个工作日内审核”提示。

3. 运输管理模块(答辩亮点)

  • 核心逻辑:管理员录入运输信息(地点、目的地、照片),关联对应垃圾;用户可查看垃圾运输进度;
  • 页面设计:运输列表展示运输状态(“在途/已完成”),点击“查看详情”可查看运输轨迹(模拟对接物流接口)。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、测试与答辩:精简准备,高效通过

1. 核心测试用例

测试场景操作步骤预期结果
用户重复提交出库申请提交同一垃圾的出库申请后,未刷新页面再次提交提示“已提交申请,无需重复操作”
管理员审核出库申请审核通过某出库申请垃圾库存减少,用户收到通过通知

2. 答辩准备技巧

  • 演示流程:按“管理员录入垃圾→用户提交申请→管理员审核→查看运输进度”演示,重点展示“垃圾表与出库表关联逻辑”;
  • 突出问题解决:讲清“双外键关联修复”“文件路径存储优化”等踩坑经历,比单纯讲技术栈更有说服力。

结语

本文核心是“聚焦垃圾分类核心业务、优先稳定技术、提前排查表关联问题”。毕设无需复杂功能,把垃圾管理、出库审核、运输跟踪做扎实,即可顺利通过答辩。

若需核心源码(带注释)、数据库脚本,可在评论区留言“SpringBoot垃圾分类系统”获取;开发中遇问题(如出库关联逻辑),也可留言咨询~ 祝毕设顺利!🎉