数据库实训报告.docx
- 文档编号:15563493
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:63
- 大小:3.94MB
数据库实训报告.docx
《数据库实训报告.docx》由会员分享,可在线阅读,更多相关《数据库实训报告.docx(63页珍藏版)》请在冰点文库上搜索。
数据库实训报告
《数据库实训项目报告》
班级112901
学号090134
姓名
完成时间10/13/2018
《病人住院管理系统》
1.实训目的和要求:
此次实训要求能够自己建立起来一个简单的数据库管理系统。
熟练地掌握SQL及前台设计的相关知识,掌握市局哭的建立运行及后期维护技术。
将课上学的知识和设计实践理论结合起来,能够运行自己的数据库管理系统。
2.进度安排:
1-4课时:
确定开发对象,需求分析,书写相关文档;
5-8课时:
模块图细化、E-R绘制;
9-18课时:
建立数据库、视图、触发器及存储过程的设计;
19-26课时:
前台界面设计,数据库连接和显示;
27-28课时:
系统测试,书写相关文档,完成实训报告;
29-32课时:
课堂项目初步答辩。
3.参考文献:
【1】主编:
王珊/萨师煊《数据库系统概论》(第四版)北京:
高等教育出版社2006
【2】主编:
张水平《SQLServer数据库应用技术》西北工业大学出版社2005年4月
1需求分析
1.1系统应用背景
医院已经成为了现今社会不可或缺的机构,医院住院管理系统对于实现对医院更有效的管理来说是至关重要的,医院住院管理系统能够使管理人员更方便的查询到所需要的相关信息,实现合理管理。
随着科学技术的日益提高,计算机的使用已经成为一种普遍现象,它具有更大的数据储存空间。
使用计算机对病人住院信息进行管理,能够更安全,更快捷的实现管理。
因此,开发这样一套软件是很有必要的事情。
1.2系统的功能要求
实现一个病人住院管理系统,系统可以连接到相应的数据库,主要可以实现系统设置管理、病房分配管理、住院病人管理、住院费用管理等功能。
功能详细说明:
1、实现对住院病人及预交费基本录入、查询、修改管理;
2、实现对科室信息及相应病房的添加、查询和修改;
3、实现对医生基本信息的添加、查询和修改;
4、实现对所需药品信息的插入、查询和以及对数量的修改;
5、实现病人出院结账的汇总及处理等;
6、实现系统登录管理,包括修改登录信息等。
1.3系统的运行环境
本系统主要由
2概要设计
2.1系统业务流程设计
A、病人入院时,管理员登陆办理住院手续的系统。
B、安排住在指定科室的病房(如外科、内科、儿科等),办理相关的入院手续。
C、为每个病人分配一个主治医生;同时可以实现对每个主治医生的相关信息更新。
D、查询到不同科室的病房管理信息查询电话,方便询问病房信息。
E、病人的相关信息在入院时通过该系统将添加到数据库中。
F、病人出院时计算住院期间的费用(药费、床费、餐费等)。
G、可以查询所需药品的相关信息。
业务流程图如图2.1:
图2.1
2.2系统模块设计
本系统可以分为四大模块,分别是系统设置管理、病房分配管理、住院费用管理、住院病人管理。
具体模块设计图如图2.2.1:
2.2.1系统整体功能模块模块图:
图2.2.1系统整体功能模块图
2.2.2系统子模块图:
1、系统登录子模块:
图2.2.2.a系统登录子模块
2、病房分配管理子模块:
图2.2.2.b病房分配管理子模块
3、住院费用管理子模块:
图2.2.2.c住院费用管理子模块
4、住院病人管理子模块:
图2.2.2d住院病人管理子模块
2.3触发器、视图的说明
1、需要触发器实现费用的总和计算
2、需要触发器实现药物库存量的更新
3、学要视图完成方便快捷的查询病人信息
4、需要视图实现查询某天入院出院病人信息
5、需要存储过程完成对指定病人的信息查询
3详细设计
3.1E-R图的设计
本系统包括的实体主要有病人、科室、病房、医生、费用,病例、药物等。
实体间的E-R图如图3.1.a所示:
图3.1.a实体间的E-R图
下面分别介绍各实体的E-R图,通过E-R图可以了解各实体的属性。
病人实体属性图如图3.1.1.b:
图3.1.b病人实体属性
医生实体属性图如图3.1.c:
图3.1.c医生实体属性
科室实体属性如图
图3.1.d科室实体属性
病房实体属性如图3.1.e:
图3.1.e病房实体属性
费用实体属性如图3.1.f
图3.1.f费用实体属性
病例实体属性如图3.1.g:
图3.1.g病例实体属性
药品信息实体属性如图3.1.h:
图3.1.h药品信息实体属性
3.2E-R图向数据库关系模式的转换
表的说明:
1、Patient(病人表)如图3.2.a
名称
数据类型
大小
是否为主键
是否可为空
说明
Pno
Char
10
是
否
病人编号
Pname
Char
6
否
是
病人姓名
Page
Smallint
否
是
病人年龄
Psex
Char
2
否
是
病人性别
Pid
Char
20
否
否
身份证号
Ptel
Char
20
否
是
联系方式
Charno
char
10
否
是
收据号
Wano
Char
10
否
是
病床号
Pbeizhu
Char
50
否
是
备注
图3.2.a
2、Doctor(医生表)如图3.2.b
名称
数据类型
大小
是否为主键
是否可为空
说明
Docno
Char
10
是
否
医生编号
Docname
Char
6
否
是
医生姓名
Docsex
Char
2
否
是
医生性别
Doctel
Char
20
否
是
联系方式
Docage
Smallint
3
否
是
医生年龄
Depno
Char
10
否
是
所属科室号
图3.2.b
3、Department(科室)如图3.2.c
名称
数据类型
大小
是否为主键
是否可为空
说明
Depno
Char
10
是
否
科室号
Depname
Char
10
是
否
科室名称
Deptel
Char
20
否
是
科室电话
Depman
Char
6
否
是
科主任
图3.1.c
4、Ward(床位)如图3.2.d
名称
数据类型
大小
是否为主键
是否可为空
说明
Wano
Char
10
是
否
病床号
Depno
Char
10
否
是
所属科室号
Watype
Char
20
是
否
病床类型
Wacost
Char
10
否
是
床位费
图3.2.d
5、Charge(收费单据)如图3.2.e
名称
数据类型
大小
是否为主键
是否可为空
说明
Charno
char
10
是
否
收据号
Wacost
Money
否
是
床位费
Medcost
Money
否
是
药费
Exacost
Money
否
是
检查费
Mealcost
Money
否
是
餐费
Chaall
Money
否
是
总计
Chadate
datetime
否
是
日期
图3.2.e
6、Cases(病例)如图3.2.f
名称
数据类型
大小
是否为主键
是否可为空
说明
Cano
char
10
是
否
病历号
Pno
char
10
否
是
病人编号
Intime
Datetime
否
是
入院时间
Outtime
Datetime
否
是
出院时间
Information
Char
50
否
是
就诊信息
Cabeizhu
Char
50
否
是
备注
图3.1.f
7、Medicine(药品)如图3.2.g
名称
数据类型
大小
是否为主键
是否可为空
说明
Medno
char
10
是
否
药品编号
Medname
Char
6
否
否
药品名称
Medprice
Char
10
否
否
药品单价
Medyaoji
Char
20
否
是
药剂
Medshu
Char
10
否
否
药品库存量
图3.2.g
4系统实现
4.1实现表的建立
建立名为’HMS_data‘的住院故那里系统数据库,SQL实现如图4.1.a:
图4.1.a
实现在数据库中建表过程:
1、建立Patient(病人)表的SQL实现如图4.1.1.a:
图4.1.1.a
向表中添加属性分别Charno,Wano,并为其添加外键约束如图4.1.1.b、c、d、e:
图4.1.1.b
图4.1.1.c
图4.1.1.d
图4.1.1.e
数据库中Patient表属性如图4.1.1.f
图4.1.1.f
2、建立Department(科室表)表的SQL实现如图4.1.2.a:
图4.1.2.a
数据库中Department表属性如图4.1.2.b
图4.1.2.b
3、建立Doctor(医生表)表的SQL实现如图4.1.3.a:
图4.1.3.a
数据库中Docror表属性如图4.1.3.b
图4.1.3.b
4、建立Ward(病房表)表的SQL实现如图4.1.4.a:
图4.1.4.a
数据库中Ward表属性如图4.1.4.b
图4.1.4.b
5、建立Cases(病例表)表的SQL实现如图4.1.5.a:
图4.1.5.a
数据库中Wadr表属性如图4.1.5.d:
图4.1.5.d
6、建立Department(科室表)表的SQL实现如图4.1.6.a:
图4.1.6.a
数据库中Patient表属性如图4.1.6.b:
图4.1.6.b
7、建立Charge(费用表)表的SQL实现如图4.1.7.a:
图4.1.7.a
数据库中Charge表属性如图4.1.7.b
图4.1.7.b
4.2触发器、视图、存储过程
视图IF_Pa如图4.2.a:
图4.2.a
说明:
此视图便于查询到病人住院的基本信息
视图“当天出院病人信息”如图4.2.b
图4.2.b
说明:
此视图可方便快捷的查询到某天出院病人基本信息
视图“当天入院病人信息”如图4.2.c:
图4.2.c
说明:
此视图可方便快捷的查询到某天入院病人的额基本信息
触发器ME_C1如图4.2.d:
图4.2.d
说明:
此触发器可实现当某个药品被售出,则Medshu的数量自动减一
附:
由于药物不属于此系统的主要管辖范围,故此触发器为设计阶段,在目前的系统上运行。
触发器cost如图4.2.e
图4.2.e
存储过程PA_in如图4.2.f:
图4.2.f
说明:
此存储过程可实现方便快捷的查询指定病人号的病人信息
4.3前台设计
4.3.1前台与数据库的连接
4.3.2前台界面设计
系统登录界面:
病历表设计界面:
其中,入院出院时间用下拉菜单选择时间:
收据表的前台设计:
其中,日期用下拉菜单选择时间:
4.4SQL实现代码
1、建立Patient表:
createtablePatient
(
Pnochar(6)primarykey,
Pnamechar(6),
Psexsmallint,
Pagechar
(2),
Pidchar(20)unique,
Pbeizhuchar(50)
);
2、建立Department(科室表)表的SQL实现
createtableDepartment
(
Denochar(6)primarykey,
Denamechar(6),
Detelchar(20),
Demanchar
(2),
);
3、建立Doctor(医生表)表的SQL实现
createtableDoctor
(
Docnochar(6)primarykey,
Docnamechar(6),
Doctelchar(20),
Docsexchar
(2),
Docagechar(10),
Depnochar(6)
);
4、建立Ward(病房表)表的SQL实现
createtableWard
(
Wanochar(10)primarykey,
Watypechar(20),
Wacostchar(10),
Washuint
Depnochar(10)
);
5、建立Cases(病例表)表的SQL实现
createtableCases
(
Canochar(10)primarykey,
Pnochar(10),
Intimedatetime,
Outtimedatetime,
Informationchar(50),
Cabeizhuchar(50)
);
6、建立Department(科室表)表的SQL实现
createtableDepartment
(
Depnochar(10)primarykey,
Depnamechar(6),
Deptelchar(20),
Depmanchar(6)
);
7、建立Charge(费用表)表的SQL实现
createtableCharge
(
Charnochar(10)primarykey,
Wacostmoney,
Medcostmoney,
Exacostmoney,
Maelcostmoney,
Chaallmoney,
Chadatedatetime);
8、为Charge表的Charno属性添加外键约束
altertableChargeaddconstraint
Charge_Charno_fkforeignkey(Charno)
referencesPatient(Charno)
9、为Casea表的Cano属性添加外键约束:
altertableCasesaddconstraint
Cases_Cano_fkforeignkey(Charno)
referencesPatient(Cano)
10、建立触发器ME_C1
CREATETRIGGERME_C1ONdbo.Medicine
FORupdate
AS
DECLARE@countchar(6)
SELECT@count=Medshufromupdated
UPDATEMedicine
SETMedshu=Medshu-1
WHEREMedshu=@count
11、建立触发器cost:
CREATETRIGGERcostONCharge
FORUPDATE
AS
DECLARE@costmoney
SELECT@cost=ChaallfromINSERTED
UPDATECharge
SETChaall=Wacost+Medcost+Exacost+Mealcost
WHEREChaall=@cost
12、建立视图IF_Pa
CREATEviewIF_Pa(姓名,床位,病历号,收据号)
as
selectdistinctPname,Ward.Wano,Cano,Charge.Charno
fromPatient,Ward,Cases,Charge
wherePatient.Pno=Cases.PnoandPatient.Wano=Ward.Wano
andPatient.Charno=Charge.Charno
13、建立视图’当天入院病人信息’
createview当天入院病人信息
as
selectPname,Patient.Pno,Page,Psex
fromPatient,Cases
whereIntime='2011-10-19'andPatient.Pno=Cases.Pno
14、建立视图‘当天出院病人信息’:
CREATEview当天出院病人信息
as
selectPname,Patient.Pno,Page,Psex
fromPatient,Cases
whereOuttime='2011-12-19'andPatient.Pno=Cases.Pno
15、建立存储过程
CREATEPROCEDUREPA_in
@pavarchar(8)
AS
SELECT*
FROMPatient
WHEREPno=@pa
GO
16、数据库与前台的连接
<%--
Document:
index
Createdon:
2011-12-28,16:
38:
17
Author:
SX-406
--%>
<%@pagelanguage="java"import="java.sql.*"contentType="text/html"pageEncoding="gb2312"%>
<%@pageimport="java.sql.DriverManager"%>
<%@pageimport="java.sql.Connection"%>
<%@pageimport="java.sql.Connection"%>
<%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connectionconn=DriverManager.getConnection("jdbc:
odbc:
HMS","","");
out.println("与数据库连接成功");
}catch(Exceptione){
out.println("数据库连接失败");
e.printStackTrace();
}
%>
17、前台登陆界面
<%@language=vbscriptcodepage=936%>
<%
optionexplicit
Response.Buffer=True
Response.Expires=-1
Response.ExpiresAbsolute=Now()-1
Response.Expires=0
Response.CacheControl="no-cache"
%>
functionSetFocus()
{
if(document.Login.UserName.value=="")
document.Login.UserName.focus();
else
document.Login.UserName.select();
}
functionCheckForm()
{
if(document.Login.UserName.value=="")
{
alert("请输入用户名!
");
document.Login.UserName.focus();
returnfalse;
}
if(document.Login.Password.value=="")
{
alert("请输入密码!
");
document.Login.Password.focus();
returnfalse;
}
}
\图片\图片\PICTURE\新建文件夹\背景\桌面Aquarel17.jpg"onLoad="SetFocus();">
1109