银行叫号系统.docx
《银行叫号系统.docx》由会员分享,可在线阅读,更多相关《银行叫号系统.docx(14页珍藏版)》请在冰点文库上搜索。
![银行叫号系统.docx](https://file1.bingdoc.com/fileroot1/2023-8/3/b34cd6cf-810d-4587-9cf0-108b39669df2/b34cd6cf-810d-4587-9cf0-108b39669df21.gif)
银行叫号系统
#include
#include
usingnamespacestd;
template
classLinkNode//用户的节点类
{
public:
Tdata;
LinkNode*link;
LinkNode(LinkNode*ptr=NULL)
{
link=ptr;
}
};
template
classLinkQueue//模拟用户队列
{
public:
intsize;
intcal;
LinkNode*front;
LinkNode*rear;
LinkQueue()
{
size=0;
front=rear=NULL;
cal=0;
}
~LinkQueue()
{
Clear();
}
voidClear()
{
while(front!
=NULL)
{
rear=front;
front=front->link;
deleterear;
}
rear=NULL;
size=0;
}
voidEnQueue()//向队列新插入一个节点,并分配一个新ID
{
if(size==0)
{
front=rear=newLinkNode(NULL);
}
else
{
rear->link=newLinkNode(NULL);
rear=rear->link;
}
size++;
cal++;
(rear->data).ID+=cal;
}
TTop()//返回队列的第一个元素
{
returnfront->data;
}
intTopID()
{
return(front->data).ID;
}
voidPop()//删除队列的第一个元素
{
LinkNode*temp;
if(size==0)
{cout<<"队列为空!
"<else
{
temp=front;
front=front->link;
deletetemp;
size--;
}
}
voidCou()//队列的输出函数
{
if(size==0)
{
cout<<"队列为空!
"<}
else
{
while(front!
=NULL)
{
cout<<(front->data).ID<<"";
front=front->link;
}
cout<}
}
};
classUser//用户类
{
public:
intID;//用户ID
intisWait;//等候时间
intServetime;//服务时间
User()
{
Servetime=0;
isWait=0;
}
voidgetServed();
};
classNormalUser:
publicUser//普通用户类
{
public:
NormalUser(){ID=1000;}
voidgetServed();
};
classVIPUser:
publicUser//VIP用户类
{
public:
VIPUser(){ID=2000;}
voidgetServed();
};
classOfficalUser:
publicUser//公务用户类
{
public:
OfficalUser(){ID=3000;}
voidgetServed();
};
classBankWindow//窗口类
{
public:
intID;//用户ID
intserivetime;//窗口服务时间
voidHandleUser();
};
intmain()
{
LinkQueuep1;//普通用户队列
LinkQueuep2;//VIP用户队列
LinkQueuep3;//公务用户队列
stringstr;
intii=1,jj=1,mm=2,nn=3;
intnorServetime[3];//普通窗口服务时间
for(intn=0;n<3;n++)
{
norServetime[n]=0;
}
intvipServetime=0;//VIP窗口服务时间
intoffServetime=0;//公务窗口服务时间
for(intn=0;n<7;n++)//模拟用户取号
{
cout<<"*********************************当前时间为:
"<<2*n<<"s********************************"<cout<<"请输入当前时间新进入银行的客户,用1、2、3表示(1:
普通用户、2:
VIP用户、3:
公务用户)"<cin>>str;
intlen=str.length();
for(intn=0;n{
if(str[n]=='1')
{p1.EnQueue();}
elseif(str[n]=='2')
{p2.EnQueue();}
elseif(str[n]=='3')
{p3.EnQueue();}
}
if(ii==1)//普通窗口
{
if(p1.size!
=0)//1号普通窗口
{
if(norServetime[0]==0)
{
cout<<"1号窗口空闲,请"<data.ID<<"号顾客到1号窗口!
"<norServetime[0]+=2;
p1.Pop();
}
elseif(norServetime[0]==2)
{
cout<<"1号窗口忙!
"<norServetime[0]=0;
}
}
elseif(p1.size==0)
{
if(norServetime[0]==2)
{
cout<<"1号窗口忙!
"<norServetime[0]=0;
}
else
{
cout<<"1号窗口空闲!
"<norServetime[0]=0;
}
}
if(p1.size!
=0)//2号普通窗口
{
if(norServetime[1]==0)
{
cout<<"2号窗口空闲,请"<data.ID<<"号顾客到2号窗口!
"<norServetime[1]+=2;
p1.Pop();
}
elseif(norServetime[1]==2)
{
cout<<"2号窗口忙!
"<norServetime[1]=0;
}
}
elseif(p1.size==0)
{
if(norServetime[1]==2)
{
cout<<"2号窗口忙!
"<norServetime[1]=0;
}
else
{
cout<<"2号窗口空闲!
"<norServetime[1]=0;
}
}
if(p1.size!
=0)//3号普通窗口
{
if(norServetime[2]==0)
{
cout<<"3号窗口空闲,请"<data.ID<<"号顾客到3号窗口!
"<norServetime[2]+=2;
p1.Pop();
}
elseif(norServetime[2]==2)
{
cout<<"3号窗口忙!
"<norServetime[2]=0;
}
}
elseif(p1.size==0)
{
if(norServetime[2]==2)
{
cout<<"3号窗口忙!
"<norServetime[2]=0;
}
else
{
cout<<"3号窗口空闲!
"<norServetime[2]=0;
}
}
}
if(mm==2)//VIP窗口叫号
{
if(p2.size!
=0)
{
if(vipServetime==0)
{
cout<<"VIP窗口空闲,请"<data.ID<<"号顾客到VIP窗口!
"<vipServetime+=2;
p2.Pop();
}
elseif(vipServetime==2)
{
cout<<"VIP窗口忙!
"<vipServetime=0;
}
}
elseif(p1.size!
=0)
{
if(vipServetime==0)
{
cout<<"VIP窗口空闲,请"<data.ID<<"号顾客到VIP窗口!
"<vipServetime+=2;
p1.Pop();
}
elseif(vipServetime==2)
{
cout<<"VIP窗口忙!
"<vipServetime=0;
}
}
else
{
if(vipServetime==2)
{
cout<<"VIP窗口忙!
"<}
else
{
cout<<"VIP窗口空闲!
"<}
vipServetime=0;
}
}
if(nn==3)
{
if(p3.size!
=0)//公务窗口叫号
{
if(offServetime==0)
{
cout<<"公务窗口空闲,请"<data.ID<<"号顾客到公务窗口!
"<offServetime+=2;
p3.Pop();
}
elseif(offServetime==2)
{
cout<<"公务窗口忙!
"<offServetime=0;
}
}
elseif(p1.size!
=0)
{
if(offServetime==0)
{
cout<<"公务窗口空闲,请"<data.ID<<"号顾客到公务窗口!
"<offServetime+=2;
p1.Pop();
}
elseif(offServetime==2)
{
cout<<"公务窗口忙!
"<offServetime=0;
}
}
else
{
if(offServetime==2)
{
cout<<"公务窗口忙!
"<}
else
{
cout<<"公务窗口空闲!
"<}
offServetime=0;
}
}
cout<<"***********************等待用户数:
**************************"<cout<<"普通用户:
"<cout<<"VIP用户:
"<cout<<"公务用户:
"<cout<<"*********************************"<}
return0;
}