今天给大家介绍一篇医院医疗管理系统的设计与实现(源码+论文)

news2024/11/15 17:41:16

项目描述

临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇基于SSM的医院医疗管理系统的设计与实现。

功能需求

通过分析和了解了目前社会医疗体系的整体状况和存在的问题,为了提高人们医疗救护效率,解决看病困难和医院的规范化管理问题,本文设计了医院医疗管理系统,该系统充分运用MIS(Management Information System,MIS)的总体思想[5],综合应用了JSP、HTML、MYSQL等技术,从整体设计软件结构,按业务划分系统模块菜单和用户角色以及各个模块之间的关系,从抽象的层面去理解和分析系统的目的和实现的价值并设计出模块功能和具体代码实现的思路方法,在这过程中充分地考虑到系统的开发成本以及后期系统维护和二次开发的便捷,注重系统的实用性和质量,达到医疗的高要求、高标准,实现了医院对药品、用户、病人体征数据等信息的在线管理等功能。

具备以下功能:

本医疗系统通过分析和确定系统的角色和功能划分,按照业务合理区分为不同的菜单功能模块。从求医患者和医院相关管理人员的角度出发,对每个功能的需求实现点进行人性化详细的构思,对每个功能的细节点进行分析设计整合完成整个医疗系统的设计[9]。
系统患者用户功能模块:即登录功能、结算中心、护理中心、修改密码、退出系统。
医生功能模块:药品发放管理、病人管理、护理中心模块、出入院管理及个人信息修改等。
医院前台功能模块:出入院管理、结算中心、药品管理、统计中心、修改信息等。
系统管理员功能模块:病人挂号入院、病房管理、结算中心、统计管理、药品管理、用户管理、医务人员管理以及系统配置等。

系统总体设计

在这里插入图片描述

部分效果图

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

数据库设计

系统中用到了21张表,针对每个表都进行了设计,下面对部分核心表进行汇总罗列展示
用户数据表
在这里插入图片描述
病房数据表
在这里插入图片描述
缴费信息表
在这里插入图片描述患者信息数据表
在这里插入图片描述药品信息数据表
在这里插入图片描述

部分代码
@RequestMapping(value = "/drugsSave.do", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String drugsSave(HttpServletRequest request) throws ParseException {
		Drugs drugs = new Drugs();
		String drugsId = request.getParameter("drugsId");
		drugs.setDrugsid(drugsId);
		String name = request.getParameter("drugsName");
		drugs.setName(name);
		String creatTime = request.getParameter("inTime");
		drugs.setCreateTime(BaseUtils.toDate(creatTime));
		String manufacturer = request.getParameter("manufacturer");
		drugs.setManufacturer(manufacturer);
		Integer addNum = Integer.parseInt(request.getParameter("num"));
		drugs.setAddNum(addNum);
		Float price = Float.parseFloat(request.getParameter("price"));
		drugs.setPrice(price);
		String productionTime = request.getParameter("productionTime");
		drugs.setProduction_time(BaseUtils.toDate(productionTime));
		String supply = request.getParameter("supply");
		drugs.setSupply(supply);
		// 判断是否有空
		String years = request.getParameter("year");
		String days = request.getParameter("day");
		String mouths = request.getParameter("mouth");
		drugs.setValidityYear(BaseUtils.toIntegers(years));
		drugs.setValidityDay(BaseUtils.toIntegers(days));
		drugs.setValidityMouth(BaseUtils.toIntegers(mouths));

		// 根据保质期的年 月 日来计算出准确的到期日
		// 计算天数
		Integer addDays = drugs.getValidityYear() * 365 + drugs.getValidityMouth() * 30 + drugs.getValidityDay();
		// 得到到期日
		Date newDate = BaseUtils.toAddDate(drugs.getProduction_time(), addDays);
		drugs.setVilidityTime(newDate);
		// 执行增加操作
		drugsService.DrugsSave(drugs);
		// 增加其库存数量,判断库存中是否有这种药品
		Integer state = drugsService.drugsStockQueryById(drugs.getDrugsid());
		if (state == 1) {
			// 执行更新
			drugsService.drugsStockAdd(drugs);
		} else if (state == 0) {
			// 执行插入
			drugsService.drugsStockSave(drugs);
			log.info("药品" + drugs.getName() + "入库");
		}
		JSON json = JSONSerializer.toJSON(new JsonResult<Drugs>(drugs));
		return json.toString();
	}

	@RequestMapping(value = "/drugsFind.do", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String drugsFind(HttpServletRequest request) throws ParseException {
		DrugsCode drugsCode = new DrugsCode();
		String id = BaseUtils.toString(request.getParameter("drugsId"));
		String name = BaseUtils.toString(request.getParameter("drugsName"));
		if (!(id == null || "".equals(id))) {
			drugsCode.setId(id);
		}
		if (!(name == null || "".equals(name))) {
			drugsCode.setName(name);
		}
		drugsCode.setRkStart(BaseUtils.toDate(request.getParameter("rkStartTime")));
		drugsCode.setRkEnd(BaseUtils.toDate(request.getParameter("rkEndTime")));
		drugsCode.setBzStart(BaseUtils.toDate(request.getParameter("bzStartTime")));
		drugsCode.setBzEnd(BaseUtils.toDate(request.getParameter("bzEndTime")));
		List<Drugs> list = drugsService.drugsFind(drugsCode);
		log.info("药品查询");
		JsonConfig jc = new JsonConfig();
		jc.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor("yyyy-MM-dd"));
		JSON json = JSONSerializer.toJSON(new JsonResult<List<Drugs>>(list), jc);
		return json.toString();
	}

	@RequestMapping(value = "/stockQuery.do", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String stockQuery(HttpServletRequest request) {
		String drugId = BaseUtils.toString(request.getParameter("drugsId"));
		String name = BaseUtils.toString(request.getParameter("drugsName"));
		DrugsCode drugsCode = new DrugsCode();
		drugsCode.setId(drugId);
		drugsCode.setName(name);
		List<Stock> list = drugsService.stockQuery(drugsCode);
		log.info("库存查询");
		JSON json = JSONSerializer.toJSON(new JsonResult<List<Stock>>(list));
		return json.toString();
	}

	@RequestMapping(value = "/grantAdd.do", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String grantAdd(HttpServletRequest request) throws UnsupportedEncodingException {
		Grant grant = new Grant();
		grant.setDrugId(BaseUtils.toString(request.getParameter("drugsId")));
		grant.setDrugName(BaseUtils.toString(request.getParameter("drugsName")));
		grant.setDrugPrice(BaseUtils.toFloat(request.getParameter("price")));
		grant.setDrugCount(BaseUtils.toInteger(request.getParameter("num")));
		grant.setPatientId(BaseUtils.toString(request.getParameter("patientId")));
		grant.setPatientName(BaseUtils.toString(request.getParameter("patientName")));
		grant.setGrantUserId(BaseUtils.getUser(request).getId());
		grant.setGrantUserName(BaseUtils.getUser(request).getName());
		// 存入发放表grantDrug
		drugsService.grantAdd(grant);
		log.info("医生" + grant.getGrantUserName() + "为患者" + grant.getPatientName() + "发放了" + grant.getDrugName() + ",数量为"
				+ grant.getDrugCount());
		// 减少库存的量
		drugsService.stockUpdate(grant);
		log.info("更新库存");
		JSON json = JSONSerializer.toJSON(new JsonResult<Grant>(grant));
		return json.toString();
	}

	@RequestMapping(value = "/grantQuery.do", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String grantQuery(@Param("patientId") String patientId) {
		List<Stock> list = drugsService.grantQuery(patientId);
		log.info("患者" + patientId + "查询了用药历史");
		JSON json = JSONSerializer.toJSON(new JsonResult<List<Stock>>(list));
		return json.toString();
	}

	@RequestMapping(value = "/grantDrugsFindByPatienId.do", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String grantDrugsFindByPatienId(HttpServletRequest request) throws ParseException {
		String patientId = BaseUtils.toString(request.getParameter("patientId"));
		List<grantDrugs> list = grantdrugsService.grantDrugsFindByPatienId(patientId);
		System.out.println("返回结果:" + list);
		JSON json = JSONSerializer.toJSON(new JsonResult<List<grantDrugs>>(list));
		return json.toString();
	}

	@RequestMapping(value = "/DrugWithdrawal.do", produces = "application/json;charset=utf-8")
	@ResponseBody
	public void DrugWithdrawal(@Param("patientId") String patientId, @Param("patientName") String patientName,
			@Param("count") Integer count, @Param("drugsId") String drugsId, @Param("reason") String reason,
			HttpServletRequest request) {
		WithdrawalDrug withdrawalDrug = new WithdrawalDrug();
		withdrawalDrug.setPatientId(patientId);
		withdrawalDrug.setPatientName(patientName);
		withdrawalDrug.setCount(count);
		withdrawalDrug.setReason(reason);
		withdrawalDrug.setDrugsId(drugsId);
		String userId = null;
		String userName = null;
		try {
			userId = BaseUtils.getUser(request).getId();
			userName = BaseUtils.getUser(request).getName();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		withdrawalDrug.setUserId(userId);
		withdrawalDrug.setUserName(userName);
		// 存入退药表中
		drugsService.DrugWithdrawal(withdrawalDrug);

		// 增加库存
		Grant grant = new Grant();
		grant.setDrugId(drugsId);
		grant.setDrugCount(-count);
		drugsService.stockUpdate(grant);
	}

安装部署需求

eclipse、idea运行启动

系统部署

系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在IDEA中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件

本项目用到的技术和框架

1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:jsp+SSM

本项目中的关键点

此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。

环境工具

开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、CSS、SSM
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/137074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

一、多环境配置 在工作中&#xff0c;对于开发环境、测试环境、生产环境的配置肯定都不相同&#xff0c;比如我们开发阶段会在自己的电脑上安装 mysql &#xff0c;连接自己电脑上的 mysql 即可&#xff0c;但是项目开发完毕后要上线就需要该配置&#xff0c;将环境的配置改为…

亚马逊云科技 2022 re:Invent 的几个关键词:数据、云原生端到端、安全

一转眼&#xff0c;又是一年。2022 年云计算行业重要的技术趋势和方向里&#xff0c;亚马逊云科技一年一度的 re:Invent 大会是不可或缺的一环。 今年已经是 re:Invent 大会连续举办的第十一年&#xff0c;和往年一样&#xff0c;亚马逊云科技将一年的重磅技术观察和实践干货悉…

【数据结构】单链表 — 纯C实现单链表

目录&#x1f48c;前言一、定义1.概念2.特点3.优点4.缺点5.结点定义接口实现创建链表结点创建单个结点创建链表打印链表测试创建功能尾插尾删尾部插入尾部删除尾插尾删测试头插头删头部插入头部删除头插头删测试pos位的插入删除查找pos位置在pos位置前插入在pos位置后插入删除p…

CUDA和Compute Capability

Compute Capability 参考 指示GPU硬件能够支持的特性&#xff0c;可以被应用参考哪些特性可以运行。 这里能够找到不同Compute Capability对应的硬件特性。比如我的笔记本搭载了一块Geforce830m&#xff0c;Compute Capability为5.0&#xff0c;硬件特性为 另外有关技术细节比…

面试官问我HTTP,我真的是

面试官&#xff1a;今天要不来聊聊HTTP吧&#xff1f; 候选者&#xff1a;嗯&#xff0c;HTTP「协议」是客户端和服务器「交互」的一种通迅的格式 候选者&#xff1a;所谓的「协议」实际上就是双方约定好的「格式」&#xff0c;让双方都能看得懂的东西而已 候选者&#xff1…

2023-01-02 Echarts学习笔记(一) 基础概念和应用示例:折线图

文章目录0.什么是Echarts?1.常见使用场景2.使用Echarts的基本步骤3.应用示例:做一个折线图4.参考资料0.什么是Echarts? ECharts.js是 百度出品的一个开源 Javascript 数据可视化库 一个使用 JavaScript 实现的开源可视化库&#xff0c; 可以流畅的运行在 PC 和移动设备上&a…

【数据结构】二叉树递归算法代码总结

文章目录一、内容介绍二、算法总结2.1 二叉树结构2.2 完整代码2.3 输出结果三、Reference四、总结一、内容介绍 上一年备考数据结构中自己整理并验证过的二叉树递归算法。包括&#xff1a; 1、二叉树的创建&#xff1b; 2、二叉树的先、中、后序的递归遍历&#xff1b; 3、输出…

[项目说明]-基于人工智能博弈树,极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。

个人选题项目 基于人工智能博弈树&#xff0c;极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。 设计目标及主要内容 本系统是根据传统五子棋游戏的功能编写&#xff0c;其功能实现了基于AI人工智能算法实现智能的人机对弈五子棋…

Java jdk安装及环境配置

Java环境安装一、 jdk和jre的安装1、安装目录创建java文件夹2、java文件夹内创建jdk和jre3、解压下载好的jdk安装包二、环境变量的配置一、 jdk和jre的安装 首先下载jdk 1、安装目录创建java文件夹 2、java文件夹内创建jdk和jre 3、解压下载好的jdk安装包 双击运行解压的jdk …

Kali Linux中shutdown指令的用法3-2

2.4 屏蔽重启指令 -h参数表示屏蔽重启指令&#xff0c;使用如图6所示的指令&#xff0c;可以屏蔽reboot指令&#xff0c;该指令的作用为关闭&#xff08;poweroff&#xff09;系统。 图6 屏蔽重启指令 从图6中可以看出&#xff0c;-h屏蔽了--reboot。 需要注意的是&#xff…

关于OLTP 和OLAP 干货知识分享

OLTP 和 OLAP 这两个概念在十来年前、十几年前BI这个词还不是那么普及的时候&#xff0c;还经常放在一起做比较&#xff0c;现在已经很少再单独拿出来做对比了&#xff0c;但也总还是有人会问到&#xff0c;我在这里大概讲下两个概念的差别和联系。 什么是OLTP OLTP 英文全称…

81.Zabbix之Window服务器agent监控

Zabbix版本:6.2.3 1.官网上下载对应的agent Download Zabbix agents 我们下载Zabbix agent 2 2.配置Zabbix agent2 下载完成后,将压缩包复制到服务器,然后放在移至C盘目录下(其他目录也是可以的),然后进行解压。 3.修改配置文件 用文本编辑软件打开zabbix_agent2.c…

DC-4靶场练习

今天抽时间做了下DC-4的实验&#xff0c;整理了实验步骤&#xff0c;并提炼总结方法论。内网存活主机扫描命令nmap -sP 192.168.101.0/24 arp-scan -l以上IP地址使用排除法,最后得出192.168.101.79是靶机地址。探测目标开放的端口推荐masscannmap快速扫描&#xff1a;masscan -…

【谷粒商城基础篇】整合SpringCloud、SpringCloud alibaba

谷粒商城笔记合集 分布式基础篇分布式高级篇高可用集群篇简介&环境搭建项目简介与分布式概念&#xff08;第一、二章&#xff09;基础环境搭建&#xff08;第三章&#xff09;整合SpringCloud整合SpringCloud、SpringCloud alibaba&#xff08;第四、五章&#xff09;前端知…

【ACWING】【4645选数异或】

给定一个长度为 n 的数列 A1,A2,,An 和一个非负整数 x&#xff0c;给定 m 次查询&#xff0c;每次询问能否从某个区间 [l,r] 中选择两个数使得他们的异或等于 x。 输入格式 输入的第一行包含三个整数 n,m,x。 第二行包含 n 个整数 A1,A2,,An。 接下来 m 行&#xff0c;每行包含…

单片机基础之初识串口

目录 一、初识串口 1、串口基本知识 2、串口的特点 3、了解下全双工和半双工的区别 二、关于串口的电器标准和协议 1、RS-232 2、RS-422 3、RS-485 三、关于串口的电平 1、RS232 电平 2、TTL电平 四、串口通信 1、串口接线方式 2、串口编程要素 3、波特率 4、编…

【练习】day02(未完成版)

努力经营当下直至未来明朗&#xff01; 文章目录一、选择二、编程1. 全排列2. 全排列II答案1. 选择2. 编程普通小孩也要热爱生活&#xff01; 一、选择 此代码片段输出正确的值是&#xff08; &#xff09; public class CharToString {public static void main(String[] ar…

Flink窗口的生命周期

&#x1f34a;在 Apache Flink 中&#xff0c;窗口是对数据流中的一个固定数量的元素或者一段时间内的元素进行分组的一种抽象概念。窗口有自己的生命周期&#xff0c;即从窗口的开始到窗口的结束。 &#x1f34a;窗口的开始和结束可以是以下几种情况之一&#xff1a; 按数据…

WALLET 通证减半:早期用户分配将降至 4%

WALLET 通证即将满 1 年&#xff0c;这意味着根据 Ambire 钱包白皮书&#xff0c;它的年度早期用户供应量将削减至 4%&#xff0c;随着应用率的增长&#xff0c;通货膨胀率将大幅降低。 WALLET 一周年 根据官方消息&#xff0c;WALLET 通证的生成&#xff08;token generation …

差分矩阵(二维)

题目&#xff1a; 输入一个 n行 m列的整数矩阵&#xff0c;再输入 q个操作&#xff0c;每个操作包含五个整数 x1,y1,x2,y2,c其中 (x1,y1)(x1,y1) 和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上 c。 请你将进行完所有…