ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:106.23KB ,
资源ID:14383717      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14383717.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++银行模拟管理统计系统数据结构大型实验报告Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c++银行模拟管理统计系统数据结构大型实验报告Word格式.docx

1、在实验中,可改变参数,如银行营业时间范围,银行窗口数、客户的到达率、服务时间,顾客的最大耐性等待时间,VIP顾客的到达率等,测试银行的服务效率。银行模拟的关键部分为客户时间,包括到达,中途离开和办完业务离开事件,刚达到的顾客通过随机数产生下一个顾客的到达,已到达的顾客通过随机数产生服务时间,选择最早空闲的窗口后,可生成离开事件;所有事件都被加上时间戳,放到优先队列中,队列中优先级最高的事件就是时间戳最早的事件。其中每一到达事件均可估计出自己的等待时间,若等待时间超出一开始设定的最大耐性等待时间,则顾客选择中途离开,生成中途离开事件。到达的事件中,又分为普通顾客到达事件和VIP顾客到达事件。VI

2、P到达时,可选择普通窗口和贵宾窗口来办理业务。但是普通顾客到达只能选择普通窗口来办理业务。1.2类的设计:1.2.1 time24类 Time24类对24小时时间制的加,减,等于,小于,输入,输出进行了运算符的重载。 class time24;time24 operator+ (const time24& lhs, const time24& rhs); lhs, int min); time24 operator+ (int min, const time24& time24 operator- (const time24&bool operator= (const time24& bool

3、 operator (istream& istr, time24 &r); ostream& operator (ostream& ostr, const time24& r);1.2.2 event类 Event类首先枚举了事件类型:到达事件,中途离开事件还是正常办完业务的离开事件。其中每个事件还包括了属性(普通事件还是贵宾事件)。具体成员变量及函数如下:#ifndef EVENT_CLASS #define EVENT_CLASS #include time24.henum EventTypearrival,departure,dep2; class Event private:int t

4、ime;/到达时间 EventType etype;/事件类型 int customerID;/顾客号 int tellerID;/窗口号 int waitTime;/等待时间 int serviceTime;/服务时间 int vip;/贵宾级 public:Event() int getTime() Event(int t,EventType et,int cID,int tID,int wt,int st,int v);int GetTime()const;EventType GetEventType() const;int GetCustomerID()const; int GetTe

5、llerID()const; int GetWaitTime()const; void setWaitTime(int t); int GetServiceTime()const; int GetVip()const;#endif 1.2.3 pqueue类 该优先级队列是以链表来实现的。由于每个事件都被插上了时间戳,所以以事件发生的先后顺序来排定优先级。时间早的事件,优先级高。同一时间,离开事件的优先级大于到达事件。template struct node T value;int priority;node * next;class PQueue int count;/队伍中的人数 *fro

6、nt,*back;/首尾指针 * NewNode(T & value,int & priority,node* next);/插入的新的结点(事件类型的) PQueue();PQueue();T PQFirst();void PQInsert(T item,int priority);/插入函数 void PQDelete();/删除函数 void ClearPQ();/清除函数 bool PQEmpty()const;/判断是否为空 bool PQFull()const;/判断是否已满 int PQLength()const;/判断队伍长度 1.2.4 simulation 类 具体的模拟过

7、程实现。#ifndef SIMULATION_CLASS #define SIMULATION_CLASS #include#includeEvent.hPQueue.h #include struct WindowState int finishServiceTime; int totalCustomerCount; int totalCustomerWait; int totalService;int MAX_Wait;class Simulation time24 begin,end;/营业开始和结束时间 int SimulationTimeLength; int TellersCoun

8、t;int nextCustomerID; int arrivalLow,arrivalHigh;/最小最大到达时间间隔(分钟) int serviceLow,serviceHigh;/最小最大服务时间间隔(分钟) int MaxBearWait;/最大耐心等待时间 int VipRate;/贵宾到达概率 int totalCustomerAway;/中途离开的顾客数目 WindowState tstat11; WindowState Vtstat;/贵宾窗口 PQueue pq;int flag;int NextArrivaltime();int GetServiceTime();int N

9、extAvailableTeller();Simulation();void initialization();/各窗口的数据初始化 void ArrivalEvent(Event e);/到达事件void DepartureEvent(Event e);/办完业务离开事件 void DepartureEvent2(Event e);/中途离开事件 void RunSimulation();void PrintSimulation();二:整个系统的设计框架 首先,根据银行服务的流程设计好系统的整个模拟运作的框图。由框图,划分好程序所需的几个类,确定好相应的功能。用VC6.0实现基本功能,分调

10、各内容,排除bug,再联调。实现了系统的基本功能后,再加上顾客的最大耐心等待时间,VIP窗口等功能,进行调试。调试的时候,原代码保留输出语句,用来检验是否符合逻辑。本系统关键在于处理各类事件,包括了到达事件,中途离开事件,办完业务离开事件。由于系统运用事件驱动来模拟,故插入到优先级的是各事件。各事件再根据它们的时间,来排定优先级。故重新设计了一个优先级队列。三:本离散事件的描述 本离散时间采用的比较简单类型的随机离散。模拟过程中,通过输入最大,最短服务时间,来确定一个顾客的的服务时间,如:serviceLow+rand()%(serviceHigh-serviceLow+1);同样,采用输入一

11、个顾客到达的时间间隔范围来随机取得一个顾客的到达时间,如:arrivalLow+rand()%(arrivalHigh-arrivalLow+1)。模拟过程中产生每个顾客的到达和离开事件,所有事件都加上时间戳,然后放到优先级队列中,队列中优先级最高的就是到达或离开最早的事件。由于接受服务的时间的长短不同,故先到达的顾客不一定可以先离开。根据服务窗口的当前情况,取一个时间最短的窗口分配给该顾客。接着用服务时间随机变量产生新的服务时间,由顾客的到达时间,等待时间和服务时间就可以确定该顾客的离开时间,再将顾客离开事件插入到队列。作为优先级队列的队列成员为事件对象,到达事件和离开事件均为Event类的

12、数据成员。对每个弹出到达事件,先读入它是何时到达的,并于各窗口的finishServiceTime作比较,如果值大于顾客的到达时间,则需要等待,不然,发生无需等待这种情况。同时产生下一个顾客的到达时间。调用NextAvailableTeller()来获得等待时间最小的窗口号,其中服务窗口的数量可由系统界面选定;再调用GetServiceTime()来取得随机的服务时间,其中服务时间范围可由系统界面设定。修改windows的窗口信息,产生离开事件。四:实现模拟的过程框图 开始营业 由窗口状态决定顾客的服务窗口号和等待时间 产生顾客到达事件 服务时间随机变量采样 随机获得下一个到达事件 下一个 入该顾客接受服务的时间 队 列 顾客离开事件 下一到达事件是否超出营业时间 入 队 到达和离开事件的优先级队列(时间戳) 结束 图1 产生顾客到达和离开事件队列逻辑 随机变量采样 获取服务窗口号 (所需服务时(等待时间最短) 间) 更改该

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1