Advertisement

编写病人医院看病模拟程序

阅读量:

目的: 掌握队列应用的算法设计。

开发一个名为exp3-4.cpp的程序来模拟病人到医院排队看医生的过程。在病人的排队过程中依次执行以下两项操作两次。

患者抵达诊室后,将病历本递给护理人员,并排队等候接受治疗. 护理人员依次从等候队列中取下一位病人的病历本,让该患者进入诊室接受治疗.

旨在模拟病人等待就诊这一流程的程序采用了菜单式的操作模式,并对其各个选项及其功能描述进行了详细说明

1:排队——输入排队病人的病历号,加入病人排队队列中。

2:就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除。

3:查看队列——从队首到队尾列出所有排队病人的病历号。

4:取消入队后患者按顺序就诊——从头到尾记录所有等待入队患者的病历信息并完成系统性处理流程

5:下班——退出运行。

复制代码
 //计算机 小淇在敲代码  编写病人看病模拟程序

    
 #include <stdio.h>
    
 #include <malloc.h>
    
 //链队 
    
 typedef struct qnode
    
 {
    
     int data;
    
     struct qnode *next;
    
 } QNode;           
    
 typedef struct
    
 {
    
     QNode *front,*rear;
    
 } QuType;           
    
  
    
 //模仿看病流程
    
 void SeeDoctor()
    
 {
    
     int sel,flag=1,find,no;
    
     QuType *qu;
    
     QNode *p,*q;
    
     qu=(QuType *)malloc(sizeof(QuType));    
    
     qu->front=qu->rear=NULL;
    
     while (flag==1)                             
    
     {
    
     printf("1:排队\n2:就诊\n3:查看排队\n4.不再排队,余下依次就诊\n5:下班\n 请选择: ");
    
     scanf("%d",&sel);
    
     switch(sel)
    
     {
    
     case 1:
    
         printf("请输入病历号: ");
    
         do
    
         {
    
             scanf("%d",&no);
    
             find=0;
    
             p=qu->front;
    
             while (p!=NULL && !find)
    
             {
    
                 if (p->data==no)
    
                     find=1;
    
                 else
    
                     p=p->next;
    
             }
    
             if (find)
    
                 printf("输入的病历号重复,请重新输入: ");
    
         }
    
         while (find==1);
    
         p=(QNode *)malloc(sizeof(QNode));   
    
         p->data=no;
    
         p->next=NULL;
    
         if (qu->rear==NULL)                 
    
         {
    
             qu->front=qu->rear=p;
    
         }
    
         else
    
         {
    
             qu->rear->next=p;
    
             qu->rear=p; 
    
         }
    
         break;
    
     case 2:
    
         if (qu->front==NULL)                
    
             printf("没有排队的病人!\n");
    
         else                                
    
         {
    
             p=qu->front;
    
             printf("病人%d就诊\n",p->data);
    
             if (qu->rear==p)            
    
             {
    
                 qu->front=qu->rear=NULL;
    
             }
    
             else
    
                 qu->front=p->next;
    
             free(p);
    
         }
    
         break;
    
     case 3:
    
         if (qu->front==NULL)            
    
             printf("没有排列的病人!\n");
    
         else                            
    
         {
    
             p=qu->front;
    
             printf("排队病人:");
    
             while (p!=NULL)
    
             {
    
                 printf("%d ",p->data);
    
                 p=p->next;
    
             }
    
             printf("\n");
    
         }
    
         break;
    
     case 4:
    
         if (qu->front==NULL)            
    
             printf("没有排列的病人!\n");
    
         else                            
    
         {
    
             p=qu->front;
    
             printf("病人按以下顺序就诊:");
    
             while (p!=NULL)
    
             {
    
                 printf("%d ",p->data);
    
                 p=p->next;
    
             }
    
             printf("\n");
    
         }
    
         flag=0;                        
    
         break;
    
     case 5:
    
         if (qu->front!=NULL)            
    
             printf("请排队的病人明天就医!\n");
    
         flag=0;                     
    
         break;
    
     }
    
     }
    
     p=qu->front;  
    
     while (p!=NULL)
    
     {
    
     q = p->next;
    
     free(p);
    
     p = q;
    
     }
    
 }
    
  //主函数 
    
 int main()
    
 {
    
 	printf("计算机 小淇在敲代码\n");
    
     SeeDoctor(); 
    
     return 0;
    
 }

全部评论 (0)

还没有任何评论哟~