联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> javajava

日期:2018-09-14 03:13

#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
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。