毕业设计实战:基于Spring Boot+MySQL的地方废物回收机构管理系统设计与实现,从需求到测试全流程避坑指南!

33 阅读16分钟

毕业设计实战:基于Spring Boot+MySQL的地方废物回收机构管理系统设计与实现,从需求到测试全流程避坑指南!

谁懂啊!当初做“地方废物回收机构管理系统”毕设时,光“设备借用表”和“设备信息表”的外键关联就卡了3天——一开始没给设备借用表设“设备编号”外键,查某台设备的借用记录时,数据全跟其他设备的借用信息混在一起,导师看了直接让我“重新梳理数据库实体关系”😫 后来踩遍无数坑才摸出高效落地流程,今天把需求分析、技术选型、功能实现到测试的核心细节说透,宝子们不用熬夜改代码,轻松搞定毕设!

一、先搞懂“地方废物回收机构管理系统”要啥!需求分析别瞎蒙

刚开始我跳过需求分析就写代码,花两周加了个“智能回收路线推荐算法”,结果导师一句“核心是员工管理、设备管控、回收价格维护,不是复杂算法”直接打回重改!后来才明白,需求分析得先抓准“谁用系统、要干啥”,这步做对,少走90%弯路。

1. 核心用户&功能拆解(踩坑后总结版)

系统只有两类核心用户:管理员、员工(别加“回收客户子角色”!我当初加了后权限混乱,客户能修改员工打卡记录,砍掉才顺畅),功能明确区分,避免越权:

  • 管理员端(必做功能):
    • 基础管理:维护员工账号(新增账号、重置密码、逻辑删除无效账号)、按工号/姓名筛选员工、查看完整信息(头像、联系方式、入职时间)
    • 员工管理:员工请假审核(查看请假理由、标记审核状态)、销假申请处理(确认销假时间、填写审核回复)、工作日志查看(按日期筛选、检查工作内容)、员工工资管理(计算底薪+加班费、标记支付状态)
    • 设备管理:设备信息维护(新增设备、上传图片/填写用途)、设备借用审核(确认借用原因、记录借用时间)、设备归还登记(检查设备状态、更新库存)、设备报修处理(安排维修、记录维修结果)
    • 其他管理:回收价格维护(设置不同物品回收价、更新价格时间)、宿舍信息管理(新增宿舍、登记入住/搬出)、员工打卡监控(查看打卡地址、核对考勤类型)、系统公告发布(编辑通知内容、指定接收角色)
  • 员工端(核心需求):
    • 个人事务:提交请假申请(选择请假类型、填写理由)、发起销假申请(记录销假时间)、填写工作日志(记录当日工作内容)、查看工资明细(底薪/加班费/扣款)
    • 设备操作:申请设备借用(选择设备、填写借用原因)、提交设备归还(登记归还状态)、上报设备故障(上传故障图片、描述问题)
    • 其他操作:查看回收价格(按物品类型筛选)、申请宿舍入住(选择宿舍号)、办理宿舍搬出(提交搬出申请)、日常打卡(记录打卡时间/地址)

2. 需求分析避坑指南(血泪教训!)

  • 别空想!找2个同学模拟管理员和员工提意见:比如员工说“想知道请假审核结果”,我才加了“请假状态颜色标记”(待审核标黄色、已通过标绿色、已驳回标红色),比瞎加“智能算法”实用
  • 一定要画用例图!用DrawIO画“管理员-审核设备借用”“员工-提交工作日志”“管理员-维护回收价格”,跟导师汇报时比光说“我要做XX功能”直观10倍(当初没画,导师听23分钟没get到逻辑)
  • 写“需求规格说明书”!把约束条件写清楚(如“设备借用时间不能早于当前日期”“员工请假天数不能为0”“回收价格不能为负数”),编码时对着做,不跑偏

3. 可行性分析别敷衍!3点写清楚就能过

导师超爱问“系统可行吗”,别只说“我觉得可行”,从3个角度写,显专业:

  • 技术可行性:Spring Boot、Java、MySQL都是课堂学过的,图书馆有《Spring Boot实战》《MySQL数据库设计与优化》,遇到问题能查资料(别用Spring Boot 3.x!我当初试了,跟MySQL 8.0联调时员工打卡接口卡2天,换回2.7稳定版才顺)
  • 经济可行性:工具全免费!Eclipse(免费版)、MySQL、Navicat(学生版)、Tomcat官网直接下,答辩时说“开发成本0,还能帮地方废物回收机构节约线下管理成本,实现员工、设备、回收流程线上化”,导师会觉得你懂成本控制
  • 操作可行性:界面参考主流管理系统,常用功能放显眼位置(如“我的请假”在员工首页顶部),找同学测试,10分钟学会提交请假、申请设备借用,导师直接认可

二、技术选型别跟风!这套组合稳到爆

刚开始我跟风用Spring Boot 3.x+Vue 3+Redis,结果“设备信息缓存”卡2天——Redis配置错,重启后设备图片全丢失😫 后来换成Java 8+Spring Boot 2.7+MySQL 8.0+JSP+Tomcat 9+Bootstrap,新手友好,调试效率翻两倍!

1. 技术栈核心选择(附避坑提醒)

别盲目选“最新技术”,稳定比炫酷重要!核心工具选择理由和坑点直接抄:

技术工具为啥选它避坑提醒!
Java 8语法简洁,Spring Boot 2.7兼容性最佳,学习资料多别用Java 11+!部分Spring依赖支持差,易出“类加载失败”
Spring Boot 2.7简化Spring配置,自带Tomcat,适合快速开发员工、设备管理功能别用自定义启动器!新手直接用官方starter(spring-boot-starter-web、spring-boot-starter-jdbc),避免配置错误导致设备借用接口失败
MySQL 8.0支持事务/外键,存员工、设备、回收价格数据足够用,utf8mb4编码解决生僻字乱码安装设“utf8mb4”编码!我当初用默认编码,员工姓名含生僻字乱码,查2小时才好
JSP与Java无缝衔接,适合做管理系统界面,支持动态数据渲染(如实时显示设备状态)别用HTML5替代!动态表单(如设备报修)需额外写JS,易出数据绑定错误
Tomcat 9轻量级服务器,适合中小型回收机构管理系统,与Spring Boot 2.7适配性好别用10+版本!部分Servlet类包路径变化,启动报错“Servlet初始化失败”
Bootstrap快速实现响应式布局,不用手写大量CSS,适配电脑/手机端查看员工打卡、设备信息别用5.x版本!部分组件兼容性差,我当初用5.x导致员工请假表单显示错乱,换回3.x才正常

2. 开发环境搭建(step by step 实操)

很多宝子卡“环境配置”,跟着步骤来,一次成功:

  1. 装JDK 1.8:记安装路径(如D:\Java\jdk1.8.0_301),配置“JAVA_HOME”环境变量,cmd输“java -version”显“1.8.x”即成
  2. 装Eclipse 2022(免费版):勾选“Spring Tools”插件,配置JRE为JDK 1.8,设工作空间编码为“UTF-8”
  3. 装MySQL 8.0:用Navicat建数据库“local_waste_recycling_system”,编码设“utf8mb4”,排序“utf8mb4_general_ci”
  4. 建Spring Boot项目:Eclipse选“Spring Starter Project”,引入Web、MyBatis、MySQL依赖,配置application.yml(数据库连接、端口号)
  5. 配前端页面:用JSP+Bootstrap写员工列表、设备借用表单、回收价格维护页面,实现响应式布局(电脑端3列显示设备,手机端1列)
  6. 联调测试:在application.yml配置数据库连接(url: jdbc:mysql://localhost:3306/local_waste_recycling_system?useSSL=false&serverTimezone=UTC),写“查询设备列表”接口,前端调用能显示设备名称、类型、数量即完成

三、数据库设计:别让表关联坑了你

这是毕设“核心骨架”,我当初没关联“员工工资表”和“员工表”,查“某员工的工资记录”要写3层嵌套SQL,调试到凌晨1点😫 后来按“实体-属性-关系”设计,终于理清。

1. 核心实体&属性(附ER图技巧)

先确定“实体”(员工、设备、设备借用、员工请假、回收价格、宿舍),再想“属性”,别漏关键字段!必做12张核心表,直接画ER图:

  • 员工表(yuangong):id(主键)、yuangonggonghao(员工工号)、mima(密码,MD5加密)、yuangongxingming(员工姓名)、xingbie(性别)、bumen(部门)、gangwei(岗位)、ruzhishijian(入职时间)、lianxifangshi(联系方式)、zhaopian(照片路径)
  • 设备信息表(shebeixinxi):id(主键)、shebeibianhao(设备编号)、shebeimingcheng(设备名称)、tupian(设备图片路径)、shuliang(数量)、shebeileixing(设备类型)、yongtu(用途)、weizhi(位置)
  • 设备借用表(shebeijieyong):id(主键)、shebeibianhao(设备编号)、shebeimingcheng(设备名称)、shuliang(借用数量)、jieyongshijian(借用时间)、jieyongbeizhu(借用备注)、yuangonggonghao(员工工号)、yuangongxingming(员工姓名)
  • 员工请假表(yuangongqingjia):id(主键)、qingjiabianhao(请假编号)、qingjialeixing(请假类型)、qingjiatianshu(请假天数)、kaishishijian(开始时间)、jieshushijian(结束时间)、qingjialiyou(请假理由)、yuangonggonghao(员工工号)、sfsh(审核状态)
  • 回收价格表(huishoujiage):id(主键)、huishoudidian(回收地点)、huishouwupin(回收物品)、huishoujiage(回收价格)、gengxinshijian(更新时间)
  • 宿舍信息表(sushexinxi):id(主键)、sushehao(宿舍号)、louceng(楼层)、loudonghao(楼栋号)、susheweizhi(宿舍位置)、sushezhuangtai(宿舍状态)、kezhurenshu(可住人数)

画ER图用Visio/亿图,记3规则:

  1. 矩形=实体(如“设备信息”“员工请假”)
  2. 椭圆=属性(如设备信息“用途”“位置”,员工请假“请假天数”“请假理由”)
  3. 菱形=关系(如“员工-设备借用”一对多,一个员工可借用多台设备;“设备信息-设备借用”一对多,一台设备可被多次借用) 避坑提醒:别把“设备图片/员工照片”存数据库!我当初存二进制导致数据库崩溃,改成存路径(如/static/equipment/img1.jpg、/static/employee/photo1.jpg)才对。

2. 表关联测试!别等编码才发现错

建表后一定要测:在“员工表”插数据(id=1,yuangonggonghao=“YG001”,yuangongxingming=“张三”),“设备借用表”插关联数据(yuangonggonghao=“YG001”,shebeibianhao=“SB001”,jieyongshijian=“2024-05-01”),用JOIN查“某员工的设备借用记录”:

SELECT s.shebeibianhao, s.shebeimingcheng, b.jieyongshijian, b.shuliang, b.jieyongbeizhu
FROM shebeijieyong b
JOIN yuangong y ON b.yuangonggonghao = y.yuangonggonghao
JOIN shebeixinxi s ON b.shebeibianhao = s.shebeibianhao
WHERE y.yuangonggonghao = 'YG001';

能查出“设备编号+名称+借用时间+数量+备注”说明关联对;若报错“Cannot add or update a child row”,大概率外键错,赶紧检查表结构(比如shebeibianhao字段类型是否和设备信息表一致)。

四、功能实现:核心模块操作+页面设计

不用做所有功能!先搞定3个核心模块,答辩足够出彩,附操作逻辑和页面要点:

1. 管理员端:员工管理模块(必做!)

核心是“规范员工信息”,重点“权限控制”和“数据关联”,别漏这两步!

  • 操作逻辑
    1. 新增员工前校验“员工工号唯一”“必填项非空”,缺项或重复提示“完善员工信息”(我当初没加“工号唯一性校验”,重复添加“YG001”工号报错,导师让我补了1小时查重逻辑)
    2. 编辑员工信息时,若员工已有工资记录/请假申请,需提示“该员工关联业务数据,修改后将同步更新”,避免数据不一致
    3. 删除员工前,需先检查是否有关联设备借用/工资记录,若有关联提示“该员工存在未办结业务,无法删除”,防止误删导致数据丢失
  • 页面设计(JSP+Bootstrap)
    • 表单区:输入员工工号、姓名、部门、岗位等信息,上传照片,提交按钮(新增/编辑复用)
    • 员工列表:显示工号、姓名、部门、岗位、入职时间,操作列“详情/修改/删除/查看工资”
    • 筛选区:按工号/姓名(模糊查)、部门(下拉选)筛选,配“查询/批量删除”按钮

2. 员工端:设备借用模块(答辩亮点!)

体现“员工核心需求”,导师超爱问!核心“便捷申请+状态跟踪”,别漏“库存校验”。

  • 操作逻辑
    1. 员工浏览设备列表时,按类型筛选(如“回收工具/运输设备”),点击设备卡片查看详情(名称、数量、用途、位置)
    2. 提交借用前校验“借用数量≤设备库存”“借用时间≥当前日期”,不满足提示对应错误(如“库存不足,当前可借数量为2”)
    3. 申请提交后,更新设备库存(库存-借用数量),并通过消息提醒通知管理员“有新的设备借用申请待审核”
  • 页面设计
    • 设备列表页:左侧分类筛选栏(回收工具/运输设备),右侧设备卡片(显示图片、名称、剩余库存、“申请借用”按钮)
    • 借用申请页:显示设备信息(编号、名称、类型)、借用数量输入框、借用时间选择器、备注输入框、“提交申请”按钮
    • 借用记录页:按审核状态分组(待审核/已通过/已驳回),显示设备名称、借用数量、申请时间、审核结果,操作列“查看详情/取消申请(待审核)”

3. 管理员端:回收价格维护模块(核心需求!)

管理员核心操作“更新回收价格”,流程别复杂:查看当前价格→编辑价格→更新记录,我当初漏了“价格更新日志”,导致无法追溯历史价格,补半天日志记录逻辑才好。

  • 操作逻辑
    1. 管理员登录后,默认显示所有回收物品的当前价格(按回收地点分组),点击“编辑”修改价格
    2. 提交修改前校验“回收价格≥0”,不满足提示“回收价格不能为负数,请重新输入”
    3. 价格更新后,自动记录更新时间和操作人,生成价格变更日志(支持按时间回溯历史价格),并推送消息给员工“回收价格已更新,可前往查看”
  • 页面设计
    • 价格列表:显示回收地点、回收物品、当前价格、最近更新时间,操作列“编辑价格/查看历史”
    • 编辑弹窗:价格输入框(带数值校验)、更新备注输入框(如“因市场波动调整价格”)、“确认更新”按钮
    • 历史日志页:显示回收物品、变更前价格、变更后价格、更新时间、操作人,支持按时间范围筛选 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、测试别敷衍!这3步让答辩不翻车

很多宝子觉得“功能能跑就行”,答辩时评委一测就出问题!我当初没测“员工借用数量超过设备库存”,导致员工能借“库存3台”的设备却申请5台,导师说“不符合设备管理逻辑”,当场扣分😫 测试要针对性做:

1. 功能测试(必测3模块)

重点测核心功能,整理测试用例表,直接填结果:

测试场景操作步骤预期结果
员工借用数量超库存员工选“回收推车(库存3台)”→填借用数量5→提交申请提示“库存不足,当前可借3台,请减少数量”,申请失败
管理员审核请假申请管理员选“张三事假申请”→选“驳回”→填理由“未附证明”→提交请假状态更新为“已驳回”,员工端能查看驳回理由
管理员更新回收价格管理员编辑“废纸回收价”→从1.2元改1.5元→提交价格更新为1.5元,生成变更日志,员工收到提醒

2. 兼容性测试(容易忽略)

别只在自己电脑测!答辩评委可能用不同设备和浏览器:

  • 浏览器:Chrome、Firefox、Edge、IE11(重点测IE,JSP页面兼容性差,需在index.html引入html5shiv.js修复)
  • 设备:电脑(1920×1080、1366×768分辨率)、手机(iPhone 13、华为Mate 40,测响应式布局)
  • 要求:无横向滚动条,按钮点击无延迟,设备图片加载≤3秒

3. 测试报告要写好!答辩加分

整理“测试报告”,含“目的、范围、用例、结果、问题总结”:

  • 问题总结:“IE下员工工资列表错位,加IE专属CSS修复;员工能超库存借设备,加库存校验修复;价格更新无日志,补日志记录功能修复”
  • 测试结论:“核心功能无严重bug,兼容性问题已修复,满足员工管理、设备借用、回收价格维护需求”

六、答辩准备:3个加分小技巧

  1. 演示流程顺畅:提前录视频(怕现场崩),按“管理员新增员工→员工申请设备借用→管理员审核借用→管理员更新回收价格”流程来,每个操作停顿2秒,让评委看清
  2. 讲“解决的问题”:比如“一开始设备图片存数据库崩了,改成存路径解决;员工能超库存借设备,加库存校验解决;IE下页面错位,加兼容代码解决”,比光说“用了Spring Boot+MySQL”有亮点
  3. 准备常见问题:导师可能问“系统怎么保证数据安全?”,答“员工密码MD5加密;设备借用/请假申请留痕,便于追溯;数据库每天自动备份;员工只能查看自己的业务数据”

最后:毕设通关小私心

以上就是基于Spring Boot+MySQL的“地方废物回收机构管理系统”从0到1的避坑干货!毕设不难,别瞎做复杂功能(如智能路线推荐、AI故障诊断),把员工管理、设备借用、回收价格维护做扎实,答辩就能过。

需要核心源码(带注释,直接能跑)、数据库脚本(含测试数据)、ER图模板的宝子,评论区扣“地方废物回收机构管理系统”,我私发你;卡在某个模块(如设备借用审核、员工工资计算),也可以留言,看到必回!

点赞收藏,下次找流程不迷路~祝宝子们毕设顺利,轻松毕业!😘