答辩翻车通常不是代码不会写,而是这三件事没准备:开场 30 秒讲不清问题、演示路径临时现点、被问到表结构和权限时卡壳。下面按「前一夜 → 8 分钟讲 → 3 分钟演示 → 12 个真问题」写,拿实验室预约这类管理系统也能套。
记住一句话:老师要看的是你能不能讲清「谁在用、主流程怎么走、难在哪、数据怎么存」。用了 Spring Boot / Vue 不是创新点。
一、答辩前一夜:只检查这些
不要通宵改功能。功能没做完的,当场砍掉,保主流程。
- 电脑开机后 2 分钟内能打开系统。后端、前端、数据库都先启动好,浏览器收藏夹放好地址。
- 两个账号能登录:
admin / 123456、student01 / 123456。写在纸上,别记在脑子里。 - 主流程提前点一遍:登录 → 提交预约 → 管理员通过 → 用户端状态变成「已通过」→ 打开统计页有数字。
- 准备一份 90 秒录屏,放桌面,文件名写成
演示备份.mp4。现场崩了立刻播,不要当场 debug。 - PPT 控制 10 页。每页只放标题 + 一张图。讲稿写在备注里,不要念正文。
- U 盘再放一份:PPT、录屏、论文 PDF、SQL 初始化脚本。
演示数据不要用空库。至少预置 20 条预约、3 个实验室、2 个管理员操作记录。空表上答辩,统计图是空白的,老师会觉得系统没做完。
二、8 分钟怎么分配(照着念也可以)
| 时间 | 讲什么 | 不要讲什么 |
|---|---|---|
| 0:00–0:40 | 谁有什么麻烦,你做成了哪条闭环 | 信息技术很重要、本课题意义重大 |
| 0:40–1:40 | 角色、模块、技术栈各一句话 | Spring Boot 发展史 |
| 1:40–5:00 | 现场演示,边点边说 | 停下来解释每一行代码 |
| 5:00–6:20 | 一个真难点:冲突检测 / 权限 / 状态机 | 罗列 8 个创新点 |
| 6:20–7:20 | 测试怎么做的、结果怎样 | 「测试通过」四个字 |
| 7:20–8:00 | 不足和下一步,停下来等提问 | 继续加新功能介绍 |
开场 40 秒可以这样说
老师好,我做的是实验室预约系统。现在实验室还是用微信群和表格,经常撞时段、设备对不上。系统里学生提交预约,管理员审核,通过后不能再被别人约同一时段。接下来我用学生账号走一遍预约,再用管理员账号审核,最后看统计页。
把「实验室」换成你的业务就行:报修、订房、选课、领养,结构一样。
三、3 分钟演示路径(先写下来再点)
不要现场想「我该点哪个菜单」。答辩前把路径抄在便利贴上:
- 用学生账号登录,进入「我的预约」。
- 新建一条:选实验室、选明天 14:00–16:00、提交。状态显示「待审核」。
- 退出,换管理员登录。待审核列表里点通过。口头说:「通过后同一实验室同一时段不能再约。」
- 再切回学生账号,状态已变成「已通过」。
- 打开统计页,指着「本周预约数」和「通过率」说:数据来自预约表按状态聚合,不是写死的。
如果系统还有权限:用学生账号点一次「用户管理」,提示无权限。这 10 秒很加分,证明你不是只有登录。
演示口播模板:「现在学生提交预约 → 管理员审核 → 用户端状态同步 → 统计页能看到这条记录。」每切一个页面只说这一句,不要沉默。
四、PPT 就这 10 页
- 题目 + 姓名学号
- 要解决的问题(一张对比:原来怎么做 / 现在怎么做)
- 用户角色(管理员、学生,各能干什么)
- 功能结构图
- 技术栈(一表即可:Boot / Vue / MySQL)
- 数据库 ER 或 4 张核心表
- 难点页(冲突检测或权限)
- 测试用例摘 4 条
- 演示截图(如果现场不稳,这页顶上)
- 总结:完成了什么、没做完什么
不要放代码大段截图。老师看不清。被问到代码时,打开 IDE 跳到那一个方法。
五、老师常问的 12 个问题,按能说出口来写
1. 创新点是什么?
错误答法:「我用了 Spring Boot 和 Vue。」
能用的答法:「原来靠群里抢,会约重。我加了时段冲突检测:同一实验室、时间交叉就拒绝。管理员审核通过后状态锁死,避免两个人同时约上。」
2. 为什么选这个技术栈?
「课上教过 Java,Spring Boot 起步快,前后端分离方便演示。MySQL 存预约、用户、实验室这些关系数据够用。没有拆微服务,一个人维护不了。」
3. 数据库怎么设计的?
当场打开 ER 图,指 4 张表:user、lab、reservation、reservation_log。说清:预约表外键连用户和实验室;状态字段是待审核 / 通过 / 驳回 / 取消;日志表记谁在什么时候审的。
准备被追问「为什么不把实验室名写进预约表」:答避免改实验室名称后历史数据不一致。
4. 权限怎么做的?
「登录后把角色放 token 或 session。后端拦截器看角色,学生不能调管理员接口。前端路由也挡一层,但真正有效的是后端。」如果只用了前端隐藏菜单,诚实说,并补一句「这是简化,正式环境必须后端校验」。
5. 冲突检测怎么实现的?
「新预约的开始时间小于已有通过预约的结束时间,并且结束时间大于已有开始时间,就视为交叉。SQL 按实验室 ID 和状态=已通过过滤。待审核的先不锁,避免占坑;也可以改成提交即预占,看题目要求。」
6. 密码怎么存的?
「BCrypt 或至少 SHA-256 加盐。不要说明文。如果实际是明文,今晚就改,答辩被抓到会很难看。」
7. 怎么测试的?
拿出测试用例表,不要只说「测过了」。完整 8 条模板见 测试用例怎么写。至少准备:
| 编号 | 步骤 | 预期 |
|---|---|---|
| T01 | 错误密码登录 | 提示错误,不进系统 |
| T02 | 学生预约交叉时段 | 提交失败 |
| T03 | 管理员驳回 | 学生端变为已驳回 |
| T04 | 学生打开用户管理 | 无权限 |
8. 如果用户量变大怎么办?
「当前是单机 MySQL,够毕业设计。真上线会加预约表索引(实验室 ID + 时间),统计页做缓存。现在没上 Redis,因为并发量支撑不住这个复杂度。」这句话比假装已经分布式更稳。
9. 代码是不是抄的?
「登录和 CRUD 参考了官方示例,冲突检测和预约状态机是按这个题目写的。我可以打开 ReservationService 里检查冲突的方法。」然后真的打开。
10. 论文和系统为什么对不上?
最常见:论文写了消息通知,系统里没有。处理办法:论文改成「后续工作」,或演示里不要提。答辩前把论文功能清单和菜单逐条对一遍。
11. 不足是什么?
准备两条真的:没有消息提醒、没有移动端、冲突检测没处理跨天预约。不要说「没什么不足」。
12. 听不清或不会怎么办?
「老师,我没听清,能否再说一遍?」不会就:「这部分我做成了简化版,只校验了同一天内交叉,跨天预约还没做,论文里写在展望。」硬编协议、算法、分布式,被追问会崩。
六、现场崩了怎么接
- 页面 404:切录屏,说「现场环境刚才中断,我用录屏把主流程走完,系统在本地是通的。」
- 接口 500:不要打开控制台敲。直接录屏。
- 统计图没数据:用管理员再审一条,刷新;还没有就打开数据库客户端给老师看表里有记录。
- 被问到没做的模块:承认,给替代路径。「支付没接,用模拟支付状态字段演示。」
七、答辩当天时间线
- 提前 40 分钟到,连投影,用你的电脑,别用实验室那台没环境的。
- 浏览器只留系统页、PPT、录屏三个窗口。
- 轮到你之前再点一次登录,避免 session 过期。
- 讲完主动说:「演示完毕,请老师提问。」然后闭嘴。
