本项目为数据结构课程设计,旨在通过模拟银行日常业务操作,利用队列、树等数据结构算法计算并优化客户在柜台的平均等待时间。
自己亲手制作的东西。
银行业务模拟
【问题描述】客户业务分为两种类型:第一种是从银行获取资金(取款或借款)。第二种是向银行存入资金(存款或还款)。设有两个服务窗口,相应的有两个队列。当顾客到达时先排队进入第一个队列。处理每位客户的业务过程中,如果属于第一类且申请金额超过当前银行现存的资金总额,则客户会被立即排到第二个队列等候直到满足条件后离开;否则,在完成该笔交易后直接离店。每接待完一位第二类型业务的客户之后,会顺序检查并处理(若可能)第二个队列中的等待者,并对符合条件的需求予以批准,不符合则重新排队至尾部。
注意:在上述过程中一旦银行的资金总额少于或等于当前第一个队列中最后一个第二类业务客户的资金量,则停止继续检查。营业时间结束时所有顾客立即离开银行。
【基本要求】利用动态存储结构实现模拟程序设计。
【测试数据】假设一天开始时,银行拥有10,000元的初始金额;全天运营时间为600分钟(即10小时)。其他参数自定,需考虑两种极端情况:一是客户到达事件之间的间隔非常短而交易时间很长;另一种则是相反的情况。设置两个到达事件之间的时间间隔和客户的业务处理时长。
【实现提示】本模拟中存在两类事件类型: 到达银行的顾客与离开银行的顾客。初始情况下,总金额为total元,并从零开始运营至closetime分钟结束营业时间。每次客户达到时随机设定其交易时间和下一次到达的时间间隔;每笔业务需要的资金量也是随机确定的(用负值表示第一种类型,正值代表第二种)。变量total、closetime以及上述两个随机数据范围均需从终端读入作为模拟参数设置。两个队列和一个事件列表都需要采用动态存储结构实现,并注意在何种条件下设定离开银行的时间点;同时考虑第二个等待队伍使用什么样的存储方式可以获得更高的效率。
请注意:事件表应按照时间顺序排序以确保正确处理每个客户的业务请求。