- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实习报告银行业务模拟
实习报告:银行业务模拟
班级:软件 71 姓名:刘晶 学号:2007013206 完成日期:2009-5-29
1 实验目的和要求
1.1 实验选题和背景介绍
本项目为数据结构课程第一次大作业,旨在通过实际编写代码实现一个简单的银行
业务模拟系统来熟悉各种基本数据结构的应用。本程序从上至下,以事件驱动为主导思
想,利用动态存储结构对客户和事件进行模拟,并通过随机模拟方法求出客户在银行内
逗留的平均时间。
1.2 实验完成内容
本程序为银行业务的事件驱动模拟系统,具体模拟内容如下:
客户业务分为两种。第一种是申请从银行得到一笔资金,即取款类型的客户。第二
种是向银行投入一笔资金,即存款类型的客户。
银行有两个服务窗口,相应有两个队列。客户到达银行后先排第一个队。处理每个
客户业务时,如果客户属于第一种,且申请额超出银行现有存款总数时,则客户需求得
不到满足,此客户立刻进入第二个队列等候,直至满足时才离开银行;否则业务处理完
毕立刻离开银行。
每接待一个第二种业务的客户,则顺序检查和处理第二个队列中的客户,能满足的
予以满足,不能满足的客户继续排到第二个队列的队尾。当第二个队列已经不可能有可
以满足者的时刻,停止检查,转而继续接待第一个队列中的客户。假设检查不需要时间,
银行营业时间一到,所有客户立即离开银行。
在本程序中,完成了对“银行业务”的模拟,在模拟运行过程中,将实时显示当前
银行所拥有存款金额、当前时间以及客户业务办理情况。并在模拟结束后计算出所有客
户在银行停留的时间。该模拟过程由 JAVA 语言编写的带图形界面的程序展现给使用者。
2 银行业务模拟实现方法
2.1 事件驱动
事件驱动,即通过不同的事件,引导程序执行不同的操作。在这次的银行业务模拟
系统中,不同的事件就是客户到达事件和客户离开事件。
2.1.1 客户到达事件
设定第 1 个客户在银行开门时间(0)到达。随机产生一个时间间隔,确定第 2 个客
户的到达时间,触发下一个到达事件:(依此类推)
1.产生两个随机数:durtime和 intertime;
2.确定下一个客户的到达时间;
3.将下一个客户到达事件插入事件优先队列,
到达事件发生时间 = 当前时间 + 到达间隔时间
4.将当前客户插入最短的窗口客户队列;
5.如果窗口客户队列为空,
将该客户的“离开事件”插入事件优先队列
离开事件发生时间 = 当前时间 + 事务所需时间
2.1.2 客户离开事件
当客户到达后,随机产生一个该客户所需事务处理的时间长度。由此可确定该客户
的离开时间,触发离开事件:
1.删除当前窗口客户队列的队头客户;
2.计算当前客户的逗留时间 = 当前时间-到达时间;
3.累加总逗留时间;
4.如果该窗口客户队列不空,将新队头客户的“离开事件”插入到事件优先队列
中。离开事件发生时间 = 当前时间 + 事务所需时间
2.2 动态存储
2.2.1 事件优先队列 – 存储事件
按到达、离开事件发生的时间顺序有早到晚地排列事件。该队列在事件驱动的过程
中,动态地生成新的事件结点插入队列,并按时间优先进行排序。
2.2.1 普通队列 – 存储客户信息
一个用于存储客户信息的普通队列。每个客户结点包含了客户到达时间、业务类型、
文档评论(0)