
四月份那会儿有个学弟跑过来问我“学长毕设题目里写‘智慧医疗’的特别多我随便选一个做是不是就能过”我当时直接告诉他你要是把智慧医疗App当成“用户注册登录加个图表”的CRUD项目来做答辩多半会被老师几个问题打回原形。这背后牵扯到的健康数据怎么采、提醒怎么触发、医患怎么聊每一个功能都有完整的技术链路。本文就从毕设选题角度出发拆一拆基于SpringBoot安卓的智慧医疗系统到底该怎么设计和实现。这个项目不是单纯堆功能而是典型的“移动端服务端数据库”三层结构核心解决三个问题一是健康数据监测体征数据的上报、存储、分析和展示二是智能提醒服药、复诊、异常指标触发通知三是远程咨询图文会话、病情描述、医生回复。这三个模块恰好覆盖了痛点和亮点技术栈也足够经典——SpringBoot做后端接口安卓端做应用交互MySQL做数据落库是个性价比很高的毕设选题。适合谁来参考如果你准备找题目可以用这个思路去评估选题的复杂度如果你已经选了类似方向可以对照本文的架构和实现顺序去排开发计划如果你是答辩前临时抱佛脚看后半部分的“避坑”和“答辩准备”也来得及。下面我按一个完整项目的推进顺序来讲。1. 为什么说智慧医疗App是毕设选题里的“高性价比”选择每年毕设题目汇总表下来一眼扫过去“智慧”开头的占一多半智慧医疗在其中属于又热门又不缺内容的方向。但热门容易做水反而是拉开档次的好机会。关键在于这个题目本身就自带了一条从数据采集到业务闭环的完整链路每一环都有实际场景撑着不用硬编需求。1.1 从选题角度看这个题目覆盖了后端开发的核心考点一个合格的毕设题目不是让你做一个谁都看不懂的偏门系统而是要让评委老师看到一个完整的软件工程过程。智慧医疗App天然具备这个属性用户体系注册、登录、Token鉴权、个人资料这是几乎所有系统的地基。数据采集与展示健康指标心率、血压、血糖、体重、步数上报后在安卓端做列表和图表可视化。业务逻辑异常值判断、用药提醒规则、复诊时间计算这不是简单增删改查有了规则引擎的雏形。交互沟通患者和医生的消息会话模型涉及会话列表、消息记录、未读数比普通CRUD多了一层实时性思考。数据管理MySQL表结构设计、索引优化、时间字段处理后端基本功全覆盖。从考评维度看这套系统能让答辩老师从架构设计、模块划分、数据库范式、接口规范、异常处理等各个角度提问你也有东西可讲。对比那些“图书管理”“宿舍报修”一类题目它的技术纵深明显更够。1.2 社会价值与内容壁垒为什么不是又一个“管理系统”很多同学做毕设容易陷入一个误区功能抄来抄去界面换来换去。最后做出来的系统自己都不知道给谁用。智慧医疗不一样它有一个明确的用户痛点在前面——慢性病患者的日常健康管理以及“小病先问”的就诊需求。这就给项目带来了“内容壁垒”真实场景驱动功能设计健康监测不是拍脑袋想出来的而是“患者每天测血压、测血糖需要记录并观察趋势”这个真实需求倒推出来的。数据模型有讲究一条健康记录不只有“值”还有“测量时间”“测量部位”“测量状态空腹/餐后”“备注”等维度这些细节决定了系统是花架子还是能实际落地。提醒功能有业务考究不只是设个闹钟而是要根据用药频次、用药周期、剂量说明来生成提醒计划甚至可以做一个简单的规则配置界面。换句话说同样的技术栈做“商品管理系统”和做“智慧医疗App”内容的可挖掘深度完全不一样。答辩老师看多了千篇一律的电商平台看到一个有针对性的医疗场景第一印象就不同。1.3 与其他常见毕设选题的横向对比选题方向技术覆盖面业务复杂度答辩话题深度工作量风险图书管理系统低低浅太低容易显得像课程作业电商/商城系统中中中功能量大但同质化严重校园二手交易中中中同上拼的只剩界面智慧医疗App中高中高深需控制模块边界但每个模块都有看点参与过毕设指导的都知道“工作量够不够”和“是否能独立完成”是两个核心评分点。智慧医疗正好平衡了这两点模块丰富但每个模块难度可控既有挑战又不至于让普通学生半年做不完。这也是我把这个题目排进推荐名单最直接的理由。2. 三端架构怎么拆SpringBoot、安卓和MySQL的分工与边界选定题目后的第一件事不是写代码而是把系统的物理结构和逻辑结构想清楚。很多翻车的项目都是栽在早期架构设计上——前后端职责混乱表结构改来改去接口命名随心所欲写着写着就成了一锅粥。2.1 系统总体架构移动端只负责表现业务收敛在后端这套系统我推荐的是“瘦客户端、肥服务端”的经典路线。安卓应用只负责做的事情采集用户输入的健康数据做基础格式校验调用后端接口完成数据提交和查询渲染健康趋势图表、消息会话界面、提醒列表本地缓存用户Token和必要的配置信息。SpringBoot后端要承担的事情统一的身份认证登录后签发Token后续请求携带健康数据合法性校验与入库提醒计划的生成、存储与触发计算咨询会话的创建、消息的存储与转发给安卓端返回结构一致的数据格式统一响应体。MySQL做的事相对纯粹——持久化所有业务数据但在表结构设计上需要提前规划好分表和索引的余地尤其是健康监测记录这种“高频写入”类型的数据在用户量上来以后会快速膨胀。毕设虽不需要做分库分表但理解这个瓶颈并在论文里写出“后续可引入时序数据库或分片方案”反而是加分项。2.2 SpringBoot版本与服务端模块划分SpringBoot这边我建议直接用2.7.x或3.x稳定版配套MyBatis-Plus做持久层减少手写XML的工作量。整个后端可以按业务域拆包package-by-feature而不是按技术层拆包controller、service、mapper各放一层因为业务域划分更符合真实企业项目的组织习惯答辩讲起来也更有条理。推荐的后端模块结构com.health.app ├── common // 统一返回体、异常处理、常量 ├── config // 配置类跨域、拦截器、异步任务 ├── controller // 接口入口 ├── service // 业务逻辑层 ├── mapper // MyBatis-Plus数据访问层 ├── entity // 数据库实体 ├── dto // 请求参数对象 ├── vo // 响应视图对象 └── util // 工具类JWT、日期处理等接口设计统一采用RESTful风格/api/user、/api/health、/api/remind、/api/consult 前缀区分模块。所有接口返回结构统一为{ code: 200, message: success, data: {} }这样安卓端只需要解析这一个结构响应处理逻辑可以高度复用。这个规范越早定后面联调越省事。2.3 安卓端选Java还是Kotlin以及项目结构建议这个又回到了老话题。毕设场景下我建议你之前用什么顺手就什么——但如果你时间充足且愿意折腾Kotlin的语法糖协程处理异步任务确实顺手一些。不过别在这个决策上花超过半天时间框架版本、网络库选型这些远比语言选型更影响工期。安卓端推荐的项目结构com.health.app ├── ui // Activity/Fragment界面展示与交互 ├── adapter // RecyclerView适配器 ├── viewmodel // 数据与界面的状态管理 ├── model // 数据模型 ├── network // Retrofit封装、API接口定义 ├── utils // 图表工具、时间格式化等 └── receiver // 闹钟广播接收器网络层用Retrofit OkHttp处理HTTP请求响应体直接对接后端统一结构本地存储用SharedPreferences存Token键值对搞定不用引入数据库框架减少复杂度。图表组件用MPAndroidChart它是这个场景下最成熟的开源方案折线图、柱状图基本开箱即用。2.4 MySQL表结构设计的“事前规划”比“事后缝补”值钱一百倍我见过太多人写代码写到一半跑回来说“表字段不够用了”根源就是动手建表前没有把业务对象梳理清楚。这套系统至少需要这几类核心表用户表userid、手机号/账号、密码加密存储、姓名、年龄、性别、角色患者/医生、创建时间。健康记录表health_record):id、用户id、类型心率/血压/血糖/体重/步数、测量值、单位、测量时间、附加备注。提醒计划表remind_planid、用户id、提醒类型服药/复诊/测量、标题、内容、首次提醒时间、重复周期、是否启用。提醒记录表remind_logid、计划id、用户id、计划提醒时间、实际发送时间、状态已发送/未发送/已读。会话表consult_sessionid、患者id、医生id、状态进行中/已结束、最后消息时间。消息表consult_message)id、会话id、发送者id、消息类型文本/图片、内容、发送时间。其中有几个建表细节值得提醒健康记录表是写入频率最高的表联合索引user_id, measure_time必须建不然后端按用户查趋势图时会越查越慢。所有时间字段统一用datetime不要用varchar存日期字符串排序和查询会非常难受。用户表的密码字段一定存BCrypt加密后的密文这个在答辩时提一句“密码不存明文”立刻能体现工程安全意识。表结构定了等于房子的承重墙定了后面所有接口和界面的开发都是往房间里面填家具。3. 健康数据监测模块采集、落库、可视化一条链路怎么打通这个模块是系统的“门面”因为每个用户打开App第一眼看到的就是数据总览和趋势图表。它体现的是你对“完整数据链路”的掌握程度从手机上用户的一个动作到屏幕上的一个曲线中间每一步都有明确职责。3.1 安卓端数据采集给用户提供“好看又不累”的录入体验健康数据的来源可以分成两类一类是用户手动录入另一类是通过手机传感器自动采集。毕设不要求对接真正的医疗级蓝牙设备但要能在思路上讲清楚。手动录入是最主力的方式。你需要做的是一个表单页面让用户选择指标类型、填写数值、选择测量时间。做得好的交互是默认选中“当前时间”数值输入框自动弹出数字键盘类型切换后单位自动变化心率是次/分、血糖是mmol/L、体重是kg录入完成后下拉刷新列表和图表立即更新。传感器自动采集方面安卓的SensorManager可以拿到计步器数据这是成本最低又能跑通的自动采集方式。稍加封装就是“今日步数自动获取”功能SensorManager sensorManager getSystemService(SENSOR_SERVICE); Sensor stepSensor sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);当然步数数据需要做增量计算存起始值再算差值不然统计的是开机以来的总步数。这个细节在实现时容易忽略我在第6部分还会讲到。3.2 后端存储接口参数校验和幂等设计别偷懒安卓端把数据传过来后端接口要做的事不只是“插入一条记录”。一个合格的健康数据接口至少包含三层校验格式校验数值是不是数字、范围是否合理心率显示为700就离谱逻辑校验测量时间不能晚于当前时间太久也不能是“未来时间”归属校验当前登录用户只能给自己添加数据不能伪造userId操作别人的数据。Controller里接参数后先校验再塞业务对象最后落库。用统一异常处理类兜底校验失败抛BizException返回code400和明确的中文错误描述。这样安卓端拿到的每个报错都是“可读的”不是“服务器内部错误”这种让用户一头雾水的提示。另外一个值得做的是幂等处理——用户网络差时双击提交按钮可能会发出两次相同请求。最简单的方式是安卓端在提交期间做按钮防抖后端如果有余力可以基于userId、type、measureTime查重。毕设阶段做前端防抖就够了但答辩时能说出“为什么需要幂等”老师会觉得你理解到了分布式系统的那层。3.3 数据可视化MPAndroidChart画出血压趋势图的正确姿势MPAndroidChart在老版本和新版本之间API有一些调整建议直接用最新版省得对着旧教程踩兼容性坑。折线图展示患者近7天或近30天的血压变化核心设置包括LineChart chart findViewById(R.id.chart); ListEntry entries new ArrayList(); for (HealthRecord record : records) { entries.add(new Entry(record.getMeasureTime().getTime(), record.getMeasureValue().floatValue())); } LineDataSet dataSet new LineDataSet(entries, 收缩压); dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); dataSet.setDrawCircles(true);有几个体验上的细节做不做效果天差地别X轴显示时间要格式化直接显示毫秒时间戳没人看得懂超出正常范围的数值标红在数据点上用不同颜色区分这样“异常提醒”在图表上就有直接视觉反馈图表的说明文案要写清楚单位mmHg还是mmol/L用户记录数据才有参照。3.4 指标预警规则阈值判断放在后端别写在安卓客户端预警这个词听起来高大上做起来其实是一组if-else。但我建议把判断逻辑放后端由后端在新增健康记录时同步判断是否触发预警状态并返回给前端而不是安卓端本地判断。理由很简单规则集中管理才可维护。今天判断血压异常的标准是“收缩压140”明天想升级成“根据年龄和性别差异化判断”如果规则散落在客户端改起来就要重新发版。放在后端只需要改一个方法、加一个配置表。后端预警的实现逻辑if (type blood_pressure value 140) { remindService.sendAbnormalAlert(userId, type, value); }这个预警一旦触发就是智能提醒模块的输入信号两条业务线就这么自然地串起来了。4. 智能提醒模块从定时任务到消息推送一整条链路怎么设计智能提醒是系统的“心机”模块因为它不是那种“用户主动打开才会发生”的功能而是系统主动触达用户的能力做得好会显得系统很聪明。4.1 提醒计划的底层模型一次性提醒和周期性提醒提醒计划的数据模型上个章节给过但要展开讲两个关键点重复周期字段可以用字符串存“DAILY”“WEEKLY”“EVERY_8_HOURS”解释器按规则计算下一次触发时间也可以用cron表达式灵活但实现复杂度高。毕设用简单位点标识加一个时间间隔字段就够了。状态的流转创建提醒计划后计划状态是“待触发”触发完成后生成提醒记录多次触发则生成多条提醒记录。计划本身可以启用/停用但不能删除正在进行的计划只能标记作废——这是为了保留审计日志医疗场景下“发过什么提醒”比“删掉提醒”重要得多。提醒计划的核心就是一个“待办事件的时间轴”用户每次看到的“今日待办”就是从提醒计划里算出来的今日应触发事件。4.2 后端定时扫描SpringBoot里玩转定时任务提醒触发最朴素的实现是“轮询扫描”用SpringBoot内置的Scheduled注解起一个定时任务每隔30秒或1分钟扫描一次提醒计划表把当前时间已到触发点、状态为启用的计划捞出来生成提醒记录再走消息推送。Scheduled(fixedRate 60000) public void scanRemindPlan() { ListRemindPlan duePlans remindPlanMapper.selectDuePlans(new Date()); for (RemindPlan plan : duePlans) { pushService.pushToUser(plan); remindPlanMapper.updateNextTriggerTime(plan); } }这个方案的好处是简单可靠一个定时方法一条SQL就能搞定。缺点在于有延迟最多慢一个扫描周期但毕设场景足够。如果想要实时性强一些可以在服务启动时用Timer/线程池把每个计划的下次触发时间加载到内存里触发后动态更新但那个方案在服务重启、计划变更时需要做的状态同步工作会消耗不少开发工时不是必要条件。4.3 安卓端闹钟唤醒AlarmManager与NotificationChannel服务端定时任务负责“计算该提醒了”真正让用户“看到”提醒的是安卓端的本地通知。这里有很多同学会踩大坑直接用Timer或Handler做循环弹通知App一退出就失灵。正确的做法是用AlarmManager注册闹钟由系统在指定时间点唤醒应用并发送通知。流程如下本地保存用户已同步到手机的提醒计划为每个计划的下次触发时间注册AlarmManager闹钟闹钟触发后在BroadcastReceiver里创建Notification并展示触发完成后计算下一次提醒时间若存在周期重新注册。Notification在Android 8.0之后必须绑定NotificationChannel否则通知不显示这是高发踩坑点。我说一下我实际验证过的实现要点NotificationManager manager (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel channel new NotificationChannel(health_remind, 健康提醒, NotificationManager.IMPORTANCE_HIGH); manager.createNotificationChannel(channel);注册闹钟用setExactAndAllowWhileIdle能保证在Doze模式下也能精确触发这是“智能提醒”体验的一个关键细节——很多App提醒“迟到”就是因为没有处理系统省电策略。4.4 消息推送的“兜底方案”App不在前台怎么办AlarmManager方案有个前提用户的手机里装了App且闹钟注册成功。如果用户把App进程杀了或者没开通知权限提醒就触达不到。毕设阶段你不需要接第三方推送厂商SDK但在设计时最好在论文里写清楚“生产环境建议接入个推/极光/腾讯移动推送实现服务端推送能力”。往这个方向想一步会让你的设计层次完整很多服务端触发提醒后不只是等待安卓端拉取而是通过推送通道主动下发。这样小程序的Web端或者其他终端也都能复用同一套提醒逻辑。5. 远程咨询模块会话模型和消息收发比想象中更需要细想这个模块是系统的“沟通神经”也是很多同学觉得心里没底的部分——“我不就做个留言板功能吗医生和患者发消息有什么难的”实际上一个像样的IM模块需要考虑的问题比表面多得多。5.1 图文咨询的会话模型一个用户患者对应一个医生的关系网远程咨询的基础是一对一图文沟通但这背后其实是“用户-会话-医生”三个实体之间的关联维护。患者端看到的是“我咨询过的医生列表”医生端看到的是“向我咨询过的患者列表”中间靠会话表连接。会话表里有一个状态字段特别重要进行中、已完成、已关闭。患者发起咨询时创建一条会话状态为进行中医生回复后状态保持进行中患者点击“结束咨询”状态变为已完成。这样两端拉取会话列表时就可以用状态做筛选而不是看到所有历史记录混在一起。消息表里的消息类型可以支持text和image两个基本类型image在毕设里存一个URL字符串即可图片文件本身用后端接口上传到服务器或OSS数据库不存二进制内容。5.2 消息收发的两种实现路线与选型逻辑这个决策是整个远程咨询模块的分水岭轮询方案Polling安卓端每隔3秒拉一次新消息接口请求后端“查询某会话id大于某值的消息”。实现最简单只有一张表和一个查询接口。缺点是实时性差、服务端压力大3秒间隔的耗电量在毕设阶段不太明显但在论文“系统不足”部分必须老实承认。长连接方案WebSocket)后端用Spring Boot的WebSocket或Netty保持连接消息从一端发出后立即推给另一端。体验好、实时性高、也是真实IM系统的方向但编写和维护成本更高且在不同网络环境下需要处理断线重连。我给的组合推荐是核心功能用WebSocket做消息通知落到安卓端后走接口拉取详情如果时间紧张轮询也算及格。答辩时能对比出这两种方案的优劣本身就是一个学术讨论的亮点。5.3 消息表设计与已读未读的实现已读未读不是加一个字段那么简单。把“某条消息是否已读”从细粒度做每条消息带上read_time为空表示未读从粗粒度做只维护会话级已读位置——记录每个用户在会话中读到了哪条消息id新消息数总消息数中id大于已读位置的数量。毕设用后者就够而且算未读数特别高效。未读数还牵涉到会话列表的排序会话列表通常按“最后消息时间”倒序时间越新的排越上。这个业务在看诊场景很自然患者刚问完问题医生端列表里这个会话应该飘到最上面医生才能及时看到。这条SQL非常考验索引设计SELECT s.*, m.content AS last_message FROM consult_session s LEFT JOIN consult_message m ON s.last_message_id m.id WHERE s.doctor_id #{doctorId} ORDER BY s.last_message_time DESC5.4 敏感词过滤与医疗免责声明别忽视的细节远程咨询模块做出来之后一定要处理两个看起来“不是技术”的问题敏感词过滤后端接口在保存消息前做一次关键词匹配命中就拦截。这既是合规要求也体现工程意识。免责声明用户每次发起咨询前弹窗告知“本平台咨询结果不构成医疗诊断仅作健康参考”医生端也要在会话开始前自动发送一条“您好我是XX医生请描述您的症状。请注意本咨询不能替代线下门诊。”这种固定的开场消息既是体验也是责任边界。这些细节放进去整套系统就从“玩具开发”往“产品思维”迈进了一步。6. 联调、测试和部署最容易翻车、也最能拉开差距的环节很多学生开发阶段一切顺利一进联调和展示环节就各种状况百出。不是因为代码不会写而是因为联调本身就是一条独立的技术线。单独用一节来写是因为这块实操经验藏在文档之外。6.1 先动接口文档前后端并行开发的前提条件如果你是一个人做整套系统接口文档的作用是“整理思路”如果你和同学组队接口文档就是“合作协议”。用Postman或者ApiPost管理接口集合每个接口标注好请求路径、方法、参数类型和返回示例。每次后端修改接口同步更新文档安卓端按文档联调可以省掉“无休止地扯皮为什么数据对不上”的环节。接口联调时最容易出的问题不在功能流程而在边界条件列表接口空数据时返回什么结构手机号格式校验失败的错误信息是什么Token过期时code是多少这些都会决定安卓端写不写得出健壮的判断逻辑。6.2 安卓端常见联调坑网络权限、明文流量和跨域安卓端和后端联调有三个知名度高但年年有人踩的坑AndroidManifest里没加网络权限所有请求一拍全凉。Android 9.0以上默认禁止明文HTTP流量如果后端是http://IP:8080必须在manifest里配置usesCleartextTraffictrue或者限制在哪个域名下允许明文。第三方模拟器访问宿主机后端要用10.0.2.2而不是localhost或127.0.0.1这个问题能把人折磨一晚上。每一个都写过、错过、修过你说这是不是必踩反正我在这块花的时间不比写业务代码少。6.3 用Mock数据“喂饱”页面让功能演示不尴尬开发中最推荐的推进顺序是“安卓界面-测试数据假展示-后端接口-替换假数据”。先不依赖后端用固定假数据把图表和列表渲染效果跑通这样后端接口延迟了也不会卡住前端进度。联调完再把假数据替换成真实接口调用。这种开发方式还有一个额外好处用来做答辩演示视频特别方便。用Mock数据可以提前录制好每个功能的最佳状态——数据漂亮、页面不转圈、输入不等待。这是不是有点“作弊”确实是但演示的核心是展示功能逻辑数据本身是载体。6.4 部署到云服务器从Localhost到公网可访问如果你有腾讯云/阿里云的学生机建议直接把项目部署到公网几个好处安卓手机访问不用和电脑在同一个局域网演示时可以随手拿手机展示论文里还能加上部署架构图。部署步骤参考服务器安装JDK和MySQL把SQL脚本导入后端项目打包成Jar包后用nohup命令跑起来用宝塔面板或命令行配置Nginx反向代理到后台服务安全组放行端口。远程咨询模块如果走了WebSocketNginx还要单独配置WebSocket的升级拦截这个不配的话客户端连接会不断掉线属于集成阶段最隐蔽的坑之一。7. 毕设答辩准备老师最爱问的6个问题和对应的回答思路代码跑通只是第一步怎么在答辩时把自己做的事讲成亮点是一门技术。下面这些问题我基本从老师们那都听到了可以提前准备。问题一“为什么选择智慧医疗这个选题” 回答思路从需求角度切入说明慢性病管理和互联网问诊的现实需求以及这个选题对个人技术栈的覆盖。问题二“SpringBoot相比SSM框架的优势是什么” 回答思路约定大于配置、内嵌容器简化部署、起步依赖和自动装配、生态成熟。不需要展开得很深但要把自动装配这个核心说清楚。问题三“健康监测模块的设备数据来源有没有考虑过不准确的情况” 回答思路坦诚说明毕设以手动录入和手机传感器为主不涉及专业医疗设备再讲你对“测量误差如何处理”的思考比如多重采样取均值、数据范围校验等。问题四“提醒功能如果手机关机/App被杀怎么办” 回答思路说明AlarmManager在系统控制的触发机制诚实说明进程被杀后本地闹钟可能失效接着补一句生产方案是服务端推送。能看出你理解边界而不是胡吹。问题五“你这个系统如何保证安全性” 回答思路至少讲三点——密码BCrypt加密存储、JWT做身份认证避免登录态伪造、接口层做参数校验防止非法提交。问题六“数据库表设计为什么把健康记录单独拆出来” 回答思路按业务域划分边界健康记录有高频写入特性和独立查询场景拆出来以后做趋势分析和数据归档都不影响核心用户表。8. 时间规划建议从开题到答辩的20周怎么分配最后给一份我实测可行的开发排期区分了核心工作和弹性工作。如果你已经确认题目直接对着这个时间节点卡进度时间周期阶段关键任务第1-2周开题与架构确认功能清单、画系统架构图、设计数据库模型第3-5周后端基础框架搭建SpringBoot项目完成用户登录注册和统一返回体第6-9周核心业务模块健康记录上报查询、图表数据接口、提醒计划CRUD第10-13周安卓端开发完成所有页面原型接通后端核心接口第14-15周联调与修bug前后端联调、边界情况测试、UI细节调整第16-18周文档与测试写论文/报告、整理测试用例、录制演示视频第19-20周答辩冲刺模拟答辩提问、优化PPT、准备演示环境特别想提醒的是第16周开始一定不要再加新功能了。我做过的项目里绝大多数延期都发生在“总觉得还能再加一个功能”——结果论文没写完演示视频也没录最后几天熬夜赶工。功能做减法文档和演示做加法才是顺利通过的稳妥路线。最后分享一条我自己带毕设的经验与其纠结“要不要用最新技术”不如把所有常用的、稳定的技术玩得足够熟练。SpringBoot安卓MySQL这套组合看起来传统但对一个毕业生来说能把每一层的原理讲透、代码写干净、文档对齐已经是一份很有说服力的作品了。如果这篇文章对你有用按着章节一边做一边勾掉进度答辩那天你会感谢现在开始动手的自己。