一个用于医院门诊候诊的队列管理程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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: ;

}

测试结果如下:

相关文档
最新文档