数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
![数据库课程设计.docx](https://file1.bdocx.com/fileroot1/2022-11/28/67bb4533-1b1b-44a0-85b0-c4fa4fbaaa7a/67bb4533-1b1b-44a0-85b0-c4fa4fbaaa7a1.gif)
数据库课程设计
数据库原理与应用
课程设计说明书
题目:
医院病房计算机管理系统设计
院系:
信息科学与工程学院
专业班级:
计算机科学与技术09403班
学号:
201190484
学生姓名:
邵新敏
指导教师:
范青
2011年12月18日
一概述
1.1设计前调查
由于现代经济和科技的发展,计算机数据库被越来越多得组织机构用来做管理使用。
几乎所有医院也都已经在使用计算机管理数据的机制,这样就大大减少了医院对病人管理的工作量。
随着医疗事业的迅猛发展,全面提高医院的软件管理水准,更是成为医疗事业发展的当务之急。
然而,传统的人工管理模式已经远远不能满足有效、快捷地处理运营中产生的大量信息数据的需要,从而使得医院无法及时、准确地掌握一线资料,继而影响对病人病情进行正确地分析和预测。
只有管理做到最细微之处,才能让病人体会到医院服务的高标准、高质量,而准确、快速、周全往往就是最基本的成功要素。
该课程设计要求设计一个医院病房对病人的数据库管理系统,数据库中要求包含病人的基本信息,科室的基本信息,医生的基本信息,以及对病房的管理基本信息等。
为了方便对病人病历的查询,该课程设计的设计过程中,注重数据库理论知识的巩固加深,与现实生活中的应用更紧密地结合起来。
1.2设计环境
① MicrosoftSQLServer2005
② MicrosoftVisualC++6.0
二需求分析
2.1系统功能要求设计
此系统实现如下系统功能:
(1)使得医院科室对病人的管理工作更加清晰、有条理。
(2)能够实现对病人信息的快速查询功能。
(3)本管理系统操作简便,设计时充分考虑到系统的安全性,完整性,并发控制等方面的功能要求。
(4)高效的管理系统将会使病人得到更多的实惠。
2.2系统概要分析图如下:
2.3系统模块设计
医院病房计算机管理系统应该包括科室管理、病房管理、医生管理和对病人的具体信息等四大板块进行恰到好处的管理。
在此管理系统中,病人作为此系统的核心成分,是必须加以重视的对象。
而作为管理层的医院科室管理系统,如何更好地实现对病人的人性化、智能化,快捷有效地服务于病人,也是此医院管理系统中不可或缺德重要分支。
缺少了病人的医院当然不是好的医院,所以,以病人为中心,科室决策层应该充分利用好医院中德医生和病房资源,加强对病人的照顾,如此运营下去,才能好评不断,发展才会更快。
2.4数据字典
数据项是数据库的关系中不可再分的数据单位,下表是利用SQLServer2005建立得“医院科室管理”数据库。
基本表清单及表结构描述如下:
数据库中用到的表:
数据库表名
关系模式名称
说明
Office
科室
科室基本信息表
Room
病房
病房基本管理表
Doctor
医生
医生基本信息表
Patient
病人
病人基本信息表
Office基本情况数据表,结构如下:
字段名
数据类型及长度
约束控制
说明
Oname
Char(12)
主键(primarykey)
科室名
Oaddress
Char(20)
Notnull
科室地址
Otelephone
Char(12)
Notnull
科室电话
Dname
Char(15)
Notnull
医生姓名
Room情况数据表,结构如下:
字段
数据类型及长度
约束控制
说明
Rnum
Int(3)
主键(primarykey)
病房号
Rbnum
Int(5)
Notnull
床位号
Oname
Char(12)
外键
所属科室
Doctor情况数据表,结构如下:
字段名
数据类型及长度
约束控制
说明
Dnum
Char(17)
主键(primarykey)
工作证号
Dname
Char(12)
Notnull
姓名
Dsex
Char(4)
‘男’或‘女’
性别
Dbirthday
Char(15)
Notnull
出生日期
Dtelephone
Char(12)
Notnull
联系电话
Dprofession
Char(12)
Notnull
职称
Oname
Char(12)
外键
所属科室
Patient情况数据表,结构如下:
字段名
数据类型及长度
约束控制
说明
Pnum
Char(17)
主键(primarykey)
病历号
Pname
Char(12)
Notnull
姓名
Psex
Char(4)
Notnull
性别
Pbirthday
Char(20)
Notnull
出生日期
Precord
Char(100)
Notnull
诊断记录
Oname
Char(12)
Notnull
主管医生
Rnum
Int(3)
外键
病房号
三概念模型设计
3.1设计实体与联系
由需求分析的结果可知,本系统设计的实体包括:
(1)科室基本信息:
科室名,科室地址,科室电话,医生姓名。
(2)病房基本信息:
病房号,床位号,所属科室。
(3)医生基本信息:
工作证号,姓名,性别,出生日期,联系电话,职称,所属科室。
(4)病人基本讯息:
病历号,姓名,性别,出生日期,诊断记录,主管医生,病房号
这些实体间的联系包括:
(1)一个科室有多个病房、多名医生,而一个病房只属于一个科室;
(2)一个医生只属于一个科室,但可以负责多个病人的诊治;
(3)一个病人的主管医生只有一个。
3.2系统的局部E—R图
3.3系统的全局E—R图:
四逻辑和物理结构设计
4.1由系统E—R图转化而得到的关系模式如下:
(1)科室(科室名,科室地址,科室电话,医生姓名),其主关键字为科室。
(2)病房(病房号,床位号,所属科室),其中主关键字为病房号。
(3)医生(工作证号,姓名,性别,出生日期,联系电话,职称,所属科室),主关键字为工作证号。
(4)病人(病历号,姓名,性别,出生日期,诊断记录,主管医生,病房号),其主关键字为病历号。
(5)拥有(工作证号,科室名),其主关键字为工作证号。
(6)属于(病历号,科室名),主关键字为病历号。
(7)治疗(工作证号,病历号),主关键字为病历号。
4.2分解分析:
(1)各分量都是不可分割的数据项。
满足第一范式;
(2)每一个关系中的非码属性都完全函数依赖于码,符合第二范式;
(3)每个关系中的主属性不传递依赖关系中的每个关系键,符合第三范式;
(4)关系中所有非主属性对每个码都是完全依赖,且所有主码对于每个不包含它的码也是完全函数依赖,没有任何属性完全函数依赖非码的任何一组属性
4.3确定关系模型的存取方法和存储结构
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。
可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。
在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:
在经常需要搜索的列上建立索引; 在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。
才能充分利用索引的作用避免因索引引起的负面作用。
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
五、数据库的实施
数据库实施是指根据逻辑设计和物理结构设计的接轨,在计算机上建立起世纪的数据库结构、装入数据、进行测试和试运行的过程。
此阶段主要任务包括创建数据库,加载初始数据,数据库试运行,数据库的安全性和完整性控制数据库的备份与恢复,数据库性能的监督分析和改仅,数据库的重组和重构等。
5.1建立实际的数据库结构
(1)创建科室基本信息表:
createtableOffice()
Onumchar(12)notnull,
Oaddresschar(20)notnull,
Otelephonechar(15)notnull,
Dnamechar(12)notnull,
constraintPK_Officeprimarykey(Onum)
)
Go
(2)创建病房基本信息表:
createtableRoom(
RnumInt(3)notnull,
RbnumInt(5)notnull,
Onumchar(12)notnull,
constraintPK_Roomprimarykey(Rnum)
constraintPK_Onameforeignkey(Onum)
)
Go
(3)创建医生基本信息表
createtableDoctor(Dnumchar(17)notnull,
Dnamechar(12)notnull,
Dsexchar(4)notnull
Dbirthdaychar(15)notnull
Dtelephonechar(12)notnull
Dprofessionchar(12)notnull
Onumchar(12)notnull
constraintPK_Odoctorprimarykey(Dnum)
constraintPK_Onameforeignkey(Onum)
)
Go
(4)创建病人基本信息表
createtablePationt(Pnumchar(17)notnull
Pnamechar(12)notnull
Psexchar(4)notnull
Pbirthdaychar(20)notnull
Precordchar(100)notnull
Onamechar(12)notnull
Rnumint(3)notnull
constraintPK_Odoctorprimarykey(Pnum)
constraintPK_Onameforeignkey(Rnum)
)
Go
5.2装入数据
装入数据又称数据库加载,是数据库实施阶段的主要工作。
在数据库结构建立好之后,就可以向数据库中加载数据了。
由于本数据库系统属于小型数据库管理系统,可以直接采用人工添加的方法。
首先,将需要装入的数据从各个部门的数据文件中帅选出来,转换成符合此医院病房计算机管理系统数据库要求的数据格式,然后输入到计算机中,最后进行数据校验,检查输入的数据是否有误。
在装入数据的过程中,为了确保装入的数据准确无误,高度重视数据的校验工作。
在数据转换过程中应使用不同德方法进行多次校验,确认正确后方可入库。
5.3应用程序编码与调试
(1)登陆系统
BOOLCDenglu:
:
OnInitDialog()//初始化登陆窗口
{
CDialog:
:
OnInitDialog();
m=0;
//TODO:
Addextrainitializationhere
}
voidCDenglu:
:
Ondenglu()//登陆系统,输入账户密码三次错误退出系统
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
intn=0;
CDlguanlidlgl;//Cdlgaunli是数据据库中账户表相应的类
dlgl.Open();
dlgl.MoveFirst();
while(!
dlgl.IsEOF())//读取数据库里面的账户信息
{
if(strcmp(dlgl.m_ID,m_yonghuming)==0&&strcmp(dlgl.m_code,m_code)==0)
//判断账户密码是否正确
{
this->EndDialog(0);
n++;//n是用来控制状态
}
dlgl.MoveNext();
}
if(n==0)
{
if(m==0)//m控制输入账户密码错误次数
MessageBox("对不起,您输入的账号或密码错误!
您还有2次输入机会!
");
if(m==1)
MessageBox("对不起,您输入的账号或密码错误!
您还有1次输入机会!
");
if(m==2)
MessageBox("对不起,您输入的账号或密码错误!
您已三次输入错误,系统将退出!
");
m++;
}
if(m>2)exit(0);
}
(2)病人病历入库登记系统
voidCRukudengji:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
CShujukuSetcaset;
CTimenow=CTime:
:
GetCurrentTime();//获取当前时间
if(Pname>0&&(Pname!
=""))//判断录入数据是否为0或为空
{
{
caset.Open();
caset.MoveFirst();
while(!
caset.IsEOF())
{
if(Pname==caset.m_column1)
{//比较录入条码与库存是否有相同,有则直接加1,没有则插入新项
caset.Edit();
caset.m_column5+=1;
caset.Update();
caset.Close();
CRkdjrkdj;
rkdj.Open();
rkdj.AddNew();
rkdj.m_column1=now;
rkdj.m_column2=Pname;
rkdj.m_column3=Psex;
rkdj.m_column4=Pirthday;
rkdj.m_column5=Precord;
rkdj.m_column6=Dnum;
rkdj.m_column7=Rnum;
rkdj.Update();
rkdj.Close();
MessageBox("录入成功!
");
this->EndDialog(0);
}
elsecaset.MoveNext();//移动到下一个记录集
}
elseMessageBox("录入信息不完整!
");
this->EndDialog(0);
}
六、数据库的维护
当试运行数据库合格后,数据库开发设计的工作就基本完成了,接下来就是正式运行中的调试,应为该系统比较简单,数据量小,数据库中几乎不会发生什么大的变化,但是还是需要做好数据的备份,在SQLserver2005中我们可以利用备份数据库的功能对已经设计好的数据做备份,如果数据库受到破坏或系统故障,我们便可轻松的利用备份文件恢复数据库的数据。
当然也可以利用其他各种方法进行数据维护。
七、总结
在本系统的设计中,SQLServer2005数据库的使用技术和VC++6.0的完美结合,为我们创造了一个具有高效简捷查询功能的数据库。
进一步深入理解数据库设计的整个过程,学会系统需求分析、数据库概念结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护过程,提高数据库的使用效率。
综合提高训练编程能力,实现目标代码得能力及调试代码得能力。