基于JSP实现的医院住院管理系统
一、课程设计介绍
1.1 目的
软件综合课程设计是学生在学习完数据库系统概论后必须进行的一项重要的实践环节。通过该课程设计,学习数据库设计工具的使用,掌握数据库设计的基本方法、步骤和数据库设计各阶段的任务,完成对某一小型数据库应用系统的基本流程进行分析,数据库设计和相应文档的编写工作。加深对课堂理论学习的理解,增强动手能力,使学生更加深入地掌握数据库系统分析与设计的基本概念和基本方法,以培养学生合作的能力,为毕业设计作好实践环节上的准备。
1.2 内容
课程设计的题目与设计要求由指导老师指定,每组学生最终需要实现一个功能完整、可运行的 MIS 系统。
课程设计报告中应包括需求分析、概要设计、数据库设计、详细设计、编码实现、总结等,具体地:
-
设计报告中应首先包括设计题目、学号、姓名、专业、班级、指导教师、完成日期
-
概要设计中应包括设计思想、实现方法、系统中主要模块及各模块间的关系的描述
-
设计包括根据需求分析所得到的信息,用 E-R 图完成系统的概念结构设计,并对 E-R 图进行优化。将系统 E-R 图转换为选定的 DBMS 所支持的关系模型,并按关系规范化理论对关系模型进行优化
-
详细设计中应对各模块,各功能进一步细化,写各功能的算法等
-
编程实现中应包括对主要模块、主要功能、关键功能的代码说明,代码中应有适当的注释
-
总结里主要写该系统用何种开发语言,开发了何种系统,主要实现了哪些功能,系统性能如何,有何不足等
2 系统需求
通过简单的需求分析,完成的医院住院管理系统,能够实现辅助医院医 护人员工作,提高医院医护人员的工作效率。通过本系统,能够实现对住院 部门的病人和病房两大信息的管理包括增、删、改、查,减轻医护人员的工 作负担。本系统提供强大的查询功能,可以让系统用户根据各种不同的查询 条件查询出相应的数据。出入院操作能够简单的实现病人的出入院操作,方 便医院医护人员的操作,系统应该界面美观,操作简单,功能明确、完善。 系统操作,应该有很高的效率,数据库操作方面应该提高效率,不能反应缓 慢,这在系统搭建上要求合理、完善。
通过建立该医院住院管理系统,采用计算机对医院病房和病人进行管理 和查询,进一步提高医院住院管理效益和现代化水平,帮助提高医院住院管 理工作人员工作效率,实现医院住院管理工作流程的系统化、规范化和自动 化。系统应该具有很好的扩展性,这就要求系统架构合理、可扩展,充分考 虑到以后的需求变化。设计良好的代码允许更多的功能在必要时可以被插入 到适当的位置中。这样做的好处是为了应对未来可能需要进行的修改,这就 需要系统设计时能够有一个良好的软件框架。系统的安全性,也是本次系统 设计的一个重要目标,设计中要考虑到用户的非法访问,通过拒绝用户的非 法访问来保证用户数据的安全和系统的安全。
2.1 系统总体目标
-
加快办理病人入院、出院的速度,实现病人的资料在住院的全过程中实现信息化管理
-
准确记录病人和床位的各项信息,并提供全方位的查询功能,让病人、医生、护士,能够及时准确的掌握病人和床位的各种信息,从而有效提高工作效率,缩短工作时间
-
系统具有一定的安全性和运行稳定性、可扩展性。系统需要医院员 工输入账号和密码才能操作,可以避免其它人员的恶意操作给医院信息带来的损失
-
系统能够提供一个界面友好、功能完善的信息管理系统,方面医护 人员学习和操作,尽可能的简化医院操作,减少医护人员学习和掌握系统的时间
2.2 功能需求
本系统主要实现与病人相关的各种信息的系统化、规范化和自动化,本 住院管理系统主要完成的功能有:
-
出入院管理模块 :包括入院登记、病人出院操作
-
病房管理模块 :包括对病房的增删改查(CRUD)操作,支持多种查询条件
-
病人管理模块 :包括对病人信息的维护,增删改查操作,支持多种查询条件
-
系统管理模块 :包括对修改用户、添加用户、删除用户、退出系统
-
系统功能模块 :包括首页、前进、后退、刷新等操作和显示当前时间
功能分析得到 数据流图 如下所示:
3 概要设计
3.1 医生功能模块图
3.2 管理员功能模块图
3.3 总体联系
3.3.1 医护人员
3.3.2 管理
4 详细设计
4.1 总体流程图
4.2 实体及其属性
-
病人:住院编号,病人姓名,病人性别,入住病房编号,病人入院时间, 病人出生地
-
病房:病房编号,病房类型,病房租金,病房状态,病房所属科室,病房 医生,病房医生号码
-
医生:医生姓名,医生性别,电话号码,医生地址
各个实体间有如下关系:一个病人只能入住一个病房,而一个病房可以住多名病人。
4.3 E-R 图
实体与实体间的对应关系是一对一,“m”、“ n”表示实体与实体间的关系是一对多。
4.4 数据库设计
数据库设计是整个程序设计的最关键部分。数据库的设计是否合理,将 对数据库的大小、代码的优化起到至关重要的作用。因此,在设计程序前必 须对数据库进行设计,而在设计数据库前必须对所要完成的功能进行认真的研究分析。
根据系统的要求,需要建立存放系统使用过程中所用到的各种信息表: 医生信息表、病人信息表、病房信息表、管理员信息表。
用户信息表 :用来存放使用此系统的用户的信息。
管理员信息表 :存放病人信息。
病房信息表 :存放病房信息。
病人信息表 :存放病人信息。
5 系统实现
5.1 数据库代码部分
医生信息表
sql
create table doc_info
(
user_id int PRIMARY KEY auto_increment,
user_num varchar(12), -- 12
user_name varchar(10),
user_pwd char(32),
sex char(4),
tel char(11),
addr varchar(50)
)
管理员信息表
sql
create table admin_info
(
user_id int PRIMARY KEY auto_increment,
user_num varchar(12), -- 12
user_name varchar(10),
user_pwd char(32),
sex char(4),
tel char(11),
addr varchar(50)
)
病人信息表
sql
CREATE TABLE pati_info
(
pati_id int primary key auto_increment,
pati_num char(5), -- P0000
pati_name varchar(10),
pati_sex char(4),
pati_ward_num char(5), -- 病房编号
pati_birthday char(12), -- 流水号处理日期
pati_birthplace varchar(50)
);
**病人信息表的触发器 **
```sql
create trigger trig_pati
before
INSERT
on pati_info
for each ROW
begin
declare p char(5);
declare n int;
DECLARE num int;
DECLARE type char(4);
set new.pati_birthday=date_format(sysdate(),'%Y%m%d%H%i');
set p=(select MAX(pati_num) from pati_info);
if p is null then set p='P1000';
end if;
set n=substring(p,2)+1;
set new.pati_num=concat('P',n);
set num =(select COUNT(*) from pati_info group by new.pati_ward_num);
set type=(select ward_type from ward_info where new.pati_ward_num=ward_info.ward_num);
if (type='单人') then if(num=0) then
update ward_info set ward_status=1 where ward_info.ward_num = new.pati_ward_num;
end if;
ELSEIF (type='双人') then if(num=1) then
update ward_info set ward_status=1 where ward_info.ward_num=new.pati_ward_num ;
end if;
ELSE if (num=3) then update ward_info set ward_status=1 where ward_info.ward_num=new.pati_ward_num;
end if;
end if;
end;
create TRIGGER trig_pati_delete
AFTER
DELETE
on pati_info
for each ROW
BEGIN
DECLARE num int;
DECLARE type char(4);
set num =(select COUNT(*) from pati_info group by old.pati_ward_num);
set type=(select ward_type from ward_info where old.pati_ward_num=ward_info.ward_num);
if (type='单人') then if(num=0) then update ward_info set ward_status=0 where ward_info.ward_num=old.pati_ward_num ;
end if;
ELSEIF (type='双人') then if(num<2) then update ward_info set ward_status=0 where ward_info.ward_num=old.pati_ward_num ;
end if;
ELSE if (num<4) then update ward_info set ward_status=0 where ward_info.ward_num=old.pati_ward_num ;
end if;
end if;
end;
```
**病房信息表 **
sql
create table ward_info
(
ward_id int PRIMARY KEY auto_increment,
ward_num char(5), /*W0000*/
ward_type char(4), -- 病房类型 --
ward_depart varchar(10), -- 所属科室 --
ward_doc varchar(10), -- 管理医生 --
ward_doc_tel char(11), -- 医生电话 --
ward_rent DECIMAL(5,1), -- 租金 --
ward_status int DEFAULT 0 -- 1 满
)
病房信息表的触发器
sql
create TRIGGER trig_ward_num
before
insert
on ward_info
for each row
begin
DECLARE w char(5);
DECLARE n int;
set w=(select max(ward_num) from ward_info);
if w is null then set w='W1000';
end if;
set n=SUBSTRING(w,2)+1;
set new.ward_num=CONCAT('W',n);
end;
**病人住院信息视图 **
sql
Create view v_pati_ward (pw_ward_num, pw_pati_num, pw_pati_name, pw_pati_sex, pw_ward_depart, pw_ward_doc, pw_ward_doc_tel, pw_ward_rent) as SELECT ward_num, pati_num, pati_name, pati_sex, ward_depart, ward_doc, ward_doc_tel, ward_rent from pati_info, ward_info where pati_info.pati_ward_num=ward_info.ward_num;
5.2 JSP 前端页面代码
```jsp
```
**医生界面左侧导航页面 JSP 代码 **
```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
```
**管理员界面左侧导航页面 JSP 代码 **
```html <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
```
5.3 后端代码
```java package com.neu.service; import java.util.List; import java.util.Map; import java.util.HashMap; import com.neu.dao.AdminInfoDao; import com.neu.util.ConvertUtil;
public class AdminInfoService {
private AdminInfoDao adminInfoDao;
public AdminInfoService(){
this.adminInfoDao=new AdminInfoDao();
}
public boolean doReg(Map
public List
public boolean doDelete(Map
public Map
public boolean doUpdate(Map
public Map
5.4 功能截图
**删除病房 **
**修改病房信息 **
**病床查询 **
**添置病床 **
**删除医生账户 **
**管理员主界面 **
**查询医生账户 **
**修改个人信息 **
**医生账户操作面板 **
6 用户说明书
第一步:登录界面,分为管理员和用户两种身份,登录不同的账号跳转到不同的页面如图 7-1:
第二步:根据你的身份登录完成后,如果你的身份是医生,那么你可以 进行病人信息的增删改查以及查询空病房,添加病房等操作。如果你是管理 员,那么你可以进行对医生的查询和删除操作,病房的增删改查操作,以及 对自己个人信息的修改操作。
第三步:根据你的身份你可以在页面上进行你想进行的操作了,例如:我 是一名管理员,我想知道某某某医生的信息,那么经过如下页面操作即可完成:
参考文献
[1] 林来兴. 空间控制技术. 宇航出版社, 1992:34-36
[2] J.R.McDonnell,D.Wagen. Evolving Recurrent Perceptions for Time-Seeies Modeling. IEEE Trans. on Neural Networks. 1994,5(1):24-38
[3] 洪炳熔. 自由浮游空间机器人捕捉目标的运动规划研究. 中国第五届机 器人学术会议论文集. 哈尔滨, 1997:75-80
参考文献
- 医院人力资源信息系统的设计与实现(电子科技大学·杨振兴)
- 基于JSP的学生就业信息管理系统设计与实现(吉林大学·马骁)
- 基于JSP技术的学生宿舍管理系统的设计与实现(沈阳工业大学·杨俊宝)
- 基于J2EE郑州市第一人民医院HIS住院管理模块的设计与实现(电子科技大学·任建伟)
- 基于JSP的学生就业信息管理系统设计与实现(吉林大学·马骁)
- 基于J2EE的互联网医院系统的设计与实现(厦门大学·林亦杉)
- 基于云计算模式的社会服务管理信息化平台项目设计与建设(吉林大学·杨刚)
- 基于J2EE技术的医疗保险管理系统的设计与实现(东北大学 ·谭世桐)
- 医疗卫生图书网的设计与实现(电子科技大学·张占平)
- 基于J2EE的医院病房管理系统的设计和实现(湖北大学·陈浩)
- 基于J2EE技术的医疗保险管理系统的设计与实现(东北大学 ·谭世桐)
- 基于J2EE的互联网医院系统的设计与实现(厦门大学·林亦杉)
- 上海长征医院信息管理系统设计与实现(电子科技大学·石磊)
- 基于J2EE技术的医疗保险管理系统的设计与实现(东北大学 ·谭世桐)
- 基于B/S模式的学院诊所医疗管理系统的设计与实现(中国海洋大学·张翠萍)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码项目助手 ,原文地址:https://bishedaima.com/yuanma/35267.html