银行家算法.docx
《银行家算法.docx》由会员分享,可在线阅读,更多相关《银行家算法.docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一 需求分析n 银行模拟系统要求模拟银行一天0closetime的营业情况,业务总共分为两类。存款与取款。开始银行拥有一定数量的总额total供运行。程序运行输出银行在处理业务后的事件表。包括时间,存款数量,取款数量,银行余額,等待情况。n 程序输入的形式是按以下顺序输入到屏幕中,只需按照提示操作即可:银行总余額 银行运行时间-交易时间上、下界-事件时间上、下界-客户存取金额n 程序输出的形式是按照时间顺序输出银行运行期间的事件表n 程序的功能是模拟显示银行在整个营业阶段的运行状况二 概要设计本程序中用到的抽象数据类型有伪随机数类random,队列类bankqueue,客户类client伪随机
2、数类random的定义如下:class randompublic:random();/空构造函数random(unsigned short initialSeed);/带参构造unsigned short randomInterger();/种子seed产生函数double rabdomDouble();/双精度数产生函数double between(double low ,double high);/范围随机数产生函数(double型)int between(int low,int high);/范围随机数产生函数(int型)private:unsigned short seed;客户类cl
3、ient的定义如下:class Client public:int num;int money;Client *next;int Dealingtime;int Casetime;客户队列bankqueue定义如下:class bankqueuepublic:int n;bankqueue();/构造bankqueue();/析构void enqueue(Client * c);/进队列Client* dequeue();/出队列int isEmpty();/判断空否void deleteALLValues();/删除所有元素private:Client *front,*tail;本程序利用队
4、列结果储存客户信息: 按提示输入初始化银行系统客户信息随机类产生客户信息储存与q1队列里从q1中逐个弹出客户信息,进行交易,并显示结果不能满足的客户保存在q2中等待处理时间到或者所以业务已经完成就退出。删除q1,q2保存的信息。 三 详细设计随机数类实现:l 随机数类构造种子=时钟;l 返回短整数的函数乘数=33339;加数=759812;种子=(乘数*种子+加数)%31637687;返回种子;l 在low和high之间产生整型随机数调用 返回短整数的函数+low; 银行节点和队列类实现:l 银行队列构造函数前指针=0;尾指针=0;长度=0;l 析构函数;进队列函数(银行节点指针)节点指针数据
5、复制到新节点指针数据如果队列空前指针=0; 尾指针=0尾指针=0;长度+1;出队列新建指针P头指针向前走查看队列是否为空返回指针Pl 判断队列是否为空返回 头指针是否为0;删除所有元素长度,尾指针置0;从队列里弹出节点并删除四 调试分析 银行模拟系统调试过程中遇到的问题:由于要运用到文件输入输出流,无法访问Bank类的私有数据,故将大部分程序写入Main函数中经验和体会等:从写完代码到调试成功,最后不断的改进和完善,不仅巩固了类定义和实现,还极大的挑战了我们编程能力。五 用户使用说明 银行模拟系统在程序运行时会依次显示-欢迎使用银行模拟系统,请按提示输入-请输入银行最初存款总额:请输入银行营业
6、时间:输入客户交易时间的上、下界,并以逗号分隔开:请输入事件之间时间间隔的上、下界,并以逗号分隔开:请按顺序输入客户存取款的数额(取款负在金额前增加“-”,存款直接输入金额即可,并以空格区分)输入0模拟结束:只需按照提示输入数据即可得到结果六 测试数据 银行模拟系统:l 正确的测试数据:输入数据:0 600 100,1 20,1 100 200 -300 20 0 y10000 60000 20,1 20,1 -10000 -1 10000 -50000 60000 -7000 -80000 -90000 1000000 0 n输出:-欢迎使用银行模拟系统,请按提示输入-请输入银行最初存款总额
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行家 算法
限制150内