資源簡介
利用循環隊列來實現銀行排隊系統,對進入隊列的客戶分為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
評論
共有 條評論