资源描述:
《数据结构课程设计银行业务模拟》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数据结构课程设计报告班级:学号:姓名:黄建钊指导老师:朱晓莲日期:2013年3月261.银行业务模拟1.需求分析客户的业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行中投入一笔资金,即存款或还款。银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立刻排入第二个队等候,直至满足时才离开银行;否则业务处理完后立刻离开银行。每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中
2、的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。任何时刻都只开一个窗口。假设检查不需要时间。营业时间结束时所有客户立刻离开银行。要求:写一个上述银行业务的事件驱动模拟系统,模拟出并输出系统处理所有客户的流程,并计算出所有客户在银行内逗留的平均时间。2.设计2.1设计思想
3、本问题主要需要处理两个交易队列(fq,sq)和一个事件队列(eq)。当有客户来交易时,让客户先进队列一fq,然后让事件队列eq记下客户随机产生的到达时间,如果客户办理存款,则更新银行的资金并且记下客户随机产生的逗留时间,办理完后让事件队列记录客户的离开时间,然后从队列一中删除该客户的结点;如果客户办理取款,当银行此刻的金额可以满足该客户,则更新银行的资金并且记下客户随机产生的逗留时间,办理完后让事件队列记录客户的离开时间,然后从队列一中删除该客户的结点,当银行此刻的金额不能够满足该客户,则将该客户转移到队列
4、二等待,直到下一个办理存款的客户办理完存款后,从队列二的头结点开始搜索,看看有没有可以满足其取款的客户,如果队列二的头结点客户能满足,则为其办理取款,然后从队列二中删除该节点,并让事件队列记录该客户的离开时间,如果队列二的头结点客户仍然不能满足,则搜索下一个客户直到将队列二搜索完。等到银行的营业时间到了后,输出事件队列,需要办理两种业务的顾客数,已成功办理两种业务的顾客数,两种业务的成功办理率,客户在银行内的平均逗留时间和下班时银行所剩余的资金总额。实现:输入:用户需要在程序运行开始时输入以下数据:银行初始
5、资金total;银行营业时间closetime;26客户交易时间上下界dealmaxtime和dealmintime,用于给随机数产生函数传递参数,产生一个介于这两个值之间的值;客户到达时间间隔上界arrivemaxtimearrivemintime,用于给随机数产生函数传递参数,产生一个介于这两个值之间的值;交易额的最大上限dealMaxMoney.用于给随机函产生函数参数,产生一个介于-dealMaxMoney和dealMaxMoney之间的值,作为顾客到银行办理业务的交易额,。输出:本程序用dos界面
6、模拟输出整个银行业务办理及排队的结果,最后给出一下数据:分别列出需要办理两种业务的顾客数;分别列出已成功办理两种业务的顾客数;分别列出两种业务的成功办理率;客户在银行内的平均逗留时间;下班时银行所剩余的资金总额。(1)数据结构设计:结构体的定义如下:structservice{intnum;//客户号stringtype;//到达或离开intbeginTime;//到达时间intendTime;//离开时间intmoney;//正数为存款,负数为取款service*next;//指针域};队列的抽象数据类型
7、定义如下:ADTQueue{数据对象:D={ai
8、ai∈ElemSet,i=1,2,...,n,n≥0}数据关系:R1={
9、ai-1,ai∈D,i=2,...,n}基本操作:voidinit_Q(Queue&Q);操作结果:构造空队列QintQ_empty(QueueQ);初始条件:队列Q存在操作结果:若Q为空队列,则返回TRUE,否则FALSEintQ_length(QueueQ);初始条件:队列Q存在操作结果:返回队列Q的元素个数,即队列长度intgethead_Q(QueueQ);初
10、始条件:队列Q存在26操作结果:返回队列Q的队头元素voiden_Q(Queue&Q,inte);初始条件:队列Q存在操作结果:插入元素e为Q的新的队尾元素。voidde_Q(Queue&Q,int&e);初始条件:队列Q存在操作结果:删除Q的队头元素。}ADTQueue(2)算法设计队列类型typedefstructQNode{//队列节点类型intdata;structQNode*next;}QNode,*P