1、医院候诊管理系统C+【附录一】源代码 HOSPITAL.CPP#includehospital.h#define Max 1000000 /最多支持的挂号的人数long renshu5= 0,0,0,0,0; /存放各科室人数long I=0; /数组下标long L=0;long Ghsr=0; /用于存放挂号的收入!using namespace std;struct Patient /定义患者结构体 char num6; /患者编号 char time8 = ; /挂号日期,初始化0 int sex = 0; /性别 1为男,2为女 int age = 0; /年龄 char room
2、= 0; /所挂号的科室 char jz4 = 否; /是否是急诊,默认值否 char zp; /专家门诊还是普通门诊 PMax,QMax; /最多存放1000000个struct Age /年龄段结构体 int e = 0; /儿童 enfant 1-14 int y = 0; /青年 young people 15-25 int m = 0; /中年 wrinkly 26-55 int o = 0; /老年 old folks 55以上;struct ghfl int drrs = 0; /当日号人数 int yyrs = 0; /预约人数 int jzrs = 0; /急诊人数 G;st
3、ruct Paixu /定义各科室就诊人数排序结构体 char name6; /科室名称 int money; /本科收入 struct Age a ; /Age 结构体类型的成元 J5; /一共5个科室void clear() system(cls); /清屏 system(date/t); /显示日期/-分科室函数-void hospital:room(char room) clear(); switch(room) case 1: renshu0+; couttnt请到第5就诊室!nnt您的前面还有 renshu0-1 人nnt; break; case 2: renshu1+; cou
4、ttnt请到第4就诊室!nnt您的前面还有 renshu1-1 人nnt; break; case 3: renshu2+; couttnt请到第3就诊室!nnt您的前面还有 renshu2-1 人nnt; break; case 4: renshu3+; couttnt请到第2就诊室!nnt您的前面还有 renshu3-1 人nnt; break; case 5: renshu4+; couttnt请到第1就诊室!nnt您的前面还有 renshu4-1 人nnt; break; /-挂当日号函数-int hospital:gdrh() char temp1000 = ; /为了避免输入多个字
5、符时会产生的错误 if(input() = -1) return 1; /如果在input里面选择了返回则返回 /tj(); /调用统计计算前面有几人 room(PI-1.room); /分科室 G.drrs+; /挂当日号人数+1 system(pause); /暂停 return 1;/-查看挂号人数函数-int hospital:ghrs() char temp100=; clear(); coutnnnttt各类挂号情况一览表n; cout t=n; cout nnt t挂当日号的人数为- G.drrs; cout nnt t挂预约号的人数为- G.yyrs; cout nnt t挂急
6、诊号的人数为- G.jzrs; cout nnnt=nt; system(pause); return(1);/-挂急诊号函数-int hospital:gjzh() if(-1 = input() return 1; /返回 clear(); /清屏 switch(PI-1.room) case 1: renshu0+; couttnt请到第1急诊室!nnt; break; case 2: renshu1+; couttnt请到第2急诊室!nnt; break; case 3: renshu2+; couttnt请到第3急诊室!nnt; break; case 4: renshu3+; co
7、uttnt请到第4急诊室!nnt; break; case 5: renshu4+; couttnt请到第5急诊室!nnt; break; G.jzrs+; /急诊号人数+1 strcpy( PI-1.jz,是); system(pause); return 1;/-查看挂号收入函数-int hospital:ghsr() int i=0; char temp100=; char temp1=/; clear(); coutnnnttt挂号情况一览表n; cout t=n; coutt今天的挂号费收入为: Ghsr 元; cout nt=n; for(i=0; i5; i+) coutnntJ
8、i.name的收入为: Ji.money ; cout nt=nt; system(pause); return(1);/-查看年龄比函数-int hospital:nlb() long sum5; int i; char temp100=; clear(); coutnnttt 各科室患者年龄层人数nn; couttt儿 童t 青 年t 中 年t 老 年t 总 和nn; couttt(1-14)t(15-25)t(26-55)t(56以上)(1-100)n; cout =nn; for(i=0; i5; i+) /求出各科室就诊的总人数 sumi=Ji.a.e+Ji.a.y+Ji.a.m+J
9、i.a.o ; for(i=0; i5; i+) cout tJi.nametJi.a.et Ji.a.yt Ji.a.mt Ji.a.ot sumi; coutnn; cout =nt; system(pause); return(1);/-查看各科就诊比例-int hospital:jzrs() int i=0; char temp100=; clear(); coutnnnttt各科就诊人数一览表n; cout t=; for(i=0; i5; i+) coutnnti+1. Ji.name的就诊人数为: renshui ; cout nt=nt; system(pause); retu
10、rn(1);/-挂号向导函数-int hospital:ghxd() clear(); /清屏 char gn, temp1000=; /为了避免输入多个字符时会产生的错误 cout nnttt=挂号向导=nn; cout tt以下仅供参考,如疑问请咨询医护人员!nn; cout t=科室=包含内容=nn ; cout t 内科tt呼吸,消化,泌尿,心脏,免疫,血液,内分泌,神经,肾,等nn; cout t 外科tt感染,心胸,肝胆,外伤,微创,普外,肛肠,整形,等nn; cout t 骨科tt骨折,骨质增生,风湿,关节,四肢,骨神经,等nn; cout t 口腔科t牙齿,牙龈,颌面,舌,淋巴
11、,口腔溃疡,等nn; cout t 皮肤科t癣类,疱疹,皮炎,皮肤瘙痒,癍类,痘类,等nn; cout t=nt; system(pause); return 1;/-预约挂号功能函数-inthospital:yygh()charstr_15,str_25,str50,gn;/保存系统时间与预约不同天数及系统时间intm=1,n=0;if(-1=input()return1;structtm*mytime;time_tLocalTime;LocalTime=time(NULL);mytime=localtime(&LocalTime);strftime(str,sizeof(str),%c,m
12、ytime);/接收系统当前时间,格式09/04/15doclear();if(m-n=0)coutnnn请挂当天号.nn;system(pause);return1;elsechardate8;intflag=1;while(flag=1)clear();memset(str_1,0,sizeof(str_1);memset(str_2,0,sizeof(str_2);cout=n;coutnt注意:预约挂号只能预约七天以内nnendl;coutdate;strcpy(PI.time,date);for(intj=0,r=0;j=0&(datej-0)=9)str_1r=strj;str_2
13、r=datej;r+;flag=0;elseflag=1;clear();cout7|m-n=0);coutnt请m-n天之后前来就诊,谢谢!nnt;/不同天数相减G.yyrs+;/预约挂号人数+1switch(PI-1.room)case1:renshu0+;break;case2:renshu1+;break;case3:renshu2+;break;case4:renshu3+;break;case5:renshu4+;break;QL.zp=PI-1.zp;QL.age=PI-1.age;strcpy(QL.jz,PI-1.jz);strcpy(QL.num,PI-1.num);QL.
14、room=PI-1.room;QL.sex=PI-1.sex;strcpy(QL.time,PI-1.time);L+;system(pause);return1; /-统计功能函数-void hospital:tj() long i=0,m; struct Paixu t; m=I; strcpy(J0.name,内科); /J结构体数组赋初值 strcpy(J1.name,外科); strcpy(J2.name,骨科); strcpy(J3.name,皮肤科); strcpy(J4.name,口腔科); for(i=0; i5; i+) /各科室各年龄段人数初值为0 Ji.a.e=0; J
15、i.money = 0; Ji.a.y=0; Ji.a.m=0; Ji.a.o=0; Ghsr = 0; for(i=0; im; i+) if(Pi.zp=Y)Ghsr+=10,JPi.room-1.money+=10; /统计挂号收入:专家 else if(Pi.zp = N) Ghsr+=5,JPi.room-1.money+=5; /统计挂号收入:普通 if (Pi.age=14) /统计各科室各年龄段人数 JPi.room-1.a.e+; else if (Pi.age =25) JPi.room-1.a.y+; else if(Pi.age =55) JPi.room-1.a.m+
16、; else JPi.room-1.a.o+; /-输入功能函数-int hospital:input() char room2=/,cls1=0,zp2,sex2,qr; int age2=0,i=0; char room11000=; char zp11000=; char sex11000=; char age11000=; char cls1000=; char temp6=; char temp16=; while(IMax) /重复输入记录 strcpy(room1,); strcpy(zp1,); strcpy(sex1,); strcpy(age1,); strcpy(cls,
17、); strcpy(temp,); strcpy(temp1,); room2=/; sex2=/; zp2=/; cls1=0; age2=0; qr=/; while(room2 5) & room2!=r ) clear(); coutnntttt请选择科室nn; cout nt=n; coutntt1.内科; couttt2.外科; couttt3.骨科nn; couttt4.皮肤科; coutt5.口腔科; couttr.返回!; cout nnt=n; coutroom1; /输入放在临时变量temp中 if (strlen(room1)=1) room2=tolower(room
18、10); if (room2=r) return(-1); while(zp2!=Y&zp2!=N) /选择专家门诊吗 clear(); coutzp1; if (strlen(zp1)=1) zp2=toupper(zp10); /变成大写,以避免系统区分大小写 while(sex2!=1&sex2!=2) /选择性别1为男,2为女 clear(); coutsex1; if (strlen(sex1)=1) sex2=sex10; while(age2150) /输入的年龄在1-150之间 clear(); coutage1; if (strlen(age1)=3) age2=atoi(a
19、ge1); /将字符型的age1转换成整型赋给age2; ltoa(I+1,temp,10); /计算当前患者编号 if(strlen(temp)6) for(i=0; i6-strlen(temp); i+) strcat(temp1,0); strcat(temp1,temp); / 输出患者信息以确认输入是否正确 while(cls1!=1&cls1!=2&cls1!=r) clear(); coutnnnttt您的输入的信息如下,请确认是否正确!nnnn; coutt编 号t 性 别t年 龄t所挂科室t专家门诊t挂号费nn; coutttemp1; /编号 if (sex2=1) co
20、utt 男; /性别 else if(sex2 =2) coutt 女; couttage2; /年龄 switch(room2) /科室 case 1: coutt内 科; break; case 2: coutt外 科; break; case 3: coutt骨 科; break; case 4: coutt皮肤科; break; case 5: coutt口腔科; break; if (zp2=Y) /是否为专家门诊 couttt 是; else couttt不 是; if (zp2=Y) /挂号费用 couttt10; else couttt5; coutnn=; coutnntt1
21、.重新填写!tt2.信息正确!; coutcls; if (strlen(cls)=1) cls1=tolower(cls0); /变为小写字母 if (cls1=2) PI.age =age2; PI.room=room2; strcpy(PI.num,temp1); PI.sex=sex2-0; PI.zp=zp2; I+; return 0; /重复输入记录(完)/-挂号功能菜单函数-int hospital:gh_menu() int qu5,i,fh; /qu数组用于接收返回值 i数值下标 fh返回的开关 char gn, temp1000=; /为了避免输入多个字符时会产生的错误,例:123,-2等等 /调用统计功能函数求出所需要的值 do /控制返回操作 for(i=0; i5; i+) qui=2; /返回时重新赋初值 fh=0; i=0; gn=0; strcpy(temp,); clear(); while(gn!=1&gn!=2&gn!=3&gn!=4&gn!=q&gn!=r) /只能输入1、2或者3 clear(); coutnnnttt=请选择您需要的功能=n; cout nt=