资源描述:
《数据结构大型实验报告-银行模拟系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构大型实验报告目录一:采用的模型和类的设计…………………………………………1.1模型…………………………………………………………1.2类的设计……………………………………………………1.2.1time24类…………………………………………………1.2.2event类…………………………………………………1.2.3pqueue类…………………………………………………1.2.4simulation类……………………………………………二:整个系统的框架设计……………………………………………三:本离散事件描述…………………………………………………四:实现模拟
2、的过程框图……………………………………………五:完整的系统源代码………………………………………………六:本系统运行结果…………………………………………………七:实验中遇到的问题及解决方法…………………………………一:采用的模型和类的设计1.1模型:本系统采取事件驱动模型来设计。通过程序动态模拟银行顾客在一家有n>=2个窗口的银行的到达和离开的情况。通过计算每位顾客的平均等待时间及每一窗口处于“繁忙”状态的百分比,来计算银行的服务效率。实现中,可以顾客的到达事件,离开事件代表银行活动的对象,用事件驱动来模拟这些活动,并以概率(随机数发生器)来描述预期的客户到
3、达率和银行职员为一个顾客服务所需的时间。在实验中,可改变参数,如银行营业时间范围,银行窗口数、客户的到达率、服务时间,顾客的最大耐性等待时间,VIP顾客的到达率等,测试银行的服务效率。银行模拟的关键部分为客户时间,包括到达,中途离开和办完业务离开事件,刚达到的顾客通过随机数产生下一个顾客的到达,已到达的顾客通过随机数产生服务时间,选择最早空闲的窗口后,可生成离开事件;所有事件都被加上时间戳,放到优先队列中,队列中优先级最高的事件就是时间戳最早的事件。其中每一到达事件均可估计出自己的等待时间,若等待时间超出一开始设定的最大耐性等待时间,则顾客选择中途离开,生
4、成中途离开事件。到达的事件中,又分为普通顾客到达事件和VIP顾客到达事件。VIP到达时,可选择普通窗口和贵宾窗口来办理业务。但是普通顾客到达只能选择普通窗口来办理业务。1.2类的设计:1.2.1time24类Time24类对24小时时间制的加,减,等于,小于,输入,输出进行了运算符的重载。classtime24;time24operator+(consttime24&lhs,consttime24&rhs);time24operator+(consttime24&lhs,intmin);time24operator+(intmin,consttime24&
5、rhs);time24operator-(consttime24&lhs,consttime24&rhs);booloperator==(consttime24&lhs,consttime24&rhs);booloperator<(consttime24&lhs,consttime24&rhs);istream&operator>>(istream&istr,time24&r);ostream&operator<<(ostream&ostr,consttime24&r);1.2.2event类Event类首先枚举了事件类型:到达事件,中途离开事件还是正常办
6、完业务的离开事件。其中每个事件还包括了属性(普通事件还是贵宾事件)。具体成员变量及函数如下:#ifndefEVENT_CLASS#defineEVENT_CLASS#include"time24.h"enumEventType{arrival,departure,dep2};classEvent{private:inttime;//到达时间EventTypeetype;//事件类型intcustomerID;//顾客号inttellerID;//窗口号intwaitTime;//等待时间intserviceTime;//服务时间intvip;//贵宾级pu
7、blic:Event()intgetTime()Event(intt,EventTypeet,intcID,inttID,intwt,intst,intv);intGetTime()const;EventTypeGetEventType()const;intGetCustomerID()const;intGetTellerID()const;intGetWaitTime()const;voidsetWaitTime(intt);intGetServiceTime()const;intGetVip()const;};#endif1.2.3pqueue类该优先
8、级队列是以链表来实现的。由于每个事件都被插上了时间戳,所以以事件发