资源简介
利用循环队列来实现银行排队系统,对进入队列的客户分为VIP和普通客户,其中VIP优先出队。能实现的功能如下1.新客户排队等待服务 2.客户离开排队服务 3.查询当前客户前面还有几人 4.查询截止目前总共办理多少客户 注:每个功能都能显示当前排队情况
代码片段和文件信息
#include
#include
#include
#define OK 1
#define ERROR 0
#define MAXSIZE 100
typedef int Status;
typedef struct{
char name[20];
char type[1];
}QElemType;
typedef struct {
QElemType *base;
int front;
int viprear;
int rear;
int stacksize;
}SqQueue;
Status InitQueue(SqQueue &Q)
{
Q.base=(QElemType*)malloc(sizeof(QElemType)*MAXSIZE);
if (!Q.base)
exit(1);
Q.viprear=Q.front=0;
Q.rear=0;
Q.stacksize=MAXSIZE;
return OK;
}
int QueueLength(SqQueue Q)
{
if(Q.rear==Q.front) return 0;
return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;}
Status EnQueue(SqQueue &QQElemType e)
{
int j;
if((Q.rear+1)%MAXSIZE==Q.front)
return ERROR;
if(*e.type-‘0‘)
{
for(j=(Q.rear-Q.viprear);j>=1;j--)
Q.base[Q.viprear+j]=Q.base[Q.viprear+j-1];
Q.rear++;
Q.base[Q.viprear]=e;
Q.viprear++;
printf(“尊敬的VIP客户:你已经排号成功!\n“);
}
else
{ Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;
printf(“尊敬的普通客户:你已经排号成功!\n“);
}
return OK;
}
Status DeQueue(SqQueue &QQElemType &e)
{
if(Q.front==Q.rear)
return ERROR;
if(Q.front==Q.viprear)
++Q.front;
printf(“\n离开的客户为:%s“Q.base[Q.front].name);
if(*Q.base[Q.front].type-‘0‘)
printf(“ vip客户\n“);
else printf(“ 普通客户\n“);
Q.front=(Q.front+1)%MAXSIZE;
return OK;
}
int main()
{
int choose;
int j;
SqQueue Q;
QElemType *E;
InitQueue(Q) ;
printf(“欢迎使用银行自助排队系统\n“);
printf(“1.新客户排队等待服务\n“);
printf(“2.客户离开排队服务\n“);
printf(“3.查询当前客户前面还有几人\n“);
printf(“4.查询截止目前总共办理多少客户\n“);
printf(“0.退出银行排队系统\n“);
do
{
printf(“请选择你要使用的功能:“);
scanf(“%d“&choose);
switch(choose)
{
case 1:
E=(QElemType*)malloc(1*sizeof(QElemType));
printf(“请选择客户类别\n1、VIP客户 0、普通客户\n“);
scanf(“%s“E->type);
printf(“请输入你的姓名:\n“);
scanf(“%s“E->name);
if(EnQueue(Q*E))
printf(“当前排队情况:“);
for (j=Q.front;j printf(“%s “Q.base[j].name);
printf(“\n“);
break;
case 2:
if(DeQueue(Q*E))
printf(“\n出队成功\n“);
else printf(“\n*******出队失败******\n“);
printf(“当前排队情况:“);
for (j=Q.front;j printf(“%s “Q.base[j].name);
printf(“\n“);
break;
case 3:
printf(“请输入需要查找的客户: “);
scanf(“%s“E->name);
printf(“该客户前面排队情况:“);
for (j=Q.front;j {
printf(“%s “Q.base[j].name);
if(strcmp(E->nameQ.base[j].name)==0)
break;
}
break;
case 4:
if(Q.front>Q.viprear)
printf(“\n已办理用户人数%d\n“Q.front-1);
else
printf(“\n已办理用户人数%d\n“Q.front);
printf(“当前排队情况:“);
for (j=Q.front;j printf(“%s “Q.base[j].name);
printf(“\n“);
break;
case 0:
break;
}
}while(choose!=0);
return OK;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 519 2019-05-08 18:13 333\333.dsw
文件 41984 2019-12-24 20:26 333\333.ncb
文件 48640 2019-12-24 20:26 333\333.opt
文件 50176 2019-05-09 13:54 333\999.ncb
文件 48640 2019-05-09 13:54 333\999.opt
目录 0 2019-06-01 16:58 333\9999\
文件 4261 2019-05-08 18:18 333\9999\9999.dsp
文件 1231 2019-06-01 16:58 333\9999\9999.plg
文件 3009 2019-06-01 16:58 333\9999\99999.cpp
目录 0 2019-06-01 16:58 333\9999\Debug\
文件 184363 2019-06-01 16:58 333\9999\Debug\9999.exe
文件 192492 2019-06-01 16:58 333\9999\Debug\9999.ilk
文件 220188 2019-06-01 16:57 333\9999\Debug\9999.pch
文件 451584 2019-06-01 16:58 333\9999\Debug\9999.pdb
文件 11663 2019-06-01 16:58 333\9999\Debug\99999.obj
文件 74752 2019-06-01 16:58 333\9999\Debug\vc60.idb
文件 94208 2019-06-01 16:58 333\9999\Debug\vc60.pdb
- 上一篇:vue开发购物车完整
- 下一篇:Demo_Voltage_Read。vi
评论
共有 条评论