医院管理系统设计报告.docx
- 文档编号:4702217
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:22
- 大小:446.82KB
医院管理系统设计报告.docx
《医院管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《医院管理系统设计报告.docx(22页珍藏版)》请在冰豆网上搜索。
医院管理系统设计报告
廿喩钏技识畧
UniversityoffSoence恳TechnologyBeifing
C语言课程设计报告
机房名称逸夫楼804
时间2011年7月11日至7月22日
学院计算机与通信工程学院
专业班级信息1010
姓名蔺云雷樊晓灿倪森
学号410503004105030241050295
指导教师刘莲英
4医院管理系统设计报告
经过一个学期的学习,我们对C语言及应用已有了初步了解。
在本次课程设计中,我们
又将其理论与实践相结合,在实践中巩固我们已有的理论知识,同时在实践中不断学习新的
知识,从而增强自身的软件设计的能力。
在本次的课程设计中,通过我们三个人的共同努力,
以及同学老师的帮助,我们最终顺利完成了任务。
但我们并没有单纯的把它当做一个任务来做,我们本着巩固知识,不断学习的目的来完成本次的课程设计。
本次课程设计总结如下:
1.1开发背景
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛
应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理,使用计算机
进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管
理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
而医院信息管理系统则是这类信息管理系统的最佳体现,对
于我们这类具有实验性质的实践项目来说是最合适不过的了。
随着计算机技术的发展以及计算机网络的逐渐普及,英特网成为人们查找信息的重要场所。
二十一世纪是信息的时代,所以信息的交换和信息流通显得特别重要。
因此,医院场所使用计算机来管理成为必然。
医院作为一种服务性机构,需要统计和保存的病人及医生资料繁多,包含很多的信息数
据的管理,现今,有很多的小型医院都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对
于病人的住院情况(如住院天数、病历保存的天数)的统计和核实等往往采用对病历号的人工检查进行,大量应用人工计算、手抄进行。
数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统,规范的信息管理手段。
尽管有的医院有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。
数据处理手工操作,工作量大,出错率高,出错后不易更改。
部分小型医院采取手工方式对病人住院情况进行人工管理,由于信息比较多,对病人管理工作
混乱而又复杂;一般住院情况只记录在病人的病历本上,病床的相关资料在文件中,医院的
工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资
料中翻阅、查找了,造成查询费时、费力。
如要对很长时间以前的住院信息进行更改就更加困难了。
基于这众多的问题,有必要建立一个医院管理系统,使医院管理工作规范化,系统化,程序化,避免医院管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改病人住院及出院情况。
建立管理信息系统是一个很好的解决办法,因为随着社会生产力的迅速发展和科学技术的突飞猛进,一个集计算机技术、通迅技术、数据库技术、信息技术、现代管理理论为一体的系统开发方法已经逐渐成熟,我们完全能够结合自己的实际情况开发出实用的管理信息系统,来指导我们的学习。
为此,我们组经讨论后一致决定在不与其他小组撞车的前提下通
过自主开发这一医院信息管理系统,达到为医护人员减轻负担,为患者提供方便,从而提高
医院工作效率的目的。
1.2开发工具
本系统主要利用VC++6.0作前端的应用开发工具,利用c语言实现相应的功能,利用
WindowsXP作为系统平台。
1.3系统运行环境
本系统的运行环境是中文版win32平台上运行。
分为住院手续办理(zhuyuan)和出院手续办理(chuyuan),
主函数为程序的核心,调用前面15个函数,我们把函数都进行了分组,主界面调用1
查询系统,2管理系统,3手续办理系统。
其中:
1查询系统直接调用查询函数(chaxun),对病人信息及住院信息进行查询。
2管理系统为医院的核心,它记录了医院所有人员的相关信息,它分为病床管理系统,医生管理系统和病人管理系统,分别调用相应的函数
其中病床管理系统为医院病床信息的统计,它分为增加病床(addbed),去掉病床(deibed),
修改病床资料(changebed),病床统计(bedcount)四个函数;医生管理系统为医院病床信息的统计,它分为增加医护人员(addemploy),删除医护人员(delemploy),修改医护人员资料
(changeemploy),医护人员统计(employcount)四个函数;病人管理系统为医院病人信息的统计,它分为申请新病例(addpatient),删除老病例(delpatient),住院情况统计(zhuyuancount),病历号统计(patientcount)四个函数.
3手续办理系统为病人而设立,是病人住院信息的载体.
具体的功能模块图如下:
管理系统
小型医院信息管理系统需实现功能:
力求通过本系统,实现以下要求
1>对医生的个人资料进行编辑,查询病床的占用情况从而更有利于系统工作人员掌握
病床的信息。
2>对病人的病历信息、住院信息进行编辑、查询,并且查询病历的基本情况。
3>管理人员对医院工作人员及病床的信息进行添加和删除。
目标:
A.通过数字化,使医院工作所需人力减少;
B.提高医院信息管理系统的响应速度;
C.加快相关信息的流动速度,提高效率;
D.通过实际的工程实践,使我们对数据库的认识水平提高,完成课程要求。
可行性分析:
开发上的可能性:
介于管理系统相比之下只需调用函数,读取,记录,保存文件的相关操作即可,制作过程不算过于复杂,属于我组人员水平范围之内,研究过程中不会遇到解决不了的困难,因此
此课题的的开发是完全可行的
操作上的可能性:
考虑到医院的工作人员部分电脑水平有限,因此我小组在制作程序时,尽量把整个操作
界面控制的一目了然,相关链接符合逻辑结构思维,操作起来容易上手,一看就懂,不用在学习操作上下太大功夫,因此,应该会受广大医院欢迎管理上的可行性
这个开发是我们作为数据库课程实践的一项应用工程,任课老师对此十分的重视•希望
在课程规定时间内将该数据库系统开发出来,当然如能投入使用更好,以使我们在巩固课堂
所学理论知识的基础上对实践有所了解,对医院管理的数字化及现代化能起到一些创新促进
作用。
虽然如今一些大型的医院管理系统基本上已经很先进了,但作为信息管理系统的代表,
这次的小型医院信息管理系统的开发对本科学生数据库理论的实践还是有一定帮助的,因此
这个系统在管理上是可行的。
三、总体设计
3
F
手续办理
流程图如下:
IF
2
管理系统
—
1
1r
查询系统
1
输入病历号
出院手续办理
住院手续办理
1^医生管理系统
1
I病床管理系统
01
1r
结束
2T查询病人信息
查询住院信息
从主函数开始,进入主界面,首先是选择要进行的操作,包括查询系统,管理系统和
手续办理系统。
若选择查询系统,则要首先输入要查询病人的病历号,由于要查询的文件是关联的,则还要选择具体要查询的信息(住院信息/病人信息),也可以从此子菜单里直
接返回主菜单。
若选择管理系统,则可以对病床,医生和病人的信息进行添加,删除和修改以及统计等操作。
从三个子管理系统都可以返回管理系统界面,进而回到主菜单。
手续办理系统包括住院手续和出院手续的办理,从手续办理界面和办理子菜单都可以直接返回
主菜单。
再从主菜单退出系统。
整个系统大致就是这样的流程。
四.详细设计
本系统主要利用在主函数中调用各个函数来实现系统的主要功能,在三个子系统(查询
系统、管理系统、住院手续)中都可以再次调用其相关的函数。
(1)、在查询系统中,通过switch语句,选择要查询的信息,选择"1”则进入查询住院
信息,选择“2”则进入查询病人信息,选择“0”则退出查询系统。
其函数代码如下:
chaxun()/*进入查询系统*/
{
charch5;
intpatientnum,ture,i,n=0;
FILE*fp,*fp2;/*定义指针变量*/
fp=fopen("patient.txt","r");/*将fp指针指向以只读方式打开的patient.txt文件*/
printf("请输入你要查找的病历号\n");
scanf("%d",&patientnum);
for(i=0;fread(&patient[i],sizeof(structpatient),1,fp)!
=0;i++)/*判断是否存在相应的病
历号*/
{
if(patientnum==patient[i].patientnum)/*判断存在病历号*/
{
do
{
printf("\n");
printf("\n");
printf("\n");
printf("\t\t
欢迎进入查询系统!
——
—\n");
printf("\t\t
====1:
<查询住院信息>
====\n");
printf("\t\t
====2:
<查询病人信息>
====\n");
printf("\t\t
====0:
<返回>
====\n");
printf("\t\t
\n");
printf(”
请输入0--2,其他输入非法!
");
scanf("%s",&ch5);
switch(ch5)
{
case'1':
fclose(fp);
fp2=fopen("record.txt","r");
for(i=0;fread(&zhuyuan[i],sizeof(struct
zhuyuan),1,fp2)!
=0;i++)
{
if(zhuyuan[i].patientnum==patientnum)
{
printf("病历号:
%d,病床号:
%s,病床高度:
%d,病床等级:
%d,是否能调节高度(1表示能2表示不能):
%d\n",zhuyuan[i].patientnum,zhuyuan[i].lendbook,zhuyuan[i].bedh,zhuyuan[i].bednum,zhuyuan[i].bedor);
printf("按任意键返回:
\n");
getch();
}
fclose(fp2);
returnFALSE;
}
fclose(fp2);
returnFALSE;
break;
case'2':
printf("第%d个病人的病例号:
%d姓名:
%s年龄:
%d性
别:
%s患病类型:
%s电话号
码:
%s\n",n+1,patient[i].patientnum,patient[i].patientname,patient[i].patientclass,patient[i].patientsex,patient[i].patientleve,patient[i].patienttage);
fclose(fp);
printf("按任意键返回:
\n");
getch();
break;
case'0':
break;default:
printf("无此操作\n”);
getch();
break;
}
}
while(ch5!
='0');
returnFALSE;
}
returnFALSE;
}
printf("没有你要查找的病历号”);
fclose(fp);returnFALSE;
}
(2)、在管理系统中,同样是利用switch语句来选择要进行的管理操作,由于可以针对病
床、医生、病人进行管理,则将管理系统又分成了三个模块,并对每一个子管理模块分成了4个操作功能,由于这三个子管理模块的功能基本相同,在这里只列出医生管理模块的相应的功能,其他模块的可参照上面的模块图。
在医生管理部分,包括增加医护人员、删除医护人员、修改医护人员资料、医护人员统计几个部分,增加医护人员可以新增医护人员,同时添加关于医生的编号、医生的姓名、医生的年龄、医生的性别、医生的科目和医生的工资。
要实现此功能,主要依靠以下的函数:
addemploy()/*函数名,增加医生信息*/
{
FILE*fp;/*定义一个文件指针*/
charchoice='y';/*定义字符常量,用于下面的判断*/
inti=1;
fp=fopen("employ.txt","a+");/*将指针指向文件employ.txt*/
while(choice=='y'||choice=='Y')/*使用循环语句,当确定要输入医生信息时,执
行循环体*/
{
printf(”请你输入医生号码\n");/*输入对应的医生信息*/
scanf("%d",&employ[i].employnum);printf("请你输入医生名\n");
scanf("%s",employ[i].employname);printf("请输入医生年龄\n");
scanf("%d",&employ[i].employage);printf("请你输入性别\n");
scanf("%s",employ[i].employsex);printf("请你输入医生的科目\n");
scanf("%s",employ[i].employleve);printf("请输入医生的工资\n");
scanf("%d",&employ[i].employtage);
fwrite(&employ[i],sizeof(structemploy),1,fp);/*将医生的信息写入fp对应的
文件中*/
printf("是否要输入下个医生信息
\n");
scanf("%s",&choice);
}
printf("按任意键返回\n”);fclose(fp);/*关闭文件*/
}
在删除医生信息模块,可以将没用的医生信息删除,以节省空间,也更便于医生信息的
管理。
只要输入要删除的医生姓名,即可自动弹出提醒语句,提醒操作者是否真的要删除该
医生的信息,只要选择“y”即可完成删除操作。
具体的程序代码如下:
delemploy()/*函数名,删除医生信息*/
{
FILE*fp,*fp2;/*定义文件指针,用于对文件的操作*/
inti;
charemployname[10],choice;
fp=fopen("employ.txt","r");
fp2=fopen("bedl.txt","w");
printf("请输入你要删除的医生名\n");
printf("如果你输入的医生存在,系统自动删除该信息!
如果不存在,系统不做任何
改动\n");
scanf("%s",employname);
for(i=0;fread(&employ[i],sizeof(structemploy),1,fp)!
=0;i++)/*读取医生的信息*/
{
/*判断是否存在该医生的
/*将医生的信息写到fp2所
if(strcmp(employname,employ[i].employname)!
=0)信息,若存在,则执行语句A*/
{
fwrite(&employ[i],sizeof(structemploy),1,fp2);
指向的文件中*/
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该医生信息?
删除后的所有信息将无法恢复《Y/N》\n");
scanf("%s",&choice);/*提醒操作者是否真的要执行删除操作*/if(choice=='y'||choice=='Y')
{
fp=fopen("employ.txt","w");/*清空employ.txt中的信息*/
fp2=fopen("bedl.txt","r");/*以只读的方式打开fp2所指向的文件bed1.txt*/
for(i=0;fread(&employ[i],sizeof(structemploy),1,fp2)!
=0;i++)
{
fwrite(&employ[i],sizeof(structemploy),1,fp);/*读取fp2的信息,写入fp中*/
}
fclose(fp);
fclose(fp2);/*关闭两个文件*/
fp2=fopen("bedl.txt","w");/*清空bed1.txt中的内容*/
fclose(fp2);
printf("按任意键返回\n");
getch();
returnTRUE;
}
else
printf(”按任意键返回\n");getch();
}
}
修改医护人员资料模块:
首先按要求输入要修改的医生的名字,判断确有此人以后便可
以针对该医生的编号、名字、年龄、工资和科目进行修改,以实现更全面的对于医生信息的管理。
实现本功能的程序代码如下:
/*函数名,修改医生资料*/
returnFALSE;
changemploy()
{
FILE*fp,*fp2;
charemployname[10],choice;
inti;
fp=fopen("employ.txt","r");
fp2=fopen("bedl.txt","w");
printf("请你输入要修改的医生的名字\n”);
scanf("%s",employname);
/*读取医生信息*/
for(i=0;fread(&employ[i],sizeof(structemploy),1,fp)!
=0;i++)
{
if(strcmp(employ[i].employname,employname)==0)/*若存在该医生,贝U执行修
改医生信息*/
printf("你所要修改的医生的资料如下,请选择你要修改的内容\n");
printf("<医生号:
%d医生名:
%s年龄:
%d性别:
%s科目:
%s工
资:
%d>\n",employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].empl
scanf("%s",&choice);
switch(choice)/*选择要修改的内容*/{
case'1':
{
printf("请输入新的医生号\n");
scanf("%d",&employ[i].employnum);
fwrite(&employ[i],sizeof(structemploy),1,fp2);
}
break;
case2:
{
printf(”请输入新的医生姓名\n");
scanf("%s",employ[i].employname);
fwrite(&employ[i],sizeof(structemploy),1,fp2);}
break;
case3:
{
printf("请输入新的年龄\n");
scanf("%d",&employ[i].employage);
fwrite(&employ[i],sizeof(structemploy),1,fp2);}
break;
case4:
{
printf("请输入新的医生工资\n");
scanf("%d",&employ[i].employtage);
fwrite(&employ[i],sizeof(structemploy),1,fp2);}
break;
case'5':
{
printf("请输入新的医生科目\n");
scanf("%s",employ[i].employleve);
fwrite(&employ[i],sizeof(structemploy),1,fp2);}
break;
case'0':
break;
default:
printf("没有这样的操作");
break;
}
continue;
}
fwrite(&employ[i],sizeof(structemploy),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("employ.txt","w");
fp2=fopen("bedl.txt","门;
for(i=0;fread(&employ[i],sizeof(structemploy),1,fp2)!
=0;i++)
{
fwrite(&employ[i],sizeof(structemploy),1,fp);/*将修改后的资料写入fp所指
向的文件中*/
}
fclose(fp);
fclose(fp2);
fp2=fopen("bedl.txt","w");/*清空文件中的信息*/
fclose(fp2);
printf("按任意键返回\n”);
getchar();
return;
}
在最后的医生统计功能模块中,主要是统计所有医生的信息,并列出医生的信息。
该功
能比较简单,所以函数也比较简单,代码相对较少。
如下:
employcount()/*医生信息统计*/
{
FILE*fp;
inti,n=0;
fp=fopen("employ.txt","r");/*以只读的方式打开文件employ.txt*/
for(i=0;fread(&employ[i],sizeof(structemploy),1,fp)!
=0;i++)/*读取医生信息*/
{
printf("第%d医生的信息如下:
\n医生号:
%d医生名:
%s年龄:
%d性别:
%s科目:
%s工
资:
%d>\n”,n+1,employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex,employ[i].employleve,employ[i].employtage);
n++;
}/*输出医生信息*/
fclose(fp);/*关闭文件*/
printf("目前共有%d个医生\n",n);
printf("按任意键返回\n");
}
整个管理系统模块大致就是以这样的模式进行的,在对病床和病人的管理都类似。
而主
菜单中的手续办理模块,在这里则不做详细的介绍。
只要输入病历号和所在病床号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 医院 管理 系统 设计 报告