![银行业务模拟系统的设计与实现实验报告样本_第1页](http://file4.renrendoc.com/view11/M03/19/0B/wKhkGWX3h7yAAlEpAAE7bRwYaEg675.jpg)
![银行业务模拟系统的设计与实现实验报告样本_第2页](http://file4.renrendoc.com/view11/M03/19/0B/wKhkGWX3h7yAAlEpAAE7bRwYaEg6752.jpg)
![银行业务模拟系统的设计与实现实验报告样本_第3页](http://file4.renrendoc.com/view11/M03/19/0B/wKhkGWX3h7yAAlEpAAE7bRwYaEg6753.jpg)
![银行业务模拟系统的设计与实现实验报告样本_第4页](http://file4.renrendoc.com/view11/M03/19/0B/wKhkGWX3h7yAAlEpAAE7bRwYaEg6754.jpg)
![银行业务模拟系统的设计与实现实验报告样本_第5页](http://file4.renrendoc.com/view11/M03/19/0B/wKhkGWX3h7yAAlEpAAE7bRwYaEg6755.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据构造实验报告——银行业务模仿系统设计与实现学院:软件学院专业:计算机科学与技术班级:12级java班学号:姓名:吴静指引教师:张磊数据结构实验报告学号姓名吴静年级班级计算机科学技术机号:学院机房时间.10.9、.10.16、.10.23上午8:00--9:30(Java班)指引教师张磊、张俊娜一、实验题目:银行业务模仿系统设计与实现(该实验为综合性实验,共用6个学时)二、实验规定:1.实验目:1)通过实验掌握对离散事件模仿结识;2)进一步理解队列实现与应用;3)对链表操作有更深层次理解;该实验涉及到线性表建立、插入、删除等操作,涉及到了队列建立、插入、删除,涉及到了离散事件应用思想,还涉及到了排序概念。完毕这个实验对线性表、队列及C语言编程等多方面知识将是一种较好运用,对离散事件也将有一种初步结识。2.问题描述:假设某银行有四个窗口对外接待客户,从上午银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一种客户,因而在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行客户,如果某个窗口业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,她便会排在人数至少队伍背面。当前需要编制程序以模仿银行这种业务活动并计算一天中客户在银行逗留平均时间。3.一种完整系统应具备如下功能:1)初始化(OpenForDay),模仿银行开门时各数据构造状态。事件驱动(EventDrived),对客户到达和离开事件做相应解决。下班解决(CloseForDay),模仿银行关门时动作,记录客户平均逗留时间。[备注]:假设银行开门时刻(间)设为0,银行每天营业时间在程序运营时输入(例如480分钟)。每个客户办理业务时间不超过30分钟,两个相邻客户到达银行时间间隔不超过5分钟规定程序执行时,只要给出银行每天营业时间即可输出客户平均逗留时间。三、总设计思想、环境语言、工具等总设计思想:为了计算这个平均逗留时间,自然需要懂得每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行逗留时间。所有客户逗留时间总和被一天内进入银行客户数除便是所求平均时间。称客户到达银行和离开银行这两个时间发生事情为“事件”,则整个模仿程序将按事件先后顺序进行解决。这样一种程序称做事件驱动模仿。下面是上述银行客户离散事件驱动模仿算法。voidBank_Simulation(intCloseTime){//OpenForDay();//初始化,模仿银行开门时各数据构造状态。while(有要解决事件时)//有事件可解决{EventDrived;//事件驱动,从事件表中取出事件en;//依照en类型(客户到达事件或客户离开事件)做相应解决if(en表达客户到达)CustomerArrived();//解决客户到达事件elseCustomerDeparture();//解决客户离开事件}//whileCloseForDay();//计算客户平均逗留时间}//Bank_Simulation环境语言:Windows下MicrosoftVC++四、数据构造与模块阐明下面是模仿程序中需要数据构造及其操作。1.模仿算法重要解决对象是“事件”,事件重要信息是事件类型和事件发生时刻。算法中解决事件有两类:一类是客户到达事件;另一类是客户离开事件。前一类事件发生时刻随客户到来自然形成;后一类事件发生时刻由客户办理业务所需时间和等待时间而定。由于程序驱动是按事件发生时刻先后顺序进行,因此事件表应是有序表,其重要操作是插入和删除事件,用一种单链表表达!!2.模仿程序中需要另一数据构造是表达客户排队队列,由于假设银行有4个窗口,因而程序中需要4个队列,队列中关于客户信息是客户到达时刻和客户办理业务所需要时间。每个队列中队头客户即为正在窗口办理事务客户,她办完业务离开队列时刻就是即将发生客户离开事件时刻,这就是说,对每个队头客户都存在一种将要驱动客户离开事件。因而在任何时刻即将发生事伯只有5种也许:1)新客户到达;2)1号窗口客户离开;3)2号窗口客户离开;4)3号窗口客户离开;5)4号窗口客户离开;注:为了使编写程序具备通用性,在编程序时将银行营业时间、开窗口数、客户办业业务最长时间及两个客户到达时间间隔都设立成程序运营时动态输入,这样可以对程序以及银开设窗口合理性进行分析,实现真正模仿。从以上分析可知,在模仿程序中只需要两种数据构造:有序链表和队列。程序中用到头文献、类型定义及重要函数原型如下:#include"stdio.h"#include"malloc.h"#include"math.h"#include"stdlib.h"intCks=4;//银行办理业务窗口数,默认值为:4;最大值不超过20;intQu;//客户队列数Qu=CksintKhjg=5;//两相邻到达客户时间间隔最大值,默认值为:5intBlsj=30;//每个客户办理业务时间最大值,默认值为:30typedefstruct//定义事件元素类型ElemType为构造体类型{intOccurTime;//事件发生时刻intNType;//事件类型,Qu表达到达事件,0至Qu-1表达Qu个窗口离开事件}Event,ElemType;//事件类型,有序链表LinkList数据元素类型typedefstructLNode//定义事件表结点类型{ ElemTypedata; structLNode*next;}LNode,*LinkList;typedefLinkListEventList;//事件链表类型,定义为有序链表typedefstruct//定义客户队列元素类型{intArrivalTime;//到达时刻intDuration;//办理事务所需时间}QElemType;//定义QElemType(队列数据元素类型)为构造体类型;typedefstructQNode//定义客户队列结点类型{ QElemTypedata; structQNode*next;}QNode,*Queue;typedefstruct{Queuehead;Queuetail;}LinkQueue;LinkQueueq[Qu+1];//Qu个客户队列voidOpenForDay();//模仿银行开门动作,即初始化操作voidCustomerArrived()//解决客户到达事件voidCustomerDeparture()//解决客户离开事件五、重要算法设计与实现voidOpenForDay()//模仿银行开门动作,即初始化操作{inti;InitList(ev);//初始化事件链表为空en.OccurTime=0;//设定第一种客户到达事件en.NType=0;//客户到达事件Insert_EventList(ev,en);//插入事件q=(LinkQueue*)malloc((Qu+1)*sizeof(LinkQueue));//为队列申请Qu+1个队头指针,第0个不用for(i=1;i<Qu+1;++i)//置空队列InitQueue(q[i]);}voidCustomerArrived(){//解决客户到达事件QElemTypef;intdurtime,intertime,i;++CustomerNum;Random(durtime,intertime);//生成随机数//printf("%d%d\n",durtime,intertime);et.OccurTime=en.OccurTime+intertime;//下一客户到达时刻et.NType=0;//队列中只有一种客户到达事件//printf("%d%d\n",et.NType,et.OccurTime);if(et.OccurTime<CloseTime)//银行尚未关门,插入事件表Insert_EventList(ev,et);i=Minimum(q);//求长度最短队列序号,等长为最小序号f.ArrivalTime=en.OccurTime;f.Duration=durtime;EnQueue(q[i],f);if(QueueLength(q[i])==1){et.OccurTime=en.OccurTime+durtime;et.NType=i;Insert_EventList(ev,et);//设定第i队列一种离开事件并插入事件表}}voidCustomerDeparture(){//解决客户离开事件,en.NTyPe!=0inti;i=en.NType;DelQueue(q[i],customer);//删除第i队列排头客户TotalTime+=en.OccurTime-customer.ArrivalTime;//合计客户逗留时间if(!QueueEmpty(q[i])){//设定第i队列一种离开事件并插入事件表GetHead_q(q[i],customer);et.OccurTime=en.OccurTime+customer.Duration;et.NType=i;Insert_EventList(ev,et);}}voidBank_Simulation(){inti;OpenForDay();//初始化while(!ListEmpty(ev)){//output_ev(ev);//for(i=1;i<QU+1;i++)output_q(q[i]); //getchar();//为观测执行成果用 Gethead(ev,en);//printf("事件%d%d\n",en.NType,en.OccurTime);if(en.NType==0)CustomerArrived();//解决客户到达事件elseCustomerDeparture();//解决客户离开事件}//计算并输出平均逗留时间printf("顾客总数:%d,所有顾客共耗时:%d分钟,平均每人耗时:%d分钟\n",CustomerNum,TotalTime,TotalTime/CustomerNum);}六、源程序见电子稿(文献名为:Bank.cpp);七、运营成果八、自我评析与总结该实验做得比较成功,例如在编写调试程序时,并不是仅仅把目的局限在编译通过,执行有成果上。除了为了完毕任务模块外,另有测试事件表函数output_ev和各窗口队列状态函数output_q;在恰本地方调用它们,运营时可以看到事件表和窗口队列状态,用来判断编写程序对的性;当运营通过并符合题中规定后将这一某些代码变成注释即可。通过本次实验,提高了自已调试程序能力。充分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年合同年签模板
- 小商品买卖合同范本3
- 2025建筑装饰工程施工合同(官方范本)
- 2025年冷冻海鲜面加工合同
- 2025合同范本劳动合同模板变更书
- 2025年临时租车合同经典版(2篇)
- 2025伸缩缝施工合同
- 2025城市网络设备买卖合同
- 2025年仓储货物搬迁合同
- 2025建设工程施工合同范本条款
- 一氧化碳中毒与抢救知识考核试题与答案
- 部编版小学语文四年级下册教师教学用书(教学参考)完整版
- 基于数据驱动的锂离子电池剩余使用寿命预测方法研究
- 《内脏疾病康复》课件
- 串通招投标法律问题研究
- 高原铁路建设卫生保障
- 家具厂各岗位责任制汇编
- 颞下颌关节盘复位固定术后护理查房
- 硝苯地平控释片
- 部编版语文六年级下册全套单元基础常考测试卷含答案
- 提高检验标本合格率品管圈PDCA成果汇报
评论
0/150
提交评论