引言
医院门诊业务中,挂号预约、医生排班、科室信息展示和就诊反馈是患者与医院之间最常见的交互场景。传统线下方式依赖窗口登记和人工协调,患者需要反复确认医生坐诊时间,医院管理人员也需要手工维护医生、科室和预约记录,信息更新不及时会直接影响就诊体验。
本项目围绕“医院预约挂号管理”这一业务场景进行设计,目标是把患者端预约、医生端就诊处理和管理员后台维护放到同一套 Web 系统中。患者可以在线查看医生和科室信息并提交预约,医生可以处理待就诊记录,管理员可以维护基础数据并查看统计报表,从而形成一条较完整的门诊预约管理链路。
系统概述
医院预约挂号管理系统面向患者、医生和管理员三个角色。患者侧提供公告浏览、科室展示、医生详情、患者登录、在线预约和个人预约记录;医生侧主要处理本人坐诊安排、待就诊预约和就诊结果录入;管理员侧负责医生、科室、公告、患者、留言反馈、排班和统计报表等模块维护。
主要业务链路为:管理员维护科室和医生资料 -> 管理员或医生维护坐诊安排 -> 患者浏览医生详情并选择排班 -> 患者提交预约挂号 -> 医生或后台人员填写诊断结果和病历 -> 管理员查看预约统计与留言反馈。系统将基础资料、预约记录、反馈信息和统计结果统一保存在 MySQL 数据库中,方便后续查询和维护。
技术架构
系统采用 Spring Boot 2.5.3 作为后端服务框架,Vue 3.2.13 构建前端交互页面,MySQL 存储业务数据,MyBatis 2.2.0 负责数据访问。整体架构分为表现层、业务层和数据层:表现层负责页面展示、表单输入和图表渲染;业务层负责接口请求、预约状态处理、文件上传和统计查询;数据层通过 Mapper 与 XML 映射完成持久化。
| 表现层 | Vue 3、Vue Router、Element Plus、ECharts | 实现患者前台、后台管理端、路由跳转和预约统计图表 |
| 业务层 | Spring Boot 2.5.3、Spring MVC | 提供管理员、患者、医生、科室、排班、预约、公告、留言和上传接口 |
| 数据层 | MySQL、MyBatis | 维护 8 张核心业务表,通过 Mapper 完成增删改查和聚合统计 |
| 工具层 | Axios、WangEditor、Maven、Vue CLI | 负责请求封装、富文本编辑、依赖管理和前端构建 |
核心功能说明
公告与信息展示
患者进入前台后,可以通过导航查看网站公告、科室展示、医生列表和留言反馈等页面。公告列表会展示医院通知与系统动态,患者点击阅读更多后进入详情页,便于了解维护通知、新功能说明和医院服务信息。

医生详情与坐诊安排
患者在医生列表或首页推荐区域进入医生详情页后,可以查看医生姓名、性别、职称、擅长领域、所属科室和挂号费。页面下方提供医生简介和坐诊安排,患者根据星期与时间段选择合适的排班,为后续预约提交做准备。

患者预约挂号
患者登录后进入个人中心,在预约挂号页面确认就诊科室、就诊医生、预约日期、预约时间段和挂号费用。患者补充就诊人姓名、联系信息和病情描述后提交,系统将预约记录写入 reserve 表,并在我的预约挂号页面展示后续状态。

后台登录与角色区分
后台登录页提供管理员和医生两类角色入口。管理员登录后进入完整后台菜单,管理患者、公告、科室、医生、预约、留言、统计报表和系统信息;医生登录后重点查看坐诊安排、预约记录和个人资料,职责边界更清晰。

就诊结果与病历维护
医生或后台人员在预约挂号管理中打开待就诊记录,可以填写诊断结果和病历内容。病历编辑区集成富文本工具,支持文字排版和图片上传,适合记录检查说明、诊疗建议和必要的病例图文信息,提交后预约状态可进入已就诊流程。

医生与排班管理
管理员在医生管理页面可以按医生账号、姓名和科室筛选数据,并对医生信息进行详情查看、编辑、删除和坐诊安排维护。医生表记录职称、照片、擅长领域、挂号费和科室关系,排班表则记录星期、时间段和可预约号数,两者共同支撑患者预约选择。

留言反馈处理
患者在前台提交留言后,后台留言反馈模块会显示留言主题、留言内容、提交用户和留言时间。管理员进入处理页面填写回复内容并提交,患者后续可以看到管理端反馈,形成简单的医患沟通与问题答复闭环。

数据库设计
系统数据库包含 8 张核心业务表,围绕角色、基础资料、预约流程和反馈内容设计:
- admin:保存后台管理员账号、登录凭据和身份信息。
- users:保存患者用户名、姓名、性别、年龄、联系信息、地址和注册时间。
- doctor:保存医生账号、姓名、照片、职称、擅长领域、挂号费、所属科室和简介。
- parts:保存科室名称和科室介绍,用于前台展示和医生归属维护。
- plans:保存医生坐诊安排,包括医生账号、星期、时间段和号数。
- reserve:保存预约挂号主数据,包括科室、医生、排班、日期、时段、费用、就诊人、病情描述、预约状态、诊断结果和病历。
- news:保存网站公告标题、内容和发布时间。
- messageboard:保存患者留言主题、内容、提交用户、留言时间和管理员回复。
其中 reserve.flag 是预约状态字段,演示数据中包含待就诊和已就诊状态;统计接口在聚合预约数量时会排除已取消和审核不过状态。报表模块按科室、医生、日期和月份进行统计,便于管理员观察预约量分布。
界面与交互展示
患者前台与后台管理端采用不同的页面结构。前台以导航栏和内容区为主,方便患者浏览公告、医生、科室并进入个人中心;后台以顶部栏、左侧菜单和内容区组合,适合管理人员反复进行数据查询、编辑和统计查看。

后台业务菜单按患者管理、网站公告管理、科室管理、医生管理、预约挂号管理、留言反馈管理、统计报表和系统管理划分。这样的模块组织方式比较直接,符合医院预约挂号系统的 CRUD 与流程处理需求,也便于毕业设计答辩时按角色演示。
部署与运行要点
运行环境建议使用 JDK 1.8、Maven 3.x、MySQL 5.7 或 8.x、Node.js 与 npm。后端服务端口为 8088,上下文路径为 /HospitalAppointmentSystem;前端通过 Axios 访问后端 /api 路径,开发环境使用 npm run serve 启动 Vue 项目。
部署时先在 MySQL 中创建 HospitalAppointmentSystem 数据库,再执行 DB 目录下的初始化 SQL。后端启动前需要检查 application.yml 中的数据库连接配置,确保库名、账号和本机环境一致;前端安装依赖后启动开发服务,即可通过浏览器访问患者前台和后台登录页面。部署完成后请自行修改默认账号,避免继续使用演示环境弱口令。
总结
本项目覆盖了医院预约挂号系统中常见的基础资料维护、患者预约、医生就诊处理、留言反馈和统计分析流程。对于毕业设计学习来说,它能够展示 Spring Boot 与 Vue 前后端分离开发、MyBatis 数据访问、富文本上传、ECharts 报表和角色化后台菜单等关键实现点。
后续可以继续扩展移动端预约入口、站内消息提醒、预约取消规则、医生排班冲突校验、支付回调和更细粒度的权限控制,使系统更接近真实医院门诊预约业务。
本文为毕业设计学习交流,演示系统功能与技术实现思路,仅供学习参考。






