#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//定义最大的记录数
#define Size 20
//定义一个结构体存储数据
typedef struct
{
char ID[10];//挂号单号
char name[10];
int age;
char sex[3];
int roomNumber;//诊室号
int state;//状态,等待分诊室,排队就诊1,就诊完毕2
}person;
person P[Size]; //患者列表
int count=0;//总患者数
/*读取文件中的记录
void readInformation()
{
FILE *fpRead=fopen("person.txt","r");
count=0;
if(fpRead==NULL)
return;
int t;
while(1)
{
t=fscanf(fpRead,"%s%s%d%s%d%d\n",P[count].ID,P[count].name,&P[count].age,P[count].sex,&P[count].roomNumber,&P[count].state);
if(t==-1)
break;
count++;
}
fclose(fpRead) ;
}*/
// 显示各诊室队列信息
void showRoom()
{
int i=0;
int flag=0;
printf("诊室1:\n");
while(i<count)
{
if(P[i].state==1&&P[i].roomNumber==1)//在排队
{
if(flag==0)
{
printf("患者姓名 挂号单编号 所在诊室\n");
flag=1;
}
printf("%-9s%-11s诊室%d\n",P[i].name,P[i].ID,P[i].roomNumber);
}
i++;
}
if(flag==0)
printf("该诊室无人排队!!!\n");
printf("诊室2:\n");
flag=0;i=0;
while(i<count)
{
if(P[i].state==1&&P[i].roomNumber==2)//在排队
{
if(flag==0)
{
printf("患者姓名 挂号单编号 所在诊室\n");
flag=1;
}
printf("%-9s%-11s诊室%d\n",P[i].name,P[i].ID,P[i].roomNumber);
}
i++;
}
if(flag==0)
printf("该诊室无人排队!!!\n");
printf("诊室3:\n");
flag=0;i=0;
while(i<count)
{
if(P[i].state==1&&P[i].roomNumber==3)//在排队
{
if(flag==0)
{
printf("患者姓名 挂号单编号 所在诊室\n");
flag=1;
}
printf("%-9s%-11s诊室%d\n",P[i].name,P[i].ID,P[i].roomNumber);
}
i++;
}
if(flag==0)
printf("该诊室无人排队!!!\n");
}
//查询单号,单号可以确定一条记录 ,返回标号
int check(char ID[])
{
int i=0;
while(i<count)
{
if(strcmp(ID,P[i].ID)==0)
return i;
i++;
}
return -1;
}
//分诊室
void distribute()
{
int i=0,room1=0,room2=0,room3=0;
while(i<count)
{
if(P[i].state==0)
{
if(P[i].age>=35)
{
P[i].roomNumber=1;
P[i].state=1;
room1++;
}
else if(P[i].age<35&&strcmp(P[i].sex,"男")==0)
{
P[i].roomNumber=2;
P[i].state=1;
room2++;
}
else
{
P[i].roomNumber=3;
P[i].state=1;
room3++;
}
}
i++;
}
printf("%d人分配到诊室1.\n",room1);
printf("%d人分配到诊室2.\n",room2);
printf("%d人分配到诊室3.\n",room3);
}
//挂号
void appoint()
{
char buffer[10];
printf("请输入挂号单编号:");
scanf("%s",buffer);
int index=check(buffer);
if(index!=-1)
{
printf("该挂号单编号已存在!!");
return;
}
strcpy(P[count].ID,buffer);
printf("请输入姓名:");
scanf("%s",P[count].name);
printf("请输入年龄:");
scanf("%d",&P[count].age);
printf("请输入性别(男/女):");
scanf("%s",P[count].sex);
P[count].state=0;
P[count].roomNumber=0;
count++;
printf("挂号成功!!!\n");
}
//叫号
void call()
{
int i=0,flag1=0,flag2=0,flag3=0;//room123是否叫过号0否1是
while(i<count)
{
if(P[i].state==1)//排队
{
if(P[i].roomNumber==1)
{
if(flag1==0)
{
flag1=1;
printf("诊室1:%s\n",P[i].name);
P[i].state=2;
}
}
if(P[i].roomNumber==2)
{
if(flag2==0)
{
flag2=1;
printf("诊室2:%s\n",P[i].name);
P[i].state=2;
}
}
if(P[i].roomNumber==3)
{
if(flag3==0)
{
flag3=1;
printf("诊室3:%s\n",P[i].name);
P[i].state=2;
}
}
}
i++;
}
}
//按性别统计
void statistics_sex()
{
int i=0,woman=0,man=0;
while(i<count)
{
if(strcmp(P[i].sex,"男")==0)
man++;
else if(strcmp(P[i].sex,"女")==0)
woman++;
i++;
}
printf("当天患者中有女患者%d人,男患者%d人\n",woman,man);
}
//按年龄区段统计
void statistics_age()
{
int young,old,n=0,i=0;
printf("请输入最小年龄:");
scanf("%d",&young);
printf("请输入最大年龄:");
scanf("%d",&old);
while(i<count)
{
if(P[i].age>=young&&P[i].age<=old)
n++;
i++;
}
printf("当天患者中在%d-%d年龄段的患者%d人\n",young,old,n);
}
//统计
void statistics()
{
int ins;
printf("请选择统计方法(1性别/2年龄区段):");
scanf("%d",&ins);
switch(ins)
{
case 1:
statistics_sex();
break;
case 2:
statistics_age();
break;
default:
printf("无该统计选项!!!\n");
}
}
//显示菜单栏
void displayMenu()
{
printf("****************************************\n");
printf("* *\n");
printf("* 门诊候诊管理系统 *\n");
printf("* *\n");
printf("* 1.挂号 *\n");
printf("* 2.叫号 *\n");
printf("* 3.分诊室 *\n");
printf("* 4.显示各诊室队列信息 *\n");
printf("* 5.统计当天就诊患者情况 *\n");
printf("* 6.结束程序 *\n");
printf("* *\n");
printf("****************************************\n");
}
int main()
{
int ins;
//readInformation();
while(1)
{
system("cls");//清屏
displayMenu();
printf("请输入操作(1/2/3/4/5/6):");
scanf("%d",&ins);
switch(ins)
{
case 1:
appoint();
system("pause");//等待一个键入后继续
break;
case 2:
call();
system("pause");
break;
case 3:
distribute();
//showRoom();
system("pause");
break;
case 4:
showRoom();
system("pause");
break;
case 5:
statistics();
system("pause");
break;
case 6:
return 0;
default:
printf("请输入正确操作!!!");
system("pause");
break;
}
}
return 0;
}
版权所有:留学生程序网 2020 All Rights Reserved 联系方式:QQ:99515681 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。