医院挂号系统,队列小项目

本项目采用顺序队列,实现挂号队列中的先进先出,后进后出的特征

具体代码如下:

/**
 *	使用顺序队列,通过开辟大空间内存,避免假溢出
 *	由于菜单函数问题较多,所以没有采用调用菜单函数形式,而是直接在主函数里面写出switch分支语句
 */
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define max 1000		//有效存储100个数据 

typedef struct {

	int rear;	//队列尾指针 
	int front;	//队列头指针 
	int base[max];	//队列长度,为避免假溢出等问题,开辟1000个空间 
} squene;

int init(squene * s);	//队列初始化 
int enquene(squene * s, int e);	//入队 	s是队列 e是入队元素 
int dequene(squene * s, int * e);	//出队 s是队列 *e是入队元素  e是地址 
void show();	//遍历输出队列中元素  

int main(void) {
	squene s; 	//队列名字 
	int temp;	//存储病历号
	int choice;	//存储用户选择 
	init(&s);	//调用初始化队列函数 
	printf("~~~~~~~~~~~~*欢迎使用*~~~~~~~~~~~\n");
	while(1){
		printf("--------------菜单栏-------------\n");
		printf("+-------------------------------+\n");
		printf("+************1:挂号*************+\n");
		printf("+-------------------------------+\n");
		printf("+************2:就诊*************+\n");
		printf("+-------------------------------+\n");
		printf("+********3:查看排队情况*********+\n");
		printf("+-------------------------------+\n");
		printf("+**4:不再入队,剩下的人依次就诊**+\n");
		printf("+-------------------------------+\n");
		printf("+************5:下班*************+\n");
		printf("---------------------------------\n");
		printf("请输入你的选择:"); 
		
		scanf("%d", &choice);	//扫描用户输入 
		switch(choice) {
			case 1:
				printf("请输入病历号——:"); 
				scanf("%d", &temp);
				enquene(&s, temp);		//用户输入数据入队列 
				printf("\n\n>>数据存储中,请耐心等待……\n\n"); 
				sleep(1);	//休止1s 
				printf("挂号成功!");
				sleep(2);	//休止2s 
				break;
			case 2:
				dequene(&s, &temp);	//从头开始,出队列 
				printf(">>病人:%d号就诊——\n", temp);
				sleep(2);
				break;
			case 3:
				show(&s);	//遍历输出队列中元素 
				sleep(4);
				break;
			case 4:
				printf(">>不再排队,病人按照以下顺序依次就诊——\n");
				show(&s);
				system("pause"); 	//任意键继续 
				exit(0);	//系统退出 
			case 5:
				printf(">>下班~程序退出\n");
				exit(0);
		}
		system("cls");	//清屏函数 
	}
}

/**
 *	以下为数据结构顺序队列结构
 */
void show(squene * s) {
	is_empty(s);
	int i = 0;
	for(i = s->front; i < s->rear; i++)
		printf("%d号 ", s->base[i]);
	printf("\n\n");	
}

int init(squene * s) {

	s->front = 0;
	s->rear = 0;
	return 1;
}

int enquene(squene * s, int e) {

	s->base[s->rear] = e;
	s->rear++;
	return 1;
}

int dequene(squene * s, int * e) {

	*e = s->base[s->front];
	s->front++;
	return 0;
}

int is_empty(squene * s){
	if(s->rear == s->front) {
		printf("当前队列病人人数为0!\n");
		return 1;
	} else {
		return 0;
	}
}

总结: 通过套用队列模型,实现排队的目的


版权声明:本文为qq_53703628原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。