讲真,每年计算机毕业设计里,"XX系统+微信小程序"这个组合都快被选烂了,但"被选烂"这件事本身是有原因的:这类题需求清楚、用户端和管理员端能形成完整闭环、技术点足够答辩撑场面,只要你愿意把细节做扎实,拿个不错的分数并不难。今天我想借着"基于微信小程序的缪氏诊所预约挂号系统"这个具体题目,把这套东西从需求分析、技术选型、数据库设计到核心代码链路、小程序端各种报错、最后论文怎么配合源码,完整地捋一遍。适合正在做类似选题、或者刚拿到源码和文档但不知道怎么讲清楚的人参考。
先给个总览:这个题目本质上做的不是"医院挂号系统",而是一个小体量诊所的预约业务闭环。用户在小程序里完成注册登录,浏览科室和医生,看排班选时段,提交预约;管理员在后台维护科室、医生、排班,查看预约记录和统计。听起来简单,但里面几乎每一个环节都有可以深挖的坑——尤其是医生排班的数据结构、同时段预约的并发控制、微信登录和订阅消息的调用姿势。下面我把整个过程按开发顺序拆开讲。
1. 为什么"小诊所预约"是毕设里被低估的稳妥题
1.1 需求看起来简单,做起来刚好卡在"不简单也不复杂"的红线
很多人选题目有一个误区:越复杂越好,最好造一个"智慧医疗云平台"。真上手就会发现,大医院系统里光一个号源池就涉及多院区共享、专家号二次分配、爽约惩罚、医保对接,任何一个模块都能把人拖垮。毕业设计最理想的状态是:业务闭环完整,但每个环节的规模都在自己能控制的范围内。
以缪氏诊所这类小型医疗机构为原型,需求非常清楚:一个诊所里有几个科室、几个医生、每天放号,用户在微信里看到排班,选一个时段预约。要素就五个:用户、科室、医生、排班、预约。而这五个要素正好是关系型数据库里最好表达的关系,也是后端增删改查最标准的练兵场。
1.2 这道题覆盖了答辩老师想看的全部技术点
我帮人梳理过不少毕设代码,一个项目能不能在答辩时撑住场子,看的不是功能列表有多长,而是有没有几个可以深挖的技术点。这个题目天然具备这些:
- 微信登录链路:wx.login 拿 code,后端调 code2Session 换 openid,再签发自定义 token,这是小程序项目都会问的。
- 数据库设计:科室/医生/排班/预约之间的关联,排班时段怎么建模,索引怎么建。
- 并发场景:同一个医生同一个时段只剩最后一个号,两个人同时点预约,怎么保证不超卖。这是整套系统里最值得讲的地方。
- 微信生态能力:订阅消息通知、用户信息授权、真机调试配置,每一个都有真实的坑。
这些点不是硬凑的,而是业务自然带出来的。答辩老师问"为什么这么设计"时,你能接得住。
1.3 先想清楚:哪些功能必须做,哪些可以明确不做
拿到题目别急着写代码,先把功能边界划好。我建议按下面这个清单来:
必须做(核心闭环)
- 微信登录/用户信息维护
- 科室列表与医生列表展示
- 按日期查看医生排班,选择时段
- 提交预约、查看我的预约、取消预约
- 管理端:科室管理、医生管理、排班管理、预约列表
- 简单的数据统计(各科室预约量等)
可以不做(避免被拖死)
- 在线支付:微信支付接口要企业资质+商户号,个人主体基本申请不了。做成"预约成功,到院支付"完全合理。
- 多院区、复杂的号源策略、专家线上问诊:这些不是诊所的真实需求。
- 短信通知:用微信订阅消息替代即可。
把范围先划清楚,后面每一步都会轻松很多。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型:照着这套组合不会翻车
2.1 小程序端用原生框架还是 uni-app
这是大家最先纠结的问题。我给的建议很直接:如果对 Vue 不熟,老老实实写原生小程序;如果已经用过 Vue,用 uni-app 开发会更快。
原生小程序的目录结构很简单,上手成本其实比想象中低,核心就几个文件:
code复制├── app.json // 全局配置:页面路径、窗口样式、tabBar
├── app.js // 全局逻辑:启动时调用登录接口、获取更新管理器
├── app.wxss // 全局样式
├── utils/
│ ├── request.js // 封装 wx.request 为 Promise
│ └── auth.js // token 存储与读取
├── pages/
│ ├── index/ // 首页:科室/医生入口
│ ├── doctor/ // 医生列表
│ ├── schedule/ // 排班与时段选择
│ ├── appointment/ // 提交预约
│ ├── my/ // 我的预约
│ └── login/ // 登录页
用 uni-app 的话,目录会变成 Vue 单文件组件的形态,pages 里放 .vue 文件,HBuilderX 里可以直接运行到微信开发者工具。两种方案都能做完,选一种自己熟悉的就好,别在选型上耗太久。
2.2 服务端选型与理由
服务端我推荐 Spring Boot 2.7 + MyBatis-Plus + MySQL 8.0。这套组合在毕设里几乎是最稳的:
- Spring Boot:不用自己搭 SSM 那套繁琐的 XML 配置,起步快。
- MyBatis-Plus:单表 CRUD 不用写 mapper XML,代码量至少省一半,还自带分页插件。
- MySQL 8.0:用 InnoDB 引擎,事务和行锁都支持,后面做预约锁号靠的就是这个。
如果你 Java 不太熟,也可以选择 Node.js(Express/Koa)或者 Python(FastAPI/Django),逻辑是一样的。但注意一点:不管用什么语言,一定要清楚自己写的每条 SQL 在干什么,答辩时老师大概率会问。
一个标准的 Spring Boot 工程目录可以这样组织:
code复制src/main/java/com/example/clinic/
├── controller/ // 接口层:UserController、DoctorController、ScheduleController、AppointmentController
├── service/ // 业务层:AppointmentService、ScheduleService
├── mapper/ // 数据访问层,继承 MyBatis-Plus 的 BaseMapper
├── entity/ // 数据库实体类
├── dto/ // 接口入参出参对象
├── common/ // 统一返回结果、异常处理、常量
├── config/ // 配置类:拦截器、跨域、微信参数
└── util/ // JwtUtil、DateUtil 等
controlle
