• 大小: 257KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签: 循环队列  

资源简介

利用循环队列来实现银行排队系统,对进入队列的客户分为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

评论

共有 条评论