数据库课程设计医院管理系统.docx
《数据库课程设计医院管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计医院管理系统.docx(41页珍藏版)》请在冰点文库上搜索。
数据库课程设计医院管理系统
内容摘要
数据库的设计是指对一个给定的应用环境,构造数据库模式,建立数据库及其应用系统,满足各种用户需求。
作为信息资源开发、管理和服务的一种有效的手段,数据库技术的应用已越来越广泛,从小型的单项事务处理系统到大型的信息系统大都用先进的数据库技术来保持系统数据的安全性、完整性和共享性。
对一个实际的系统来说,数据库表的设计在遵循数据库理论的同时,必须能用开发工具来实现用户在各方面提出的功能要求。
本医院管理系统是经过实地需求分析调查、通过概念机构设计与逻辑结构设计等过程后完成的一个小型管理系统,包括:
对医生、护士、收费人员、病人、药品及检查的各种基本信息的查询功能,对病人病房、收费的管理功能等。
同时对不同的人员授予不同的权利,保证了数据库的安全性。
关键词:
医院管理需求分析查询住院管理收费管理
。
】
'
第一章需求分析5
》
信息要求5
处理要求5
安全性和完整性要求5
第二章概念结构设计1
分E-R流程图1
总E-R流程图4
第三章逻辑结构设计5
关系模型5
:
设计用户子模式5
第四章物理结构设计6
第五章数据库实施9
创建医院管理系统9
创建必要索引10
建立视图10
建立必要的存储过程及触发器11
第六章数据库应用系统的实施和维护13
总结18
致谢19
参考文献20
附录20
、
医院管理系统
第一章需求分析
信息要求
本系统实现了以下信息:
基本信息模块:
包括行政人员信息、医生信息、护士信息、收费人员信息、病人信息、病房信息、药品信息。
、
管理信息模块:
人员管理(员工、病人)、药品管理、住院部管理、收费管理。
处理要求
要求本系统能够投入实际的使用并且满足基本的功能要求。
要求具有较高的可靠性、安全性和易维护性,具有较高的可移植性。
具体要求如下:
(1)基本信息查询
该查询主要是指对医生、病人等信息的查询。
(2)医患
病人来医院看病,为其选择科室,进而选择医生,对病人挂号登陆就医信息。
—
(3)收费
病人通过自己的编号可以到收费窗口查询和缴纳自己的药费和检查费。
(4)住院
对住院的病人在住院部登录信息,住院部确定病人病房病床,安排所属区域护士对病人进行辅助治疗和看护。
安全性和完整性要求
该系统对不同人员进行了不同的权限设置:
行政人员可以查看医院数据库中的任何信息、医生只能查询病人及病人住院的信息,收费人员只能查看收费信息。
第二章概念结构设计
分E-R流程图
图2-1行政人员概念模型
图2-2医生概念模型
图2-3护士概念模型
图2-4病人概念模型
图2-5检查、药品概念模型
图2-6收费人员概念模型
图2-7病房病床概念模型
图2-8医患关系概念模型
图2-9病人住院概念模型
图2-10收费信息概念模型
总E-R流程图
图2-11总体E-R概念模型
第三章逻辑结构设计
关系模型
系统中所涉及的关系如下:
行政人员(行政人员编号,行政人员姓名,性别,年龄,职务,联系方式)
医生(医生编号,医生姓名,性别,年龄,所属科室,联系方式)
病人(病人编号,病人姓名,性别,年龄,就医科室,联系方式)
住院部(病房病床编号,所属科室,是否住人)
护士(护士编号,护士姓名,性别,年龄,所属科室)
检查及药品(检查或药品编号,检查或药品名称,单价,检查或存放地点)
收费人员(收费人员编号,收费人员姓名,性别,年龄)
医患(医生编号,病人编号,就医时间)
收费(收费流水账号,收费人员编号,病人编号,药品或检查编号,数量,价格)
住院管理(病床号,病人编号,医生编号,护士编号,入住时间)
设计用户子模式
根据用户的需求,也为了保护系统的安全性,本系统设计了下面一些视图:
病人基本信息查询表(病人编号,病人姓名,性别,年龄,就医科室,联系方式,主治医生编号,主治医生姓名,就医时间);
住院管理查询表(病床号,病人编号,病人姓名,所属区域,入住时间,所属区域护士编号,护士姓名);
收费信息表(收费流水账号,收费人员编号,病人编号,药品或检查编号,数量,价格)。
第四章物理结构设计
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Ano
varchar
10
PrimaryKey
Notnull
行政人员编号
Aname
varchar
20
Notnull
行政人员姓名
Asex
char
2
行政人员性别
Aage
int
行政人员年龄
Adept
varchar
30
行政人员职务
Atel
varchar
11
行政人员联系方式
表4-1行政人员表
表4-2医生信息表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Dno
varchar
10
PrimaryKey
Notnull
医生编号
Dname
varchar
20
Notnull
医生姓名
Dsex
char
2
医生性别
Dage
int
医生年龄
Ddept
varchar
30
医生所属科室
Dtel
varchar
11
医生联系方式
表4-3护士信息表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Nno
varchar
10
PrimaryKey
Notnull
护士编号
Nname
varchar
20
Notnull
护士姓名
Nsex
char
2
护士性别
Nage
int
护士年龄
Ndept
varchar
30
Notnull
护士所属科室
表4-4病人信息表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Pno
varchar
10
PrimaryKey
Notnull
病人编号
Pname
varchar
20
Notnull
病人姓名
Psex
char
2
病人性别
Page
int
病人年龄
Pdept
varchar
30
Notnull
病人就医科室
Ptel
varchar
11
病人联系方式
表4-5收费人员信息表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Cno
varchar
10
PrimaryKey
Notnull
收费人员编号
Cname
varchar
20
Notnull
收费人员姓名
Csex
char
2
收费人员性别
Cage
int
收费人员年龄
表4-6检查及药品信息表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Dnum
varchar
10
PrimaryKey
Notnull
检查或药品编号
Dnam
varchar
20
Notnull
检查或药品名称
Dprice
money
检查或药品价格
Dstorage
varchar
30
检查地点或药品存放处
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Hbednumber
char
6
PrimaryKey
Notnull
病床编号
Hdept
varchar
30
病床所属科室
Hflag
int
Notnull
病床是否住人
表4-7病房病床信息表
表4-8医患关系表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Dno
char
6
PrimaryKey
Notnull
医生编号
Pnot
varchar
30
PrimaryKey
Notnull
病人编号
DPTime
int
看病时间
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Pno
varchar
10
ForeignKey
病人编号
Dno
varchar
10
ForeignKey
医生编号
Nno
varchar
10
ForeignKey
护士编号
HTime
Date
入住时间
Hbednumber
char
6
PrimaryKey
Notnull
病床号
表4-9住院信息表
表4-10收费信息表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
Tno
varchar
10
PrimaryKey
Notnull
收费流水账号
Cno
varchar
10
ForeignKey
收费人员编号
Pno
varchar
10
ForeignKey
病人编号
Dnum
varchar
10
ForeignKey
药品或检查编号
Tnumber
int
数量
Tprice
money
6
价格
第五章数据库实施
创建医院管理系统
--创建医院管理系统数据库
CREATEDATABASEhospitalsystem
ON
(NAME=hospital_data,
FILENAME='e:
\05\',
SIZE=10MB,
MAXSIZE=300MB,
FILEGROWTH=10%)
LOGON
(NAME=hospital_log,
FILENAME='e:
\05\',
SIZE=5MB,
MAXSIZE=200MB,
FILEGROWTH=2MB)
--例举创建各类信息表
创建医生信息表
CREATETABLEDoctor
(DnoVARCHAR(10)PRIMARYKEY,
DnameVARCHAR(20),
DsexVARCHAR
(2),
DageINT,
DdeptVARCHAR(50),
DtelVARCHAR(11)
);
创建病人信息表
CREATETABLEPatient
(PnoVARCHAR(10)PRIMARYKEY,
PnameVARCHAR(20),
PsexVARCHAR
(2),
PageINT,
PtelVARCHAR(11),
PdeptVARCHAR(50)
);
创建医生病人关系表
CREATETABLEDoctor_Patient
(DnoVARCHAR(10),
PnoVARCHAR(10),
DPTimeDate,
PRIMARYKEY(Dno,Pno),
FOREIGNKEY(Dno)REFERENCESDoctor(Dno),
FOREIGNKEY(Pno)REFERENCESPatient(Pno)
);
创建住院病人信息表
createtablePHouse
(PnoVARCHAR(10),
DnoVARCHAR(10),
NnoVARCHAR(10),
HTimeDate,
HbednumberCHAR(6)PRIMARYKEY,
FOREIGNKEY(Dno)REFERENCESDoctor(Dno),
FOREIGNKEY(Pno)REFERENCESPatient(Pno),
FOREIGNKEY(Nno)REFERENCESNurse(Nno)
);
创建收费信息表
CREATETABLECharge
(TnoVARCHAR(10)PRIMARYKEY,
CnoVARCHAR(10),
PnoVARCHAR(10),
DnumVARCHAR(10),
TnumberINT,
TpriceMONEY,
FOREIGNKEY(Cno)REFERENCESCharger(Cno),
FOREIGNKEY(Pno)REFERENCESPatient(Pno),
FOREIGNKEY(Dnum)REFERENCESDrug(Dnum)
);
创建必要索引
CREATEINDEXAdministor_INDEXONAdministor(Ano);
CREATEINDEXDoctor_INDEXONDoctor(Dno);
CREATEINDEXNurse_INDEXONNurse(Nno);
CREATEINDEXPatient_INDEXONPatient(Pno);
CREATEINDEXDrug_INDEXONDrug(Dnum);
CREATEINDEXHouse_INDEXONHouse(Hbednumber);
建立视图
--创建医生信息视图
CREATEVIEW医生信息_VIEW
AS
SELECTDno医生编号,Dname医生姓名,Dsex性别,Dage年龄,
Ddept部门,Dtel电话
FROMDoctor;
SELECT*FROM医生信息_VIEW
WHERE医生编号='D001';
--创建收费人员信息视图
CREATEVIEW收费人员信息_VIEW
AS
SELECTCno收费人员编号,Cnam收费人员姓名,Cage年龄,Csex性别
FROMCharger;
SELECT*FROM收费人员信息_VIEW
WHERE收费人员编号='C001';
--创建病人信息视图
CREATEVIEW病人信息_VIEW
AS
SELECT病人编号,Pname病人姓名,Psex性别,Page年龄,Ptel电话,Pdept就诊科室,
主治医生编号,Dname主治医生姓名,DPTime就诊时间
FROMPatient,Doctor,Doctor_Patient
WHERE=AND=;
SELECT*FROM病人信息_VIEW
WHERE病人编号='P001';
--创建住院部管理视图
CREATEVIEW住院部信息_VIEW
AS
SELECT病房床位编号,病人编号,Pname病人姓名,Hdept所属区域,所属护士编号,Nname所属护士姓名
FROMHouse,Nurse,Patient,PHouse
WHERE=AND=AND=;
SELECT*FROM住院部信息_VIEW
WHERE病房床位编号='240902';
--创建药品信息视图
CREATEVIEW检查及药品信息_VIEW
AS
SELECTDnum编号,Dnam名称,Dprice单价,Dstorage位置
FROMDrug;
--创建收费信息视图
CREATEVIEW收费信息_VIEW
AS
SELECTTno收费编号,Cno收费员编号,Pno病人编号,Dnum药品编号,Tnumber数量,Tprice价格
FROMCharge;
建立必要的存储过程及触发器
触发器一检查病人挂号与医生科目是否相同
CREATETRIGGER病人医生
ONDoctor_Patient
FORINSERT
AS
DECLARE@DDEPTVARCHAR(20),@PDEPTVARCHAR(20),@DNOVARCHAR(20),@PNOVARCHAR(20)
BEGIN
SELECT@DNO=DnoFROMINSERTED
SELECT@PNO=PnoFROMINSERTED
SELECT@DDEPT=DdeptFROMDoctorWHEREDno=@DNO
SELECT@PDEPT=PdeptFROMPatientWHEREPno=@PNO
IF(@DDEPT=@PDEPT)
PRINT'插入成功'
ELSE
BEGIN
PRINT'无法插入'
ROLLBACK
END
END
GO
触发器二检查病人病房科目是否相,同病床是否有人
CREATETRIGGER病人住院
ONPHouse
FORINSERT
AS
DECLARE@BEDNUMVARCHAR(10),@PNOVARCHAR(20),@PDEPTVARCHAR(30),@HDEPTVARCHAR(30),@FLAGINT
SELECT@PNO=PnoFROMINSERTED
SELECT@BEDNUM=HbednumberFROMINSERTED
SELECT@PDEPT=PdeptFROMPatientWHEREPno=@PNO
SELECT@HDEPT=HdeptFROMHouseWHEREHbednumber=@BEDNUM
SELECT@FLAG=HflagFROMHouseWHEREHbednumber=@BEDNUM
IF(@FLAG=1)
BEGIN
PRINT'病房正在被使用!
'
ROLLBACK
END
ELSE
BEGIN
IF(@HDEPT!
=@PDEPT)
BEGIN
PRINT'无法插入,病人居住科室不对!
'
ROLLBACK
END
ELSE
UPDATEHouseSETHflag=1WHEREHbednumber=@BEDNUM
END
GO
插入收费信息表的存储过程
CREATEPROC收费
@TNOVARCHAR(10),@CNOVARCHAR(10),@PNOVARCHAR(10),@DNUMVARCHAR(10),@TNUMBERINT
AS
DECLARE@TPRICEMONEY,@DPRICEMONEY
SELECT@DPRICE=DpriceFROMDrugWHEREDnum=@DNUM
SET@TPRICE=@TNUMBER*@DPRICE
INSERTINTOChargeVALUES(@TNO,@CNO,@PNO,@DNUM,@TNUMBER,@TPRICE)
GO
EXEC收费'11','C001','P001','000123',4
EXEC收费'12','C001','P002','000127',3
EXEC收费'13','C001','P003','000901',1
SELECT*FROMCharge;
第六章数据库应用系统的实施和维护
图6-1用户登录界面
图6-2系统主界面
图6-3员工管理界面
图6-4医生信息查询窗口
通过本窗体可以查询医生的基本信息。
--创建医生信息视图
CREATEVIEW医生信息_VIEW
AS
SELECTDno医生编号,Dname医生姓名,Dsex性别,Dage年龄,
Ddept部门,Dtel电话
FROMDoctor;
SELECT*FROM医生信息_VIEW
WHERE医生编号='D001';
图6-5病人信息查询窗口
通过本窗口可以对病人的信息进行查询(包括:
病人基本信息、主治医生及就医时间)。
--创建病人信息视图
CREATEVIEW病人信息_VIEW
AS
SELECT病人编号,Pname病人姓名,Psex性别,Page年龄,Ptel电话,Pdept就诊科室,
主治医生编号,Dname主治医生姓名,DPTime就诊时间
FROMPatient,Doctor,Doctor_Patient
WHERE=AND=;
SELECT*FROM病人信息_VIEW
WHERE病人编号='P001';
图6-6住院信息查询窗口
通过本窗口可以查询病房的信息(包括:
病床基本信息、病人信息、所属护士信息)。
--创建住院部管理视图
CREATEVIEW住院部信息_VIEW
AS
SELECT病房床位编号,病人编号,Pname病人姓名,Hdept所属区域,所属护士编号,Nname所属护士姓名
FROMHouse,Nurse,Patient,PHouse
WHERE=AND=AND=;
SELECT*FROM住院部信息_VIEW
WHERE病房床位编号='240902';
DROPVIEW住院部信息_VIEW;
图6-7收费信息查询窗口
通过本窗口可以查到病人所要缴纳费用的具体信息(如具体检查费用、药品费用等)。
--创建收费信息视图
CREATEVIEW收费信息_VIEW
AS
SELECTTno收费编号,Cno收费员编号,Pno病人编号,Dnum药品编号,Tnumber数量,Tprice价格
FROMCharge;
SELECT*FROM收费信息_VIEW
WHERE病人编号='P001';
DROPVIEW收费信息_VIEW;
图6-8检查项目及药品信息查询窗口
通过本窗口可以查询到药品的具体信息(如数量、编号、单价、存储位置等),还可以查到检查项目的具体信息。
--创建检查药品信息视图
CREATEVIEW检查及药品信息_VIEW
AS
SELECTDnum编号,Dnam名称,Dprice单价,Dstorage位置
FROMDrug;
SELECT*FROM检查及药品信息_VIEW
WHERE编号='000123';
总结
本次课程设计根据其具体情况,设计完成的是医院管理系统。
通过本次课程设计巩固了刚学习的数据库理论知识,同时加强了对数据库应用方面的理解,深刻体会到了理论结合实践的学习方法。
同时,在本次课程设计的完成过程中,学会了通过MicrosoftOfficeExcel和C#软件来画窗体,用Word画E-R图。
并且对数据库设计步骤