数据库课程设计报告医院病房管理系统设计文档格式.docx
- 文档编号:17430170
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:16
- 大小:1.03MB
数据库课程设计报告医院病房管理系统设计文档格式.docx
《数据库课程设计报告医院病房管理系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告医院病房管理系统设计文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
出院结算:
根据病人的入院日期、出院日期、和所住病房的收费标准,便可计算出病人所需支付的费用。
病人信息管理:
可以查看全部病人信息,而且能选择科室进行分科室查看病人信息,还可以通过输入病人病历号、选择想要修改的项目来修改病人信息。
医院内部信息管理:
包括科室信息管理、医生信息管理、病房信息管理、床位信息管理。
其中科室信息管理实现添加科室、删除科室、更新科室、查看全部科室、查看科室医生;
医生信息管理用来添加医生、删除医生、更新医生、查看所有医生、查看医生主管病人;
病房信息管理实现添加病房、删除病房、更新病房以及查看全部病房;
床位信息管理用来添加床位、删除床位、还可以查询床位的使用情况以便合理地为病人分配床位。
系统安全密码设置:
为了保证系统的安全性,系统通过对工作证号和旧密码的验证,来修改登录密码。
病房管理系统数据流图:
数据字典:
(1)数据结构:
病人
含义说明:
定义了一个病人的信息结构
组成:
病历号、姓名、性别、诊断、病房号、床位号、电话号码、主治医生、住院日期
(2)数据结构:
医生
定义了一个医生的信息结构
工作证号,姓名,年龄,职称,部门,电话号码,密码
(3)数据项:
病历号
唯一标识一个病人
类型:
字符型
长度:
4
取值范围0000~9999
(4)数据项:
工作证号
唯一标识一个医生
3
取值范围000~999
(5)数据项:
密码
登陆本病房管理系统时所需的密码
可变字符型
15
(6)数据流:
病房和床位信息
说明:
表示病房内每一床位的使用状态
数据来源:
病房表和床位表
所属科室,病房号,床位号,目前状态,收费标准
(7)数据流:
医生主管病人信息
表示每一医生主治的病人信息
病人表和医生表
病历号,姓名,性别,病房号,床位号,电话号码,医生工作证号,医生姓名
(8)数据流:
科室医生信息
表示每一科室包含的医生信息
科室表和医生表
工作证号,姓名,职称,年龄,电话号码,科名,科地址,科电话
(9)处理过程:
登记病人信息
向系统录入病人信息
输入:
处理:
首先根据病人诊断的结果,从病房和床位信息中选择一个空的床位,然后将病人相关信息输入系统。
(10)处理过程:
出院结算
结算病人住院期间所需费用
病历号、出院日期
输出:
姓名、病房号、收费标准、住院日期、应付金额
根据病人的病历号,从数据库中得到相应的住院信息,由出院日期和收费标准系统可返回应支付的费用。
二、结构设计
1.概念结构设计
全局E-R图:
2.逻辑结构设计
将E-R图转换为关系模式为:
病人(病历号,姓名,性别,诊断,病房号,床位号,电话号码,主治医生,住院日期)
医生(工作证号,姓名,年龄,职称,部门,电话号码,密码)
科室(科名,科电话,科地址)
病房(病房号,所属科室,收费标准)
病床(病房号,病床号,目前状态)
治疗(病历号,工作证号)
属于(工作证号,科名)
包含(科名,病房号)
入住(病历号,病房号)
拥有(病房号,病床号)
关系图如下所示:
3.物理结构设计
1)对于医生表:
系统涉及了对工作证号、姓名、职称、部门的查询,因此为其各建立一个升序的索引。
2)对于病人表:
系统涉及了对病历号、诊断、病房号、主治医生工作号的查询,因此为其各建立一个升序的索引。
3)对于病房表:
系统涉及到了对病房号、所属科室的查询,因此为其各建立一个升序的索引。
4)对于病床表:
系统涉及到了对病房号、床位号的查询,因此为其各建立一个升序的索引。
三、主要编码及描述:
1.数据库服务器端
1)视图一:
CREATEVIEW医生视图
AS
SELECT工作证号,姓名,职称,年龄,电话号码,部门
FROM医生
作用:
医生表中有一列属性是密码,当查询医生信息时,不应显示出来,所以查询时可以直接查询该视图,输出除密码以外的信息。
视图二:
CREATEVIEW医生主管病人视图
SELECT病人.病历号,病人.姓名AS病人姓名,病人.性别,病人.病房号,
病人.病床号,病人.电话号码,医生.姓名AS医生姓名,医生.工作证号
FROM病人,医生
WHERE病人.主治医生工作号=医生.工作证号
ORDERBY医生.工作证号,病人.病历号
作用:
该视图将医生表和病人表联系起来,当输入医生的工作证号后,可直接调用该视图,将相关的医生信息和病人信息以医生工作证号为第一顺序、病人病历号为第二顺序输出。
视图三:
CREATEVIEW科室医生信息情况
SELECT医生.工作证号,医生.姓名,医生.职称,医生.年龄,医生.电话号码,科室.科名,科室.科地址,科室.科电话
FROM医生,科室
WHERE医生.部门=科室.科名
ORDERBY医生.工作证号
该视图将科室表和医生表联系起来,当选择科室名称后,可直接调用该视图,将相关的科室信息和医生信息按医生工作证号的顺序输出。
视图四:
CREATEVIEW出院结算视图
SELECT病人.病历号,病人.姓名,病人.性别,病人.诊断,病人.住院日期,
病人.病房号,病房.收费标准
FROM病人,病房
WHERE病人.病房号=病房.病房号
ORDERBY病人.病历号
当病人出院时结算费用,需要知道住院日期、病房号及收费标准以便进一步的计算。
该视图将病人表和病房表联系起来,输入病人病历号后,即可显示出住院日期、收费标准等相关信息。
2)存储过程:
CREATEPROCEDUREchuyuan(@idchar(20),@tmdatetime,@ppintoutput)AS
declare@aint
declare@bint
declare@cdatetime
select@a=病房号from病人where病历号=@id
select@b=收费标准from病房where病房号=@a
select@c=住院日期from病人where病历号=@id
select@a=datediff(day,@c,@tm)
set@pp=@a*@b
GO
该存储过程将病人病历号和出院日期作为输入,分别赋值给变量id、tm,经select语句得到收费标准赋给变量b、和住院日期赋给变量c,用函数datediff(day,@c,@tm)
计算出住院天数,住院天数和收费标准的乘积即为结算费用,将它赋给变量pp并作为输出返回。
3)触发器一:
createTRIGGERupON病人
FORINSERT
Begin
Declare@NRvarchar(50),@NBvarchar(50)
Select@NR=病房号,@NB=病床号frominserted
Update病床
Set目前状态="
有人"
Where病房号=@NRand床位号=@NB
End
当有新病人登记入住时触发事件,设置病人所在床位的目前状态为“有人”,以免再有病人入住此床位时发生冲突。
触发器二:
createTRIGGERdeON病人
FORdelete
Select@NR=病房号,@NB=病床号fromdeleted
无人"
当有病人出院时将其信息删除,触发该事件,设置病人之前床位的目前状态为“无人”,以便以后其他病人可以使用此床位。
2.应用服务器端
1)数据录入功能:
通过“住院登记”界面,将录入的病人相关信息存储到数据库病人表中;
protectedvoidButton1_Click(objectsender,EventArgse)
{
SqlConnectionSunCon=newSqlConnection("
DataSource=localhost;
InitialCatalog=病房管理系统;
IntegratedSecurity=True"
);
SunCon.Open();
//打开SunCon对象所连接的数据库
stringStuSQL;
//用来存放SQL命令的字符串
StuSQL="
INSERTINTO病人(病历号,姓名,性别,诊断,病房号,电话号码,主治医生工作号,住院日期,病床号)VALUES('
"
;
StuSQL=StuSQL+TextBox1.Text+"
'
'
+TextBox2.Text+"
+TextBox10.Text+"
StuSQL=StuSQL+TextBox4.Text+"
+TextBox5.Text+"
+TextBox6.Text+"
+TextBox7.Text+"
+TextBox8.Text+"
+TextBox9.Text+"
)"
SqlCommandStuIns=newSqlCommand(StuSQL,SunCon);
StuIns.ExecuteNonQuery();
//针对SunCon所连接的数据库,执行StuIns对象SunCon.Close();
//关闭SunCon对象所连接的数据库
Response.Write("
<
scriptlaguage=javacript>
alert('
已登记'
)<
/script>
}
2)数据删除功能:
通过“删除医生信息”界面,实现将数据库中医生表中的相应医生信息进行删除;
protectedvoidButton1_Click(objectsender,EventArgse)
SqlConnectionSunCon=newSqlConnection("
deletefrom医生where工作证号="
+TextBox1.Text.Trim();
SqlCommandcmd=newSqlCommand(StuSQL,SunCon);
cmd.ExecuteNonQuery();
Response.Write("
成功删除'
}
3)数据检索功能:
通过“查看科室病人信息”界面,实现根据DropDownList中选择的科室名称对数据库中的病人表进行查询,并将查询结果显示给用户。
protectedvoidPage_Load(objectsender,EventArgse)
if(!
IsPostBack)//网页第一次加载时
SELECT科名FROM科室"
SqlDataAdapterSunAda=newSqlDataAdapter(StuSQL,SunCon);
DataSetSunSet=newDataSet();
SunAda.Fill(SunSet,"
科名"
DropDownList1.DataSource=SunSet;
DropDownList1.DataMember="
DropDownList1.DataTextField="
DropDownList1.DataBind();
stringStuSQL2;
StuSQL2="
SELECT病历号,姓名,性别,病房号,病床号,主治医生工作号,住院日期,电话号码FROM病人where诊断="
+"
+DropDownList1.SelectedValue.ToString()+"
SqlCommandStuIns=newSqlCommand(StuSQL2,SunCon);
SqlDataReaderSunDa=StuIns.ExecuteReader();
//使用ExecuteReader方法执行SQL命令,并将结果存储在SunDa对象中
GridView1.DataSource=SunDa;
GridView1.DataBind();
SunCon.Close();
protectedvoidDropDownList1_SelectedIndexChanged(objectsender,EventArgse)
{
stringStuSQL3;
StuSQL3="
SqlCommandStuIns=newSqlCommand(StuSQL3,SunCon);
4)数据修改功能:
通过“更新医生信息”界面,选择想要的修改项,实现修改数据库中医生表的相关项为设置的新值。
protectedvoidButton2_Click(objectsender,EventArgse)
UPDATE医生set职称='
+TextBox3.Text+"
where工作证号='
+TextBox1.Text+"
SqlCommandupd=newSqlCommand(StuSQL,SunCon);
upd.ExecuteNonQuery();
protectedvoidButton3_Click(objectsender,EventArgse)
{
UPDATE医生set年龄='
+TextBox4.Text+"
+TextBox1.Text+"
//针对SunCon所连接的数据库,执行upd对象所包含的名为StuSQL的SQL命令
protectedvoidButton4_Click(objectsender,EventArgse)
UPDATE医生set电话号码='
四、运行说明:
主要界面展示
床位管理
该界面用于管理病房的床位信息。
先选择科室,再从该科室所含的病房中选择一个,便可实现查询此病房中各床位的目前状态,以供病人登记时参考,还可实现向此病房中添加床位或删除已有床位。
住院登记
该界面用于病人住院时登记相关信息。
确定要入住的病房和床位后按要求输入病人的相关信息,其中一些数据项含有一定的约束条件,将其提交给系统,供医生查询其所需信息以及出院时查询住院情况。
修改病人信息
该界面用于修改病人信息。
输入病人的病历号,然后从下拉列表中选择要修改的数据项,相应的那一部分就会变为可见,向其中输入新内容后,点击修改按钮,即可实现修改后台数据库病人的相关信息。
出院结算
该界面用于病人出院结算费用。
输入病人的病历号后,可将其住院信息显示出来。
再输入出院日期,系统会调用存储过程计算出住院天数和收费标准的乘积即结算费用。
病人支付费用后,可将其信息从系统删除,所住床位的状态自动变为无人。
五、课程设计总结
在本次数据库课程设计中,我设计和开发了一个小型的病房管理系统,实现了对病人的住院登记、住院结算、信息查询、信息修改,对科室信息、医生信息、病房信息、床位信息的增、删、查、改,和系统安全密码设置的功能。
设计过程中曾经遇到了不少难点和问题,如:
将界面和后台数据库联系起来时出错;
对数据库中信息操作时有时忽略了参照完整性;
病人出院结算时输入相关信息调用存储过程,然后将结算费用赋给变量并作为输出返回,该过程在数据库的查询分析器中可以实现,但在程序中却不能正常运行;
页面间参数传递实现不了;
还出现了一些语法错误,和对一些控件的属性及事件不熟悉等。
对于上述这些难点,我花了很多时间去解决,反复看老师所给的事件代码、将每一条语句都理解透彻,查阅数据库教材和理论课的课件、并借来相关书籍辅助学习,注意数据库中各个所建表的主外键约束,
仔细耐心检查才能发现一些不明显的语法错误,上网搜索也让我学到很多知识,还有些问题是请教老师的指导和同学之间的互相讨论,最终将难点一一克服。
为了能够使该设计尽可能完善,我看了不少课外资料,主要是想了解一下数据库管理系统是如何开发的,我从中学到了许多有关数据库方面和软件开发的知识,对软件工程和软件开发有了进一步的了解,知道了开发一个系统的基本步骤和方法:
要先做需求分析,如果需求分析做的不到位,就会导致具体实现时出现很多不合理之处;
然后设计相应的数据库,要注意数据库的实体完整性、参照完整、用户定义的完整性才能使系统正常工作,设计各表要规范减少冗余,建立适当的索引和存储过程对提高系统运行的效率是很有必要的;
最后就是具体编写代码实现相关功能,将前台操作与后台数据库联系起
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告 医院 病房 管理 系统 设计