基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
博主前言 :本项目是一款功能完善的在线医疗服务系统 ,基于经典的 SSM(Spring + Spring MVC + MyBatis) 架构开发,前端采用 JSP + LayUI / Bootstrap ,后端搭配 MySQL 数据库,非常适合作为计算机专业毕业设计、课程设计或 Java 进阶实战项目。本文根据项目源码及配套论文,简明扼要地整理分享核心设计与关键界面。
一、项目背景与概述
随着网络与信息技术的快速普及,医疗行业的信息化建设成为提升医疗服务效率、降低患者就医成本的重要途径。传统的人工挂号与线下买药模式存在排队耗时长、就诊效率低、医疗信息分散等痛点。
本项目针对现代医疗服务需求,设计并实现了一套综合性的在线医疗服务系统 ,系统涵盖管理员、医生、患者(普通用户)三大角色,构建了从医生排班、在线预约挂号、就医病历录入 到药品商城浏览、购物车下单结算的完整就医与购药全业务闭环。
二、系统技术栈
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 开发语言 | Java (JDK 1.8) | 面向对象、健壮稳定 |
| 后端框架 | Spring 5 + Spring MVC + MyBatis-Plus | 经典SSM架构,模块解耦,扩展性强 |
| 数据库 | MySQL 5.7+ | 关系型数据库,结构严谨 |
| 连接池 | Alibaba Druid 1.1.0 | 高性能数据库连接池与监控 |
| 前端展现 | JSP + LayUI + jQuery + CSS3 / HTML5 | 经典响应式界面,交互简捷 |
| 构建与容器 | Maven 3 + Apache Tomcat 8.5+ | 项目管理与标准Servlet容器 |
三、系统核心角色与功能划分
系统按照权限划分为三大核心模块:
-
管理员模块:
- 系统基础数据维护(医生管理、科室分类管理、用户管理)。
- 药品信息管理(药品分类、库存、上下架、价格维护)。
- 订单中心(已支付订单审核、发货状态流转)。
- 健康资讯发布与轮播配置。
-
医生工作站:
- 个人信息与出诊信息维护。
- 医生坐诊排班管理(设定坐诊时间、挂号费用、挂号限额)。
- 挂号预约审核(查看患者挂号记录,审核确认并接诊)。
- 用户病历管理(为就诊患者新建电子病历、诊断记录及开具处方)。
-
患者(前台用户)门户:
- 在线挂号:按科室浏览医生坐诊排班,在线提交预约挂号。
- 药品商城:按分类搜索药品,查看药品明细,支持加入购物车与立即结算。
- 个人中心:管理收货地址、查看就诊挂号状态、查询个人电子病历、追踪药品订单流转。
四、系统核心界面展示
注:以下系统核心运行效果界面严格按照论文中出现的先后顺序(从上至下)整理呈现。
1. 药品信息管理(管理员端)
管理员可对系统内所有药品进行标准化录入与维护,包括药品编号、药品名称、药品分类、生产厂商、批准文号、销售价格、单次限购量及库存余量等,并支持关键字模糊检索与批量管理。

2. 医生信息管理(管理员端)
管理员维护医院执业医生档案,登记工号、医生姓名、所属科室、专业职称、性别、联系电话及头像等信息,确保医生资料的权威性与真实性。

3. 医生坐诊排班管理(医生端)
医生登录个人工作台后,可登记并发布个人的坐诊排班计划,明确坐诊时间段、就诊科室及挂号费用,供前台患者实时查询与预约。

4. 预约挂号审核与管理(医生端)
医生在后台实时查看患者提交的预约挂号记录,完成就诊资格审核;患者到诊后,医生可直接在此处关联患者信息并新建录入本次就诊的电子病历。

5. 药品商城与详情展示(前台用户端)
患者可在前台药品中心查阅详尽的药品说明、规格剂量、生产厂家与用户评价,支持将所需药品一键加入购物车或直接发起立即购买。

6. 医生坐诊与在线预约(前台用户端)
患者按科室筛选医生,查看医生详细介绍、职称、坐诊排班与挂号费用,选定时间后一键点击"预约挂号",实现零接触预约挂号。

7. 药品订单结算与提交(前台用户端)
患者在购物车选定药品后进入结算页,确认收货地址、核对药品清单明细与应付金额,完成在线支付后订单正式生成并等待后台发货。

五、数据库设计简述
系统数据表设计严格遵循第三范式(3NF),核心数据表如下:
| 数据表名 | 中文说明 | 核心字段 |
|---|---|---|
users |
管理员信息表 | id, username, password, role |
yonghu |
用户/患者表 | id, yonghuzhanghao, mima, yonghuxingming, shoujihaoma, shenfenzhenghao |
yisheng |
医生表 | id, yishenggonghao, mima, yishengxingming, keshi, zhicheng, dianhua |
yishengzuozhen |
医生坐诊排班表 | id, yishenggonghao, keshi, zuozhenshijian, guahaofei |
yuyueguahao |
预约挂号记录表 | id, guahaobianhao, yishenggonghao, yonghuzhanghao, yuyueshijian, sfsh |
yonghubingli |
用户病历表 | id, binglibianhao, yonghuzhanghao, yishenggonghao, jiuzhenshijian, bingqingmiaoshu, chufangxinxi |
yaopin |
药品信息表 | id, yaopinmingcheng, yaopinfenlei, jiage, kucun, changjia |
cart |
购物车表 | id, tablename, userid, goodid, buynumber |
orders |
订单明细表 | id, orderid, tablename, userid, goodid, buynumber, price, total, status |
六、核心业务代码示例
以**预约挂号(YuyueguahaoController)**的分页与查询控制为例:
java
package com.controller;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.entity.YuyueguahaoEntity;
import com.service.YuyueguahaoService;
import com.utils.PageUtils;
import com.utils.R;
/**
* 预约挂号 后端控制层
*/
@RestController
@RequestMapping("/yuyueguahao")
public class YuyueguahaoController {
@Autowired
private YuyueguahaoService yuyueguahaoService;
/**
* 后端分页查询列表(支持医生与患者不同角色数据权限隔离)
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,
YuyueguahaoEntity yuyueguahao,
HttpServletRequest request) {
// 获取当前登录身份
String tableName = request.getSession().getAttribute("tableName").toString();
// 若为医生登录,则仅查询该医生工号名下的挂号记录
if ("yisheng".equals(tableName)) {
yuyueguahao.setYishenggonghao((String) request.getSession().getAttribute("username"));
}
// 若为普通用户登录,则仅查询患者本人的预约记录
if ("yonghu".equals(tableName)) {
yuyueguahao.setYonghuzhanghao((String) request.getSession().getAttribute("username"));
}
// 调用通用分页查询服务
PageUtils page = yuyueguahaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuyueguahao), params), params));
return R.ok().put("data", page);
}
}
七、项目部署与运行说明
-
环境准备 :
- JDK 1.8
- MySQL 5.7+
- Apache Tomcat 8.5+
- Maven 3.6+
- 开发工具推荐 IDEA 或 Eclipse
-
数据库初始化 :
- 创建数据库
jspmb254v,字符集推荐utf8mb4。 - 导入项目根目录下的
db.sql文件。
- 创建数据库
-
配置文件修改 :
-
打开
src/main/resources/config.properties,核对数据库连接账号密码:propertiesjdbc_url=jdbc:mysql://127.0.0.1:3306/jspmb254v?useUnicode=true&characterEncoding=UTF-8&tinyInt1isBit=false jdbc_username=root jdbc_password=你的数据库密码
-
-
运行访问 :
- 使用 Maven 打包构建并在 Tomcat 中运行。
- 后台管理入口 :
http://localhost:8080/jspmb254v/(管理员默认账号:abo,密码:abo) - 前台门户入口 :
http://localhost:8080/jspmb254v/front
八、总结
本项目采用成熟的 SSM 架构,将传统的线下医疗就诊与购药流程搬到线上,实现了医生排班、在线挂号、病历记录与药品零售的综合协同。代码结构清晰、层次规范,非常适合作为计算机专业学生的毕业设计或大作业参考。