病人看病模拟程序(C语言编写)

  • 内容
  • 相关

    编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事:

1、病人到达诊室,将病历本交给护士,排到等候队列中候诊。

2、护士从等候队列中取出下一个病人的病历,该病人进入诊室就诊。

    要求模拟病人等候就诊这一过程。程序采用菜单方式,其功能说明如下:

    (1)排队--输入排队病人的病历号,加入病人排队队列中;(2)就诊--病人排队队列中最前面的病人就诊,并将其从队列中删除;(3)查看队列--从队首到队尾列出所有排队病人的病历号;(4)不再排队,余下依次就诊--从队首到队尾列出所有排队病人的病历号,并退出运行;(5)下班--退出运行。

#include <stdio.h>
#include <malloc.h>
typedef struct Node
{
	int data;
	struct Node *next;
}Node;
typedef struct
{
	Node *front,*rear;
}QuType;
void SeeDoctor()
{
	int sel,flag=1,find,n;
	QuType *q;
	Node *p;
	q=(QuType *)malloc(sizeof(QuType));   //创建空队
	q->front=q->rear=NULL;
	while(flag==1)
	{
		printf("1:排队  2:就诊  3:查看排队  4:不再排队,余下依次就诊  5:下班  请选择:");
		scanf("%d",&sel);
		switch(sel)
		{
		case 1:
			printf("输入病历号:");
			do
			{
				scanf("%d",&n);
				find=0;
				p=q->front;
				while(p!=NULL&&!find)
				{
					if(p->data==n)
						find=1;
					else
						p=p->next;
				}
				if(find)
					printf("输入的病历号重复,重新输入:");
			}
			while(find==1);
			p=(Node *)malloc(sizeof(Node));  /*创建结点*/
			p->data=n;
			p->next=NULL;
			if(q->rear==NULL)   /*第一个病人排队*/
			{
				q->front=q->rear=p;
			}
			else
			{
				q->rear->next=p;
				q->rear=p;    /*将*p结点入队*/
			}
			break;
		case 2:
			if(q->front==NULL)   /*队空*/
				printf("没有排队的病人!\n");
			else
			{
				p=q->front;
				printf("病人%d就诊\n",p->data);
				if(q->rear==p)    /*只有一个病人排队的情况*/
				{
					q->front = q->rear=NULL;
				}
				else
					q->front=p->next;
				free(p);
			}
			break;
		case 3:
			if(q->front==NULL)   /*队空*/
				printf("没有排队的病人!\n");
			else
			{
				p=q->front;
				printf("排队病人:");
				while(p!=NULL)
				{
					printf("%d",p->data);
					p=p->next;
				}
				printf("\n");
			}
			break;
		case 4:
			if(q->front==NULL)   /*队空*/
				printf("没有排队的病人!\n");
			else
			{
				p=q->front;
				printf("病人按以下顺序就诊:");
				while(p!=NULL)
				{
					printf("%d",p->data);
					p=p->next;
				}
				printf("\n");
			}
			flag=0;
			break;
		case 5:
			if(q->front!=NULL)   /*队不空*/
				printf("请排队的病人明天就医!\n");
			flag=0;
			break;
		}
	}
}
void main()
{
	SeeDoctor();
}

 kanb.png

本文标签:

版权声明:若无特殊注明,本文皆为《尤尤》原创,转载请保留文章出处。

本文链接:病人看病模拟程序(C语言编写) - https://www.yxfseo.cn/post-57.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注