c语言综合设计作业医院管理系统,C语言版医院管理系统

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#include "malloc.h"

#define NULL 0

typedef struct

{ int num;

char name[10];

int age;

char sex;

}people; //一个患者的信息

typedef struct Node

{

people *data;

struct Node *next;

}queue; // 定义队列结构体

typedef struct

{

queue *front;

queue *rear;

}linkqueue; //定义队列指针

int Initqueue(linkqueue *q) //初始化队列

{

q->front=(queue *)malloc(sizeof(queue));

if(q->front!=NULL)

{

q->rear=q->front;

q->front->next=NULL;

return 1;

}

else return 0;

}

int Isempty(linkqueue *Q)

{

if(Q->front==Q->rear)

return 1;

else return 0;

}

int Enterqueue(linkqueue *Q,people *x)

{

/* 将数据元素x插入到队列Q中 */

queue *NewNode;

NewNode=(queue * )malloc(sizeof(queue));

if(NewNode!=NULL)

{

NewNode->data=x;

NewNode->next=NULL;

Q->rear->next=NewNode;

Q->rear=NewNode;

return(1);

}

else return(0); /* 溢出!*/

}

/*出队操作。*/

people *Deletequeue(linkqueue *Q)/* 将队列Q的队头元素出队,并存放到x所指的存储空间中 */

{

people *x;

queue *p;

p=Q->front->next;

Q->front->next=p->next; /* 队头元素p出队 */

if(Q->rear==p) /* 如果队中只有一个元素p,则p出队后成为空队 */

Q->rear=Q->front;

x=p->data;

free(p); /* 释放存储空间 */

return x;

}

void main()

{ int s,y,flag=1;//s接收病历号,y接收年龄,flag控制循环次数。

char mz[10],d,choice;//mz[]接收姓名,d接收性别,

people *x;

linkqueue Q;

Initqueue(&Q);

printf(" *************医院看病管理系统***************\n");

printf(" * *\n");

printf(" * 1 : 病人到达时请输入 *\n");

printf(" * *\n");

printf(" * 2 : 一位患者就医时,请输入 *\n");

printf(" * *\n");

printf(" * 3 : 不再接收病人时,请输入 *\n");

printf(" * *\n");

printf(" * 0 : 退出系统,请输入: *\n");

printf(" * *\n");

printf(" ********************************************\n");

while(flag)

{

printf("请输入命令:");

flushall();

scanf("%c",&choice);

switch(choice)

{

case'1':people r;

printf("\n请输入病历号:");

scanf("%d",&s);

r.num=s;

printf("姓名:");

scanf("%s",&mz);

strcpy(r.name,mz);

printf("性别:");

flushall(); //程序缓冲空间函数

scanf("%c",&d);

r.sex=d;

printf("年龄:");

scanf("%d",&y);

r.age=y;

Enterqueue(&Q,&r);

break;

case'2':if(!Isempty(&Q))

{ x=Deletequeue(&Q);

printf("\n %d号病人就诊!",x->num);

}

else printf("\n病人已全部被医治完了!");

break;

case'3':printf("\n今天停止挂号,请下列病人依次就诊:");

while(!Isempty(&Q))

{

x=Deletequeue(&Q);

printf("%d号 ",x->num);

}

flag=0;

break;

case'0':break;

default:printf("非法命令!");

}

}

}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值