医院管理系统设计报告_第1页
医院管理系统设计报告_第2页
医院管理系统设计报告_第3页
医院管理系统设计报告_第4页
医院管理系统设计报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、医院管理系统设计 2011年7月20日C语言课程设计报告机房名称 逸夫楼804 时 间 2011年7月11日至7月22日 学 院 计算机与通信工程学院 专业班级 信息1010 姓 名 蔺云雷 樊晓灿 倪森 学 号 41050300 41050302 41050295 指导教师 刘莲英 l 医院管理系统设计报告经过一个学期的学习,我们对C语言及应用已有了初步了解。在本次课程设计中,我们又将其理论与实践相结合,在实践中巩固我们已有的理论知识,同时在实践中不断学习新的知识,从而增强自身的软件设计的能力。在本次的课程设计中,通过我们三个人的共同努力,以及同学老师的帮助,我们最终顺利完成了任务。但我们并

2、没有单纯的把它当做一个任务来做,我们本着巩固知识,不断学习的目的来完成本次的课程设计。本次课程设计总结如下:一、 问题的提出 1.1开发背景当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。而医院信息管理系统则是这类信息管理系统的最佳体现,对于我们这类具有实验性质的实践项目来说是最合适不过的了。随着计算

3、机技术的发展以及计算机网络的逐渐普及,英特网成为人们查找信息的重要场所。二十一世纪是信息的时代,所以信息的交换和信息流通显得特别重要。因此,医院场所使用计算机来管理成为必然。医院作为一种服务性机构,需要统计和保存的病人及医生资料繁多,包含很多的信息数据的管理,现今,有很多的小型医院都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于病人的住院情况(如住院天数、病历保存的天数)的统计和核实等往往采用对病历号的人工检查进行,大量应用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。

4、总的来说,缺乏系统,规范的信息管理手段。尽管有的医院有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。部分小型医院采取手工方式对病人住院情况进行人工管理,由于信息比较多,对病人管理工作混乱而又复杂;一般住院情况只记录在病人的病历本上,病床的相关资料在文件中,医院的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的住院信息进行更改就更加困难了。 基于这众多的问题,有必要建立一个医院管理系统,使医院管理工

5、作规范化,系统化,程序化,避免医院管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改病人住院及出院情况。建立管理信息系统是一个很好的解决办法,因为随着社会生产力的迅速发展和科学技术的突飞猛进,一个集计算机技术、通迅技术、数据库技术、信息技术、现代管理理论为一体的系统开发方法已经逐渐成熟,我们完全能够结合自己的实际情况开发出实用的管理信息系统,来指导我们的学习。为此,我们组经讨论后一致决定在不与其他小组撞车的前提下通过自主开发这一医院信息管理系统,达到为医护人员减轻负担,为患者提供方便,从而提高医院工作效率的目的。1.2 开发工具本系统主要利用vc+6.0作前端的应用开发

6、工具,利用c语言实现相应的功能,利用WindowsXP作为系统平台。1.3系统运行环境本系统的运行环境是中文版win32平台上运行。二、 功能需求分析主函数为程序的核心,调用前面15个函数,我们把函数都进行了分组,主界面调用1查询系统,2管理系统,3手续办理系统。其中:1查询系统直接调用查询函数(chaxun),对病人信息及住院信息进行查询。2管理系统为医院的核心,它记录了医院所有人员的相关信息,它分为病床管理系统,医生管理系统和病人管理系统,分别调用相应的函数其中病床管理系统为医院病床信息的统计,它分为增加病床(addbed),去掉病床(deibed),修改病床资料(changebed),病

7、床统计(bedcount)四个函数; 医生管理系统为医院病床信息的统计,它分为增加医护人员(addemploy),删除医护人员(delemploy),修改医护人员资料(changeemploy),医护人员统计(employcount) 四个函数; 病人管理系统为医院病人信息的统计,它分为申请新病例(addpatient),删除老病例(delpatient),住院情况统计(zhuyuancount),病历号统计(patientcount) 四个函数.查询系统管理系统手续办理住院手续办理出院手续办理查询病人信息查询住院信息 主菜单3手续办理系统为病人而设立,分为住院手续办理(zhuyuan)和出院

8、手续办理(chuyuan),是病人住院信息的载体.具体的功能模块图如下:管理系统病床管理系统增加病床删除病床修改病床资料病床统计病床数量量统计医生管理系统增加医护人员删除医护人员修改医护人员资料医护人员统计病人管理系统申请新病历删除病历 住院次数统计病历统计小型医院信息管理系统需实现功能:力求通过本系统,实现以下要求1 对医生的个人资料进行编辑,查询病床的占用情况从而更有利于系统工作人员掌握病床的信息。2 对病人的病历信息、住院信息进行编辑、查询,并且查询病历的基本情况。3 管理人员对医院工作人员及病床的信息进行添加和删除。目标:A. 通过数字化,使医院工作所需人力减少;B. 提高医院信息管理

9、系统的响应速度;C. 加快相关信息的流动速度,提高效率;D. 通过实际的工程实践,使我们对数据库的认识水平提高,完成课程要求。可行性分析:开发上的可能性:介于管理系统相比之下只需调用函数,读取,记录,保存文件的相关操作即可,制作过程不算过于复杂,属于我组人员水平范围之内,研究过程中不会遇到解决不了的困难,因此此课题的的开发是完全可行的操作上的可能性:考虑到医院的工作人员部分电脑水平有限,因此我小组在制作程序时,尽量把整个操作界面控制的一目了然,相关链接符合逻辑结构思维,操作起来容易上手,一看就懂,不用在学习操作上下太大功夫,因此,应该会受广大医院欢迎管理上的可行性 这个开发是我们作为数据库课程

10、实践的一项应用工程,任课老师对此十分的重视.希望在课程规定时间内将该数据库系统开发出来,当然如能投入使用更好,以使我们在巩固课堂所学理论知识的基础上对实践有所了解,对医院管理的数字化及现代化能起到一些创新促进作用。虽然如今一些大型的医院管理系统基本上已经很先进了,但作为信息管理系统的代表,这次的小型医院信息管理系统的开发对本科学生数据库理论的实践还是有一定帮助的,因此这个系统在管理上是可行的。三、总体设计流程图如下:032NY0213121021主菜单选择操作类型查询系统选择查询查询住院信息查询病人信息输入病历号管理系统选择管理病床管理系统病人管理系统手续办理住院手续办理出院手续办理开始输入用

11、户名和密码判断是否正确选择操作医生管理系统结束0从主函数开始,进入主界面,首先是选择要进行的操作,包括查询系统,管理系统和手续办理系统。若选择查询系统,则要首先输入要查询病人的病历号,由于要查询的文件是关联的,则还要选择具体要查询的信息(住院信息/病人信息),也可以从此子菜单里直接返回主菜单。若选择管理系统,则可以对病床,医生和病人的信息进行添加,删除和修改以及统计等操作。从三个子管理系统都可以返回管理系统界面,进而回到主菜单。手续办理系统包括住院手续和出院手续的办理,从手续办理界面和办理子菜单都可以直接返回主菜单。再从主菜单退出系统。整个系统大致就是这样的流程。四.详细设计本系统主要利用在主

12、函数中调用各个函数来实现系统的主要功能,在三个子系统(查询系统、管理系统、住院手续)中都可以再次调用其相关的函数。(1)、在查询系统中,通过switch 语句,选择要查询的信息,选择“1”则进入查询住院信息,选择“2”则进入查询病人信息,选择“0”则退出查询系统。其函数代码如下: chaxun()/*进入查询系统*/ char ch5;int patientnum,ture,i,n=0;FILE *fp,*fp2; /*定义指针变量*/fp=fopen(patient.txt,r); /*将fp指针指向以只读方式打开的patient.txt文件*/printf(请输入你要查找的病历号n); s

13、canf(%d,&patientnum);for(i=0;fread(&patienti,sizeof(struct patient),1,fp)!=0;i+) /*判断是否存在相应的病历号*/if(patientnum=patienti.patientnum) /*判断存在病历号*/do printf(n);printf(n);printf(n);printf(tt -欢迎进入查询系统!-n);printf(tt 1: n); printf(tt 2: n); printf(tt 0: n); printf(tt -n);printf( 请输入0-2,其他输入非法! ); scanf(%s,

14、&ch5); switch(ch5) case 1:fclose(fp); fp2=fopen(record.txt,r );for(i=0;fread(&zhuyuani,sizeof(struct zhuyuan),1,fp2)!=0;i+)if(zhuyuani.patientnum=patientnum)printf(病历号:%d,病床号:%s,病床高度:%d,病床等级:%d,是否能调节高度(1表示能2表示不能):%dn,zhuyuani.patientnum,zhuyuani.lendbook,zhuyuani.bedh,zhuyuani.bednum,zhuyuani.bedor)

15、;printf(按任意键返回:n);getch();fclose(fp2); return FALSE; fclose(fp2); return FALSE;break; case 2: printf(第%d个病人的病例号:%d 姓名:%s 年龄:%d 性别:%s 患病类型:%s 电话号码:%sn,n+1,patienti.patientnum,patienti.patientname,patienti.patientclass,patienti.patientsex,patienti.patientleve,patienti.patienttage); fclose(fp);printf(按

16、任意键返回:n);getch();break;case 0:break; default:printf(无此操作n); getch();break; while(ch5!=0);return FALSE; return FALSE;printf(没有你要查找的病历号);fclose(fp); return FALSE;(2)、在管理系统中,同样是利用switch语句来选择要进行的管理操作,由于可以针对病床、医生、病人进行管理,则将管理系统又分成了三个模块,并对每一个子管理模块分成了4个操作功能,由于这三个子管理模块的功能基本相同,在这里只列出医生管理模块的相应的功能,其他模块的可参照上面的模块

17、图。在医生管理部分,包括增加医护人员、删除医护人员、修改医护人员资料、医护人员统计几个部分,增加医护人员可以新增医护人员,同时添加关于医生的编号、医生的姓名、医生的年龄、医生的性别、医生的科目和医生的工资。要实现此功能,主要依靠以下的函数:addemploy() /*函数名,增加医生信息*/ FILE *fp; /*定义一个文件指针*/char choice=y; /*定义字符常量,用于下面的判断*/int i=1; fp=fopen(employ.txt,a+); /*将指针指向文件employ.txt*/while(choice=y|choice=Y) /*使用循环语句,当确定要输入医生信

18、息时,执行循环体*/ printf(请你输入医生号码n); /*输入对应的医生信息*/scanf(%d,&employi.employnum); printf(请你输入医生名n); scanf(%s,employi.employname); printf(请输入医生年龄n); scanf(%d,&employi.employage); printf(请你输入性别n); scanf(%s,employi.employsex); printf(请你输入医生的科目n); scanf(%s,employi.employleve); printf(请输入医生的工资n); scanf(%d,&employ

19、i.employtage); fwrite(&employi,sizeof(struct employ),1,fp); /*将医生的信息写入fp对应的文件中*/printf(是否要输入下个医生信息?n); scanf(%s,&choice); printf(按任意键返回n); fclose(fp); /*关闭文件*/在删除医生信息模块,可以将没用的医生信息删除,以节省空间,也更便于医生信息的管理。只要输入要删除的医生姓名,即可自动弹出提醒语句,提醒操作者是否真的要删除该医生的信息,只要选择“y”即可完成删除操作。具体的程序代码如下:delemploy() /*函数名,删除医生信息*/ FILE

20、 *fp,*fp2; /*定义文件指针,用于对文件的操作*/int i; char employname10,choice; fp=fopen(employ.txt,r); fp2=fopen(bedl.txt,w); printf(请输入你要删除的医生名n); printf(如果你输入的医生存在,系统自动删除该信息!如果不存在,系统不做任何改动n); scanf(%s,employname); for(i=0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) /*读取医生的信息*/ if(strcmp(employname,employi.e

21、mployname)!=0) /*判断是否存在该医生的信息,若存在,则执行语句A*/ fwrite(&employi,sizeof(struct employ),1,fp2); /*将医生的信息写到fp2所指向的文件中*/ fclose(fp); fclose(fp2); printf(是否真的要删除该医生信息?删除后的所有信息将无法恢复Y/Nn); scanf(%s,&choice); /*提醒操作者是否真的要执行删除操作*/if(choice=y|choice=Y) fp=fopen(employ.txt,w); /*清空employ.txt中的信息*/fp2=fopen(bedl.txt

22、,r); /*以只读的方式打开fp2所指向的文件bed1.txt*/for(i=0;fread(&employi,sizeof(struct employ),1,fp2)!=0;i+) fwrite(&employi,sizeof(struct employ),1,fp); /*读取fp2的信息,写入fp中*/ fclose(fp); fclose(fp2); /*关闭两个文件*/fp2=fopen(bedl.txt,w); /*清空bed1.txt中的内容*/fclose(fp2); printf(按任意键返回n); getch(); return TRUE; else printf(按任意

23、键返回n); getch(); return FALSE; 修改医护人员资料模块:首先按要求输入要修改的医生的名字,判断确有此人以后便可以针对该医生的编号、名字、年龄、工资和科目进行修改,以实现更全面的对于医生信息的管理。实现本功能的程序代码如下:changemploy() /* 函数名,修改医生资料*/ FILE *fp,*fp2; char employname10,choice;int i; fp=fopen(employ.txt,r); fp2=fopen(bedl.txt,w); printf(请你输入要修改的医生的名字n); scanf(%s,employname); for(i=

24、0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) /*读取医生信息*/ if(strcmp(employi.employname,employname)=0) /*若存在该医生,则执行修改医生信息*/ printf(你所要修改的医生的资料如下,请选择你要修改的内容n); printf(n,employi.employnum,employi.employname,employi.employage,employi.employsex,employi.employleve,employi.employtage); printf( 1:修改医生号

25、n); printf( 2:修改医生名n); printf( 3:修改医生年龄n); printf( 4:修改医生工资n); printf( 5:修改医生科目n); printf( 0:返回n);printf( 请输入0-5,:); scanf(%s,&choice); switch(choice) /*选择要修改的内容*/ case 1: printf(请输入新的医生号n); scanf(%d,&employi.employnum); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 2: printf(请输入新的医生姓名n)

26、; scanf(%s,employi.employname); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 3: printf(请输入新的年龄n); scanf(%d,&employi.employage); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 4: printf(请输入新的医生工资n); scanf(%d,&employi.employtage); fwrite(&employi,sizeof(struct employ),1,fp2); b

27、reak; case 5: printf(请输入新的医生科目n); scanf(%s,employi.employleve); fwrite(&employi,sizeof(struct employ),1,fp2); break;case 0:break;default:printf(没有这样的操作); break; continue; fwrite(&employi,sizeof(struct employ),1,fp2); fclose(fp); fclose(fp2); fp=fopen(employ.txt,w); fp2=fopen(bedl.txt,r); for(i=0;fre

28、ad(&employi,sizeof(struct employ),1,fp2)!=0;i+) fwrite(&employi,sizeof(struct employ),1,fp); /*将修改后的资料写入fp所指向的文件中*/ fclose(fp); fclose(fp2); fp2=fopen(bedl.txt,w); /*清空文件中的信息*/fclose(fp2); printf(按任意键返回n); getchar(); return; 在最后的医生统计功能模块中,主要是统计所有医生的信息,并列出医生的信息。该功能比较简单,所以函数也比较简单,代码相对较少。如下:employcount

29、() /*医生信息统计*/ FILE *fp; int i,n=0; fp=fopen(employ.txt,r); /*以只读的方式打开文件employ.txt*/for(i=0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) /*读取医生信息*/ printf(第%d医生的信息如下:n医生号:%d 医生名:%s 年龄:%d 性别:%s 科目:%s 工资:%dn,n+1,employi.employnum,employi.employname,employi.employage,employi.employsex,employi.emplo

30、yleve,employi.employtage); n+; /*输出医生信息*/fclose(fp); /*关闭文件*/printf(目前共有%d个医生n,n); printf(按任意键返回n); 整个管理系统模块大致就是以这样的模式进行的,在对病床和病人的管理都类似。而主菜单中的手续办理模块,在这里则不做详细的介绍。只要输入病历号和所在病床号即可完成手续的办理。五程序运行相关界面及简介第 19 页 共 19 页 1.运行程序进入登陆界面2,输入密码进入程序开始界面3输入1进入查询系统界面4输入1进行住院信息查询5输入2进行病人信息查询6在主界面输入2进入管理系统7在管理界面输入1进入.病床

31、管理系统8.在管理界面输入2进入医生管理系统9.在管理界面输入3进入病人管理系统10在主界面输入3进入手续办理系统11.在手续办理面界面输入1进入住院手续办理系统12. 在手续办理面界面输入2进入出院手续办理系统13.在主界面输入0进入退出系统六.程序运行测试及遇到问题的解决方案 1.在修改病床信息系统的设计中,刚开始我们想把数据直接在储存的文件中修改,后来发现这种状态下的修改会导致数据的丢失,然后我们就新建了一个文本来储存数据,将修改后的数据储存在这个新建的文件中,然后再把原先那文件中的数据清空,最后再把修改后的数据复制到原先的文件中。 2.在设计程序的循环问题的设计中,我们刚开始想了许多的办法,要使程序运行时能将文件中的数据读取一遍,大家都知道要使用for语句,可是在语句的第二条的主要问题上始终无法想出办法,最后通过查阅书本,我们在一个程序发现了一个语句,解决了这样问题,使得文件能够完全读取。 3.在查询系统的设计中,本来我们是想直接输出数据,但老师要求需要两个文件关联起来,这样我们这样就不符合要要求了,后来我们想出,新建一个结构体,这样我们在进行住院手续办理的时候,将住院那个人的一些信息通过这个新的结构体储存,这样就能再查询的时候通过这个新建的结构体进行查询,去除了无法关联的问题。 4.在系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论