毕业设计实战:基于SpringBoot+MySQL的流浪动物管理系统设计与实现,从需求到测试全流程拆解,新手也能轻松通关!
谁懂啊!当初做流浪动物管理系统毕设时,光“宠物领养表”和“领养审核表”的外键关联就卡了3天——一开始没给审核表设“领养记录id”外键,查某条领养申请的审核结果时数据全串错,导师看了直接让我“重新画数据库E-R图”😫 后来踩遍无数坑才摸出一套高效落地流程,今天把需求分析、技术选型、功能实现到测试的细节全说透,宝子们不用再熬夜改代码,轻松搞定毕设!
一、先搞懂“流浪动物管理系统要啥”!需求分析别瞎蒙
刚开始我跳过需求分析就写代码,花两周加了个“宠物智能匹配算法”,结果导师一句“核心是宠物信息管理、领养寄养审核、用户互动,不是复杂算法”直接打回重改!后来才明白,需求分析得先抓准“谁用系统、要干啥”,这步做对,后面少走90%弯路。
1. 核心用户&功能拆解(踩坑后总结版)
流浪动物管理系统有三类核心用户:管理员、志愿者和普通用户(别加“审核员子角色”!我当初加了后,权限逻辑混乱,审核员能修改宠物基础信息,最后砍掉才顺畅),功能要明确区分,避免越权操作:
- 管理员端(必做功能):
- 宠物信息管理:维护流浪动物信息(新增名称/类型/照片、修改健康状态、标记“逻辑删除”)、按宠物类型/是否可领养筛选(我当初没加,找特定宠物要翻几十页)
- 领养与寄养审核:处理用户领养申请(查看认领凭据、审核通过/拒绝)、审核宠物寄养信息(校验联系人信息、确认寄养地址)、跟踪审核进度
- 用户与志愿者管理:维护用户账号(重置密码/禁用违规账号)、审核志愿者资质(查看身份证明、标记志愿者状态)、查看用户操作日志
- 内容与基础管理:公告发布(编辑标题/内容、上传封面)、论坛管理(删除违规帖子、置顶优质内容)、字典表维护(配置宠物类型、审核状态等基础数据)
- 志愿者端(核心功能):
- 信息查看:浏览宠物信息(按类型筛选)、查看寄养与领养记录、阅读管理员发布的公告
- 论坛互动:发布养宠知识帖子、回复用户咨询、管理自己发布的内容
- 辅助管理:协助审核宠物信息(标记信息真实性)、记录宠物健康状态更新
- 用户端(核心功能):
- 宠物相关操作:浏览可领养宠物(查看照片/健康信息)、申请领养(提交认领凭据)、发布寄养需求(填写寄养时间/地址/联系人)
- 互动交流:在论坛发布帖子(分享领养经历)、给宠物留言(咨询领养条件)、查看管理员回复
- 个人中心:管理领养/寄养申请(查看审核状态)、修改个人信息(联系方式/头像)、查看历史操作记录
2. 需求分析避坑指南(血泪教训!)
- 别光靠“空想”!找2个同学分别模拟管理员和用户提意见:比如有用户说“想快速区分领养申请审核状态”,我才加了“状态标色”(审核通过标绿色√/待审核标黄色○/拒绝标红色×),比瞎加“智能匹配”实用多了
- 一定要画用例图!用DrawIO画简单版,标清“管理员-审核领养申请”“用户-提交寄养需求”,跟导师汇报时,比光说“我要做XX功能”直观10倍(当初没画,导师听25分钟还没get到逻辑)
- 写“需求规格说明书”!不用复杂,把“功能描述、约束条件”写清楚(比如“宠物名称非空”“寄养照片格式为JPG/PNG”“用户手机号需唯一”“领养凭据需上传图片”),编码时对着做,不会跑偏
3. 可行性分析别敷衍!3点写清楚就能过
导师超爱问“你这系统可行吗”,别只说“我觉得可行”,从3个核心角度写,显得专业:
- 技术可行性:SpringBoot、MySQL、Vue、Java都是课堂学过的,图书馆有《SpringBoot实战》《MySQL数据库设计与优化》,遇到问题能查资料(别用SpringBoot 3.x!我当初想试,跟Vue2联调时宠物照片上传接口卡了5天,换回SpringBoot 2.7才顺利)
- 经济可行性:所有工具全免费!Eclipse(社区版)、MySQL、Tomcat官网直接下,不用花钱买版权,答辩时说“开发成本为0,还能帮公益组织节约流浪动物管理人工成本”,导师会觉得你懂成本控制
- 操作可行性:界面参考主流公益平台,按钮布局简洁(比如“申请领养”“提交寄养”按钮放宠物详情页显眼位置),我找同学测试,10分钟就学会浏览宠物、提交领养申请,导师直接认可
二、技术选型别跟风!这套组合稳到爆
刚开始我跟风用SpringBoot 3.x+Vue3+Redis,结果“用户领养申请缓存”卡了4天——Redis的持久化配置没设对,重启后申请数据全丢😫 后来换成Java 8+SpringBoot 2.7+MySQL 8.0+Tomcat 9+Eclipse 2022+Vue2,新手友好度拉满,调试效率翻两倍!
1. 技术栈详细对比(附避坑提醒)
宝子们别盲目选“最新技术”,稳定比炫酷重要!我整理了6个核心工具的选择理由和坑点,直接抄:
| 技术工具 | 为啥选它 | 避坑提醒!(重点!) |
|---|---|---|
| Java 8 | 语法简洁,支持面向对象编程,学习资料丰富,SpringBoot 2.7对其兼容性最佳 | 别用Java 11+!部分SpringBoot依赖(如spring-web)对高版本Java支持差,会出现“类加载失败”错误 |
| SpringBoot 2.7 | 简化Spring配置,自带Tomcat容器,支持自动装配,开发效率比SSM高30% | 别用3.x版本!与Vue2、MySQL 8.0兼容性差,且部分依赖(如mybatis-spring-boot-starter)适配不完善 |
| MySQL 8.0 | 支持事务和外键,存宠物、用户、领养数据足够用,占内存小,支持utf8mb4编码(解决生僻字乱码) | 安装时设“utf8mb4”编码!我当初用默认latin1编码,用户姓名含生僻字(如“䶮”)乱码,查2小时才解决 |
| Tomcat 9 | 轻量级服务器,SpringBoot默认集成,配置简单,与MySQL 8.0兼容性强 | 别手动升级到10!版本过高导致Servlet API包名变化(javax.servlet→jakarta.servlet),项目启动报错“类找不到” |
| Eclipse 2022 | 对Java开发支持好,自带SpringBoot插件,调试工具直观,免费开源 | 别更到2023+版本!高版本对老电脑兼容性差,编译项目时经常卡顿,且部分插件(如Vue Plugin)适配不稳定 |
| Vue2 | 上手简单,组件丰富,与SpringBoot联调顺畅,学习资料多 | 别用Vue 3!组合式API对新手不友好,且与后端接口联调时数据格式转换容易出问题 |
2. 开发环境搭建(step by step 实操)
很多宝子卡在“环境配置”,跟着步骤来超简单,我当初一次成功:
- 装JDK 1.8:记住安装路径(比如D:\Java\jdk1.8.0_301),配置“JAVA_HOME”环境变量,Path中添加“%JAVA_HOME%\bin”,cmd输入“java -version”显示“1.8.x”即成功
- 装Eclipse 2022(社区版):选“Eclipse IDE for Enterprise Java Developers”,首次打开勾选“Spring Tools”“Vue.js”插件,自动安装
- 装MySQL 8.0:用Navicat管理(可视化工具超方便),新建数据库“liulangdongwuguanli”,编码设“utf8mb4”,排序规则选“utf8mb4_general_ci”
- 新建SpringBoot项目:打开Eclipse,选“Spring Initializr”,Group填“com.example”,Artifact填“liulangdongwu”,勾选“Spring Web”“MyBatis Framework”“MySQL Driver”依赖,自动生成项目结构
- 配置数据库连接:在application.properties中添加配置(spring.datasource.url=jdbc:mysql://localhost:3306/liulangdongwuguanli?useSSL=false&serverTimezone=UTC,spring.datasource.username=root,spring.datasource.password=自己设的密码),写“查询宠物列表”接口,运行后能返回数据即完成初始化
3. 架构图一定要画!答辩加分项
用DrawIO画SpringBoot+Vue分层架构图,标清“客户端(浏览器)-前端(Vue页面)-控制层(Controller)-服务层(Service)-数据访问层(Mapper)-数据库(MySQL)”:比如用户点“申请领养”→Vue页面传请求→Controller接收参数→Service校验宠物状态(是否可领养、用户资质)→Mapper操作数据库(插入领养记录)→返回申请结果→Vue页面更新审核状态。去年答辩时,评委特意夸这图“逻辑清晰”,比光说“我用了SpringBoot+MySQL”专业多了!
三、数据库设计:别让表关联坑了你
这部分是毕设的“核心骨架”,我当初没关联“宠物领养表”和“领养审核表”,查“某条领养申请的审核结果”要写3层嵌套SQL,调试到凌晨1点😫 后来按“实体-属性-关系”设计,终于理清了。
1. 核心实体&属性(附ER图绘制技巧)
先确定“实体”(管理员、用户、志愿者、宠物、领养记录、寄养记录、领养审核、论坛帖子),再想“属性”,别漏关键字段!我整理了必做的8张表,直接照着画ER图:
- 用户表(yonghu):id(主键)、username(账号)、password(密码)、yonghu_name(姓名)、yonghu_phone(手机号)、yonghu_photo(头像路径)、yonghu_delete(逻辑删除:0=未删,1=已删)、create_time(注册时间)
- 宠物表(chongwu):id(主键)、chongwu_name(宠物名称)、chongwu_photo(宠物照片路径)、chongwu_types(宠物类型:1-猫,2-狗,3-其他)、chongwu_content(健康介绍)、kelingyang_types(是否可领养:0=否,1=是)、create_time(录入时间)
- 宠物领养表(chongwulingyang):id(主键)、chongwulingyang_name(标题)、chongwu_id(关联宠物)、jieshu_types(是否被认领:0=否,1=是)、chongwulingyang_content(领养要求)、create_time(发布时间)
- 领养审核表(chongwulingyangshenhe):id(主键)、chongwulingyang_id(关联领养记录)、yonghu_id(关联用户)、chongwurenlingshenhe_text(认领凭据)、shenhe_types(审核状态:0=待审核,1=已通过,2=已拒绝)、shenhe_text(审核意见)
画ER图用Visio或亿图,记住3个规则:
- 矩形代表“实体”(比如“用户”“宠物”)
- 椭圆代表“属性”(比如用户的“手机号”“头像”,宠物的“名称”“类型”)
- 菱形代表“关系”(比如“用户-领养记录”是一对多,一个用户可申请领养多个宠物;“宠物-领养记录”是一对多,一只宠物可被多个用户申请;“领养记录-审核记录”是一对一,一条领养申请对应一条审核结果) 避坑提醒:别把“宠物照片、认领凭据”存数据库!我当初存二进制导致数据库崩溃,改成存“文件路径”(比如/static/chongwu/photo1.jpg、/static/shenhe/pingju1.png)才对。
2. 数据库物理设计(附建表SQL示例)
ER图画好后,转成实际表,字段类型和约束别瞎设!比如“宠物类型”用INT(1/2/3标识),“宠物名称”用VARCHAR(200),“手机号”设UNIQUE约束(避免重复注册),“审核状态”用INT(0/1/2标识)。
给宝子们贴“宠物领养表”和“领养审核表”的建表SQL,复制到Navicat就能用:
-- 宠物领养表
CREATE TABLE `chongwulingyang` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '领养记录ID',
`chongwulingyang_name` VARCHAR(200) NOT NULL COMMENT '标题',
`chongwu_id` INT DEFAULT NULL COMMENT '关联宠物ID(外键)',
`chongwu_types` INT DEFAULT NULL COMMENT '宠物类型(1-猫,2-狗,3-其他)',
`chongwulingyang_photo` VARCHAR(200) DEFAULT NULL COMMENT '宠物图片路径',
`jieshu_types` INT DEFAULT 0 COMMENT '是否被认领(0-否,1-是)',
`chongwulingyang_content` TEXT DEFAULT NULL COMMENT '领养要求',
`create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
PRIMARY KEY (`id`),
KEY `fk_lingyang_chongwu` (`chongwu_id`),
CONSTRAINT `fk_lingyang_chongwu` FOREIGN KEY (`chongwu_id`) REFERENCES `chongwu` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宠物领养表';
-- 领养审核表
CREATE TABLE `chongwulingyangshenhe` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '审核ID',
`chongwulingyang_id` INT DEFAULT NULL COMMENT '关联领养记录ID(外键)',
`yonghu_id` INT DEFAULT NULL COMMENT '关联用户ID(外键)',
`chongwurenlingshenhe_text` TEXT DEFAULT NULL COMMENT '认领凭据',
`shenhe_types` INT DEFAULT 0 COMMENT '审核状态(0-待审核,1-已通过,2-已拒绝)',
`shenhe_text` TEXT DEFAULT NULL COMMENT '审核意见',
`create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `fk_shenhe_lingyang` (`chongwulingyang_id`),
KEY `fk_shenhe_yonghu` (`yonghu_id`),
CONSTRAINT `fk_shenhe_lingyang` FOREIGN KEY (`chongwulingyang_id`) REFERENCES `chongwulingyang` (`id`),
CONSTRAINT `fk_shenhe_yonghu` FOREIGN KEY (`yonghu_id`) REFERENCES `yonghu` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='领养审核表';
3. 表关联测试!别等编码才发现错
建完表一定要测关联!比如在“宠物表”插数据(id=1,名称=“橘猫”,类型=1,照片=/static/chongwu/photo1.jpg,可领养=1),在“领养表”插数据(id=1,chongwu_id=1,标题=“橘猫领养”,未被认领=0),在“用户表”插数据(id=1,姓名=“张三”,手机号=13800138000),在“审核表”插关联数据(chongwulingyang_id=1,yonghu_id=1,审核状态=0,认领凭据=“住房证明”),用JOIN查询“某条领养申请的审核结果”:
SELECT u.yonghu_name, u.yonghu_phone, s.shenhe_types, s.shenhe_text, s.create_time
FROM chongwulingyangshenhe s
JOIN yonghu u ON s.yonghu_id = u.id
WHERE s.chongwulingyang_id = 1;
如果能查出“用户名+手机号+审核状态+审核意见+创建时间”,说明关联没问题;如果报错“Cannot add or update a child row”,大概率是外键没设对,赶紧检查表结构(比如领养记录ID是否存在、用户ID是否有效)。
四、功能实现:核心模块操作+页面设计
不用做所有功能!先搞定3个核心模块,答辩时足够出彩。每个模块我都附关键操作逻辑和页面设计要点,宝子们直接套就行。
1. 管理员端:宠物领养审核模块(必做!)
这是管理员的核心功能,实现“领养申请接收+审核处理+结果反馈”,重点说“认领凭据校验”和“审核状态同步”——别漏这两步,我当初就是这里踩了大坑!
(1)关键操作逻辑
- 接收领养申请后,校验“宠物状态为可领养”“用户未重复申请该宠物”“认领凭据非空”(缺一项提示“申请无效”);
- 审核时,选择“通过/拒绝”并填写意见(拒绝时必填意见),审核后同步更新领养记录的“是否被认领”状态(通过则设为1,拒绝则保持0);
- 审核结果实时反馈给用户,用户在个人中心可查看。
(2)页面设计要点(Vue+Bootstrap)
页面标题:管理员-宠物领养审核页面
(插入图片位置:此处放“领养审核页面截图”,需包含以下元素)
- 筛选区:
- 输入框:标题(模糊查)、用户姓名(模糊查)
- 下拉框:审核状态(全部/待审核/已通过/已拒绝)
- 按钮:“查询”(蓝色btn-primary)
- 审核列表区:
- 表格列名:标题、宠物图片、用户姓名、手机号、认领凭据、审核状态、提交时间、操作
- 凭据显示:点击查看大图(如住房证明、身份证照片)
- 操作按钮:“审核”(蓝色,待审核可点)、“查看详情”(灰色)
- 审核弹窗:
- 显示:申请详情(宠物信息、用户信息、认领凭据)
- 表单元素:审核结果(单选“已通过”“已拒绝”,必填)、审核意见(文本域,拒绝时必填)
- 按钮:“提交审核”(绿色)、“取消”(灰色)
(3)避坑提醒
- 审核状态同步与凭据校验!加代码(Service层):
// 认领凭据校验 String pingju = shenhe.getChongwurenlingshenheText(); if (StringUtils.isEmpty(pingju)) { return Result.error("认领凭据不能为空,请补充后重新申请!"); } // 校验宠物是否可领养 Chongwulingyang lingyang = lingyangService.getById(shenhe.getChongwulingyangId()); Chongwu chongwu = chongwuService.getById(lingyang.getChongwuId()); if (chongwu.getKelingyangTypes() != 1) { return Result.error("该宠物当前不可领养,申请失败!"); } // 校验是否重复申请 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Chongwulingyangshenhe::getChongwulingyangId, shenhe.getChongwulingyangId()) .eq(Chongwulingyangshenhe::getYonghuId, shenhe.getYonghuId()); if (shenheService.count(wrapper) > 0) { return Result.error("您已申请过该宠物,请勿重复提交!"); } // 审核状态同步(通过则标记宠物为已认领) if (shenhe.getShenheTypes() == 1) { lingyang.setJieshuTypes(1); // 1表示已认领 lingyangService.updateById(lingyang); } shenheService.save(shenhe); return Result.success("审核操作成功!");
2. 用户端:宠物寄养申请模块(核心需求!)
用户用系统的核心是“寄养需求发布-进度跟踪-结果查看”,流程别复杂:填写寄养信息→上传宠物照片→提交申请→查看审核进度,我当初漏了“寄养日期合法性校验”,导致用户能选过去的日期,补了半天逻辑才好。
(1)关键操作逻辑
- 提交寄养申请前,校验“寄养日期≥当前日期”“寄养天数≥1”“联系人手机号格式正确”(不满足提示“请完善寄养信息”);
- 上传宠物照片时,限制格式为JPG/PNG,大小≤5MB(避免占用过多服务器空间);
- 申请提交后,默认审核状态为“待审核”,管理员审核后更新状态,用户可实时查看。
(2)页面设计要点(Vue+Bootstrap)
页面标题:用户-宠物寄养申请页面
(插入图片位置:此处放“寄养申请页面截图”,需包含以下元素)
- 申请表单区:
- 表单元素:
- 宠物名称(输入框,必填)
- 宠物类型(下拉选“猫/狗/其他”,必填)
- 宠物照片(上传框,JPG/PNG,必填)
- 寄养日期(日期选择器,≥当前日期,必填)
- 寄养天数(数字输入框,≥1,必填)
- 寄养地址(输入框,必填)
- 联系人姓名(输入框,必填)
- 联系人手机号(输入框,11位,必填)
- 寄养详情(文本域,描述宠物习性、健康状况,必填)
- 按钮:“提交申请”(绿色)、“重置”(灰色)
- 表单元素:
- 我的寄养记录区:
- 表格列名:宠物名称、宠物照片、寄养日期、寄养天数、审核状态、审核意见、操作
- 操作按钮:“查看详情”(蓝色)、“取消申请”(红色,待审核可点)
(3)避坑提醒
- 寄养日期合法性校验!加代码(Controller层):
@PostMapping("/addJiuyang") @ResponseBody public Result addJiuyang(@RequestBody Chongwujiuyang jiuyang) { // 校验寄养日期(≥当前日期) Date jiuyangDate = jiuyang.getJiyangRiqiTime(); Date today = new Date(); if (jiuyangDate.before(today)) { return Result.error("寄养日期不能早于当前日期,请重新选择!"); } // 校验寄养天数(≥1) Integer days = jiuyang.getJiyangTianshu(); if (days == null || days < 1) { return Result.error("寄养天数不能小于1,请重新输入!"); } // 校验手机号格式(11位) String phone = jiuyang.getLianxirenPhone(); String phoneRegex = "^1[3-9]\\d{9}$"; if (!phone.matches(phoneRegex)) { return Result.error("联系人手机号格式不正确,请重新输入!"); } // 保存寄养记录(默认待审核) jiuyang.setChongwujiyangYesnoTypes(0); // 0=待审核 jiuyangService.save(jiuyang); return Result.success("寄养申请提交成功,等待管理员审核!"); }
3. 志愿者端:论坛管理模块(答辩亮点!)
这个功能最能体现“公益互动闭环”,导师超爱问!核心是“发布养宠知识-回复用户咨询-管理帖子”,别漏“帖子状态标记”,不然用户看不到优质内容。
页面设计要点(Vue+Bootstrap)
页面标题:志愿者-论坛管理页面
(插入图片位置:此处放“论坛管理页面截图”,需包含以下元素)
- 筛选与操作区:
- 输入框:帖子标题(模糊查)、发布人姓名(模糊查)
- 下拉框:帖子状态(全部/正常/置顶/违规)
- 按钮:“查询”(蓝色)、“发布新帖”(绿色)
- 帖子列表区:
- 表格列名:帖子标题、发布人、发布人身份(用户/志愿者)、发布时间、帖子状态、操作
- 操作按钮:“查看详情”(蓝色)、“回复”(橙色)、“置顶/取消置顶”(灰色)、“标记违规”(红色)
- 发布/回复帖子弹窗:
- 发布帖子:标题(输入框,必填)、内容(富文本框,支持换行,必填)、封面图(上传框,可选)
- 回复帖子:回复内容(文本域,必填)
- 按钮:“提交”(绿色)、“取消”(灰色)
(3)避坑提醒
- 帖子置顶与违规标记逻辑!加代码(Service层):
// 帖子置顶 public Result setTop(Integer forumId) { Forum forum = forumService.getById(forumId); if (forum == null) { return Result.error("帖子不存在,操作失败!"); } forum.setForumStateTypes(2); // 2=置顶状态 forumService.updateById(forum); return Result.success("帖子置顶成功!"); } // 标记违规帖子 public Result setIllegal(Integer forumId) { Forum forum = forumService.getById(forumId); if (forum == null) { return Result.error("帖子不存在,操作失败!"); } forum.setForumStateTypes(3); // 3=违规状态 forumService.updateById(forum); return Result.success("帖子标记违规成功,已隐藏!"); }
五、测试别敷衍!这3步让答辩不翻车
很多宝子觉得“功能能跑就行”,结果答辩时评委一测就出问题!我当初没测“已认领宠物仍可申请领养”场景,导致用户能申请已被领养的宠物,导师说“不符合公益管理逻辑”,当场扣分😫 测试一定要针对性做!
1. 功能测试(必测3个模块)
别全测!重点测“核心功能”,我整理了测试用例表,直接填结果:
(1)领养审核测试(表1:审核测试用例)
| 测试场景 | 操作步骤 | 预期结果 | 实际结果 | 测试结论 |
|---|---|---|---|---|
| 认领凭据为空审核 | 选待审核申请→认领凭据为空→提交审核 | 提示“认领凭据不能为空,请补充后重新申请!” | ||
| 审核拒绝不填意见 | 选待审核申请→审核结果选“已拒绝”→不填意见→提交 | 提示“审核拒绝时,请填写拒绝原因!” | ||
| 正常通过审核 | 选待审核申请→审核结果选“已通过”→填意见→提交 | 提示“审核操作成功!”,领养记录标记为“已认领” |
(2)寄养申请测试(表2:寄养测试用例)
| 测试场景 | 操作步骤 | 预期结果 | 实际结果 | 测试结论 |
|---|---|---|---|---|
| 寄养日期选过去时间 | 填寄养信息→日期选昨天→提交申请 | 提示“寄养日期不能早于当前日期,请重新选择!” | ||
| 寄养天数填0 | 填寄养信息→天数填0→提交申请 | 提示“寄养天数不能小于1,请重新输入!” | ||
| 正常提交寄养申请 | 填完整信息→日期选明天→天数填7→提交申请 | 提示“寄养申请提交成功,等待管理员审核!”,列表显示“待审核” |
(3)论坛管理测试(表3:论坛测试用例)
| 测试场景 | 操作步骤 | 预期结果 | 实际结果 | 测试结论 |
|---|---|---|---|---|
| 帖子置顶操作 | 选正常帖子→点击“置顶”→确认操作 | 提示“帖子置顶成功!”,帖子状态显示“置顶” | ||
| 标记违规帖子后查询 | 标记违规帖子→选“违规”筛选→查询 | 显示该违规帖子;选“正常”筛选→不显示 |
2. 兼容性测试(容易忽略的点)
别只在自己电脑测!答辩时评委可能用不同浏览器,我当初没测IE,结果宠物照片显示变形,赶紧加兼容性CSS才好:
- 浏览器测试:Chrome、Firefox、Edge、IE11(重点测IE,兼容性最差)
- 分辨率测试:1920×1080、1366×768(别让页面出现横向滚动条,用Bootstrap的“container-fluid”布局,加“overflow-x: hidden”样式)
3. 测试报告要写好!答辩加分
把测试结果整理成“测试报告”,含“目的、范围、用例、结果、问题总结”,导师会觉得你“做事严谨”。比如:
- 问题总结:“IE浏览器下宠物照片显示变形,通过添加IE专属CSS(*html .chongwu-photo { width: 120px !important; height: 120px !important; })修复;已认领宠物仍可申请领养,加宠物认领状态(jieshu_types)校验修复”
- 测试结论:“核心功能(领养审核、寄养申请、论坛管理)均通过测试,无严重bug;兼容性问题已修复,系统可正常使用,满足流浪动物公益管理需求”
六、答辩准备:3个加分小技巧
毕设不仅要做出来,还要说清楚!我当初准备了这3点,导师直接给“良好”:
- 演示流程要顺畅:提前录演示视频(怕现场系统崩),按“管理员录入宠物信息→用户申请领养→管理员审核通过→用户提交寄养需求→志愿者发布论坛帖子”的流程来,别跳步,每个操作后停顿2秒,让评委看清结果
- 重点讲“你解决了啥问题”:比如“一开始用户能申请已认领宠物,加领养记录的jieshu_types校验解决;寄养日期能选过去时间,加日期对比(≥当前日期)修复;表关联错误导致查不到审核结果,重新设计外键(chongwulingyang_id关联领养表id)解决”,比光说“我用了SpringBoot+MySQL”有亮点
- 准备常见问题:导师大概率问“为啥选SpringBoot不选SSM”“数据多了怎么优化”,提前答:“SpringBoot简化配置(不用手动整合xml),自带Tomcat容器,开发效率高;数据多就给宠物表的chongwu_name加索引(CREATE INDEX idx_chongwu_name ON chongwu(chongwu_name);),优化查询速度,还能分表存储历史领养记录(按年份分表,如chongwulingyang_2024、chongwulingyang_2025)”
最后:毕设通关的小私心
以上就是基于SpringBoot+MySQL的流浪动物管理系统从0到1的避坑干货!毕设没那么难,关键是找对方法,别瞎做复杂功能(比如智能匹配、AI审核),把核心功能(领养、寄养、审核)做扎实,答辩就能过。
需要核心源码(带详细注释,直接能跑)、数据库脚本(含测试数据)、ER图模板的宝子,评论区扣“流浪动物系统”,我私发你;卡在某个模块(比如领养审核、寄养申请),也可以留言,我看到必回!
点赞收藏这篇,下次找流程不迷路~祝宝子们毕设顺利,轻松毕业!😘