C/C++模拟银行排队叫号系统[2023-05-11]
2、模拟银行排队叫号系统(难度等级A)
[问题描述]
模拟实现银行的排队叫号系统。
[基本要求]
(1) 假定银行上午9点开门,下午5点关门,期间每个小时的客流量不超过35人;
(2) 每个客户的基本信息包括:到达银行时间、业务需要办理的时长。这两项数据均由系统随机生成,其中业务办理所需时长定义不超过30分钟。若随机生成的时长等于0,即说明该客户未办理业务,提前离开;根据客户达到银行的时间,为客户发放号码牌(提前离开的客户,由于也已经到达银行,因此也会被发放号码牌);
(3) 程序运行时,由键盘输入银行的窗口数量,然后输出:第几号客户几点到达,在等待了多少分钟后,在几号窗口办理业务,持续多少分钟;若客户是提前离开的,那对应的输出就是:第几号客户几点到达,提前离开。将8小时内,所有被服务的客户按照上述要求输出基本信息。最后,统计一下,每个窗口分别服务了多少客户,今天一共服务了多少客户;客户最长的等待时间以及客户的平均等待时间;
(4) 提示用户可以继续输入窗口数量,若输入0,程序结束;否则按照上述要求给出相应的输出;
(5) 观察银行的窗口数量与接待客户总量与客户等待时间之间的关系;
[输出样例]
只显示了部分,从1号开始显示的话太长。
[算法提示]
用结构体数组表示客户(每个数组元素包括客户到达时间、业务办理时间等成员),客户的数据利用随机数自动生成,按照他们的到达时间排序;银行的窗口也用数组表示,要记录的是每个窗口当前任务完成后即将空闲的时间,哪个窗口的空闲时间最先出现,就将当前排在最前的客户推送到该窗口;若有一个以上的窗口空闲时间一致,则可以将当前排在最前的客户推送给编号最小的窗口。
源码
https://pan.baidu.com/s/1pq1Nwwo0hlc_J84F93HM4A?pwd=1111
标签:11,窗口,05,到达,排队,银行,C++,客户,模拟 From: https://www.cnblogs.com/codewriter/p/17390889.html