收藏 分销(赏)

医院候诊管理系统C++复习进程.docx

上传人:精*** 文档编号:4103589 上传时间:2024-07-30 格式:DOCX 页数:50 大小:346.74KB 下载积分:16 金币
下载 相关 举报
医院候诊管理系统C++复习进程.docx_第1页
第1页 / 共50页
医院候诊管理系统C++复习进程.docx_第2页
第2页 / 共50页


点击查看更多>>
资源描述
医院候诊管理系统C++ 【附录一】源代码 HOSPITAL.CPP #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]; //患者编号 char time[8] = ""; //挂号日期,初始化0 int sex = 0; //性别 1为男,2为女 int age = 0; //年龄 char room = '0'; //所挂号的科室 char jz[4] = "否"; //是否是急诊,默认值否 char zp; //专家门诊还是普通门诊 } P[Max],Q[Max]; //最多存放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; struct Paixu //定义各科室就诊人数排序结构体 { char name[6]; //科室名称 int money; //本科收入 struct Age a ; //Age 结构体类型的成元 } J[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您的前面还有 " << 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"; 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; } } //--------------挂当日号函数------------------ int hospital::gdrh() { char temp[1000] = ""; //为了避免输入多个字符时会产生的错误 if(input() == -1) { return 1; //如果在input里面选择了返回则返回 } //tj(); //调用统计计算前面有几人 room(P[I-1].room); //分科室 G.drrs++; //挂当日号人数+1 system("pause"); //暂停 return 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" << "\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()) { 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': 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 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==================================================\n"; cout<<"\t今天的挂号费收入为: "<<Ghsr<<" 元"; cout << "\n\t==================================================\n"; for(i=0; i<5; i++) cout<<"\n\n\t"<<J[i].name<<"的收入为: "<<J[i].money ; cout << "\n\t==================================================\n\t"; system("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以上)(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'<<J[i].name<<'\t'<<J[i].a.e<<"\t "<<J[i].a.y<<"\t "<<J[i].a.m<<"\t "<<J[i].a.o<<"\t "<<sum[i]; cout<<"\n\n"; } cout<<" =============================================================\n\t"; system("pause"); return(1); } //--------------查看各科就诊比例------------------ int hospital::jzrs() { int i=0; char 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<<". "<<J[i].name<<"的就诊人数为: "<<renshu[i] ; cout << "\n\t==================================================\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===科室============================包含内容===================\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癣类,疱疹,皮炎,皮肤瘙痒,癍类,痘类,等\n\n"; cout << "\t==============================================================\n\t"; system("pause"); return 1; } //--------------预约挂号功能函数------------------ int hospital::yygh() {     char str_1[5],str_2[5],str[50],gn;                    //保存系统时间与预约不同天数及系统时间     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)         {             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',sizeof(str_1));                    memset(str_2,'\0',sizeof(str_2));                    cout << "==================================================\n";                    cout<< "\n\t注意:预约挂号只能预约七天以内\n\n"<<endl;                    cout<< "\t请输入日期(格式:月(00)/日(00)/年(00):";                    cin>>date;                    strcpy(P[I].time, date);                    for(int j=0,r=0; j<strlen(date); j++)                   //保存不同天数                    {                         if(str[j]!=date[j])                         {                             if((j==3||j==4)&&(date[j]-'0')>=0&&(date[j]-'0')<=9)                             {                                 str_1[r]=str[j];                                 str_2[r]=date[j];                                 r++;                                 flag=0;                             }                            else                            {                                 flag=1;                                 clear();                                 cout<<"\n\n\n请输入正确的日期格式......\n\n";                                 system("pause");                                 break;                            }                         }                    }                }            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";            //不同天数相减          G.yyrs++;  //预约挂号人数+1          switch(P[I-1].room)          {              case '1':                    renshu[0]++;                     break;              case '2':                    renshu[1]++;                    break;              case '3':                    renshu[2]++;                    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);         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; struct 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 = 0; J[i].a.y=0; J[i].a.m=0; J[i].a.o=0; } Ghsr = 0; for(i=0; i<m; i++) { if(P[i].zp=='Y')Ghsr+=10,J[P[i].room-'1'].money+=10; //统计挂号收入:专家 else if(P[i].zp == 'N') Ghsr+=5,J[P[i].room-'1'].money+=5; //统计挂号收入:普通 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++; } } //--------------输入功能函数------------------ 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<Max) //重复输入记录 { strcpy(room1,""); strcpy(zp1,""); strcpy(sex1,""); strcpy(age1,""); strcpy(cls,""); strcpy(temp,""); strcpy(temp1,""); room2='/'; sex2='/'; zp2='/'; cls1='0'; 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.内科"; cout<<"\t\t2.外科"; cout<<"\t\t3.骨科\n\n"; cout<<"\t\t4.皮肤科"; cout<<"\t5.口腔科"; cout<<"\tr.返回!"; cout << "\n\n\t=============================================================\n"; cout<< "\n\t请选择所要挂科室的编号:"; 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):"; 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 (strlen(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); //将字符型的age1转换成整型赋给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') { clear(); cout<<"\n\n\n\t\t\t您的输入的信息如下,请确认是否正确!\n\n\n\n"; cout<<"\t编 号\t 性 别\t年 龄\t所挂科室\t专家门诊\t挂号费\n\n"; cout<<'\t'<<temp1; //编号 if (sex2=='1') cout<<'\t'<<" 男"; //性别 else if(sex2 =='2') cout<<'\t'<<" 女"; cout<<'\t'<<age2; //年龄 switch(room2) //科室 { case '1': cout<<'\t'<<"内 科"; break; case '2': cout<<'\t'<<"外 科"; break; case '3': cout<<'\t'<<"骨 科"; break; case '4': cout<<'\t'<<"皮肤科"; break; case '5': cout<<'\t'<<"口腔科"; break; } if (zp2=='Y') //是否为专家门诊 cout<<"\t\t"<<" 是"; else cout<<"\t\t"<<"不 是"; if (zp2=='Y') //挂号费用 cout<<"\t\t"<<"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) 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; } } //重复输入记录(完) } //--------------挂号功能菜单函数------------------ 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++) 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 << "\n\t=====
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服