银行业务模拟与离散事件模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
兰州商学院陇桥学院
工学系课程设计报告
设计题目:银行业务模拟与离散事件模拟系别:工学系
专业 (方向):
年级、班:
学生姓名:
学生学号:
指导教师:
年月日
目录
一、系统开发的背景。 (1)
(一)系统功能要求 (1)
(二)系统模块结构设计 (1)
三、系统的设计与实现 (2)
(一)开门函数: (3)
(二)顾客到达函数: (4)
(三)顾客离开函数: (5)
四、系统测试 (6)
五、总结 (7)
六、附件(代码、部分图表) (7)
银行业务模拟与离散事件模拟
一、系统开发的背景。
为了在现实生活中,方便银行业务员更好的操作和管理银行出现的各种事件,以及方便算出各种时间,我们设计了银行业务模拟与离散事件模拟系统。
通过此次课程设计中银行业务模拟的题目,掌握队列,或链表等数据结构的基本操作方面的知识并能灵活的解决一些基本的问题,加深对其性质及操作的理解。
将所学数据结构方面的知识与一门具体的语言相结合来进行实现,感受数据结构的强大作用,加深理解。
(一)系统功能要求
编制一个程序,可以以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间
1、客户到达时间随机产生,一天客户的人数设定为100人;
2、银行业务员处理时间随机产生,平均处理时间为10分钟;
3、将一天的数据结构(包括业务员和客户)以文件方式输出。
.
(二)系统模块结构设计
通过对系统功能的分析,银行业务模拟与离散事件模拟系统功能如下图所示。
银行业务模拟与离散事件模拟系统
通过上图的功能分析,把整个系统划分为3个模块:
1、开门函数,该模块主要实现:银行开始正常营业时间,借助函数OpenForDay()来实现;
2、顾客到达函数,该模块主要实现:客户在银行里从排队到办理完银行业务的功能,借助函数CustomerArrive()来实现;
3、顾客离开函数,该模块主要实现:银行下班时间及顾客全部离开的功能,借助函数CustomerDepart()来实现。
三、系统的设计与实现
【流程图】
(一)开门函数:OpenForDay()
分析:首先输入随机数种子,然后输入银行办理时的基本信息。如下图所示。
void OpenForDay()
{ /*初始化事件链表*/
int i;
InitList(ev);
en.OccurTime=0;
en.NType=Qu; /*到达*/
OrderInsert(ev,en,cmp);
for(i=0;i InitQueue(q[i]); } void Random(int &d,int &i) { /* 生成两个随机数*/ d=rand()%chuli+1; /*到处理的随机数*/ i=rand()%(jiange+1); /*到间隔之间的随机数*/ } int Minimum(LinkQueue Q[]) { /*返回最短序列的序号*/ int l[Qu]; int i,k=0; for(i=0;i l[i]=QueueLength(Q[i]); for(i=1;i if(l[i] { l[0]=l[i]; k=i; } return k; } 该模块的具体代码如下所示。 (二)顾客到达函数CustomerArrived() 该模块的具体代码如下所示: void CustomerArrived() { /*处理客户到达事件*/ QElemType f; int durtime,intertime,i; ++CustomerNum; /*客户数增加1*/ Random(durtime,intertime); et.OccurTime=en.OccurTime+intertime;/*下一客户到达时刻=当前客户的到达时间+时间间隔*/ et.NType=Qu; /*下一客户到达事件*/ i=Minnimum(q); if(et.OccurTime f.ArrivalTime=en.OccurTime; f.Duration=durtime; EnQueue(q[i],f); if(QueueLength(q[i])==1) { et.OccurTime=en.OccurTime+durtime;/*设定一个离开事件*/ et.NType=i; OrderInsert(ev,et,cmp); } } (三)顾客离开函数CustomerDeparture() 该模块的具体代码如下所示: void CustomerDeparture() { /*处理客户离开事件*/ int i; i=en.NType; DeQueue(q[i],customer); /*删除队列排头客户*/ TotalTime+=en.OccurTime-customer.ArrivalTime; if(!QueueEmpty(q[i])) { GetHead(q[i],customer); et.OccurTime=en.OccurTime+customer.Duration; et.NType=i; OrderInsert(ev,et,cmp); } } 四、系统测试 (一) 测试函数 测试该函数使用的测试方法,测试的具体步骤,测试用例的选取,测试的结果。 (二) 顾客离开处 离开时间 客户逗留时间 总时间