1、附录一】源代码 #include"hospital。h” #define Max 1000000 //最多支持的挂号的人数 long renshu[5]= {0,0,0,0,0}; //存放各科室人数 long I=0; //数组下标 long L=0; long Ghsr=0; //用于存放挂号的收入! using namespace std; struct Patient //定义患者结构体 { char num[6]; //患者编号
2、 char time[8] = ””; //挂号日期,初始化0 int sex = 0; //性别 1为男,2为女 int age = 0; //年龄 char room = '0'; //所挂号的科室 char jz[4] = ”否”; //是否是急诊,默认值否 char zp; //专家门诊还是普通门诊 } P[Max],Q[Max];
3、 //最多存放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
4、 //当日号人数 int yyrs = 0; //预约人数 int jzrs = 0; //急诊人数 } G; struct Paixu //定义各科室就诊人数排序结构体 { char name[6]; //科室名称 int money; //本科收入 struct Age a ; //Age 结构体类型的成元 } J[5];
5、 //一共5个科室 void clear() { system(”cls"); //清屏 system("date/t"); //显示日期 } //---——-—-—-—--—分科室函数——--——-————-——-—-— void hospital::room(char room) { clear(); switch(room) { case '1’: renshu[0]++; cout<〈’\t'〈<”\n\t请到第5就诊室!\n\n\t您的前面还有 ” <〈
6、 renshu[0]—1 〈〈 ” 人\n\n\t"; break; case ’2': renshu[1]++; cout<〈’\t'〈〈”\n\t请到第4就诊室!\n\n\t您的前面还有 ” <〈 renshu[1]—1<< ” 人\n\n\t"; break; case ’3’: renshu[2]++; cout<〈’\t'<<”\n\t请到第3就诊室!\n\n\t您的前面还有 ” <〈 renshu[2]—1〈< ” 人\n\n\t”;
7、 break; case ’4': renshu[3]++; cout〈〈’\t’〈<"\n\t请到第2就诊室!\n\n\t您的前面还有 " <〈 renshu[3]-1〈〈 " 人\n\n\t"; break; case '5’: renshu[4]++; cout〈<’\t’<<”\n\t请到第1就诊室!\n\n\t您的前面还有 ” << renshu[4]—1<〈 " 人\n\n\t"; break; } } //—---—-—---—---挂
8、当日号函数—-----—--—-—-————— int hospital::gdrh() { char temp[1000] = ""; //为了避免输入多个字符时会产生的错误 if(input() == —1) { return 1; //如果在input里面选择了返回则返回 } //tj(); //调用统计计算前面有几人 room(P[I—1].room); //分科室 G。drrs++; //挂当日号人数+1 system("pause"); //暂停 retur
9、n 1; } //-——-—————--———查看挂号人数函数———--———-—------—— int hospital::ghrs() { char temp[100]=””; clear(); cout〈〈”\n\n\n\t\t\t各类挂号情况一览表\n"; cout << "\t==================================================\n"; cout 〈< ”\n\n\t" 〈〈 ”\t挂当日号的人数为--——" <〈 G。drrs; cout <〈 ”\n\n\t” <
10、〈 ”\t挂预约号的人数为-——-” <〈 G.yyrs; cout 〈< ”\n\n\t” 〈〈 ”\t挂急诊号的人数为————” <〈 G。jzrs; cout << "\n\n\n\t==================================================\n\t”; system(”pause”); return(1); } //--—-—-———---—-挂急诊号函数————--——-—-------— int hospital::gjzh() { if(—1 == input()) {
11、 return 1; //返回 } clear(); //清屏 switch(P[I-1]。room) { case ’1’: renshu[0]++; cout<<'\t’〈<"\n\t请到第1急诊室!\n\n\t”; break; case ’2’: renshu[1]++; cout〈<’\t’<〈”\n\t请到第2急诊室!\n\n\t"; break; case '3’:
12、renshu[2]++; cout<〈'\t’<〈”\n\t请到第3急诊室!\n\n\t"; break; case ’4’: renshu[3]++; cout<〈’\t'〈〈"\n\t请到第4急诊室!\n\n\t"; break; case ’5': renshu[4]++; cout〈<’\t’<〈”\n\t请到第5急诊室!\n\n\t"; break; } G.jzrs++; //急诊号人数+1
13、 strcpy( P[I—1]。jz,”是”); system("pause”); return 1; } //---—-—----————查看挂号收入函数————--——---———-—-- int hospital::ghsr() { int i=0; char temp[100]="”; char temp1=’/'; clear(); cout〈〈"\n\n\n\t\t\t挂号情况一览表\n"; cout <〈 ”\t========================================
14、\n”;
cout<〈”\t今天的挂号费收入为: "<〈Ghsr〈<” 元”;
cout <〈 "\n\t==================================================\n”;
for(i=0; i<5; i++)
cout<〈”\n\n\t”<〈J[i]。name<〈”的收入为: "〈 15、pause”);
return(1);
}
//---——---—--—--查看年龄比函数--——----———--——---
int hospital::nlb()
{
long sum[5];
int i;
char temp[100]="”;
clear();
cout<〈"\n\n\t\t\t 各科室患者年龄层人数\n\n”;
cout〈〈”\t\t儿 童\t 青 年\t 中 年\t 老 年\t 总 和\n\n”;
cout〈<”\t\t(1-14)\t(15-25)\t(26—55)\t(56 16、以上)(1-100)\n”;
cout〈<" =============================================================\n\n”;
for(i=0; i〈5; i++) //求出各科室就诊的总人数
sum[i]=J[i]。a.e+J[i].a.y+J[i]。a。m+J[i].a。o ;
for(i=0; i<5; i++)
{
cout 〈<’\t’< 17、<”\t ”<〈J[i].a。m〈<"\t ”< 18、temp[100]="";
clear();
cout〈<”\n\n\n\t\t\t各科就诊人数一览表\n”;
cout 〈〈 ”\t==================================================";
for(i=0; i〈5; i++)
cout〈<"\n\n\t"<〈i+1<〈". "〈 19、n\t”;
system(”pause”);
return(1);
}
//--——--——-—-——-挂号向导函数---—--—-------—-——
int hospital::ghxd()
{
clear(); //清屏
char gn, temp[1000]=””; //为了避免输入多个字符时会产生的错误
cout 〈〈 "\n\n\t\t\t====挂号向导====\n\n”;
cout 〈〈 ”\t\t以下仅供参考,如疑问请咨询医护人员!\n\n";
cout 〈〈 "\t===科室======= 20、包含内容===================\n\n" ;
cout <〈 "\t 内科\t\t呼吸,消化,泌尿,心脏,免疫,血液,内分泌,神经,肾,等\n\n”;
cout << ”\t 外科\t\t感染,心胸,肝胆,外伤,微创,普外,肛肠,整形,等\n\n”;
cout 〈〈 "\t 骨科\t\t骨折,骨质增生,风湿,关节,四肢,骨神经,等\n\n";
cout << ”\t 口腔科\t牙齿,牙龈,颌面,舌,淋巴,口腔溃疡,等\n\n”;
cout <〈 ”\t 皮肤科\t癣类,疱疹,皮 21、炎,皮肤瘙痒,癍类,痘类,等\n\n";
cout << "\t==============================================================\n\t”;
system("pause");
return 1;
}
//——-——---————-—预约挂号功能函数-——--—--——----——--
int hospital::yygh()
{
char str_1[5],str_2[5],str[50],gn; //保存系统时间与预约不同天数及系统时间
22、int m=1,n=0;
if(-1==input())
return 1;
struct tm *mytime;
time_t LocalTime;
LocalTime=time(NULL);
mytime=localtime(&LocalTime);
strftime(str,sizeof(str),"%c”,mytime); //接收系统当前时间,格式09/04/15
do
{
clear();
if(m—n==0)
23、{
cout << ”\n\n\n请挂当天号..。。.。\n\n";
system(”pause”);
return 1;
}
else
{
char date[8];
int flag=1;
while(flag==1)
{
clear();
memset(str_1,'\0’ 24、sizeof(str_1));
memset(str_2,'\0',sizeof(str_2));
cout 〈< "==================================================\n”;
cout〈< ”\n\t注意:预约挂号只能预约七天以内\n\n"< 25、in>>date;
strcpy(P[I]。time, date);
for(int j=0,r=0; j 26、ate[j]—’0')<=9)
{
str_1[r]=str[j];
str_2[r]=date[j];
r++;
flag=0;
}
else
27、 {
flag=1;
clear();
cout<〈"\n\n\n请输入正确的日期格式。..。.。\n\n";
system(”pause");
break;
}
28、 }
}
}
sscanf(str_2,”%d",&m); //字符串转换为数字
sscanf(str_1,"%d”,&n);
}
}
while(m-n>7||m-n<=0);
cout<〈 "\n\t请”<〈m—n<<"天之后前来就诊,谢谢!\n\n\t"; //不同天数相减
29、
G。yyrs++; //预约挂号人数+1
switch(P[I-1]。room)
{
case '1':
renshu[0]++;
break;
case '2’:
renshu[1]++;
break;
case ’3':
renshu[2]++;
30、
break;
case '4’:
renshu[3]++;
break;
case '5':
renshu[4]++;
break;
}
Q[L]。zp=P[I—1].zp;
Q[L].age=P[I-1].age;
strcpy(Q[L]。jz,P[I-1].jz 31、
strcpy(Q[L].num,P[I—1].num);
Q[L]。room=P[I—1]。room;
Q[L].sex=P[I—1]。sex;
strcpy(Q[L]。time, P[I—1]。time);
L++;
system("pause");
return 1;
}
//-——-————-——--—统计功能函数---————-——-—-—----
void hospital::tj()
{
long i=0,m;
struc 32、t Paixu t;
m=I;
strcpy(J[0]。name,"内科"); //J结构体数组赋初值
strcpy(J[1].name,”外科");
strcpy(J[2]。name,”骨科");
strcpy(J[3].name,”皮肤科");
strcpy(J[4].name,”口腔科”);
for(i=0; i<5; i++) //各科室各年龄段人数初值为0
{
J[i]。a.e=0;
J[i].money 33、 0;
J[i]。a.y=0;
J[i].a.m=0;
J[i].a。o=0;
}
Ghsr = 0;
for(i=0; i 34、 if (P[i].age〈=14) //统计各科室各年龄段人数
J[P[i].room—'1']。a。e++;
else if (P[i].age <=25)
J[P[i]。room-'1']。a。y++;
else if(P[i]。age 〈=55)
J[P[i].room—'1'].a.m++;
else J[P[i].room-’1’]。a。o++;
}
}
//-—--——----—--—输入功能函数-—-—— 35、——--—------—
int hospital::input()
{
char room2='/',cls1=’0’,zp2,sex2,qr;
int age2=0,i=0;
char room1[1000]=””;
char zp1[1000]="";
char sex1[1000]=””;
char age1[1000]="”;
char cls[1000]=”";
char temp[6]="”;
char temp1[6]=””;
while(I 36、 //重复输入记录
{
strcpy(room1,”");
strcpy(zp1,"");
strcpy(sex1,"”);
strcpy(age1,””);
strcpy(cls,"");
strcpy(temp,””);
strcpy(temp1,"");
room2=’/’;
sex2=’/';
zp2=’/’;
cls1='0’; 37、
age2=0;
qr=’/’;
while((room2<’1' || room2 > '5') && room2!='r' )
{
clear();
cout〈〈"\n\n\t\t\t\t请选择科室\n\n”;
cout << "\n\t=============================================================\n”;
cout<〈”\n\t\t1.内科”;
38、 cout〈〈”\t\t2.外科”;
cout〈〈”\t\t3。骨科\n\n";
cout<<"\t\t4。皮肤科";
cout<<"\t5.口腔科";
cout<〈”\tr。返回!”;
cout 〈< "\n\n\t=============================================================\n”;
cout〈〈 "\n\t请选择所要挂科室的编号:";
39、cin>>room1; //输入放在临时变量temp中
if (strlen(room1)==1) room2=tolower(room1[0]);
}
if (room2=='r') return(-1);
while(zp2!=’Y’&&zp2!=’N’) //选择专家门诊吗
{
clear();
cout<<”\n\n\n普通门诊: 5元 \n专家门诊: 10元\n\n\n您是否要挂专家门诊(Y/N):";
40、 cin>〉zp1;
if (strlen(zp1)==1)
zp2=toupper(zp1[0]); //变成大写,以避免系统区分大小写
}
while(sex2!=’1’&&sex2!=’2') //选择性别1为男,2为女
{
clear();
cout<<”\n\n\n\t性 别 (1.男 2.女):";
cin〉〉sex1;
if (s 41、trlen(sex1)==1)
sex2=sex1[0];
}
while(age2<=0||age2〉150) //输入的年龄在1-—150之间
{
clear();
cout〈<"\n\n\n\t年 龄:";
cin>〉age1;
if (strlen(age1)<=3)
age2=atoi(age1); //将字符型的age 42、1转换成整型赋给age2;
}
ltoa(I+1,temp,10); //计算当前患者编号
if(strlen(temp)<6)
for(i=0; i<6—strlen(temp); i++)
strcat(temp1,”0”);
strcat(temp1,temp);
// 输出患者信息以确认输入是否正确
while(cls1!=’1’&&cls1!=’2’&&cls1!='r’)
43、 {
clear();
cout〈〈”\n\n\n\t\t\t您的输入的信息如下,请确认是否正确!\n\n\n\n";
cout<〈”\t编 号\t 性 别\t年 龄\t所挂科室\t专家门诊\t挂号费\n\n";
cout〈<'\t’〈 44、 //性别
else if(sex2 =='2')
cout〈〈’\t’〈〈" 女”;
cout<<'\t'< 45、k;
case '2':
cout〈<'\t'〈〈"外 科”;
break;
case '3':
cout<<'\t’〈〈"骨 科”;
break;
case ’4':
cout<<'\t’〈<”皮肤科";
break;
case ’5’:
cout<< 46、'\t'<<”口腔科";
break;
}
if (zp2=='Y') //是否为专家门诊
cout〈<”\t\t”<<" 是";
else cout〈〈”\t\t”<〈"不 是”;
if (zp2=='Y') //挂号费用
cout〈<"\t\t”< 47、〈”10”;
else cout<〈”\t\t”<〈"5”;
cout<〈"\n\n================================================================================";
cout<〈"\n\n\t\t1。重新填写!\t\t2。信息正确!";
cout〈<”\n\n\n请输入您要选择菜单项(1,2):";
cin〉〉cls;
if (strlen(cls)==1) 48、
cls1=tolower(cls[0]); //变为小写字母
}
if (cls1=='2')
{
P[I]。age =age2;
P[I].room=room2;
strcpy(P[I].num,temp1);
P[I].sex=sex2—'0';
P[I].zp=zp2;
I++;
return 0;
49、 }
} //重复输入记录(完)
}
//——-————--—-——-挂号功能菜单函数—————---——----—---
int hospital::gh_menu()
{
int qu[5],i,fh; //qu数组用于接收返回值 i数值下标 fh返回的开关
char gn, temp[1000]=""; //为了避免输入多个字符时会产生的错误,例:123,—2等等
//调用统计功能函数求出所需要的值
do //控制返回操作
{
for(i=0; i<5; i 50、) qu[i]=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();
cout〈<"\n\n\n\t\t\t===请选择您需要的功能===\n”;
cout






