一个用于医院门诊候诊的队列管理程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个用于医院门诊候诊的队列管理程序
【问题描述】
要求采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:
【实现提示】
1--挂号
2--叫号
3--分诊室
4--显示各诊室队列信息
5--统计当天就诊的患者情况(要求按性别进行统计和按任意年龄区段进行统计) 6--结束程序
选1时,提示用户在一行内输入姓名及挂号单编号;
选2时,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除选3时,进行诊室分配
选4时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室
选5时,进行两种统计方法的选择,并进行必要的统计计算
选6时,退出程序的运行要求1~5中每一个步骤完成后都能重新显示此选择菜单
程序如下:
#include
#include
struct patient
{
c har name[20];
c har sex[20];
i nt age;
i nt hao; // 挂号编码
i nt room; // 诊室
}man[20]; // 可挂号20个病人,容量可任意更改
void main()
{
i nt i,p;
i nt k=0; // 挂号
i nt t=0; // 显示排序
i nt m; // 第五步统计选择输入1或2
i nt x,y,z,q; // q 男患者人数 x 年龄段人数, y z 年龄区段
p rintf("**********************************\n\n 欢迎使用医院门诊候诊管理程序\n\n**********************************\n");
leap0:
p rintf(" 1 -- 挂号\n 2 -- 叫号\n 3 -- 分诊室\n 4 -- 显示各诊室队列信息\n 5 -- 统计当天就诊的患者情况\n 6 -- 结束程序\n");
p rintf("\n 请根据需要调查的医院情况,输入对应的选项序号...\n");
s canf("%d",&p);
i f(p==1) goto leap1;
i f(p==2) goto leap2;
i f(p==3) goto leap3;
i f(p==4) goto leap4;
i f(p==5) goto leap5;
i f(p==6) goto leap6;
leap1:
p rintf("请输入姓名,性别,年龄,挂号单编号...\n"); // 性别直接输入中文男或女
scanf("%s %s %d %d",man[k].name,man[k].sex,&man[k].age,&man[k].hao);
k++;
g oto leap0;
leap2:
p rintf(" 排列在队伍中的第一位患者:\n姓名:%s 性别:%s 年龄:%d 挂号编号:%d\n",man[t].name,man[t].sex,man[t].age,man[t].hao);
t++;
g oto leap0;
leap3:
f or(i=0;i<=k-1;i++)
{
if(man[i].age>=35)
man[i].room=1;
else if(man[i].age<35 && strcmp(man[i].sex,"男")==0)
man[i].room=2;
else
man[i].room=3;
}
g oto leap0;
leap4:
p rintf(" 第一诊室>>\n");
f or(i=0;i<=k-1;i++)
if(man[i].room==1)
printf("姓名:%s 挂单编号:%d\n",man[i].name,man[i].hao);
p rintf("\n 第二诊室>>\n");
f or(i=0;i<=k-1;i++)
if(man[i].room==2)
printf("姓名:%s 挂单编号:%d\n",man[i].name,man[i].hao);
p rintf("\n 第三诊室>>\n");
f or(i=0;i<=k-1;i++)
if(man[i].room==3)
printf("姓名:%s 挂单编号:%d\n",man[i].name,man[i].hao);
p rintf("\n");
g oto leap0;
leap5:
p rintf("请选择统计方法,按性别统计输入 1 ,按任意年龄区段输入2\n");
s canf("%d",&m);
i f(m==1) // 筛选男女
{
q=0;
for(i=0;i<=k-1;i++)
if(strcmp(man[i].sex,"男")==0)
q++;
printf("男患者 %d 个,女患者 %d 个\n",q,k-q);
}
i f(m==2) // 筛选任意年龄区段
{
x=0;
printf("请输入要筛选的年龄区段\n");
scanf("%d %d",&y,&z);
for(i=0;i<=k-1;i++)
if(man[i].age>=y && man[i].age<=z)
x++;
printf("年龄段 %d 到 %d 有 %d 人\n",y,z,x);
}
g oto leap0;
leap6: ;
}
测试结果如下: