简单的医院挂号排队系统(c语言)

简易度相当于一个小作业是😂

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#define SIZE 20


typedef struct 
{
    char dept[20];
    char docname[20];
    char patient[20];
    int bh;
}ST;

typedef struct SQueue{
	ST data[SIZE];
	int rear;
	int length;
	int size;
}QE , *Queue;

int initQueue(Queue Q){//初始化
	Q->rear = -1;
	Q->length= 0;
	Q->size = SIZE;
	return 1;
}

int QueueEmpty(Queue Q){//队列空
	if(Q->length == 0)return 1;
	else return 0;
}

int QueueLength(Queue Q){//取得队列长
	return Q->length;
}

int QueueGetHead(Queue Q,ST *e){//取得队列头
	if(QueueEmpty(Q)){
		return 0;
	}
	int front = (Q->rear - Q->length +Q->size +1)% Q->size;
	if(Q->rear == front)return 0;
	* e = Q->data[front];
	return 1;
}

int QueueEnter(Queue Q, ST e){//进队列
	if(Q->length == Q->size)return 0;
	Q->length++;
	Q->rear = (Q->rear+1) % Q->size;
	Q->data[Q->rear] = e;
	return 1;
}

int QueueOut(Queue Q,ST *e){//出队列
	if(Q->length == 0)return 0;
	int front = (Q->rear - Q->length +Q->size +1)% Q->size;
	* e = Q->data[front];
	Q->length--;
	return 1;
}

void QueueTravers(Queue Q){//遍历队列
	int i = (Q->rear - Q->length +Q->size +1)% Q->size;
	for(; i < Q->length;i++)
	{
		printf("%s %s %d\n",Q->data[i].docname,Q->data[i].patient,Q->data[i].bh);
	}
		printf("%s %s %d\n",Q->data[i].docname,Q->data[i].patient,Q->data[i].bh);

}

int menu(){
    int s;
    printf("医院挂号排队系统\n");
    printf("1. 挂号服务\n");
    printf("2. 专家一叫号\n");
    printf("3. 专家二叫号\n");
    printf("4. 显示信息\n");
    printf("0. 退出\n");
    printf("输入选择:\n");
    scanf("%d",&s);
    if(s>=0 && s<=4){
        return s;
    }
    else{
        printf("输入有误,重新输入! \n");
        scanf("%d",&s);
    }
}

int main(){
    ST d;
    int n1=0;
    int n2 = 0;
    int num;

    QE Q1,Q2;
    
    initQueue(&Q1);
    initQueue(&Q2);
    while (1)
    {
        num = menu();
        switch (num)
        {
        case 0:
            return 0;
        
        case 1:
            printf("请输入选择的专家1/专家2 病人名字\n");
            scanf("%s %s",d.docname,d.patient);
            if(strcmp(d.docname,"专家1")==0){
                d.bh = ++n1;
                QueueEnter(&Q1,d);
            }
            if(strcmp(d.docname,"专家2")==0){
                d.bh = ++ n2;
                QueueEnter(&Q2,d);
            }
            printf("完成\n");
            break;
        case 2:
            if(QueueOut(&Q1,&d)){
    	    	printf("请%d号病人%s去诊室1就诊\n",d.bh,d.patient);	
			}
			else{
				printf("无人排队需要就诊\n");
			} 
            break;
        case 3:
            if(QueueOut(&Q2,&d)){
    	    	printf("请%d号病人%s去诊室1就诊\n",d.bh,d.patient);	
			}
			else{
				printf("无人排队需要就诊\n");
			} 
            break;
        case 4:
            if(QueueGetHead(&Q1,&d)){
            printf("正在诊室1就诊的是%3d号病人%8s\n",d.bh,d.patient);
            printf("目前诊室1还有%d人等候就诊\n",QueueLength(&Q1)-1);	
			}
			else{
				printf("诊室1无人排队\n");
				
			}
            if(QueueGetHead(&Q2,&d)){
            printf("正在诊室2就诊的是%3d号病人%8s\n",d.bh,d.patient);
            printf("目前诊室2还有%d人等候就诊\n",QueueLength(&Q2)-1);	
			}
			else{
				printf("诊室2无人排队\n");
			}
            break;
        }

    }
}
一个简单医院挂号系统本采用ACCESS+ASP开发,系统经过多年应用并且持续不断改进,系统各部功能已基本完善,非常适合大型医疗集团,当然小型医院或科室就更适合了。 (注:如果你觉的功能太多而不想用其他功能,你可以只用挂号登记) 系统功能说明 1.账号权限 (系统可以任设账号,然后给账号赋予权限,比如导医账户,你可以只给他到院与否的设置,其他一概无法操作和查看,咨询账户只允许填写登记而不能修改和删除以确保登记信息不会被随意更改) 2.咨询内容 (可将咨询内容填入患者资料,以方便查询回访) 3.医院(科室)添加 (可无限动态添加科室或医院) 4.回访 (实时回访标注功能,让你对回访记录一目了然) 5.同比数据对比 (让您时时刻刻了解同期数据对比情况,以了解广告投入和同期回报率) 6.数据明细 (竞价广告、电视广告等等全部综合和单独统计到院和预约量实时掌握成本控制) 7.预约人员评比 (实时查看咨询人员到诊数与预约数,以便了解每位咨询人员的咨询质量和能力,更能促进咨询人员的竞争心理) 8.咨询内容记录 (以方便记录每位患者的详细情况,并了解他为何没有到院以便更好的回访) 9、到院跟踪 (运营部、网络部、医院组、导医组、咨询组完美解决医院内部沟通之间的问题) 还有更多更能您可登陆查看
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值