数据结构课设:银行排队系统模拟
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构课设:银行排队系统模拟相关的知识,希望对你有一定的参考价值。
数据结构课设:银行排队系统模拟假设某银行有n个窗口对外接待客户,从早晨银行9点开门起到5点关门,不断有客户进入银行,由于每个窗口在某个时刻只能接待一个客户。因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进银行的客户。如果某个窗口的业务员正空闲,则可上前输业务。反之,若个窗口均有客户所占,他便会排在为数最少的队伍后面。编制一个程序模拟银行的这种业务活动并计算一天中客户在银行的平均逗留时间。(提示:参考c++ primer plus中相关章节或者软件工程专业课表中的飞机场模拟)
请用c语言给出源代码 谢谢大神
建立一个大小为n的数组,来记录每个窗口(接下来的)的空闲时间,初始化全部赋值为0。
这里我们假设有1、2两个窗口,T(1)=T(2)=0
建立一个(按时间的)优先级队列,初始化为空。
假设银行0时开业,下面举例来说明:
第一个客人于1分钟到达,假设这个客人办理业务需要的时间为10分钟(一般模拟过程中,这个时间是在某个范围内随机生成的)。为该用户分配一个空闲窗口1,同时T(1)=11。此时需要入队:
------------------------
------------------------
第二个客人于3分钟时到达,假设这个客人办理业务需要的时间为5分钟。由于T(2)==0<3,说明在这位客人到达时第2号窗口是闲的,那么让他去2号窗口,同时T(2)=3+5=8。然后入队:
-------------------------------------------------
->
-------------------------------------------------
第三个客人于4分钟时到达,假设这个客人办理业务需要的时间为6分钟。此时T(1)=11>4,T(2)=8>4,两个窗口都是忙碌的。但由于T(2)<T(3),我们认为2号窗口相对来说轻松一些,让他去2号窗口排队,同时T(2)=T(2)+6=14。然后入队:
--------------------------------------------------------------------------
->->
---------------------------------------------------------------------------
……
整个过程持续下去,一直到关门时间为止。
上面的示例在队列中只记录了离开时间,实际上还可以记录到达时间、在哪个窗口办理等等信息,这样只需要将这个优先级队列依次执行出队操作,就能统计出平均业务受理时间、平均等待时间、哪个窗口工作量多少. 参考技术A 兄弟,你认为这么复杂会有人给你编吗?追问
那咋办
追答自己编或者花钱找人编
关于银行排队叫号机设置的问题
例如在银行的VIP厅,依等级由低到高有金卡客户、白金卡客户、钻石卡客户,刷卡取到的号码分别是D、E、F号,假设一位金卡客户取了号,显示前面排队人数为0,也就是说柜员一旦呼叫下一个号码,应该就是这位金卡客户了。但是如果刚好在柜员叫号前又来了一位白金卡客户也取了个号,那么柜员叫号就会先叫道白金卡客户而非金卡客户了,这时金卡客户就会产生不解,如果这时候插进来排队的不止一个白金卡或者钻石卡客户,那么第一位金卡客户要等候的时间就很难估算了。请问:如何解决这个问题?
参考技术A 等…慢慢等,普通用户就是要被等待,哈哈,放好心态 参考技术B 银行自身喜欢分等级造成的问题,要解决的话就像设置VIP窗口和普通窗口一样:多开(金卡或者白金)窗口以上是关于数据结构课设:银行排队系统模拟的主要内容,如果未能解决你的问题,请参考以下文章
3-9-模拟银行排队过程-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版