医院候诊管理系统C++.docx
《医院候诊管理系统C++.docx》由会员分享,可在线阅读,更多相关《医院候诊管理系统C++.docx(53页珍藏版)》请在冰豆网上搜索。
![医院候诊管理系统C++.docx](https://file1.bdocx.com/fileroot1/2023-4/21/2b9daded-d946-4b47-b9c7-3d8c46277345/2b9daded-d946-4b47-b9c7-3d8c462773451.gif)
医院候诊管理系统C++
【附录一】源代码
#include"hospital.h"
#defineMax1000000//最多支持的挂号的人数
longrenshu[5]={0,0,0,0,0};//存放各科室人数
longI=0;//数组下标
longL=0;
longGhsr=0;//用于存放挂号的收入!
usingnamespacestd;
structPatient//定义患者结构体
{
charnum[6];//患者编号
chartime[8]=”";//挂号日期,初始化0
intsex=0;//性别1为男,2为女
intage=0;//年龄
charroom='0';//所挂号的科室
charjz[4]="否";//是否是急诊,默认值否
charzp;//专家门诊还是普通门诊
}P[Max],Q[Max];//最多存放1000000个
structAge//年龄段结构体
{
inte=0;//儿童enfant1-14
inty=0;//青年youngpeople15—25
intm=0;//中年wrinkly26—55
into=0;//老年oldfolks55以上
};
structghfl
{
intdrrs=0;//当日号人数
intyyrs=0;//预约人数
intjzrs=0;//急诊人数
}G;
structPaixu//定义各科室就诊人数排序结构体
{
charname[6];//科室名称
intmoney;//本科收入
structAgea;//Age结构体类型的成元
}J[5];//一共5个科室
voidclear()
{
system("cls");//清屏
system(”date/t”);//显示日期
}
//--———---————--分科室函数-——-——-——---—---—-
voidhospital:
:
room(charroom)
{
clear();
switch(room)
{
case'1':
renshu[0]++;
cout<〈'\t’〈<"\n\t请到第5就诊室!
\n\n\t您的前面还有"〈break;
case’2’:
renshu[1]++;
cout〈<'\t’〈〈"\n\t请到第4就诊室!
\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您的前面还有"〈break;
case'5':
renshu[4]++;
cout<〈’\t'〈<"\n\t请到第1就诊室!
\n\n\t您的前面还有”<break;
}
}
//-—--------—-——挂当日号函数--——-——-—--——--—-—
inthospital:
:
gdrh()
{
chartemp[1000]="";//为了避免输入多个字符时会产生的错误
if(input()==—1)
{
return1;//如果在input里面选择了返回则返回
}
//tj();//调用统计计算前面有几人
room(P[I-1].room);//分科室
G。
drrs++;//挂当日号人数+1
system(”pause”);//暂停
return1;
}
//-------———————查看挂号人数函数-——-—--—-----—---—
inthospital:
:
ghrs()
{
chartemp[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);
}
//—-————--—-—--—挂急诊号函数—-————--————---———
inthospital:
:
gjzh()
{
if(—1==input())
{
return1;//返回
}
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");
return1;
}
//—-—--——-—-——--查看挂号收入函数————---——--—--——-—
inthospital:
:
ghsr()
{
inti=0;
chartemp[100]=”";
chartemp1='/’;
clear();
cout〈〈”\n\n\n\t\t\t挂号情况一览表\n”;
cout〈<”\t==================================================\n”;
cout<〈”\t今天的挂号费收入为:
”〈cout<〈”\n\t==================================================\n";
for(i=0;i<5;i++)
cout<<”\n\n\t"<〈J[i]。
name<〈”的收入为:
"〈money;
cout<<"\n\t==================================================\n\t";
system("pause");
return
(1);
}
//--—————--——-—-查看年龄比函数—-—————-———-—-—-—-
inthospital:
:
nlb()
{
longsum[5];
inti;
chartemp[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’〈name<<’\t’〈e<<"\t”<〈J[i]。
a.y<<"\t”<cout<〈"\n\n";
}
cout〈<”=============================================================\n\t”;
system(”pause");
return
(1);
}
//---——-——-——-—-查看各科就诊比例----————-——--—-—-—
inthospital:
:
jzrs()
{
inti=0;
chartemp[100]=””;
clear();
cout〈〈”\n\n\n\t\t\t各科就诊人数一览表\n”;
cout<〈”\t==================================================”;
for(i=0;i〈5;i++)
cout<〈"\n\n\t”〈
”〈〈J[i]。
name<<"的就诊人数为:
”〈cout<<"\n\t==================================================\n\t”;
system("pause");
return
(1);
}
//--——-—--——-—--挂号向导函数--————-———--————--
inthospital:
:
ghxd()
{
clear();//清屏
chargn,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”);
return1;
}
//-——--——-—--—-—预约挂号功能函数-——------—-———————
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”< 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请"<\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;
}
//——--——--—-—-—-统计功能函数———-----—-—-————-—
voidhospital:
:
tj()
{
longi=0,m;
structPaixut;
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;//统计挂号收入:
专家
elseif(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++;
elseif(P[i].age〈=25)
J[P[i].room—'1'].a。
y++;
elseif(P[i]。
age〈=55)
J[P[i]。
room-'1’]。
a.m++;
elseJ[P[i].room—'1'].a.o++;
}
}
//———---—--—----输入功能函数-—-—---——-—-——--—-
inthospital:
:
input()
{
charroom2='/’,cls1=’0’,zp2,sex2,qr;
intage2=0,i=0;
charroom1[1000]="";
charzp1[1000]="";
charsex1[1000]="";
charage1[1000]=””;
charcls[1000]=”";
chartemp[6]="”;
chartemp1[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’