模拟20秒的输出结果:

--------模拟开始--------
初始化用户:
普通客户 进入排队, 编号:1000
VIP客户  进入排队,  编号:1001
普通客户 进入排队, 编号:1002
普通客户 进入排队, 编号:1003
VIP客户  进入排队,  编号:1004
VIP客户  进入排队,  编号:1005
VIP客户  进入排队,  编号:1006
对公客户 进入排队,  编号:1007
普通客户 进入排队, 编号:1008
VIP客户  进入排队,  编号:1009
普通客户 编号为: 1000 请进入0号普通窗口服务
普通客户 编号为: 1002 请进入1号普通窗口服务
普通客户 编号为: 1003 请进入2号普通窗口服务
VIP客户  编号为: 1001 请进入3号VIP窗口服务
对公客户 编号为: 1007 请进入4号对公窗口服务
-当前模拟时间:0s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1000
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1002
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1003
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1001
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
-当前模拟时间:1s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1000
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1002
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1003
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1001
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
-当前模拟时间:2s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1000
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1002
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1003
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1001
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
VIP客户  进入排队,  编号:1010
-当前模拟时间:3s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1000
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1002
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1003
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1001
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
对公客户 进入排队,  编号:1011
-当前模拟时间:4s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1000
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1002
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1003
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1001
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
对公客户 进入排队,  编号:1012
-当前模拟时间:5s -
窗口号:0   -等待服务-
窗口号:1   -等待服务-
窗口号:2   -等待服务-
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1001
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
普通客户 编号为: 1008 请进入0号普通窗口服务
普通客户 进入排队, 编号:1013
-当前模拟时间:6s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1008
窗口号:1   -等待服务-
窗口号:2   -等待服务-
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1001
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
普通客户 编号为: 1013 请进入1号普通窗口服务
普通客户 进入排队, 编号:1014
-当前模拟时间:7s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1008
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1013
窗口号:2   -等待服务-
窗口号:3   -等待服务-
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
普通客户 编号为: 1014 请进入2号普通窗口服务
VIP客户  编号为: 1004 请进入3号VIP窗口服务
普通客户 进入排队, 编号:1015
-当前模拟时间:8s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1008
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1013
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1014
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1004
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1007
VIP客户  进入排队,  编号:1016
-当前模拟时间:9s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1008
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1013
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1014
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1004
窗口号:4   -等待服务-
对公客户 编号为: 1011 请进入4号对公窗口服务
VIP客户  进入排队,  编号:1017
-当前模拟时间:10s -
窗口号:0   -等待服务-
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1013
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1014
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1004
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1011
普通客户 编号为: 1015 请进入0号普通窗口服务
普通客户 进入排队, 编号:1018
-当前模拟时间:11s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1015
窗口号:1   -等待服务-
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1014
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1004
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1011
普通客户 编号为: 1018 请进入1号普通窗口服务
VIP客户  进入排队,  编号:1019
-当前模拟时间:12s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1015
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1018
窗口号:2   -等待服务-
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1004
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1011
普通客户 进入排队, 编号:1020
-当前模拟时间:13s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1015
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1018
窗口号:2   -等待服务-
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1004
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1011
普通客户 编号为: 1020 请进入2号普通窗口服务
普通客户 进入排队, 编号:1021
-当前模拟时间:14s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1015
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1018
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1020
窗口号:3   -等待服务-
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1011
VIP客户  编号为: 1005 请进入3号VIP窗口服务
对公客户 进入排队,  编号:1022
-当前模拟时间:15s -
窗口号:0   -等待服务-
窗口号:1   -正在服务-  客户类型: 普通  客户编号: 1018
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1020
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1005
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1011
普通客户 编号为: 1021 请进入0号普通窗口服务
对公客户 进入排队,  编号:1023
-当前模拟时间:16s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1021
窗口号:1   -等待服务-
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1020
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1005
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1011
VIP客户  进入排队,  编号:1024
-当前模拟时间:17s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1021
窗口号:1   -等待服务-
窗口号:2   -正在服务-  客户类型: 普通  客户编号: 1020
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1005
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1011
对公客户 进入排队,  编号:1025
-当前模拟时间:18s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1021
窗口号:1   -等待服务-
窗口号:2   -等待服务-
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1005
窗口号:4   -等待服务-
对公客户 编号为: 1012 请进入4号对公窗口服务
对公客户 进入排队,  编号:1026
-当前模拟时间:19s -
窗口号:0   -正在服务-  客户类型: 普通  客户编号: 1021
窗口号:1   -等待服务-
窗口号:2   -等待服务-
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1005
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1012
VIP客户  进入排队,  编号:1027
-当前模拟时间:20s -
窗口号:0   -等待服务-
窗口号:1   -等待服务-
窗口号:2   -等待服务-
窗口号:3   -正在服务-  客户类型: VIP   客户编号: 1005
窗口号:4   -正在服务-  客户类型: 对公  客户编号: 1012
普通客户 进入排队, 编号:1028

源代码:

#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<queue>
#include<Windows.h>
using namespace std;
class User
{
public:
int userID;
int type;//0为普通用户,1为VIP用户,2为对公用户.
User() { type = 0; userID = 1000; }
User(int t, int id) { userID = id, type = t; }
};
class BankWindow
{
public:
int id;//0,1,2,为普通窗口,3为VIP窗口,4为对公窗口.
bool isBusy;
User client;
int serviceStartTime=0;
BankWindow() { isBusy = false; }
BankWindow(int i)  { id = i; isBusy = false; }
};
class Simulater
{
private:
int serviceTime[3] = {4,6,8};
int initID = 1000;
BankWindow bankWindow0;
BankWindow bankWindow1;
BankWindow bankWindow2;
BankWindow bankWindow3;
BankWindow bankWindow4;
queue<User> NormalUserQueue, VIPUserQueue, OfficialUserQueue;
public:
Simulater()
{
bankWindow0.id = 0;
bankWindow1.id = 1;
bankWindow2.id = 2;
bankWindow3.id = 3;
bankWindow4.id = 4;
srand(unsigned(time(0)));
}
void enterQueue(User user)
{
if (user.type == 0)
{
cout << "普通客户 进入排队, 编号:" <<user.userID<< endl;
NormalUserQueue.push(user);
}
else if(user.type==1)
{
cout << "VIP客户  进入排队,  编号:"<<user.userID<<endl;
VIPUserQueue.push(user);
}
else if (user.type == 2)
{
cout << "对公客户 进入排队,  编号:" <<user.userID<< endl;
OfficialUserQueue.push(user);
}
else
{
cout << "用户类型出错!";
}
}
void output(User user)
{
if (user.type == 0)
{
cout << "普通客户 " << "编号为: " << user.userID;
}
else if (user.type == 1)
{
cout << "VIP客户 " << " 编号为: " << user.userID;
}
else if (user.type == 2)
{
cout << "对公客户 " << "编号为: " << user.userID;
}
else
{
cout << "用户类型错误!" << endl;
}
}
void output2(User user)
{
if (user.type == 0)
{
cout << "  客户类型: " << "普通  "<< "客户编号: " << user.userID;
}
else if (user.type == 1)
{
cout << "  客户类型: " << "VIP   " << "客户编号: " << user.userID;
}
else if (user.type == 2)
{
cout << "  客户类型: " << "对公  " << "客户编号: " << user.userID;
}
else
{
cout << "  用户类型错误!" << endl;
}
}
void enterWindow(int time)
{
if (bankWindow0.isBusy == false && !NormalUserQueue.empty())
{
bankWindow0.client = NormalUserQueue.front();
output(bankWindow0.client);
cout<<" 请进入0号普通窗口服务" << endl;
bankWindow0.isBusy = true;
bankWindow0.serviceStartTime = time;
NormalUserQueue.pop();
}
if (bankWindow1.isBusy == false && !NormalUserQueue.empty())
{
bankWindow1.client = NormalUserQueue.front();
output(bankWindow1.client);
cout << " 请进入1号普通窗口服务" << endl;
bankWindow1.isBusy = true;
bankWindow1.serviceStartTime = time;
NormalUserQueue.pop();
}
if (bankWindow2.isBusy == false && !NormalUserQueue.empty())
{
bankWindow2.client = NormalUserQueue.front();
output(bankWindow2.client);
cout << " 请进入2号普通窗口服务" << endl;
bankWindow2.isBusy = true;
bankWindow2.serviceStartTime = time;
NormalUserQueue.pop();
}
if (bankWindow3.isBusy == false)
{
if (!VIPUserQueue.empty())
{
bankWindow3.client = VIPUserQueue.front();
bankWindow3.isBusy = true;
bankWindow3.serviceStartTime = time;
VIPUserQueue.pop();
}
else if (!NormalUserQueue.empty())
{
bankWindow3.client = NormalUserQueue.front();
bankWindow3.isBusy = true;
bankWindow3.serviceStartTime = time;
NormalUserQueue.pop();
}
else
{

}
output(bankWindow3.client);
cout << " 请进入3号VIP窗口服务" << endl;
}
if (bankWindow4.isBusy == false)
{
if (!OfficialUserQueue.empty())
{
bankWindow4.client = OfficialUserQueue.front();
bankWindow4.isBusy = true;
bankWindow4.serviceStartTime = time;
OfficialUserQueue.pop();
}
else if (!NormalUserQueue.empty())
{
bankWindow4.client = NormalUserQueue.front();
bankWindow4.isBusy = true;
bankWindow4.serviceStartTime = time;
NormalUserQueue.pop();
}
else {}
output(bankWindow4.client);
cout << " 请进入4号对公窗口服务" << endl;
}
}
void display(int time)
{
cout << "-当前模拟时间:" << time << "s -" << endl;
windowCondition(bankWindow0);
windowCondition(bankWindow1);
windowCondition(bankWindow2);
windowCondition(bankWindow3);
windowCondition(bankWindow4);
}
void customerEnter()
{
int type = rand() % 12;//不同概率生成用户.
if (type >= 0 && type <= 5)
{
User u(0, initID);
enterQueue(u);
}
if (type >= 6 && type <= 9)
{
User u(1, initID);
enterQueue(u);
}
if (type >= 10 && type <= 11)
{
User u(2, initID);
enterQueue(u);
}
initID++;
}
void windowCondition(BankWindow bankWindow)
{
cout << "窗口号:" << bankWindow.id<<"   ";
if (bankWindow.isBusy == true)
{
cout << "-正在服务-";
output2(bankWindow.client);
}
else
{
cout << "-等待服务-";
}
cout << endl;
}
void isBusy(int time)//扫描一遍窗口,检测服务是否结束
{
if (bankWindow0.isBusy == true)
{
if (time - bankWindow0.serviceStartTime >= serviceTime[bankWindow0.client.type])
{
bankWindow0.isBusy = false;
}
}
if (bankWindow1.isBusy == true)
{
if (time - bankWindow1.serviceStartTime >= serviceTime[bankWindow1.client.type])
{
bankWindow1.isBusy = false;
}
}
if (bankWindow2.isBusy == true)
{
if (time - bankWindow2.serviceStartTime >= serviceTime[bankWindow2.client.type])
{
bankWindow2.isBusy = false;
}
}
if (bankWindow3.isBusy == true)
{
if (time - bankWindow3.serviceStartTime >= serviceTime[bankWindow3.client.type])
{
bankWindow3.isBusy = false;
}
}
if (bankWindow4.isBusy == true)
{
if (time - bankWindow4.serviceStartTime >= serviceTime[bankWindow4.client.type])
{
bankWindow4.isBusy = false;
}
}
}
void simulate()
{
int time = 0;
cout << "--------模拟开始--------" << endl;
cout << "初始化用户:" << endl;
for (int i = 0; i < 10; i++)
{
customerEnter();
}
enterWindow(time);
while (1)
{
display(time);
enterWindow(time);
isBusy(time);
if (time/2 != 0)
{
customerEnter();//没间隔两秒进入一位客户.
}
Sleep(1000);
time++;
if (time == 21)
{
getchar();
}
}
}
};
int main()
{
Simulater simulater;
simulater.simulate();
}

银行排队叫号系统的模拟相关推荐

  1. mfc 子窗体 按钮不触发_资深程序员用c++开发MFC银行排队叫号系统,小白看了也能学会...

    这个C++ 银行排队叫号系统是看了书后写出来的程序,运用于MFC理念编写,我看的书是谭浩强的<C++面向对象程序设计>相对计科的书少了前六章 直接从对象讲起,这本书也是本班使用人数最多的一 ...

  2. VS+Qt+C++银行排队叫号系统

     程序示例精选 VS+Qt+C++银行排队叫号系统 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对<<VS+Qt+C++银行排队叫号系统& ...

  3. 基于java+ssm+vue+mysql的银行排队叫号系统

    项目介绍 银行排队叫号系统是以科学合理的机构组织合作.流畅疏通的信息渠道为平台,以客户基本信息.计算机.Internet网络.网络管理软件信息技术为手段建立的信息服务管理系统.系统将借助高速和先进的计 ...

  4. 排队叫号 服务器 不同区域显示,银行排队叫号系统,让你摆脱排队久的问题!...

    原标题:银行排队叫号系统,让你摆脱排队久的问题! 银行排队叫号系统主要由服务器.取号机.集中液晶屏.液晶窗口显示通屏.语音系统.线缆连接部件及其他辅件等组成. ① 网络平台:可以是大厅的局域网络,系统 ...

  5. 基于单片机的银行排队叫号系统(Keil工程文件+Proteus仿真原理图+过程详解+全套文档)

    目 录 摘 要 I ABSTRACT II 1 绪论 1 1.1 课题来源 1 1.2 国内外发展状况 1 1.3 有线系统与无线系统 3 1.4 发展前景 4 1.5 系统的设计目的 4 2 系统的 ...

  6. 模拟银行窗口排队叫号系统的运作

    最近在网上看到了一道面试题,初看很简单,细看有点意思的一道题目: http://blog.csdn.net/zhangxiaoxiang/archive/2011/04/01/6294132.aspx ...

  7. 51单片机银行自助排队叫号系统VIP热敏打印功能DY-SV17F语音播报

    实践制作DIY- GC0138-银行自助排队叫号系统VIP 基于51单片机设计---银行自助排队叫号系统VIP 二.功能介绍: STC89C52最小系统板+0.96寸OLED显示器+DY-SV17F语 ...

  8. 51单片机热敏打印自助排队叫号系统银行医院柜台DY-SV17F语音播报

    实践制作DIY- GC0079-自助排队叫号系统 一.功能说明: 基于51单片机设计-自助排队叫号系统 功能介绍: STC89C52RC最小系统板+0.96寸OLED显示器+DY-SV17F语音串口语 ...

  9. 基于51单片机的双机串口通信排队叫号系统(LCD显示)设计

    基于51单片机的双机串口通信排队叫号系统(LCD显示)设计 1 开发环境 视频讲解 2 功能说明介绍 3 仿真图 4 程序 5 原理图 6 视频讲解 7 设计报告 7.1 设计目的 7.2 设计要求及 ...

最新文章

  1. 2016-11-15试题解题报告
  2. javascript-for-loop-example--reference
  3. 程序员找工作那些事(一)幸存者偏差
  4. leetcode - Single Number
  5. html div画三角,css画三角形
  6. C# 读写Ini文件
  7. 使用 Docker 搭建 PostgreSQL 12 主从环境
  8. 蒸汽管道图纸符号_蒸汽管道疏水阀图标怎么画法
  9. Spring加载resource时classpath*:与classpath:的区别
  10. python3导入ssl报错_python3中pip3安装出错,找不到SSL的解决方式
  11. python之decorator理解
  12. React 的诞生过程
  13. oracle sql语句_7个维度查看oracle执行计划的sql语句执行效率
  14. MyBatis框架、log4j、数据库的配置文件
  15. 程序性能之显示大表格
  16. projectwbs表_从Project 2007导出WBS图表到Visio 2007
  17. 本地组策略编辑器计算机配置,打开本地组策略编辑器|没有本地组策略编辑器...
  18. python平安夜代码加文案
  19. JS获取当前时间是否为节假日,周末
  20. 端云协同,打造更易用的AI计算平台

热门文章

  1. 第105篇自嗨日记(扶摇生财思维)
  2. 计算机影响交流,计算机真能明白人类在说啥?
  3. 第十二届蓝桥杯软件类模拟赛python程序设计 第二期(6)平行四边形面积
  4. 计算机对会计有什么好处,会计专业转行干过设计工作,这些宝贵经验和感悟,对你有用(三)...
  5. Spring框架对redis的封装
  6. 【Flink实战系列】Flink SQL 之 Session Window 的用法
  7. CSDN著名技术专家Visual C++2010开发体验心得——从Visual C++6 0到Visual C++201
  8. C#调用Matlab2018 dll文件-快速傅里叶变换
  9. Java集成第三方支付宝(会员卡)——文档篇
  10. jodconverter,openoffice文档转换pdf 所需jar包