医院病房信息管理系统方案.docx

上传人:b****9 文档编号:25838726 上传时间:2023-06-16 格式:DOCX 页数:15 大小:34.99KB
下载 相关 举报
医院病房信息管理系统方案.docx_第1页
第1页 / 共15页
医院病房信息管理系统方案.docx_第2页
第2页 / 共15页
医院病房信息管理系统方案.docx_第3页
第3页 / 共15页
医院病房信息管理系统方案.docx_第4页
第4页 / 共15页
医院病房信息管理系统方案.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

医院病房信息管理系统方案.docx

《医院病房信息管理系统方案.docx》由会员分享,可在线阅读,更多相关《医院病房信息管理系统方案.docx(15页珍藏版)》请在冰豆网上搜索。

医院病房信息管理系统方案.docx

医院病房信息管理系统方案

标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]

 

医院病房信息管理系统方案

【最新资料,WORD文档,可编辑修改】

 

第一章需求分析

医院信息管理系统就是对医院的医生、病人、等信息的管理。

为了方便当今我国的医疗体制正在进行改革,需要医疗市场的进一步规范化,这就利用现代化的工具对医院进行有效的管理,有利于提高医疗水平和服务质量,更好的服务于社会。

所以我们利用SQLserver2000技术设计了此医院管理数据库系统,以利用计算机完成病人入院后,对其基本信息、主治医师以及入住病房等信息进行数据库管理,有利于提高入院手续的办理速度以及对医院资源管理的效率。

医院管理系统模块图

用户登录后,进入总的模板控制块,然后根据子模板控制块的选择,进行查询、修改、插入、删除。

所以信息管理系统功能模块图设计如下:

医院管理系统流程图

医院管理的基本业务流程如图

第二章概念结构设计

通常,把每一类数据对象的个体称为实体,而每一类对象的集合称为“实体集”。

而E—R模型的主要成分是实体、联系和属性。

如果用矩形框表示实体集,用带半圆的矩形表示属性,用线段连接实体集与属性,当一个属性或属性组合指定为主码时,在实体集与属性的连接上标记一斜线,则可以表示实体集及每个实体集涉及的属性,实体集之间存在各种关系,通常把这种关系称为“联系”。

联系有三类:

一对一的联系(1:

1);一对多的联系(1:

n);多对多的联系(m:

n)。

例如:

此医院系统中“科室”与“病人”,“科室”与“病房”,“病人”与“病房”等之间存在的是一对多的联系(1:

n);一个医生属于一个科室,负责多个病人的诊治,一个科室有多个病房,多个医生,一个病房属于一个科室

所以,此学生信息系统中实体集与实体集的联系,E—R模型如下:

医生实体子E-R图

病人实体子E-R图

科室实体子E-R图

病房实体子E-R图

全局E-R图

第三章逻辑结构设计

E-R图到关系模式的转换:

用E-R图描述了医院病房系统中实体集与实体集的联系,目的以E-R图为工具,设计关系型的数据库,即确定应用系统所使用的数据库包含那些表,以及每个表的结构是怎么样的。

对于(1:

n)联系既可单独对应一个关系模式,也可以不单独对应一个关系模式,如果联系是单独对应一个关系模式,则由联系的各实体集的主码属性构成关系模式,n端的主码作为该关系模式的主码;如果联系不单独对应一个关系模式,则由联系的属性及1端的主码加入n端实体集对应关系模式中,主码仍是n端的主码。

本系统采用的是单独对应一个关系模式。

所以各实体的E-R图转换其关系模式的如下:

医生表(工作证号,姓名,性别,职称,联系电话,出生日期)

病人表(身份证号,姓名,性别,年龄,联系方式)

科室表(科室号,科名,科地址,联系电话)

病房表(病房号,床位号)

第四章物理实现

数据库是SQLServer2000存储和管理的对象,从逻辑上看,SQLServer2000数据库由存放数据的表以及支持这些数据库的存储、检索、安全性和完整性的对象所组成;从物理上看,SQLServer2000物理数据库指用于存储数据对象的文件及文件组。

数据库创建有二个途径:

一是通过企业管理器,二是查询语句。

本医院病房信息管理系统的建立是通过查询语句建立,创建如下:

数据字典

doctor

字段名称

字段含义

数据类型

是否为主键

约束条件

dno

工作证号

varchar(20)

非空

dname

姓名

varchar(16)

dsex

性别

bit

默认为0

birthday

出生日期

datetime

非空

tel

联系电话

char(20)

title

职称

char(10)

ono

所属科室号

varchar(16)

offfice

字段名称

字段含义

数据类型

是否为主键

约束条件

ono

科室号

varchar(16)

非空

oname

科名

varchar(16)

address

科地址

varchar(16)

tel

联系电话

char(20)

sickroom

字段名称

字段含义

数据类型

是否为主键

约束条件

sno

病房号

varchar(16)

非空

num

床位数

varchar(20)

patient

字段名称

字段含义

数据类型

是否为主键

约束条件

pno

身份证号

varchar(20)

非空

pname

姓名

varchar(16)

psex

性别

bit

默认为0

birthday

出生日期

datetime

非空

sno

病房号

varchar(20)

dno

主治医生号

varchar(20)

数据库的创建

数据库是SQLServer2000存储和管理的对象

查询分析器:

createdatabasehospital

on

(name='hospital_data',

Filename='e:

\',

Size=5mb,

Maxsize=20mb,

Filegrowth=10%

Logon

(name='hospital_log',

Filename='e:

\',

Size=2mb,

Maxsize=5mb,

Filegrowth=1mb

Go

结果显示窗格:

CREATEDATABASE进程正在磁盘'hospital_data'上分配MB的空间。

CREATEDATABASE进程正在磁盘'hospital_log'上分配MB的空间。

表对象的创建与操作

建立数据库最重要的一步就是创建其中的数据表,即决定数据库包括哪些表,每个表中的包含哪些字段,每个字段的数据类型等。

创建表有二种途径,一是企业管理创建,二是查询语句,此设计用的是第二种。

对表的插入、修改和删除可用查询语句或界面操作来操作,但通过用查询语句操作表数据更为灵活,功能更为强大。

医生表doctor创建与操作

usehospital

createtabledoctor/*医生表doctor信息的创建*/

dnovarchar(20)primarykey,

dnamevarchar(16),

dsexbitnotnulldefault(0),

birthdaydatetimenotnull,

telchar(20),

titlechar(10),

onovarchar(16)

结果显示窗口:

/*医生表doctor信息的插入*/

insertintodoctorvalues

(‘

结果显示窗格:

/*医生表doctor信息的修改*/

updatedoctorsetbirthday='1989-11-5',title=’门诊医师’wheredno='00001'

结果显示窗格:

/**医生表doctor信息的删除*/

deletedoctorwheredno='00001'

结果显示窗格:

usehospital

createtablepatient/*创建病人表patient*/

pnovarchar(20)primarykey,

pnamevarchar(16),

psexbitnotnulldefault(0),

birthdaydatetimenotnull,

telchar(20),

snovarchar(16),

dnovarchar(20)

onovarchar(16)

结果显示窗格:

/*病人表patient信息的插入*/

Insertintopatientvalues

(,’’,‘李冰’,‘1’,‘1981-10-23’‘‘,’301’,‘00002‘,‘0222’)

结果显示窗格:

/*病人表patient信息的修改*/

updatepatientsetdno=254wherepno=’’

结果显示窗格:

/*病人表patient信息的删除*/

结果显示窗格:

usehospital

createtableoffice

onovarchar(16)primarykey,

onamevarchar(16),

addressvarchar(16),

telchar(20)

结果显示窗口:

/*科室表office信息的插入*/

insertintoofficevalues

(‘0020’,‘手足科‘,‘北区6号楼’,‘’)

结果显示窗格:

/*科室表office信息的修改*/

’0020’

结果显示窗格:

/*科室表office信息的删除*/

deleteofficewhereono='0020'

结果显示窗格:

/*病房表sickroom创建与操作*/

createtablesickroom

snovarchar(16)primarykey,

numvarchar(20)

结果显示窗口:

/*病房表sickroom信息的插入*/

insertintosickroomvalues(’304’,’3’)

结果显示窗格:

/*病房表sickroom信息的修改*/

updatesickroomsetnum=5wheresno=’304’

结果显示窗格:

/*病房表sickroom信息的删除*/

deletesickroomwheresno='304'

结果显示窗格:

视图

视图是由一个或多个基本表(或视图)导出的数据信息,可根据用户的不同建立不同的视图。

如下三个视图以及视图的T-SQL语句:

创建一个视图vw1,通过该视图可以看到每个病人的身份证号,姓名,年龄,和联系电话

createviewvw1(身份证号,姓名,年龄,联系电话)

as

selectpno,pname,year(getdate())-year(birthday),tel

frompatient

select*fromvw1

结果显示:

createviewvw2

as

select*frompatient

wherepsex='1'

select*fromvw2

createviewvw3(身份证号,姓名,所住病房号,所属科室名,主治医生)

as

selectpno,pname,,oname,dname

frompatient,doctor,sickroom,office

where=and=

and=

andyear(getdate())-year>30

select*fromvw3

表的T-SQL语句

查询是数据库的核心操作,是数据库的其他操作(如插入、修改、删除等)的基础。

T-SQL语句对数据库的查询使用select语句。

select语句具有灵活的使用方式和强大的功能。

如下是对医院病房数据库进行的各种查询:

简单查询

(1)select*fromdoctorwheretitle='主治医师'/*查询主治医师的信息*/

结果显示窗格:

(2)select*frompatientwhereyear(getdate())-year(birthday)<20/*查询年龄<20病人信息*/

结果显示窗格:

模糊查询

/*查询姓王的病人的所有信息*/

select*frompatientwherepnamelike'王%'

(1)查询所有病情属于牙科的病人的所有信息。

select*frompatientwhereonoin(selectonofromofficewhereoname='牙科')

(2)查询所有被张青医生主治的男病人的姓名和病情所属科室号。

selectpname,onofrompatientwherednoin

(selectdnofromdoctorwheredname='张青')andpsex='0'

连接查询

(1)查询所有病情属于牙科的病人的所有信息。

select*frompatient,office

where=andoname='牙科'

(2)查询所有被张青医生主治的男病人的姓名和病情所属科室号。

selectpname,patient,onofrompatient,doctor

where=andpsex='0'

anddname='张青'

聚合函数——分类聚合

(1)统计女病人的总人数

select女病人人数=count(*)frompatient

wherepsex=1

(2)男性主治医生的人数

select主治医生的人数=count(*)fromdoctor

wheredsex=0andtitle='主治医师'

(3)20岁以上的男女医生人数

selectdsexas性别,人数=count(*)fromdoctor

whereyear(getdate())-year(birthday)>20groupbydsex

存储过程

在SQLServer中,存储过程是数据库对象之一,它有执行速度快、确保数据库的安全和自动完成需要预先执行的任务等优点,本设计创建两个个存储过程,一个功能是创建一个存储过程prcs1,通过该存储过程可以查看所有病人的信息。

另一个功能是创建一个存储过程prcs2,通过输入医生职称,可以查看有该职称的医生人数。

存储过程的创建和调用如下:

存储过程:

(1)创建一个存储过程prcs1,通过该存储过程可以查看所有病人的信息。

createprocprcs1

as

select*frompatient

(2)创建一个存储过程prcs2,通过输入医生职称,可以查看有该职称的医生人数。

createprocprcs2

@titlevarchar(16),@nintoutput

as

ifexists(select*fromdoctorwheretitle=@title)

(select@n=count(*)fromdoctor

elseprint'没有该职称'

declare@name1varchar(20),@n1int

set@name1='主治医师'

execprcs2@name1,@n1output

select@name1as职称,@n1as人数

触发器

触发器是一类特殊的存储过程。

触发器与表的关系密切,可用于维护表中的数据。

当有数据影响到触发器维护的数据时,触发器自动执行。

如下是系统触发器的创建和执行:

创建一个触发器把医生表中工作证号为0006的职称由’实习医生’改为’主治医生’

createtriggertrgs

ondoctor

forupdate

as

begin

declare@novarchar(20)

select@no=dnofromdeleted

updatedoctor

settitle='主治医生'

wheredno=0006

end

updatedoctor

settitle='主治医生'

wheredno=0006

select*fromdoctor

/*update操作之前,工作证号为0006的职称,部分信息如下*/

/*update操作之后,工作证号为0006的职称,部分信息如下*/

第五章总结

由医院信息管理系统的需求设计出发,得出“医生”、“病人”、“病房”、“科室”、四个实体集的四个表以及表的设计。

表的E-R模型、表的关系模式以及它们之间的相互转换,以此来显示表之间的关系,通过这让我们熟练掌握其思想。

通过做课程设计,有几点感想,归纳如下。

1.扎实的理论基础。

如果不掌握它们,很难写出高水平的程序。

而这一点又是我们所缺乏的。

2.不钻牛角尖。

当遇到障碍的时候,暂时远离电脑,当重新开始工作的时候,也许会发现那些难题现在竟然可以迎刃而解。

  

3.多与别人交流。

三人行必有我师。

4.良好的编程风格。

注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。

如果注释和代码不一致,那就更加糟糕。

5.具体到程序的实现,我发现比较集中的问题就在于控件和数据库的连接上,有的时候比较简单,有的时候又比较迷茫,最后在和同学的讨论下才顺利完成。

致谢

本设计是在刘书影老师的悉心指导下完成的。

通过我们的设计选题、资料查找,刘老师修改等方面对我进行了悉心的指导和鼓励。

刘老师渊博的知识、严谨的治学态度、求实的工作作风、平易近人的待人方式将是我以后工作和学习的榜样。

值此设计完成之际,谨向指导老师刘老师致以最衷心的感谢和最崇高的敬意!

通过我们组的努力做出了这个医院信息管理系统,我们组六个同学在这次课程设计中不仅加深了对数据库的理解,还加强了我们团队合作的能力,我想这对我们今后的学习生活也是有着无比重要的意义。

当我们看到我们的劳动成果,无比的开心,在这一个星期中,我们不分昼夜的工作,虽然参考了大量资料,但是大部分的工作还是要靠自己完成。

通过这次的SQLServer课程设计,我们系统的复习了SQL的指令用法,深入了解了SQL数据库的功能,对SQL命令熟练运用,让我更加加深了它的语句思想!

让我从这次课程设计中获得了好多知识,获益匪浅!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1