医院管理系统——病历管理子系统_第1页
医院管理系统——病历管理子系统_第2页
医院管理系统——病历管理子系统_第3页
医院管理系统——病历管理子系统_第4页
医院管理系统——病历管理子系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、 合肥学院计算机科学与技术系课程设计报告20072008学年第二期课程 程序设计语言课程设计名称医院管理系统病历管理子系统学生姓名夏 开 学号0804032036 专业班级网络工程(2)班 指导教师高玲玲 李红 2009年6月一、题目医院管理系统病历管理子系统。编写一个简单的病历管理程序,帮助管理病历信息。要求具有患者信息管理和病历信息管理的功能。其中患者信息管理包括患者基本信息的录入、删除和修改等功能。病历信息管理包括病历信息的录入,查看,删除,修改等功能。通过创建患者类和结构体病历来实现对信息的操作。二、问题分析编写一个简单的病历管理程序,帮助管理病历信息。要求具有患者信息管理和病历信息管

2、理的功能。其中患者信息管理包括患者基本信息的录入、删除和修改等功能。病历信息管理包括病历信息的录入,查看,删除,修改等功能。通过创建患者类和结构体病历来实现对信息的操作。1、创建患者类,每条患者信息都用该类来实现,包含姓名,年龄,性别,家庭住址等。用动态数组来存储患者信息。将这些类对象存储在数组元素中。通过对数组的操作来处理每个类对象。2、创建结构体病历,每条病历信息都用该结构体来实现,包含姓名,日期,科别,体检,处理等。三、算法设计我在设计程序时,一共设计了出了fun1( ); fun2( );fun3( );fun4( );fun5( );fun6( ) ;menu1 ( );menu2(

3、 )等8个子函数和一个主函数void main( )。设计出一个患者类包含姓名,年龄,性别,家庭住址等。用动态数组来存储患者信息。将这些类对象存储在数组元素中。通过对数组的操作来处理每个类对象。再创建一个结构体用于实行病历管理每条病历信息都用该结构体来实现,包含姓名,日期,科别,体检,处理等。在患者类中定义5个友元函数( fun1( ); fun2( );fun3( );fun4( ); fun5( );)。分别对患者进行输入、修改、查询、删除、输出的操作,再用一个子函数fun6( )实现病历管理实现6个功能(1、录入患者信息2、修改患者信息3、删除患者信息4、查看患者信息5、按姓名查寻患者病

4、历信息6、退出系统)。menu1 ( )函数是实现病历管理系统的主界面,menu2( )函数是实现病历管理系统的子界面。在主函数void main( )中分别实现对各个子函数的调用,从而实现病历管理系统。void main( ) 是该病历管理系统的主函数,使用了三个dowhile语句从而实现对各个子函数的调用及其他的操作主函数中定义了p和 w两个字符用于下面中字符输入,当if(p>='0'&&p<='6')系统输出“指令错误!请重新输入”在第二个dowhile语句中使用switch语句对6个子函数实行调用,和退出系统。当if(w!=&

5、#39;y'&&w!='n')系统会提示“指令错误!请重新输入”否则就用flag=1;表明已找到,当if(w= ='y')即输入y时系统会出现病历管理系统的主界面,当while(w= ='y')便会进循环操作中。fun1( )函数是输入患者信息子函数,在函数中定义姓名、性别、地址字符数组和年龄在dowhile语句实现对姓名、年龄、性别、地址进行输入,定义文件流对象,用“file<<" 姓名 "<<name<<" 性别 "<<sex<

6、;<"年龄"<<age <<" 地址 "<<address<<endl;”这种方法把信息输入文件中,file.close ( );用于关闭文件。si=new man(name, sex,age,address);动态产生对象数组。在dowhile中再加入一个dowhile语句实现输入指令,实现进行下一步操作。用flag=1表明找到,flag=0代表未找到。当(c= ='y')时会不断实现上述行为的。fun2( )函数是修改信息子函数,在函数中定义姓名、性别、地址字符数组和年龄用if语句

7、判断当i= =0时系统便会提示“管理系统中没有输入数据!”使用exit( 0 )退出系统。使用dowhile对函数进行修改操作,在dowhile嵌入for(int h=0;h<i;h+)循环语句其中h是记录要修改患者的位置,在for语句中加入if(strcmp(name,sh->name)=0)用于判断是否为要找的患者,flag=1用于说明已找到接下来就可以进行修改操作,如果if(flag= =0)则系统就会输出“您要修改的患者本来就不存在!请检查重新输入!”当if(c!='y'&&c!='n')系统就会提示“指令错误!请重新输入!”

8、如果当while(c= ='y')就会一直进行上面dowhile语句中的一切操作。 fun3( ) 函数是查询患者信息子函数,定义了姓名字符数组,if语句用于判断系统中是否具有原始数据,如果if (i= =0) 则系统会提示“管理系统中没有输入数据!”再使用exit(0)用于退出系统,dowhile语句中提示“请输入你要查询的患者姓名” “cin>>n”用于从键盘输入姓名。for(int j=0;j<i;j+)循环语句中j< i控制着循环的次数if(strcmp(n,sj->name)=0)用于判断是否为要找的患者。flag=1用于表明已找到在fo

9、r语句中实现输出“您要查询的患者是:” 如果 if(flag= =0) 系统会输出“对不起!您要查询的患者不存在!”换行输出“您想继续查询吗?(y/n):”以上的都是在for语句之内,if (c!='y'&&c!='n')在for语句之外,系统会输出“指令错误!请重新输入”这些会在while(c='y')是进行重复操作。;fun4( )函数是删除患者信息子函数,同以上的实现的步骤基本相同其删除功能主要是sh=sh+1用后者覆盖前者的方法进行删除,该函数中也用了dowhile中嵌套for语句在for语句中又嵌入dowhile和if语

10、句,以上一切操作也是在输入正确的指令后进行的即while(c='y')。fun5( )函数是输出患者信息子函数,如果 if(i= =0)则代表系统中没有输入的数据,系统便会显示“管理系统中没有输入数据”存在便会输出“本系统所有患者数据如下:”再使用for(int k=0;k<i;k+)循环语句,输出姓名,性别,年龄,地址。fun6( )函数是病历信息管理系统子函数,也是最为复杂的子函数,函数在while(q='y')时会重复操作的,在dowhile中调用menu2( )函数实行病历管理系统的子界面,系统出现“欢迎使用病历信息管理”,当if(x>=&#

11、39;0'&&x<='6')时就会进行相应的操作,如果x 超出范围就会出现“指令错误!请重新输入:”在这个dowhile语句中循环执行是当while(flag= =0)时,即未找到相应信息下。下一个dowhile语句中嵌入一个switch语句用于实行相应的操作,switch语句中含有6个case 语句分别实现1、输入病历信息,2、修改病历信息,3、删除病历信息,4输出病历信息,5、查找病历信息,6、退出这6个功能。在case '1'中系统提示“请输入病历信息数:”其中嵌入dowhile语句用于输入病历信息的,其中的for语句是用于输

12、入患者信息的和把患者的信息从文件中输出,在dowhile语句嵌入dowhile语句用于当输入指令错误时的处理。case '2'语句用于修改病历信息的,使用dowhile语句用于输入需要修改病历信息的患者的姓名,科别。使用了三个for语句分别用于想文件中输入信息,修改相应患者信息和从文件中输出信息。如果当if(flag= =0)时系统就会提示“您要修改的患者本来就不存在!请检查重新输入!”“想继续修改吗(y/n)”当 if(q!='y'&&q!='n') 系统就会提示“指令错误!请重新输入!”case '3':语句用

13、于删除病历信息 使用dowhile语句进行操作,系统提示“请输入需要删除病历信息的患者的姓名,科别:”使用for语句进行信息输入文件,如果当if(strcmp(name,)= =0&&strcmp(kebie,pi.kebie)= =0)用 flag=1表示已找到 ,使用 w- -用于减少内存空间。下一个dowhile语句是对信息的删除。使用的方法是使用下一个数据信息来覆盖上一个信息从而实现删除效果即pi=pi+1。使用for语句进行对文件的输出,当if(flag= =0)系统提示“您要删除的患者本来就不存在!请检查重新输入!”“想继续删除吗(y/n)”当if(q

14、!='y'&&q!='n') 系统提示“指令错误!请重新输入!”以上重复循环是当while(q='y')时。case '4'用于输出病历信息,当if(i= =0)系统提示“管理系统中没有输入数据”输出姓名,日期,科别,体检,处理情况的患者信息。for语句用于把信息存入文件。case '5': 用于查找病历信息,使用dowhile语句实现查找病历信息for语句用于把信息存入文件和 输出病历信息。if(flag= =0)系统输出“您要查寻的患者本来就不存在!请检查重新输入!“想继续删除吗(y/n)“。

15、if(q!='y'&&q!='n')”指令错误!请重新输入!”当while(q= ='y')时会重复上述操作,case'6':用于退出系统,会显示出“谢谢您的使用,再见”。在函数中有if(q= ='y')语句用于提示用户输入相应的代码。menu1 ( )函数是医院管理系统的主界面,输出用户操作的提示“欢迎使用医院管理系统 1、输入患者信息2、修改患者信息3、按姓名查询患者信息4、删除患者信息5、输出所有患者信息6、病历信息管理7、退出系统。请输入您的选择:”menu2( )函数是病历系统管理的子界面

16、,输出提示用户的信息“请输入操作代码:1、录入病历信息 2、修改病历信息 3、删除病历信息 4、查看病历信息 ,5、按姓名查寻患者病历信息”。 感想:学校给我们安排了本次课程设计,目的是加深我们对C+课程理论知识的理解,提高实际应用能力;培养我们树立理论联系实际的工作作风、严肃认真的科学态度;进一步训练和提高我们的分析设计能力、理论计算能力、实验研究能力、外文阅读、查阅文献资料和文字表达等基本技能;培养我们独立分析、解决实际问题的能力,培养我们的创新意识和创新能力。在本次课程设计中给我最大的感受就是辅导教师的严谨作风与同学之间互帮互助的精神。在本次课程设计中我的分析设计能力有了很大的改观,独立

17、分析能力也有所提高。在本次课程设计中我也体会到了团结互助的重要性,在以后的工作与学习中也应该学会团结互助,学会利用一切可以利用的资源,努力提高自己的科学文化等各个方面的素质,为以后的发展做好准备。感谢学校安排了这次C+课程设计,让我受益匪浅!四、调试过程我在调试程序中的修改信息的子函数void fun2( )时,一开始使用strcpy(sh->sex,sex); strcpy(sh->age,age)对性别与年龄进行修改,调试时出现一个错误,error C2664: 'strcpy' : cannot convert parameter 1 from 'in

18、t' to 'char *,我才知道原来年龄我定义成整型,不能采用这种覆盖的方式进行修改。这种方式这能对字符型进行修改,整型应采用复制法进行修改即:sh->age=age.在fun6( )函数中使用的switch语句中的case语句,一开始我使用的例如case 1,虽然在调试中无错误,但是在在运行时,它所对应的录入患者信息操作就不能操作了,在同学的指导下我知道自己在函数定义中把switch语句中从键盘输入的是字符,必须使用字符号才行,即把case 1改为case '1'。五、测试过程需要改进的地方:1、考虑同名的情况时,我采用的是让用户同时输入患者的姓名与

19、科别,用科别来避免同名情况,未在深入思考,假使两患者的姓名与科别都一样的话,那么该程序对待同名效果就失败了,这一点需要改进。2、在主界面时,当输入除了1之外输入任何的代码都会出现“管理系统中没有输入数据,press any key to continue”!程序中不会出现“想进行其他操作吗?”,这一点也需修改。六、参考书目1 郑莉.C+语言程序设计(第三版).北京:清华大学出版社,2004七、附录程序源代码:#include<iostream>#include<fstream>#include<stdlib.h>using namespace std;sta

20、tic int i=0;static int j=0; int flag=0; class man /定义患者类 private: char name20; char sex20, address20; int age; public: man() man(char n20,char s20,int ag, char a20 ) strcpy(name,n); strcpy(sex,s); age=ag; strcpy(address,a); friend void fun1(); /声明友元函数 friend void fun2(); friend void fun3(); friend v

21、oid fun4(); friend void fun5(); static man *s50; /静态对象数组类struct people / 定义患者病历结构体 char name20, date20, kebie20, tijian20, chuli20;p100;void menu1 () /主界面cout<<" 欢迎使用医院管理系统 "<<endl;cout<<"1.- 输入患者信息"<<endl;cout<<"2 - 修改患者信息"<<endl;cou

22、t<<"3 - 按姓名查询患者信息"<<endl;cout<<"4 - 删除患者信息"<<endl;cout<<"5 - 输出所有患者信息"<<endl;cout<<"6 - 病历信息管理"<<endl;cout<<"7 - 退出系统"<<endl;cout<<endl;cout<<"请输入您的选择:"void menu2() /子界

23、面cout<<" 欢迎使用病历信息管理 "<<endl; cout<<endl;cout<<" 请输入操作代码:1 录入病历信息 "<<endl;cout<<" 2 修改病历信息 "<<endl;cout<<" 3 删除病历信息 "<<endl;cout<<" 4 查看病历信息 "<<endl;cout<<" 5 按姓名查寻患者病历信息 &qu

24、ot;<<endl;void fun1() /输入患者信息的子函数 char c; char name20;int age;char sex20 ;char address20; do cout<<" 请输入姓名:" cin>>name; cout<<" 请输入性别:" cin>>sex; cout<<" 请输入年龄:" cin>>age; cout<<" 请输入地址:" cin>>address; cout

25、<<endl; ofstream file("333.txt" ,ios:app ); /定义文件流对象 file<<" 姓名 "<<name<<" 性别 "<<sex<<"年龄"<<age /向文件中输入信息 <<" 地址 "<<address<<endl; file.close (); si=new man(name, sex,age,address); /动态产生对象数组

26、 i+; /给动态数组分配空间 cout<<" 数据输入成功,想继续输入吗(y/n):" cin>>c; cout<<endl; do if(c!='y'&&c!='n') cout<<" 指令错误!请重新输入!"<<endl<<" " cin>>c; else flag=1; while(flag=0); while(c='y'); void fun2() /修改信息的子函数 char

27、name20;char sex10;char address20 ;int age; char c; if(i=0) cout<<" 管理系统中没有输入数据!"<<endl; exit(0); /退出修改函数 ; do cout<<" 请输入您要修改的患者的姓名:" cin>>name; cout<<endl; for(int h=0;h<i;h+) /h记录要修改患者的位置 if(strcmp(name,sh->name)=0) /用于判断是否为要找的患者 flag=1; / 用于

28、表明已找到 cout<<"请输入修改后的姓名:" cin>>name; cout<<" 请输入性别:" cin>>sex; cout<<endl<<" 请输入年龄:" cin>>age; cout<<endl<<" 请输入地址:" cin>>address; cout<<endl; strcpy(sh->name,name); strcpy(sh->sex,sex); sh

29、->age=age; strcpy(sh->address,address); cout<<" 数据修改成功!"<<endl; if(flag=0) cout<<" 您要修改的患者本来就不存在!请检查重新输入!"<<endl; cout<<" 想继续修改吗(y/n):" cin>>c; cout<<endl; if(c!='y'&&c!='n') cout<<" 指令错误

30、!请重新输入!"<<endl<<" " cin>>c; while(c='y'); void fun3() /查询患者信息的子函数 char n20;int j=0;char c; if(i=0) cout<<" 管理系统中没有输入数据!"<<endl; exit(0); do int flag=0; cout<<" 请输入你要查询的患者姓名:" cin>>n; cout<<endl; for(int j=0;j&

31、lt;i;j+) if(strcmp(n,sj->name)=0)/用于判断是否为要找的患者 flag=1; / 用于表明已找到 cout<<" 您要查询的患者是:"<<(*sj).name<<endl; cout<<(*sj).name<<"的信息是: "<<" 性别 "<<(*sj).sex <<" 年龄: "<<(*sj).age<<" 地址:"<<(*

32、sj).address<<endl; if(flag=0) cout<<" 对不起!您要查询的患者不存在!"<<endl; cout<<" 您想继续查询吗?(y/n):" cin>>c; cout<<endl; if(c!='y'&&c!='n') cout<<" 指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); void fun4

33、() /删除患者信息的子函数 char name20;char c;int age;if(i=0) cout<<" 管理系统中没有输入数据!"<<endl;exit(0); do int flag=0;cout<<"请输入要删除患者信息的 姓名,年龄:" cin>>name>>age;for(int h=0;h<i;h+) if(strcmp(sh->name,name)=0&& sh->age=age) flag=1; i-; do sh=sh+1; /用后者

34、覆盖前者的方法进行删除 h+; while(h<=i); if(flag=0) cout<<" 您要删除的患者本来就不存在!请检查重新输入!"<<endl; cout<<" 想继续删除吗(y/n):" cin>>c; cout<<endl;if(c!='y'&&c!='n') cout<<" 指令错误!请重新输入!"<<endl<<" " cin>>c;

35、while(c='y') ;void fun5() /输出患者信息 cout<<" 本系统所有患者数据如下:"<<endl; if(i=0) cout<<" 管理系统中没有输入数据!"<<endl;for(int k=0;k<i;k+)cout<<sk->name<<sk->sex <<(*sk).age<<(*sk).address<<endl; void fun6() /病历信息管理系统 char x,q;in

36、t n;do menu2(); cin>>x; if(x>='0'&&x<='6') flag=1; else cout<<" 指令错误!请重新输入:"<<endl; while(flag=0);do switch(x) case '1': /输入病历信息cout<<"请输入病历信息数:"cin>>n;do ofstream f1("33.txt",ios:app); /定义文件流对象 for(int

37、 i=0;i<n;i+) cout<<"请输入患者姓名:" cin>>; cout<<"请输入患者日期:" cin>>pi.date; cout<<"请输入患者科别:" cin>>pi.kebie; cout<<"请输入患者体检:" cin>>pi.tijian; cout<<"请输入患者处理情况:" cin>>pi.chuli; f1<<pi.

38、name<<"t"<<pi.date<<"tt"<<pi.kebie<<"t"<<pi.tijian <<"t"<<pi.chuli<<endl; f1.close();cout<<" 数据输入成功,想继续输入吗(y/n):" cin>>q; cout<<endl; do if(q!='y'&&q!='n'

39、) cout<<" 指令错误!请重新输入!"<<endl<<" " cin>>q; else flag=1; while(flag=0); while(q='y'); ; break;case '2': /修改病历信息char name20, date20, kebie20, tijian20, chuli20;do int flag=0;cout<<"请输入需要修改病历信息的患者的姓名,科别:"<<endl;cin>>

40、name>>kebie;ifstream f6("33.txt");/输入文件流 for( i=0;i<10;i+) f6>>>>pi.date>>pi.kebie>>pi.tijian>>pi.chuli; for(int i=0;i<10;i+)if(strcmp(,name)=0&&strcmp(pi.kebie,kebie)=0) flag=1; cout<<"请输入患者姓名:" cin>>pi.

41、name; cout<<"请输入患者日期:" cin>>pi.date; cout<<"请输入患者科别:" cin>>pi.kebie; cout<<"请输入患者体检:" cin>>pi.tijian; cout<<"请输入患者处理情况:" cin>>pi.chuli;strcmp(,name); strcmp(pi.date,date);strcmp(pi.kebie,kebie);strcmp(pi.t

42、ijian,tijian);strcmp(pi.chuli,chuli);f6.close();ofstream f5("33.txt",ios:out); /输出文件流for(i=0;i<10;i+)f5<<<<"t"<<pi.date<<"tt"<<pi.kebie<<"t"<<pi.tijian <<"t"<<pi.chuli<<endl;cout&l

43、t;<<<"t"<<pi.date<<"tt"<<pi.kebie<<"t"<<pi.tijian <<"t"<<pi.chuli<<endl;f5.close();cout<<"数据修改成功" if(flag=0) cout<<" 您要修改的患者本来就不存在!请检查重新输入!"<<endl; cout<&l

44、t;" 想继续修改吗(y/n):" cin>>q; cout<<endl; if(q!='y'&&q!='n') cout<<" 指令错误!请重新输入!"<<endl<<" " cin>>q; while(q='y'); ;break;case '3': /删除病历信息 char name10,kebie10;int w=10; do int flag=0; cout<<&

45、quot;请输入需要删除病历信息的患者的姓名,科别:"<<endl;cin>>name>>kebie;ifstream f7("33.txt"); for( i=0;i<10;i+) f7>>>>pi.date>>pi.kebie>>pi.tijian>>pi.chuli; for( i=0;i<10;i+) if(strcmp(name,)=0&&strcmp(kebie,pi.kebie)=0) flag=1;

46、 w-;do pi=pi+1; /*(strcmp(pi.date,pi+1.date); strcmp(pi.kebie,pi+1.kebie); strcmp(pi.tijian,pi+1.tijian); strcmp(pi.chuli,pi+1.chuli);)*/i+; while(i<=w);f7.close(); ofstream f5("33.txt",ios:out); for(i=0;i<10;i+)f5<<<<"t"<<pi.date<<"tt&qu

47、ot;<<pi.kebie<<"t"<<pi.tijian <<"t"<<pi.chuli<<endl;cout<<<<"t"<<pi.date<<"tt"<<pi.kebie<<"t"<<pi.tijian <<"t"<<pi.chuli<<endl;f5.close()

48、; if(flag=0) cout<<" 您要删除的患者本来就不存在!请检查重新输入!"<<endl; cout<<" 想继续删除吗(y/n):" cin>>q; cout<<endl; if(q!='y'&&q!='n') cout<<" 指令错误!请重新输入!"<<endl<<" " cin>>q; while(q='y') ; ;break

49、;case '4': /输出病历信息 if(i=0) cout<<" 管理系统中没有输入数据!"<<endl; ifstream f2("33.txt"); cout<<"姓名"<<"t"<<"日期"<<"tt"<<"科别"<<"t"<<"体检"<<"t"<

50、<"处理情况"<<endl;for(int i=0;i<10;i+) f2>>>>pi.date>>pi.kebie>>pi.tijian>>pi.chuli;cout<<<<"t"<<pi.date<<"t"<<pi.kebie<<"t"<<pi.tijian<<"t"<<pi

51、.chuli<<endl;f2.close(); break;case '5': /查找病历信息 char name10,kebie10; do int flag=0; cout<<"请输入需要查找病历信息的患者的姓名,科别:"<<endl;cin>>name>>kebie;ifstream f9("33.txt"); for( i=0;i<10;i+) f9>>>>pi.date>>pi.kebie>>pi.t

52、ijian>>pi.chuli; for( i=0;i<10;i+)if(strcmp(name,)=0&&strcmp(kebie,pi.kebie)=0) flag=1;cout<<"病历信息如下 姓名,日期,科别,体检,处理情况:"<<endl;cout<<<<" "<<pi.date<<" "<<pi.kebie<<" "<<pi.tijian<<" "<<pi.chuli; f9.close(); if(flag=0) cout<<" 您要查寻的患者本来就不存在!请检查重新输入!"<<endl; cout<<" 想继续删除吗(y/n):" cin>>q; cout<<endl; if(q!='y'&&q!='n') cout<<

温馨提示

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

评论

0/150

提交评论