毕业设计实战:基于Spring Boot+MySQL的疫情防控期间某村外出务工人员信息管理系统设计与实现全流程指南

15 阅读21分钟

毕业设计实战:基于Spring Boot+MySQL的疫情防控期间某村外出务工人员信息管理系统设计与实现全流程指南

在完成“疫情防控期间某村外出务工人员信息管理系统”毕业设计的过程中,数据库表关联设计曾是核心难点之一——因未在“采集数据表”与“用户行程表”间设置“账号”外键关联,导致查询特定用户的行程采集记录时出现数据错乱,耗费2天梳理实体关系才解决问题📝。基于此次实战经验,本文将系统拆解从需求分析、技术选型、功能实现到测试验收的全流程关键要点,梳理常见问题及解决方案,为筹备相关毕设的同学提供可落地的实施指南。

一、需求分析:精准定位核心诉求,规避前期返工

部分同学在毕设初期易陷入“功能冗余”误区,忽略需求调研的重要性。笔者曾跳过需求分析阶段,耗时一周开发“疫情防控知识答题功能”,最终因偏离“人员信息管理、行程采集、风险分析、综合评估”核心需求被导师要求重构。可见,明确“用户角色-核心功能”对应关系,是降低返工率的关键前提。

1. 核心用户与功能拆解(优化后角色权限体系)

系统核心用户分为管理员、采集员、分析员与普通用户四类,前期曾因混淆“采集员”与“分析员”权限,导致采集员可修改风险评估结果,简化角色边界后系统稳定性显著提升,四类角色功能分工明确,具体如下:

管理员端(核心必做功能)
  • 基础管理:全角色账号生命周期维护(新增用户/采集员/分析员账号、密码重置、无效账号逻辑删除),支持按账号/姓名精准筛选,查看完整资料(身份证、联系方式、照片、注册时间);
  • 人员管理:用户信息审核(校验身份证真实性、照片合规性),采集员/分析员资质管理(新增采集员工号、绑定分析员账号),异常账号处理(屏蔽恶意提交账号、冻结长期未用账号);
  • 数据监控:用户行程数据监控(查看行程登记完整性、核酸/行程码有效性),采集数据审核(校验采集日期合理性、行程描述一致性),综合评估结果抽检(核对风险评估与实际情况匹配度);
  • 系统配置:公告信息发布(编辑疫情防控通知、返乡政策),留言板管理(回复用户咨询、删除无效留言),轮播图维护(更新疫情资讯图片、调整展示顺序),数据报表导出(支持Excel格式的行程、采集、评估数据存档)。
采集员端(核心需求功能)
  • 数据采集操作:关联用户账号采集行程信息(填写详细行程、上传核酸码/行程码图片、记录外出地),补充采集备注(标注用户健康状况、接触史),按日期归档采集记录;
  • 数据管理操作:查看个人采集任务(按采集日期筛选),编辑未审核采集数据(修正行程描述、补充遗漏信息),查看采集分析结果(分析员反馈的风险评估建议);
  • 评估协作操作:提交综合评估建议(基于采集数据标注风险等级),跟踪评估审核进度,接收管理员的采集任务调整通知。
分析员端(核心需求功能)
  • 行程分析操作:审核用户行程数据(校验行程登记与实际轨迹一致性),生成行程风险评估(标注高/中/低风险等级、填写评估依据),上传行程分析报告;
  • 采集分析操作:分析采集数据完整性(检查核酸/行程码有效期、行程描述详细度),反馈采集优化建议(提示采集员补充关键信息),归档分析记录;
  • 评估管理操作:审核采集员提交的评估建议,生成最终综合评估结果(含风险预警、处理方案),同步评估结果至用户与管理员。
用户端(核心需求功能)
  • 信息维护操作:完善个人信息(填写身份证、联系方式、上传照片),提交行程登记(记录外出地、上传核酸码/行程码、描述详细行程),更新行程变动(新增返乡、返岗行程);
  • 信息查询操作:查看综合评估结果(风险等级、预警提示、处理情况),浏览公告信息(疫情防控政策、村集体通知),查看疫情资讯(防疫知识、本地病例动态);
  • 互动反馈操作:提交留言咨询(反馈行程审核问题、咨询评估结果),查看留言回复,收藏重要公告(返乡政策、核酸检测通知)。

2. 需求分析避坑要点(实战经验总结)

  • 拒绝空想调研:邀请2-3名同学模拟四类角色场景,收集真实使用诉求。例如,基于采集员“实时接收采集任务提醒”的需求,增设任务变更标红提示功能,实用性远高于冗余的答题功能;
  • 绘制可视化用例图:使用DrawIO工具绘制核心业务用例图(如“管理员-用户信息审核”“采集员-行程数据采集”“分析员-风险评估”),汇报时直观呈现业务逻辑,避免纯文字描述导致的理解偏差;
  • 撰写规范需求规格说明书:明确核心约束条件,如“用户照片大小≤5MB”“行程登记需包含近14天轨迹”“核酸码有效期≤7天”“风险评估结果需标注评估依据”等,为后续编码提供明确依据,避免功能偏离需求。

3. 可行性分析:从三维度论证,提升专业性

可行性分析是毕设开题阶段的关键环节,需从技术、经济、操作三个维度展开,避免泛泛而谈“可行”,具体论证要点如下:

  • 技术可行性:Spring Boot、Java、MySQL均为高校课程核心内容,配套学习资料丰富(如《Spring Boot实战》《MySQL数据库设计与优化》),技术门槛可控;需注意避免使用Spring Boot 3.x版本,笔者前期尝试该版本与MySQL 8.0联调时,采集数据提交接口频繁异常,切换至2.7稳定版后问题解决;
  • 经济可行性:开发工具均为免费/开源版本(Eclipse免费版、MySQL社区版、Navicat学生版、Tomcat开源服务器),开发成本为零;同时,系统上线后可实现村外出务工人员疫情防控信息线上化管理,减少人工登记误差,降低防疫管理成本,具备实际应用价值;
  • 操作可行性:界面设计参考基层防疫管理平台交互逻辑,将高频功能(如“行程登记”“采集数据”“评估结果查看”)置于显眼位置,经测试,普通用户10分钟内即可掌握信息填写、行程提交等核心操作,易用性达标。

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

前期曾跟风选用Spring Boot 3.x+Vue 3+Redis技术栈,因Redis配置不当,导致重启后用户行程图片缓存丢失,调试耗时1天。后续调整为“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,默认编码会导致行程描述、评估结果含特殊字符时出现乱码,排查耗时较长
JSP与Java语言无缝衔接,支持动态数据渲染(如实时展示行程审核状态),适合开发管理系统界面避免用HTML5替代JSP开发动态表单(如采集数据表单),需额外编写大量JS代码,易出现数据绑定错误
Tomcat 9轻量级Web服务器,资源占用少,与Spring Boot 2.7适配性好,适合中小型村级防疫管理系统部署不建议使用Tomcat 10+版本,部分Servlet类包路径变更,易出现“Servlet初始化失败”启动异常
Bootstrap 3提供丰富UI组件,可快速实现响应式布局,无需手动编写大量CSS,适配电脑、手机等多终端(村民多使用手机提交信息)优先选用3.x版本,5.x版本部分组件兼容性较差,前期曾导致行程登记表单显示错乱,切换版本后恢复正常

2. 开发环境搭建步骤(实操指南)

环境配置是新手常见卡点,按以下步骤操作可实现一次搭建成功:

  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创建数据库“epidemic_prevention_system”,设置编码为utf8mb4,排序规则为“utf8mb4_general_ci”;
  4. 创建Spring Boot项目:通过Eclipse的“Spring Starter Project”功能,引入Web、MyBatis、MySQL依赖,配置application.yml文件(填写数据库连接信息、服务器端口号);
  5. 前端页面配置:基于JSP+Bootstrap开发用户信息、行程登记、采集数据、综合评估等页面,实现响应式布局(电脑端2列展示数据列表,手机端1列展示);
  6. 联调测试:在application.yml中配置数据库连接地址(url: jdbc:mysql://localhost:3306/epidemic_prevention_system?useSSL=false&serverTimezone=UTC),编写“查询特定用户行程”接口,前端调用后可正常显示行程详情及核酸码状态即为搭建完成。

三、数据库设计:理清实体关系,避免数据混乱

数据库是系统的核心骨架,前期因未关联“综合评估表”与“采集数据表”,查询特定采集记录对应的评估结果时需编写多层嵌套SQL,调试至深夜才解决问题😓。后续采用“实体-属性-关系”分析法梳理表结构,显著提升了开发效率。

1. 核心实体与属性设计(附ER图绘制技巧)

先明确系统核心实体(管理员、用户、采集员、分析员、用户行程、采集数据、行程分析、采集分析、综合评估),再梳理各实体属性,避免遗漏关键字段。核心表结构如下(共15张核心表,可直接用于ER图绘制):

  • 用户表(user):id(主键)、zhanghao(账号)、mima(密码,MD5加密)、xingming(姓名)、xingbie(性别)、shouji(手机)、shenfenzheng(身份证)、youxiang(邮箱)、zhaopian(照片路径)、sfsh(是否审核)、shhf(审核回复)、addtime(注册时间);
  • 采集员表(caijiyuan):id(主键)、caijiyuangonghao(采集员工号)、mima(密码)、caijiyuanxingming(采集员姓名)、xingbie(性别)、shouji(手机)、shenfenzheng(身份证)、zhaopian(照片路径)、addtime(创建时间);
  • 分析员表(fenxiyuan):id(主键)、fenxiyuanzhanghao(分析员账号)、mima(密码)、fenxiyuanxingming(分析员姓名)、xingbie(性别)、shouji(手机)、shenfenzheng(身份证)、zhaopian(照片路径)、addtime(创建时间);
  • 用户行程表(yonghuxingcheng):id(主键)、zhanghao(账号,外键关联用户表)、xingming(姓名)、shouji(手机)、shenfenzheng(身份证)、zhaopian(照片路径)、xingchengma(行程码)、hesuanma(核酸码)、waichudi(外出地)、xingchengdengji(行程登记)、beizhu(备注)、dengjishijian(登记时间)、addtime(创建时间);
  • 采集数据表(caijishuju):id(主键)、caijiyuangonghao(采集员工号,外键关联采集员表)、caijiyuanxingming(采集员姓名)、zhanghao(账号,外键关联用户表)、xingming(姓名)、shenfenzheng(身份证)、shouji(手机)、xiangxixingcheng(详细行程)、yonghuxingcheng(用户行程)、hesuanma(核酸码)、xingchengma(行程码)、waichudi(外出地)、beizhu(备注)、caijiriqi(采集日期)、addtime(创建时间);
  • 行程分析表(xingchenganalysis):id(主键)、zhanghao(账号,外键关联用户表)、xingming(姓名)、shenfenzheng(身份证)、xingchengma(行程码)、hesuanma(核酸码)、waichudi(外出地)、xingchengdengji(行程登记)、fenxiyuanzhanghao(分析员账号,外键关联分析员表)、fenxiyuanxingming(分析员姓名)、fengxianpinggu(风险评估)、pinggujieguo(评估结果)、pinggushijian(评估时间)、addtime(创建时间);
  • 综合评估表(zonghepinggu):id(主键)、zhanghao(账号,外键关联用户表)、xingming(姓名)、shenfenzheng(身份证)、shouji(手机)、zhaopian(照片路径)、fengxianpinggu(风险评估)、yujing(预警)、chuliqingkuang(处理情况)、pingguriqi(评估日期)、addtime(创建时间)。

ER图绘制建议使用Visio或亿图工具,遵循3个核心规则:① 矩形代表实体(如“用户行程”“采集数据”);② 椭圆代表属性(如用户行程的“行程码”“外出地”);③ 菱形代表实体关系(如“用户-用户行程”为一对一关系,一个用户对应一条最新行程;“采集员-采集数据”为一对多关系,一个采集员可采集多条用户数据)。

关键避坑提醒:切勿将核酸码图片、行程码截图等二进制数据直接存入数据库!前期尝试该方案导致数据库崩溃,后续改为存储文件路径(如/static/nucleic/img1.jpg、/static/travel/img2.jpg),大幅提升系统稳定性。

2. 表关联测试:提前验证,避免编码后返工

建表完成后需立即进行关联测试,避免编码阶段才发现问题。测试步骤如下:

  1. 在用户行程表插入测试数据:id=1,zhanghao=“user001”,xingming=“张三”,shenfenzheng=“440300199001010001”,waichudi=“深圳”,dengjishijian=“2024-05-01 10:00:00”;
  2. 在采集数据表插入关联数据:caijiyuangonghao=“cj001”,zhanghao=“user001”,xingming=“张三”,xiangxixingcheng=“5月1日从深圳返村”,hesuanma=“阴性”,caijiriqi=“2024-05-01 11:00:00”;
  3. 编写JOIN查询SQL,验证“某用户的采集记录”数据:
SELECT c.caijiyuangonghao, c.caijiyuanxingming, c.xiangxixingcheng, c.hesuanma, c.caijiriqi, c.beizhu
FROM caijishuju c
JOIN yonghuxingcheng y ON c.zhanghao = y.zhanghao
WHERE y.zhanghao = 'user001';

若能正常查询出“采集员工号+采集员姓名+详细行程+核酸码+采集日期+备注”,说明表关联正确;若出现“Cannot add or update a child row”错误,大概率是外键字段类型不匹配(如zhanghao字段类型与用户表不一致),需及时检查表结构并修正。

四、功能实现:聚焦核心模块,提升答辩竞争力

无需开发所有功能,优先完成3个核心模块即可满足答辩要求,且能突出开发重点。以下为各模块的操作逻辑与页面设计要点:

1. 采集员端:行程数据采集模块(必做核心模块)

核心目标是规范防疫数据采集流程,重点实现“信息关联”与“数据校验”,具体逻辑如下:

  1. 采集前需关联用户账号(下拉框关联用户表),自动填充用户姓名、身份证、联系方式,避免手动输入导致的信息错误;前期因手动填写用户姓名,出现“姓名与账号不匹配”问题,后续改为自动填充后问题解决;
  2. 数据校验规则:行程描述需≥50字(确保轨迹完整),核酸码需标注有效期(格式为“YYYY-MM-DD”),采集日期需晚于行程登记日期,不满足条件时显示明确错误提示(如“采集日期需在行程登记后”);
  3. 图片上传限制:支持JPG/PNG格式,单张图片≤5MB,上传后预览确认,避免模糊或无效图片(如未显示核酸结果的截图),提升后续分析准确性。

页面设计(JSP+Bootstrap):① 关联区:用户账号下拉选(显示账号、姓名、身份证),点击“加载用户信息”自动填充基础字段;② 采集区:行程描述文本域、核酸码/行程码上传框、外出地输入框、采集日期选择器、备注输入框;③ 操作区:“预览数据”“提交采集”“重置”按钮,提交后跳转至采集记录列表页。

2. 分析员端:行程风险分析模块(答辩亮点模块)

该模块直接体现防疫核心价值,导师关注度较高,核心是实现“行程与风险关联分析”,需重点完善分析逻辑:

  1. 分析流程:选择待分析用户行程(下拉框关联用户行程表),自动加载行程详情、核酸/行程码状态,基于“外出地风险等级(高/中/低)”“核酸有效期”“行程轨迹复杂度”三个维度生成风险评估;
  2. 风险判定规则:若外出地为高风险区且核酸超7天→高风险;若外出地为中风险区且行程含密集场所→中风险;若外出地为低风险区且核酸在有效期内→低风险,评估结果需填写具体依据(如“外出地为深圳宝安区(高风险),核酸超7天,判定为高风险”);
  3. 结果同步机制:分析完成后自动生成行程分析报告,同步至综合评估模块,同时向管理员发送审核提醒,确保风险信息及时流转。

页面设计:① 行程筛选区:用户账号输入框、行程登记时间范围选择器、“查询行程”按钮;② 分析区:行程详情展示栏(含行程码/核酸码预览)、风险维度评分滑块(0-10分)、评估结果文本框、依据输入框;③ 结果区:“生成报告”“提交审核”按钮,提交后显示“分析报告已同步,等待管理员审核”提示。

3. 管理员端:综合评估审核模块(核心需求模块)

核心功能是保障防疫评估结果合规,流程需简洁高效,重点完善审核与异常处理逻辑:

  1. 审核流程:查看待审核综合评估(关联用户表、采集数据表、行程分析表),校验“风险评估与采集数据一致性”“处理方案合理性”,支持“通过”“驳回”操作,驳回需填写理由(如“未标注具体隔离建议,需补充”);
  2. 异常处理机制:系统自动检测“评估结果与行程数据矛盾”的记录(如低风险外出地却判定高风险),标记为异常并标红提示,管理员可驳回至分析员重新分析,避免错误评估;
  3. 结果通知:审核通过后,自动向用户发送评估结果通知(含风险等级、处理建议),同时归档评估记录,支持按风险等级筛选导出(便于统计高风险人员数量)。

页面设计:① 筛选区:风险评估等级下拉选(高/中/低)、审核状态选择器、“查询”按钮;② 评估列表区:显示用户账号、姓名、风险等级、评估日期、分析员账号,操作列设置“查看详情/审核/导出”按钮;③ 审核弹窗:包含评估详情、采集数据预览、行程分析报告,审核结果选择框、理由输入框、“确认提交”按钮。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、测试验收:全面排查问题,保障答辩顺利

部分同学认为“功能能运行即可”,忽视测试环节,导致答辩时被评委测出问题。笔者前期未测试“同一用户重复提交行程”场景,导致生成重复行程记录,被导师指出“不符合防疫数据唯一性要求”并扣分😥。需针对性完成以下3类测试:

1. 功能测试:聚焦核心模块,编写测试用例

重点测试前文提及的3个核心模块,整理测试用例表如下:

测试场景操作步骤预期结果
用户重复提交行程用户进入行程登记页→填写行程信息→提交→刷新页面→再次提交相同行程系统提示“24小时内已提交行程,请勿重复操作”,提交失败
采集员采集无效数据采集员选择用户“user001”→行程描述填写“无”→上传模糊核酸码→提交系统提示“行程描述需≥50字,核酸码图片不清晰”,采集失败
管理员审核异常评估管理员进入评估审核页→查看“低风险外出地判定高风险”记录→点击“驳回”→填写理由评估状态更新为“已驳回”,分析员收到重新分析通知,系统记录驳回日志

2. 兼容性测试:覆盖多终端与浏览器

答辩评委可能使用不同设备和浏览器测试,需提前覆盖以下场景:

  • 浏览器兼容性:测试Chrome、Firefox、Edge、IE11等主流浏览器,重点修复IE11的兼容性问题(可通过引入html5shiv.js修复JSP页面适配问题);
  • 设备兼容性:测试电脑(1920×1080、1366×768分辨率)、手机(iPhone 13、华为Mate 40)等终端(村民多使用手机操作);
  • 核心要求:页面无横向滚动条,按钮点击无延迟,图片、数据加载时间≤3秒。

3. 测试报告撰写:规范呈现,提升答辩专业性

测试完成后需撰写规范的测试报告,包含“测试目的、测试范围、测试用例、测试结果、问题总结”5个核心部分:

  • 问题总结:明确记录已修复的问题,如“IE下采集数据表单显示错乱,通过添加IE专属CSS修复;用户重复提交行程问题通过时间限制校验解决;评估结果矛盾问题通过异常检测逻辑修复”;
  • 测试结论:总结核心功能测试情况,如“系统核心功能无严重bug,兼容性问题已全部修复,可满足采集员数据采集、分析员风险评估及管理员审核的防疫管理需求”。

六、答辩准备:掌握3个技巧,提升通过率

  1. 梳理顺畅的演示流程:提前录制演示视频(避免现场环境崩溃),演示逻辑按“用户提交行程→采集员采集数据→分析员风险分析→管理员审核评估”展开,每个操作停顿2秒,确保评委清晰查看数据流转过程;
  2. 突出问题解决能力:答辩时重点讲解开发过程中解决的实际问题,如“前期将核酸码图片存入数据库导致系统崩溃,通过修改为文件路径存储方案解决;用户重复提交行程问题通过24小时时间限制校验修复”,比单纯讲解技术栈更具说服力;
  3. 提前准备常见问题:预判导师可能提出的问题,如“如何保证防疫数据的准确性?”,可从“外键关联(用户-行程-采集数据)、数据校验(格式/完整性校验)、异常检测(矛盾评估识别)、多层审核(采集-分析-管理员)”4个维度作答。

结语

本文基于Spring Boot+MySQL的疫情防控期间某村外出务工人员信息管理系统毕业设计实战经验,系统梳理了从需求分析到答辩准备的全流程要点,核心是“聚焦核心需求、优先稳定技术、提前排查问题”。毕设开发无需追求复杂功能(如答题、多语言支持),将数据采集、风险分析、综合评估等核心功能做扎实,即可顺利通过答辩。

若需要核心源码(带详细注释,可直接运行)、数据库脚本(含测试数据)、ER图模板,可在评论区留言“疫情防控务工系统”获取;若在特定模块(如行程采集、风险评估)遇到问题,也可留言咨询,笔者将及时回复。

收藏本文,便于后续开发查阅~ 祝各位同学毕业设计顺利,轻松毕业!🎉