1、。湖南涉外经济学院课程设计报告课程名称数据库原理与应用课程设计题目医院管理系统学院信息科学与工程学院组员班 级计科1301班指导教师彭 浩2015年12月25日-可编辑修改-任务分配表第7组学号姓名负责部分成绩组长数据库代码组员数据库界面程序文档制作指导教师评语:-可编辑修改-摘 要信息化的今天,计算机的普及应用和信息技术、网络技术的发展给人们的工作和生活带来了极大的便利和高效,信息化、电子化已经成为节约运营成本,提高工作效率的首选。与此同时,医学技术的提高和人们生活观念的改变,使传统的医院管理机制表现出许多不足,国内的相当数量的中小型医院的信息管理工作流程还采用相对保守的人工工作方式,数据信
2、息的查询和存储的成本较高,而且效率还很低下。医院要紧跟时代发展的步伐和潮流,必须实现医院全面的信息化管理,为病人提供现代化的服务,提高对病人的服务水平,方便、准确、快捷地为病人提供医疗服务和医疗费用信息,进而增强病人对医院的信任和支持。当前,医院还面临着越来越激烈的市场竞争、要想在竞争中取胜,也必须采用先进的管理方法和手段。医院信息管理系统主要采用了JAVA语言和SQL数据库结合的B/S设计模式,可以帮助医院实现对医务人员工作的考核管理,动态了解医院的经营状况等,同时也从侧面减少了医院处方的流失,提高了医院的综合管理效益与经济效益。在医院各部门之间进行数据通信,自动把信息送到各有关科室,易于实
3、现全院性的各种统计、检索和分析。在加速培养高水平医务人员上起到了作用,极大提高信息传递速度和减少错误。关键词:医院信息管理系统;JAVA;SQL。目 录第一章绪论51.1系统开发背景概述51.2 系统开发的目的与意义5第二章数据库需求分析72.1信息要求72.2系统构成72.3数据流图82.4数据字典8第三章 数据库概念结构设计10第四章数据库逻辑结构设计124.1关系模式124.2数据模型优化12第五章数据库实施阶段145.1数据库创建145.2数据表查询175.3数据表删除175.4视图创建175.5存储过程创建185.5.1 存储过程的查询功能185.5.2 存储过程的添加功能195.5
4、.1 存储过程的修改功能205.5.1 存储过程的删除功能20第六章数据库运行和维护21总结23参考文献24-可编辑修改-第一章绪论1.1系统开发背景概述随着计算机技术的飞速发展,计算机在医院管理中应用的普及,利用计算机实现医院管理势在必行。对于大中型医院来说,利用计算机支持医院高效率完成劳动医院管理的日常事务,是适应现代医院管理制度要求、推动医院管理走向科学化、规范化的必要条件。 目前市面上流行的信息管理系统不少。但是,对于中型医院的医院管理系统来说,不需要大型的数据库系统。只需要一个操作方便,功能实用,能满足本中心对数据的管理及需求的系统。我们的目标就是在于开发一个功能实用、操作方便,简单
5、明了的医院管理系统。能够录入医院的基本资料,在操作上能够完成诸如添加、修改、删除、按各种条件进行查询、新用户的设置及密码修改等方面的工作,基本满足人事日常业务的需要。团队完成了此课题的研究与开发,包括分析、设计、编码、测试、文档编写等内容。1.2 系统开发的目的与意义随着现代化社会的发展,为了抓住机遇,在竞争中占得先机,作为管理企业的一个必不可少的重要环节在线管理的信息化、计算机化也就迫在眉捷了。开发在线管理信息系统即有宏观上的意义,那就是顺应时代信息化、现代化潮流,提高效益,促进国民经济管理的结构优化;也有微观上的意义,那就是可以提高管理的现代化程序,加强管理的信息化手段,提高工作效率,增加
6、单位效益。电子计算机和通信技术的快速发展使人类已经逐渐地进入信息化社会。信息和材料、能源一样成为一种社会的基本生产资料,在人类的社会生产活动中发挥着重要的作用。当前,医院还面临着越来越激烈的市场竞争、要想在竞争中取胜,也必须采用先进的管理方法和手段。一个规划周详、设计先进的计算机信息管理网络系统是取得竞争胜利的必备手段。通过实现先进的计算机网络化管理,能为领导层的管理和决策及时提供可靠的数字依据,使管理更合理、更先进;减少人力、物力资源的浪费,降低成本;提高工作效率,提高管理效率;提高经济效益,从而提高医院的整体竞争力。建立以人事管理为中心的医院信息网络管理系统,以适应医院长期快速发展的需要,
7、更重要的是能使患者在医院得到更加满意的治疗。第二章数据库需求分析2.1信息要求由于系统的主体是医院的科室与人员,因此对系统的信息要求可分为以下几个方面:医生信息,病人信息,护士信息,科室信息,病房信息。a.科室信息医院科室的基本信息,主要包括科室的科室名,地址,电话,主任。b.医生信息医院医生的基本信息,主要包括医生的姓名,工作证号,年龄,所属科室,学历。c.病房信息医院病房的基本信息,主要包括病房的病房号、床位数、所属科室、地址。d.护士信息医院护士的基本信息,主要包括护士的护士编号、姓名、性别、所属科室、年龄。e.病人信息记录病人的基本信息,主要包括病人的病历号、姓名、性别、年龄、诊断、医
8、生姓名、病房号、血型、所属科室。要求本系统能够拥有一个运行和维护的界面,并可实现数据的增删改查。2.2功能模块图医院信息管理系统功能模块由病人信息管理系统、医务人员管理系统、病房信息管理系统组成。如下图2-1所示:医院信息管理系统医生信息管理护士信息管理病房信息管理科室信息管理病人信息管理查找增添修改删除图2-1医院信息管理系统功能模块图2.3数据流图医院信息管理数据流图,如图2.2所示:用户用户登录分配病房分配病人科室医院科室管理 分配医生病人信息诊断与登记医生信息病人入住病房病房信息护士信息安排护士照顾病人图2.2医院信息管理数据流图2.4数据字典数据字典是指对数据的数据项、数据结构、数据
9、流、数据存储、处理逻辑、外部实体等五个部分进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。本次实验主要对数据字典的数据项进行分析。如表2所示:表2 数据项序号数据项数据类型长度备注1工作证号char8医生的工作证号2姓名char8医生的姓名3性别char2医生的性别4年龄char20医生的年龄5学历char20医生的学历6所属科室Char20医生的所属科室7病历号char8病人的病历号8姓名char8病人的姓名9性别char2病人的性别10年龄char8病人的年龄11病房号char8病人的病房号12医生姓名char8病人主治医生的姓名13诊断varchar20病人的诊断14血型
10、varchar4病人的血型15所属科室char20病人治疗的所属科室16科室主任char20科室的科室主任17电话char6科室的电话18科室地址char20科室的地址19病房号varchar20病房的病房号20床位数char8病房的床位数21所属科室char8病房的所属科室22地址char20病房的地址23护士编号char8护士的编号24姓名char8护士的姓名25性别char2护士的性别26年龄char8护士的年龄27病房号char8护士照顾的病房号28用户名char10登录的用户名27密码char10登录的密码第三章数据库概念结构设计3.1医院信息系统实体属性医院医生的实体属性,主要包括
11、医生的姓名,工作证号,年龄,所属科室,学历。如图3.1医生实体属性图所示:医生姓名性别学历年龄工作证号所属科室图3.1 医生实体属性院科室的实体属性,主要包括科室的科室名,地址,电话,主任;如图3.2所示: 科室科室名电话科室地址科室主任图3.2 科室实体属性医院病房的实体属性,主要包括病房的病房号、床位数、所属科室、地址;如图3.3所示: 病房病房号床位数病房地址所属科室图3.3病房实体属性医院护士的实体属性,主要包括护士的护士编号、姓名、性别、所属科室、年龄;如图3.4所示:护士护士姓名性别病房号年龄编号证号图3.4护士实体属性病人的实体属性,主要包括病人的病历号、姓名、性别、年龄、诊断、
12、医生姓名、病房号、血型、所属科室。如图3.5所示:病人姓名性别医生姓名病房号病历号诊断年龄血型所属科室图3.5 病人实体属性3.2总 E-R 流程图医院管理信息系统总 E-R如图2.6所示:N1工作科室医生NN1属于病人拥有1MN分配护士病房图2.6 总E-R图第四章数据库逻辑结构设计4.1关系模式用户(用户名、密码)医生(姓名、工作证号、性别、年龄、所属科室、学历)护士(护士编号、护士姓名、性别、所属科室、年龄)病人(病历号、姓名、性别、年龄、诊断、医生姓名、病房号、血型、所属科室)科室(科室名、科室地址、科室电话、科室主任)病房(病房号、床位数、所属科室、地址)4.2数据模型优化第一步:对
13、于1:N联系“工作”,可以在“科室”模式中加入姓名属性。对于1:N联系“属于”,可以在“科室”模式中加入病历号属性。对于1:N联系“拥有”,可以在“科室”模式中加入病房号属性。这样第一步得到的模式的形式如下:科室(科室名、科室地址、科室电话、科室主任、姓名、病历号、病房号)第二步:对于M:N联系“分配”则生成一个新的关系模式:分配(病房号、护士编号)这样转换成的六个模式如下:医生(姓名、工作证号、性别、年龄、所属科室、学历)护士(护士编号、护士姓名、性别、所属科室、年龄)病人(病历号、姓名、性别、年龄、诊断、医生姓名、病房号、血型、所属科室)科室(科室名、科室地址、科室电话、科室主任、姓名、病
14、历号、病房号)病房(病房号、床位数、所属科室、地址)分配(病房号、护士编号)用户(用户名、密码)分析,关系模式的每个关系都是不可再分的原子值,即为第一范式,又因为每个非主属性都不传递依赖于模式的候选键,因此该模式集为第三范式。通过关系模式和不断优化修改,得出如表4.1所示的医生表: 表4.1医生表字段名称数据类型是否允许空备注工作证号char(8) 否姓名char(8)否主键性别char(2)是年龄char(20)是学历char(20)是所属科室Char20)是外键通过关系模式和不断优化修改,得出如表4.2所示的病人表:表4.2病人表字段名称数据类型是否允许空备注病历号char(8)否主键姓名
15、char(8)否性别char(2)是年龄char(8)是病房号char(8)是医生姓名char(8)是诊断varchar(20)是血型varchar(4)是所属科室char(20)是外键通过关系模式和不断优化修改,得出如表4.3所示的科室表:表4.3科室表字段名称数据类型是否允许空备注科室名char(20)否主键科室主任char(6)是电话char(20)是科室地址varchar(20)是姓名char(8)否主键病房号char(8)是病历号char(8)否主键通过关系模式和不断优化修改,得出如表4.4所示的病房表:表4.4病房表字段名称数据类型是否允许空备注病房号char(8)否主键床位数ch
16、ar(8)是所属科室char(20)是外键地址char(20)是通过关系模式和不断优化修改,得出如表4.5所示的护士表:表4.5护士表字段名称数据类型是否允许空备注护士编号char(8) 否主键姓名char(8)是性别char(2)是年龄char(8)是病房号char(8)是外键通过关系模式和不断优化修改,得出如表4.6所示的分配表:表4.6 分配表字段名称数据类型是否允许空备注病房号char(8)否护士编号char(8)是通过关系模式和不断优化修改,得出如表4.7所示的用户表:表4.5用户表字段名称数据类型是否允许空备注用户名char(10) 否主键密码char(10)否第五章数据库实施阶段
17、完成分析与结构优化以后,开始数据库的实施阶段,本章主要以数据库的创建,数据表的增、删、改、查,视图的创建以及存储过程的创建为内容。5.1数据库创建create database 医院管理系统 -创建数据库gouse 医院管理系统gocreate table 用户表 -创建用户表( 用户名 char(20) primary key, 密码 char(20)create table 科室表 -创建科室表( 科室名 char(20) primary key, 电话 char(20) , 科室地址 varchar(20), 科室主任 char(6)create table 医生表 -创建医生表( 工作
18、证号 char(8) not null, 医生姓名 char(8) primary key , 性别 char(2), 年龄 char(20), 所属科室 char(20) references 科室表, 学历 char(20), )create table 病房表 -创建病房表( 病房号 char(8) primary key, 床位数 char(8), 所属科室 char(20) references 科室表, 地址 char(20) )create table 病人表 -创建病人表( 病历号 char(8)primary key, 姓名 varchar(8) not null , 性别
19、char(2), 年龄 char(8), 血型 varchar(4), 诊断 varchar(20), 医生姓名 char(8), 病房号 char(8) , 所属科室 char(20) references 科室表)create table 护士表 -创建护士表( 护士编号 char(8) primary key, 姓名 char(8), 性别 char(2), 年龄 char(8), 病房号 char(8) references 病房表, )-用户表插入数据insert into 用户表 values(GongSheng,123456);insert into 用户表 values(Lei
20、XiaoRong,123456);insert into 用户表 values(LiuHongBing,123456);-科室表插入数据insert into 科室表 values(内科,11111,六楼,刘);insert into 科室表 values(外科,22222,二楼,龚);insert into 科室表 values(儿科,33333,三楼,陈);insert into 科室表 values(妇科,44444,四楼,雷);insert into 科室表 values(骨科,55555,五楼,匡);insert into 科室表 values(急诊,66666,一楼,李);-医生表
21、插入数据insert into 医生表 values(01,赵宝,男,30,妇科,博士);insert into 医生表 values(02,前进,男,30,内科,研究生);insert into 医生表 values(03,赵雅,女,26,儿科,本科);insert into 医生表 values(04,白懿,女,30,外科,本科);insert into 医生表 values(05,刘欣,女,42,急诊,博士);insert into 医生表 values(06,孙洲,男,36,骨科,博士);insert into 医生表 values(07,李白,男,28,骨科,博士);insert i
22、nto 医生表 values(08,杜甫,男,36,急诊,大专);-病房表插入数据insert into 病房表 values(101,20,内科,住院部一楼)insert into 病房表 values(102,20,外科,住院部一楼)insert into 病房表 values(201,20,儿科,住院部二楼)insert into 病房表 values(202,20,妇科,住院部二楼)insert into 病房表 values(301,20,骨科,住院部三楼)insert into 病房表 values(302,20,急诊,住院部三楼)-护士表插入数据insert into 护士表 v
23、alues(21,王芳,女,22,301);insert into 护士表 values(22,刘琼,女,23,101);insert into 护士表 values(25,赵雅,女,24,202);insert into 护士表 values(23,白清,女,25,102);insert into 护士表 values(24,吴赵,男,26,201);insert into 护士表 values(26,吴雅,女,27,201);insert into 护士表 values(27,莉莉,女,28,201);insert into 护士表 values(28,夏天,女,29,302);-病人表插
24、入数据insert into 病人表 values(1501,周一,男,64,AB,腰椎盘突出,孙洲,301,骨科);insert into 病人表 values(1502,胡二,男,22,AB,骨折,李白,null,骨科);insert into 病人表 values(1503,郑三,女,33,B,不孕不育,赵宝,202,妇科);insert into 病人表 values(1504,王四,女,46,A,烧伤,白懿,102,外科);insert into 病人表 values(1505,李五,男,5,O,腹泻,赵雅,201,儿科);insert into 病人表 values(1506,何六
25、,男,56,O,急性阑尾炎,杜甫,302,急诊);insert into 病人表 values(1507,孙九,男,66,A,null,李白,102,null);5.2数据表查询以下命令用于对数据库内各个表的查询。select * from 医生表 -医生表数据查询select * from 病房表 -病房表数据查询select * from 病人表 -病人表数据查询select * from 科室表 -科室表数据查询select * from 护士表 -护士表数据查询5.3数据表删除以下命令用于删除数据库的表。drop table 医生表 -医生表数据删除drop table 病房表 -病房
26、表数据删除drop table 病人表 -病人表数据删除drop table 科室表 -科室表数据删除drop table 护士表 -护士表数据删除5.4视图创建为了方便数据查询以及提高查询的安全性,我们需要建立视图,以下是创建视图和视图查询的命令。-创建视图a查看病人表create view aasselect *from 病人表-查询视图aselect * from a-创建视图b查看那位病人没有病房create view basselect 病人表.姓名from 病人表where 病房号 is null-查询视图bselect * from b-创建视图c查看每位病人相对照的护士姓名cr
27、eate view casselect 病人表.姓名 as 病人姓名,护士表.姓名 as 护士姓名from 病人表,护士表where 病人表.病房号 = 护士表.病房号-查询视图cselect * from c-创建视图查看医生医治的病人信息create view dasselect 医生表.医生姓名,病人表.姓名 as 病人姓名from 医生表,病人表where 医生表.医生姓名 = 病人表.医生姓名-查询视图dselect * from d5.5存储过程创建 创建存储过程更好的实现数据的修改与删除。5.5.1 存储过程的查询功能-创建存储过程查询病人的病房信息goif exists(sel
28、ect * from sysobjects where name = 病人病房查询 and type = p)drop proc stud_degreego create proc 病人病房查询asselect 病人表.姓名,病房表.所属科室 as 病房科室,病房表.地址 as 病房地址from 病人表,病房表where 病人表.病房号 = 病房表.病房号exec 病人病房查询select * from sysobjects-创建存储过程lll,该存储过程根据传入的病历号,它返回三个参数病人姓名、科室名和病房号。goif exists(select * from sysobjects wher
29、e name = lll and type = p)drop proc lllgocreate proc lll 病历号 char(10),科室名 char(20) output ,病房号 char(8) output,病人姓名 varchar(8) outputas set 病人姓名 = (select 姓名 as 病人姓名from 病人表where 病历号 = 病历号 )set 科室名 =( select 病人表.所属科室 as 所在科室from 病人表where 病人表.病历号 = 病历号)set 病房号 = (select 病房号 as 病人所在病房 from 病人表 where 病历
30、号 = 病历号)-执行declare A CHAR(10);declare B char(20);declare C varchar(8);exec lll 1503, A output,B output,C output;select C as 姓名,A as 科室名,B as 病房号5.5.2 存储过程的添加功能 -在教师表上创建教师信息添加存储过程,实现教师信息的添加 if exists(select * from sysobjects where name=科室表添加 and type=p) drop procedure 科室表添加 go create procedure 科室表添加
31、k_科室名 char(20), d_电话 char(20), s_科室地址 varchar(20) , z_科室主任 char(6) as insert into 科室表values(k_科室名 ,d_电话,s_科室地址 ,z_科室主任)go -科室表中添加 咳嗽科,88888888,三楼,黄的信息 exec 科室表添加 咳嗽科,88888888,三楼,黄 -添加后查询 select *from 科室表 5.5.3 存储过程的修改功能 -创建教师修改存储过程,实现教师信息的修改 if exists(select * from sysobjects where name =科室表修改 and t
32、ype =p) drop procedure 科室表修改 go create proc 科室表修改 k_科室名 char(20), d_电话 char(20), s_科室地址 varchar(20) , z_科室主任 char(6) as update 科室表 set 科室名 =k_科室名,电话=d_电话,科室地址=s_科室地址, 科室主任=z_科室主任 where 科室名=k_科室名 -修改前查询 select *from 科室表 -教师表中将 “科室地址”修改成“六楼”和“电话”修改成“6666666”其余的不变 exec 科室表修改 咳嗽科,666666,六楼,黄 -修改后查询 sele
33、ct * from 科室表5.5.4 存储过程的删除功能 -创建教师信息删除存储过程,实现科室信息的删除 if exists(select * from sysobjects where name = 科室删除 and type = p) drop procedure 科室删除 go create procedure 科室删除 k_科室名 varchar(20) as delete from 科室表 where 科室名=k_科室名 go -教师信息表中将编号2004 的教师所有信息删除 -执行教师信息删除过程 exec 科室删除咳嗽科 -修改后查询 select * from 科室表第六章数据
34、库运行和维护本次课程设计我们使用java语言编写医院管理系统的程序界面。 6.1数据库的运行6.1.1登录界面及管理界面运行程序后的登录界面如图6.1所示。图6.1登录界面输入帐号与密码,登录以后进入管理界面,如图6.2所示。图6.2管理界面6.1.2信息管理 医院信息查询管理模块包括:医生信息医生基本资料的增删改查,科室信息科室基本资料的增删改查,病人信息病人基本资料的增删改查,护士信息护士基本资料的增删改查,病房信息病房基本资料的增删改查。其他模块与病人信息管理模块大同小异,现以病人信息管理模块为例。 管理员登录后,在管理界面通过点击医院信息查询,然后进入病人信息,有用户添加、修改、删除、
35、查询的功能界面。病人表内的数据以列表形式显示在界面上,如图6.3所示。图6.3病人信息病人信息管理模块有四个子模块:a.查询;b.添加;c.修改;d.删除。a.查询功能:在“病历号”输入1567点击“查询”,出现如图6.4所示结果,查询成功。图6.4查询功能b.添加功能:我们在表内添加一行数据,添加前的列表如图6.5所示,然后在病人信息界面填写完病历号、姓名、性别等信息后点击“添加”,如图6.所示,添加成功。图6.5 添加病人信息前图6.6 添加病人信息后c.修改功能:以将表中“王四”的信息修改为“刘八”为例,修改前如图6.7所示,修改成功后如图6.8所示。图6.7 信息修改前 图6.7 信息
36、修改后d.删除功能:以删除“老六”为例,删除前如图6.7所示,选中并点击“删除”,删除成功后,如图6.8所示。 图6.7 信息删除前 图6.7 信息删除后 数据库试运行合格后,即可投入正式运行了,这标志着数据库开发工作基本完成。但是由于应用环境在不断变化,数据库运行过程中物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。6.2 运行和维护阶段的主要工作 在数据库运行阶段,数据库的维护主要由DBD完成。数据库的维护工作包括以下五项。(1) 数据库的转储和恢复 数据库的转储和恢复是系统正式运行后最重要的维护工作之一。DBA要按照系统提供的安
37、全规范和故障恢复规范,针对不同的应用要求制定不同的转储计划,以保证一旦发生故障尽快将数据库恢复到某种一致的状态,并尽可能减少对数据库的破坏。(2) 数据库的安全性、完整性控制 在数据库运行过程中,由于应用环境的变化,对安全性的要求也会发生变化。比如有的数据原来是机密的,现在变成可以公开查询的了,而新加入的数据又可能是机密的了。系统中用户的密级也会变化。这些都需要DBA要按照系统提供的安全规范,根据实际情况修改原有的安全性控制,经常核查系统安全性是否受到侵犯,及时调整授权和密码。同时,数据库的完整性约束条件也会变化,也需要DBA不断修正,以满足用户要求。(3)数据库性能的监督、分析和改造 在数据
38、库运行过程中,监督系统运行、对监测数据进行分析并找出改进系统性能的方法是DBA的又一重要任务。目前有些DBMS产品提供了监测系统性能的参数工具,DBA可以利用这些工具方便地得到系统运行过程中一系列性能参数的值。DBA应仔细分析这些数据,判断当前系统运行状况是否是最佳,应当做哪些改进,例如调整系统物理参数,或对数据库进行重新组织或重新构造等。(4)数据库的数据重组 数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低了数据的存取效率,数据库的性能下降。这时,DBA就要对数据库进行数据重组或部分重组(只对频繁增加、删除数据的表进行重组)。DBMS一般都提供数据重组用的实用程序。在数据重组过程中,按原设计要求重新安排存储位置、回收垃圾、减少指针链等,已提高系统性能。(5)数据库的重新构造 数据库的数据重组并不修改原设计的逻辑和物理结构,而数据库的重新构造则不同,它要部分修改数据库的模式和内模式 由于数据库应用环境发生变化,例如增加了新的应用或新的实体,取消了某些应用,有的实体与实体间的联系发生了变