银行业务模拟系统的设计与实现实验报告样本.doc

上传人:枫** 文档编号:561523937 上传时间:2022-10-28 格式:DOC 页数:9 大小:116KB
返回 下载 相关 举报
银行业务模拟系统的设计与实现实验报告样本.doc_第1页
第1页 / 共9页
银行业务模拟系统的设计与实现实验报告样本.doc_第2页
第2页 / 共9页
银行业务模拟系统的设计与实现实验报告样本.doc_第3页
第3页 / 共9页
银行业务模拟系统的设计与实现实验报告样本.doc_第4页
第4页 / 共9页
银行业务模拟系统的设计与实现实验报告样本.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《银行业务模拟系统的设计与实现实验报告样本.doc》由会员分享,可在线阅读,更多相关《银行业务模拟系统的设计与实现实验报告样本.doc(9页珍藏版)》请在金锄头文库上搜索。

1、数据构造实验报告银行业务模仿系统设计与实现学院:软件学院专业:计算机科学与技术班级:12级java班学号:姓名:吴静指引教师:张磊 数 据 结 构 实验报告学 号姓名吴静年 级 班级计算机科学技术机号:学院机房时间.10.9、.10.16、.10.23上午8:00-9:30(Java班)指引教师张磊、张俊娜一、实验题目:银行业务模仿系统设计与实现 (该实验为综合性实验,共用6个学时)二、实验规定:1.实验目:1)通过实验掌握对离散事件模仿结识;2)进一步理解队列实现与应用;3)对链表操作有更深层次理解;该实验涉及到线性表建立、插入、删除等操作,涉及到了队列建立、插入、删除,涉及到了离散事件应用

2、思想,还涉及到了排序概念。完毕这个实验对线性表、队列及C语言编程等多方面知识将是一种较好运用,对离散事件也将有一种初步结识。2.问题描述:假设某银行有四个窗口对外接待客户,从上午银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一种客户,因而在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行客户,如果某个窗口业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,她便会排在人数至少队伍背面。当前需要编制程序以模仿银行这种业务活动并计算一天中客户在银行逗留平均时间。3.一种完整系统应具备如下功能:1)初始化(OpenForDay),模仿银行开门时各数据构造状态。2) 事件驱动

3、(EventDrived),对客户到达和离开事件做相应解决。3) 下班解决(CloseForDay),模仿银行关门时动作,记录客户平均逗留时间 。备注:假设银行开门时刻(间)设为0 ,银行每天营业时间在程序运营时输入(例如480分钟)。每个客户办理业务时间不超过30分钟,两个相邻客户到达银行时间间隔不超过5分钟规定程序执行时,只要给出银行每天营业时间即可输出客户平均逗留时间。三、总设计思想、环境语言、工具等总设计思想:为了计算这个平均逗留时间,自然需要懂得每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行逗留时间。所有客户逗留时间总和被一天内进入银行客户数除便是所求平均时间。

4、称客户到达银行和离开银行这两个时间发生事情为“事件”,则整个模仿程序将按事件先后顺序进行解决。这样一种程序称做事件驱动模仿。下面是上述银行客户离散事件驱动模仿算法。 void Bank_Simulation( int CloseTime ) / OpenForDay ( );/初始化,模仿银行开门时各数据构造状态。 while(有要解决事件时) /有事件可解决 EventDrived ; /事件驱动,从事件表中取出事件en;/依照en类型(客户到达事件或客户离开事件)做相应解决 if(en表达客户到达) CustomerArrived( );/ 解决客户到达事件 else CustomerDe

5、parture( ) ;/ 解决客户离开事件 /while CloseForDay( );/计算客户平均逗留时间/ Bank_Simulation 环境语言:Windows下Microsoft VC+四、数据构造与模块阐明下面是模仿程序中需要数据构造及其操作。1模仿算法重要解决对象是“事件”,事件重要信息是事件类型和事件发生时刻。算法中解决事件有两类:一类是客户到达事件;另一类是客户离开事件。前一类事件发生时刻随客户到来自然形成;后一类事件发生时刻由客户办理业务所需时间和等待时间而定。由于程序驱动是按事件发生时刻先后顺序进行,因此事件表应是有序表,其重要操作是插入和删除事件,用一种单链表表达!

6、2模仿程序中需要另一数据构造是表达客户排队队列,由于假设银行有4个窗口,因而程序中需要4个队列,队列中关于客户信息是客户到达时刻和客户办理业务所需要时间。每个队列中队头客户即为正在窗口办理事务客户,她办完业务离开队列时刻就是即将发生客户离开事件时刻,这就是说,对每个队头客户都存在一种将要驱动客户离开事件。因而在任何时刻即将发生事伯只有5种也许:1)新客户到达;2)1号窗口客户离开;3)2号窗口客户离开;4)3号窗口客户离开;5)4号窗口客户离开;注:为了使编写程序具备通用性,在编程序时将银行营业时间、开窗口数、客户办业业务最长时间及两个客户到达时间间隔都设立成程序运营时动态输入,这样可以对程序

7、以及银开设窗口合理性进行分析,实现真正模仿。从以上分析可知,在模仿程序中只需要两种数据构造:有序链表和队列。程序中用到头文献、类型定义及重要函数原型如下:#includestdio.h#includemalloc.h#includemath.h#includestdlib.hint Cks=4;/ 银行办理业务窗口数,默认值为:4;最大值不超过20;int Qu ; / 客户队列数Qu=Cksint Khjg=5; / 两相邻到达客户时间间隔最大值,默认值为:5int Blsj=30;/ 每个客户办理业务时间最大值,默认值为:30typedef struct / 定义事件元素类型ElemTyp

8、e为构造体类型 int OccurTime;/ 事件发生时刻 int NType;/ 事件类型,Qu表达到达事件,0至Qu-1表达Qu个窗口离开事件 Event,ElemType;/ 事件类型,有序链表LinkList数据元素类型typedef struct LNode /定义事件表结点类型 ElemType data ;struct LNode *next; LNode,*LinkList;typedef LinkList EventList;/ 事件链表类型,定义为有序链表typedef struct /定义客户队列元素类型 int ArrivalTime;/ 到达时刻 int Durat

9、ion;/ 办理事务所需时间 QElemType;/ 定义QElemType(队列数据元素类型)为构造体类型;typedef struct QNode /定义客户队列结点类型 QElemType data ;struct QNode *next; QNode,*Queue;typedef struct Queue head;Queue tail; LinkQueue;LinkQueue qQu+1;/ Qu个客户队列void OpenForDay(); /模仿银行开门动作,即初始化操作 void CustomerArrived() / 解决客户到达事件void CustomerDepartur

10、e() / 解决客户离开事件五、重要算法设计与实现void OpenForDay() /模仿银行开门动作,即初始化操作 int i; 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;iQu+1;+i) / 置空队列 InitQueue(qi); void CustomerArrived()

11、 / 解决客户到达事件 QElemType f; int durtime,intertime,i; +CustomerNum; Random(durtime,intertime);/ 生成随机数 /printf(%d %dn,durtime,intertime); et.OccurTime=en.OccurTime+intertime;/ 下一客户到达时刻 et.NType=0;/ 队列中只有一种客户到达事件 /printf(%d %dn,et.NType,et.OccurTime); if(et.OccurTimeCloseTime) / 银行尚未关门,插入事件表 Insert_EventL

12、ist(ev,et); i=Minimum(q);/ 求长度最短队列序号,等长为最小序号 f.ArrivalTime=en.OccurTime; f.Duration=durtime; EnQueue(qi,f); if(QueueLength(qi)=1) et.OccurTime=en.OccurTime+durtime; et.NType=i; Insert_EventList(ev,et);/ 设定第i队列一种离开事件并插入事件表 void CustomerDeparture() / 解决客户离开事件,en.NTyPe!=0 int i; i=en.NType; DelQueue(qi

13、,customer);/ 删除第i队列排头客户 TotalTime+=en.OccurTime-customer.ArrivalTime;/ 合计客户逗留时间 if(!QueueEmpty(qi) / 设定第i队列一种离开事件并插入事件表 GetHead_q(qi,customer); et.OccurTime=en.OccurTime+customer.Duration; et.NType=i; Insert_EventList(ev,et); void Bank_Simulation() int i; OpenForDay( );/ 初始化 while(!ListEmpty(ev) /ou

14、tput_ev(ev); /for(i=1;iQU+1;i+) output_q(qi); /getchar();/为观测执行成果用 Gethead(ev,en);/printf(事件%d %dn ,en.NType,en.OccurTime); if(en.NType=0) CustomerArrived();/ 解决客户到达事件 else CustomerDeparture();/ 解决客户离开事件 / 计算并输出平均逗留时间 printf(顾客总数:%d,所有顾客共耗时:%d分钟,平均每人耗时:%d分钟n,CustomerNum,TotalTime,TotalTime/CustomerNum); 六、源程序 见电子稿(文献名为:Bank.cpp );七、运营成果八、自我评析与总结该实验做得比较成功,例如在编

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 网络安全

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号