c语言银行业务模拟文档.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言银行业务模拟文档

银行业务模拟 (2) 银行业务模拟(难度系数4) [问题描述] 客户业务分为两种。第一种是申请从银行得到一笔资金,即取款或借款。第二种是向银行投入一笔资金,即存款或换款。银行有两个服务窗口,相应地有两个队列。客户到达银行后先派第一个队列。处理每一个客户业务时,如属于第一种,且申请超出银行现存资金总额而得不到满足的,则立即排入第二个队列等候,直到满足时才离开银行;否则业务处理完后立即离开银行。每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的末尾。注意:在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有满足者)转而继续接待第一个队列的客户。任何时刻都只开一个窗口。假设检查不需要时间。营业时间结束时所有客户立即离开银行。   写一个上述银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平均时间。 [基本要求] 利用动态存储结构实现模拟。 [测试数据] 一天营业开始银行拥有的款项10000(元),营业时间为600分钟。其他模拟的参量自定。注意测定两种极端情况:一是两个到达事件之间的间隔很短,而客户的交易时间很长;另一个正好相反,设置两个到达事件的间隔时间很长,而客户之间交易的时间很短。 [实现提示] 事件有两类:到达银行和离开银行。初始时银行现存资金总额为Total。开始营业后的第一个事件是客户到达,营业时间从0到Closetime。到达事件发生时随机地设置各客户的交易时间和距下一次到达时间之间的时间间隔。每个客户要办理的款项也是随机确定的,用负值和正值分别表示第一类和第二类业务。变量Total、CloseTime以及上述两个随机量的上下界均交互地从终端读入,作为模拟参数。 两个队列和一个事件表均要用动态的存储结构实现。注意弄清应该在什么条件下设置离开事件,以及第二个队列用怎样的存储结构实现可以获得较高的效率。注意:时间表是按照时间顺序有序的。 #include <iostream> #include <string> #include <time.h> using namespace std; int total; //初始时银行现存资金总额 int closeTime; //营业结束时间 int arriveTime; //两个到达事件之间的间隔上限 int dealTime; //客户之间交易的时间上限 int dealMoney = 5000; //交易额上限 int currentTime = 0; //当前时间 int totalTime = 0; //客户逗留总时间 int counter = 0; //客户总数 int number = 1; //初始客户序列号+ struct service { int num; //客户号 string type; //到达或离开 int beginTime; int endTime; int money; //正数为存款,负数为取款 service* next; }; struct queue { //队列 service* head; service* rear; }; void push(queue &q,int d) {// 插入元素d为Q的新的队尾元素 service* temp = new service; temp->money = d; temp->next = NULL; if(NULL == q.head) {//队列为空,初始化 q. head = temp; q. rear = temp; }//if else {//队列不为空,插入元素d q. rear->next = temp; q. rear = q.rear->next; }//else } void pop(queue &q) {// 若队列不空,出对列函数 service* temp; temp = q. head; if(NULL ==q. head->next) q.head = q. rear =NULL; else q. head=q. head->next; delete temp; } service* front(queue &q) {//返回队首元素 return q. head; } service* back(queue &q) {//返回队尾元素 return q. rear; } service* searchAndDel(queue &q,int m) {//在对列中寻找可处理元素 service* sign = q

您可能关注的文档

文档评论(0)

karin + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档