银行排队叫号系统

来源:互联网 发布:男生冬季服装搭配知乎 编辑:程序博客网 时间:2024/05/08 11:45

/*

*模拟银行叫号系统:当客户到达银行时,先取号,显示当前的客户号,以及正在等待的客户人数;

*当有窗口空闲时,若有等待客户,则显示信息:请XXXX号客户到窗口办理。

*使用顺序队列或链式队列实现该系统

*测试数据:假设有一个窗口,前后共6个客户。

*/

bank.h


#include <iostream>
using namespace std;
struct Customers{
int m_iId;
};
class Bank{
public:
Bank(int queueCapacity);   //创建队列
bool QueueEmpty();            //判空队列
bool QueueFull();             //判满函数
int QueueLength();            //队列长度
bool EnQueue(Customers customer);    //新元素入队
bool DeQueue(Customers &customer);   //首元素出队
void QueueTraverse();        //遍历队列
private:
Customers *m_pQueue;          //队列数组指针
int m_iQueueLen;             //队列元素个数
int m_iQueueCapacity;        //队列数组容量
int m_iHead;                  //队头
int m_iTail;                 //队尾
};
Bank::Bank(int queueCapacity){
m_iQueueCapacity = queueCapacity;        //队列的总容量,赋值给队列数组容量
m_iHead = 0;                                                   //队头初始化
m_iTail = 0;                                                       //队尾初始化
m_iQueueLen = 0;                          //队列元素个数初始化
m_pQueue = new Customers[m_iQueueCapacity];   //给数组申请内存,并且从堆中申请内存
}
bool Bank::QueueEmpty(){          
return m_iQueueLen ==0 ? true:false;
}
bool Bank::QueueFull(){          
return m_iQueueLen == m_iQueueCapacity ? true:false;   
}
int Bank::QueueLength(){ 
return m_iQueueLen;
}
bool Bank::EnQueue(Customers customer){    
  if(QueueFull())
return false;
else {
m_pQueue[m_iTail] = customer;
m_iTail++;  
m_iTail = m_iTail%m_iQueueCapacity;    
m_iQueueLen++;    
return true;
}
}
bool Bank::DeQueue(Customers &customer){    
    if(QueueEmpty())
return false;
else{
customer = m_pQueue[m_iHead];
m_iHead++;
m_iHead = m_iHead%m_iQueueCapacity;    
m_iQueueLen--;    
return true;
}
}
void Bank::QueueTraverse(){
    for(int i=m_iHead;i<m_iQueueLen + m_iHead;i++){
          cout<<m_pQueue[i % m_iQueueCapacity].m_iId<<endl;   
}
}

demo.cpp


#include <iostream>
#include "bank.h"
using namespace std;
int main(){
Bank bank(10);
Customers customer;
int count = 1;
        cout<<"欢迎使用银行叫号系统"<<endl;
cout<<"1.有新客户到达,取号"<<endl;
cout<<"2.有窗口空闲,叫号"<<endl;
cout<<"3.退出系统"<<endl;
int number;
while(true){
cin>>number;
if(number == 1){
    if(bank.EnQueue(customer)){
cout<<"您的id是"<<count<<",前面还有"<<bank.QueueLength()-1<<"人在排队!"<<endl;
count++;
}
else{
cout<<"取号失败!"<<endl;
}
}
if(number == 2){
if(bank.DeQueue(customer)){
count--;
cout<<"请第"<<count<<"号客户到窗口办理!"<<endl;
}
else{
cout<<"队列中已没有客户!"<<endl;
}
}
if(number == 3)
exit(0);
}
    return 0;
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 母乳一边是咸的怎么办 tcl电视蓝频了怎么办 长虹电视蓝频了怎么办 电视突然蓝频了怎么办 海信电视蓝频了怎么办 连网电视蓝频了怎么办 英雄联盟画面卡顿怎么办 长残了怎么办原来很帅 被吓到了怎么办没精神 宝宝吓着怎么办最有效 4个月婴儿易惊吓怎么办 心里有问题的人怎么办 减肥的时候想吃东西怎么办 大联盟ping很高怎么办 酷派手机弹广告怎么办 孕早期肚子紧绷怎么办 怀孕2个月同房了怎么办 怀孕前三月同房了怎么办 人流前三天同房了怎么办 人流后三天同房了怎么办 吃避孕药后月经量少怎么办 排卵日同房不想怀孕怎么办 排卵日同房没有怀孕怎么办 想怀孕想生儿子怎么办 到期大姨妈不来怎么办 怕怀孕月经不来怎么办 宫颈环扎后宫缩怎么办 来例假刺激外阴高潮了怎么办 客人消费完说没钱怎么办? 孕13周血糖偏高怎么办 餐后血糖高14点怎么办 餐后血糖20多怎么办 空腹血糖6.6饭后9.2怎么办 键盘shift键失效了怎么办 灵异附身夫妻不合怎么办 鞋子买大了半码怎么办 鞋子买小了半码怎么办 黑布鞋鞋面白了怎么办 黑布鞋不黑了怎么办 黑布鞋退白了怎么办 老北京布鞋款式太少怎么办