数据库课程设计文档格式.docx
《数据库课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
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
科室电话
Dname
Char(15)
医生姓名
Room情况数据表,结构如下:
字段
Rnum
Int(3)
病房号
Rbnum
Int(5)
床位号
外键
所属科室
Doctor情况数据表,结构如下:
Dnum
Char(17)
工作证号
姓名
Dsex
Char(4)
‘男’或‘女’
性别
Dbirthday
出生日期
Dtelephone
联系电话
Dprofession
职称
Patient情况数据表,结构如下:
Pnum
病历号
Pname
Psex
Pbirthday
Precord
Char(100)
诊断记录
主管医生
三概念模型设计
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,
constraintPK_Roomprimarykey(Rnum)
constraintPK_Onameforeignkey(Onum)
(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)
(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)
5.2装入数据
装入数据又称数据库加载,是数据库实施阶段的主要工作。
在数据库结构建立好之后,就可以向数据库中加载数据了。
由于本数据库系统属于小型数据库管理系统,可以直接采用人工添加的方法。
首先,将需要装入的数据从各个部门的数据文件中帅选出来,转换成符合此医院病房计算机管理系统数据库要求的数据格式,然后输入到计算机中,最后进行数据校验,检查输入的数据是否有误。
在装入数据的过程中,为了确保装入的数据准确无误,高度重视数据的校验工作。
在数据转换过程中应使用不同德方法进行多次校验,确认正确后方可入库。
5.3应用程序编码与调试
(1)登陆系统
BOOLCDenglu:
:
OnInitDialog()//初始化登陆窗口
{
CDialog:
OnInitDialog();
m=0;
//TODO:
Addextrainitializationhere
}
voidCDenglu:
Ondenglu()//登陆系统,输入账户密码三次错误退出系统
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()
CShujukuSetcaset;
CTimenow=CTime:
GetCurrentTime();
//获取当前时间
if(Pname>
0&
(Pname!
="
))//判断录入数据是否为0或为空
caset.Open();
caset.MoveFirst();
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->
六、数据库的维护
当试运行数据库合格后,数据库开发设计的工作就基本完成了,接下来就是正式运行中的调试,应为该系统比较简单,数据量小,数据库中几乎不会发生什么大的变化,但是还是需要做好数据的备份,在SQLserver2005中我们可以利用备份数据库的功能对已经设计好的数据做备份,如果数据库受到破坏或系统故障,我们便可轻松的利用备份文件恢复数据库的数据。
当然也可以利用其他各种方法进行数据维护。
七、总结
在本系统的设计中,SQLServer2005数据库的使用技术和VC++6.0的完美结合,为我们创造了一个具有高效简捷查询功能的数据库。
进一步深入理解数据库设计的整个过程,学会系统需求分析、数据库概念结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护过程,提高数据库的使用效率。
综合提高训练编程能力,实现目标代码得能力及调试代码得能力。