信息工程系课程设计报告银行业务模拟与离散事件模拟

上传人:M****1 文档编号:431498619 上传时间:2023-07-23 格式:DOC 页数:25 大小:425.50KB
返回 下载 相关 举报
信息工程系课程设计报告银行业务模拟与离散事件模拟_第1页
第1页 / 共25页
信息工程系课程设计报告银行业务模拟与离散事件模拟_第2页
第2页 / 共25页
信息工程系课程设计报告银行业务模拟与离散事件模拟_第3页
第3页 / 共25页
信息工程系课程设计报告银行业务模拟与离散事件模拟_第4页
第4页 / 共25页
信息工程系课程设计报告银行业务模拟与离散事件模拟_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《信息工程系课程设计报告银行业务模拟与离散事件模拟》由会员分享,可在线阅读,更多相关《信息工程系课程设计报告银行业务模拟与离散事件模拟(25页珍藏版)》请在金锄头文库上搜索。

1、各专业完整优秀毕业设计图纸兰州商学院陇桥学院信息工程系课程设计报告设 计 题 目:银行业务模拟与离散事件模拟系 别:信息工程系 专 业 (方 向):网络工程年级、班:13级网络工程学生姓名:学生学号:20130672122指导教师:2014年12月30日目录一、系统开发的背景3二、系统分析与设计3(一)系统功能要求3(二)系统模块结构设计4三、系统的设计与实现5(一)测试CloseForDay()函数5(二)测试CustomerArrived()函数5四、系统测试7五、总结9六、附件(代码、部分图表)10银行业务模拟与离散事件模拟一、系统开发的背景1.通过此次课程设计中银行业务模拟的题目,掌握

2、队列(或者链表) 等数据结构的基本操作方面的知识,并能灵活的解决一些基本的问题,加深对其性质及各项操作的理解;2.将所学数据结构方面的知识与一门具体的语言相结合(语言)来进行实现,感受数据结构的强大作用,加深理解。二、系统分析与设计(一)系统功能要求程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。使用到带头结点链表和结点,此链表用于存放客户的进入或者离开的事件,存放数据包括进入的时间,处理的时间,离开的时间。使用一个队列和节点,此队列用于模拟进入银行后等待办理业务的客户排队情况。其存储的数据有时间到达的时间和处理事物所需的时间。包括函数调用,主要的程序在M

3、ain.cpp中,从main()进入调用。首先,分析题目要求划分实现模块、画出大致的流程图,定义基本数据类型,诸如结构体、队列等;其次,考虑基本大致的操作,比如要拟定开门的时间、顾客到来为其提供服务以及离开时的操作等;再次,针对上述的基本操作实现具体需要进行的操作,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能;最后,编写主函数对每个实现进行按需调用,实现操作。(二)系统模块结构设计通过对系统功能的分析,银行业务模拟和离散事件模拟功能如图所示。图1 程序流程图三、系统的设计与实现(一)测试CloseForDay()函数voidCloseForDay()printf(*n);p

4、rintf(*n);printf(* 所有顾客业务办理总时间:%d分钟n, TotalTime);printf(* 业务办理顾客数:%dn, CustomerNum);printf(* 平均每人办理时间:%fn,(float)TotalTime/(float)CustomerNum);printf(*n);printf(*n);图2 测试CloseForDay()函数(二)测试CustomerArrived()函数Status CustomerArrived(EventList&ev, QCupp&q, QCuEvent en)test(顾客到达处理);CustomerNum +;/ 产生随机

5、数/srand(54);intdurtime = rand()%30+1;intintertime = rand()%5+1; / 插入到达事件表QCuEventenTemp;int t = en.OccurTime + intertime;enTemp.OccurTime = t;enTemp.NType = 0;enTemp.next = NULL;if (t ArrivalTime = en.OccurTime;Q-Duration = durtime;Q-next = NULL;int i = MinCuQueue(q);EnCuQueue(qi,Q); / 插入离开事件enTemp.

6、OccurTime = en.OccurTime + durtime;enTemp.NType = i;enTemp.next = NULL;if(QLength(qi) = 1)OrderInser(ev, enTemp);return OK;图3 测试CustomerArrived函数四、系统测试图4控制函数图5 测试函数图6 测试函数图7 测试函数图8 测试结果五、总结实验结果分析利用随机产生的种子进行事件的模拟,即到达时间和办理业务的时间都是随机产生。如果事件尚未到达下班时间,则将其插入到空队列或者是人数(元素)最少的队列,通过检验,算出在不同的服务窗口数下的等待时间以及服务时间,基本

7、上实现了银行事件的模拟。实验心得体会数据结构是一门理论性较强且抽象的课程,经过一周的数据结构课程设计,至今我仍感受颇深,从选题到定稿,从理论到实践,在短短的一周时间里,虽然时间比较紧,但我学到了很多以前不知道的东西,同时不仅复习和巩固了以前所学过的知识,而且看到了和学到了很多在书本上所没有学到过的知识,使我懂得了理论必须和实践永远的结合起来,才能有质的飞跃,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到过很多问题,但我一直坚持着,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,现在觉得一定要

8、把以前所学过的知识重新温故。虽然我的算法不够完好,还有许多问题,但我一定会调试成功的。六、附件(代码、部分图表)/* Experiment of DataStructure file* Copyright (c) 2014-2015, htucairangdunzhu. All rights reserved.*Purpose:* 实现了模拟银行的程序设计,并且包含每一个客户离开时间及统计,以及* 窗口排队的可视化模拟.运行测试通过.* Public*2014.12才让顿珠于陇桥三号楼215宿舍*/#define OK 1#define TRUE 1#define FALSE 0#define

9、 ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedefint Status;/-银行排队模拟/事件和事件表typedefstructQCuEventintOccurTime;intNType;structQCuEvent *next;QCuEvent, *EventList;/窗口前队列元素typedefstructQCuElemintArrivalTime;int Duration;structQCuElem *next;QCuElem,*QEptr;/窗口指针typedefstruct QEptr front;QEptr rear;Q

10、Customerp,*QCupp;/主要操作函数Status OpenForDay(EventList&ev, QCuEvent en, QCupp&q);/开门Status CustomerArrived(EventList&ev, QCupp&q, QCuEventen);/顾客到达Status CustomerDeparture(EventList&ev, QCupp&q, QCuEvent en);/顾客离开voidCloseForDay();/基本操作函数Status OrderInser(EventList&ev, QCuEvent en);/按时间顺序插入事件到事件表intQLe

11、ngth(QCustomerpqn);/求窗口队列长度intMinCuQueue(QCupp q);/求队最短的窗口Status DelFirstEvent(EventList&ev);/删除事件表中的第一个事件Status InitCuQueue(QCustomerp&qn);/初始化窗口队列Status EnCuQueue(QCustomerp&qn,QEptr Q);/进入队列Status DeCuQueue(QCustomerp&qn,QCuElem&Q);/删除队列中的元素Status GetQHead(QCustomerpqn,QCuElem&Q);/获得队列中的第一个元素Stat

12、us DestoryQueue(QCustomerpqn);/销毁队列void Ptint_QStatus(QCustomerpQCu);/打印队列长度voidBank_SimulationFunc();void test(char str);#include stdio.h#include stdlib.h#include time.hint i=0,e=0,counter=0;intTotalTime=0,CustomerNum=0;/累计客户逗留时间,客户数intCloseTime;/关门时间intwindowsnum = 0;/主函数void main() EventListev; /

13、 事件表QCuEvent en; QCuppQCu = NULL;OpenForDay(ev, en, QCu);while (ev-next)en.NType = ev-next-NType;en.OccurTime = ev-next-OccurTime;DelFirstEvent(ev);if (en.NType = 0)CustomerArrived(ev, QCu, en);elseCustomerDeparture(ev, QCu, en);Ptint_QStatus(QCu);CloseForDay();/主要功能子函数Status OpenForDay(EventList&ev, QCuEvent en, QCupp&q)int temp = 0;printf(请输入随机数种子(或输入0使用随机种子):);scanf(%d,&temp);if (temp=0) srand(unsigned)time(NULL);elsesrand(temp);printf(请输入营业时间(单位:分钟):);scanf(%d,

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

当前位置:首页 > 办公文档 > 工作计划

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