《银行家算法50671.docx》由会员分享,可在线阅读,更多相关《银行家算法50671.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Evaluation Warning: The document was created with Spire.Doc for .NET.一 需求分析n 银行模拟系统要求模拟银行一天0closetime的营业情况,业务总共分为两类。存款与取款。开始银行拥有一定数量的总额total供运行。程序运行输出银行在处理业务后的事件表。包括时间,存款数量,取款数量,银行余額,等待情况。n 程序输入的形式式是按以下顺顺序输入到屏屏幕中,只需需按照提示操操作即可:银行总余額 银行运行行时间-交交易时间上、下下界-事件时间上、下界界-客户存存取金额n 程序输出的形式式是按照时间间顺序输出银银行运行期间间的事件表
2、n 程序的功能是模模拟显示银行行在整个营业业阶段的运行行状况二 概要设计本程序中用到的的抽象数据类类型有伪随机机数类ranndom,队队列类bannkqueuue,客户类类cliennt伪随机数类raandom的的定义如下:class rrandommpublic:randomm();/空构造函数数randomm(unsiigned shortt inittialSeeed);/带参构造造unsignned sshort randoomInteerger();/种种子seedd产生函数doublee rabddomDouuble();/双精精度数产生函函数doublee betwween(dd
3、oublee loww ,douuble hhigh);/范围随随机数产生函函数(douuble型)int beetweenn(int low,iint hiigh);/范围随机机数产生函数数(int型型)privatee:unsignned shhort sseed;客户类clieent的定义义如下:class CClientt public:int nuum;int mooney;Clientt *nexxt;int Deealinggtime;int Caasetimme;客户队列bannkqueuue定义如下下:class bbankquueuepublic:int n;bankquu
4、eue();/构造造bankqqueue();/析析构void eenqueuue(Cliient * c);/进队列Clientt* deqqueue();/出出队列int issEmptyy();/判断空否void ddeleteeALLVaalues();/删删除所有元素素privatee:Clientt *froont,*ttail;本程序利用队列列结果储存客客户信息: 按提示输入初始化银行系统客户信息随机类产生客户信息储存与q1队列里从q1中逐个弹出客户信息,进行交易,并显示结果不能满足的客户保存在q2中等待处理时间到或者所以业务已经完成就退出。删除q1,q2保存的信息。 三 详细设
5、计随机数类实现:l 随机数类构造种子=时钟;l 返回短整数的函函数乘数=333339;加数=7599812;种子=(乘数数*种子+加数)%3116376887;返回种子;l 在low和hiigh之间产产生整型随机机数调用 返回短短整数的函数数+low; 银行节点点和队列类实实现:l 银行队列构造函函数前指针=0;尾指针=0;长度=0;l 析构函数;进队列函数(银银行节点指针针)节点指针数据据复制到新节节点指针数据据如果队列空前指针=00; 尾指针针=0尾指针=0;长度+1;出队列新建指针P头指针向前走走查看队列是否为为空返回指针Pl 判断队列是否为为空返回 头指针针是否为0;删除所有元素长度,
6、尾指针置置0;从队列里弹出出节点并删除除四 调试分析 银行模拟系统调试过程中遇到到的问题:由于要运用到文文件输入输出出流,无法访访问Bankk类的私有数数据,故将大大部分程序写写入Mainn函数中经验和体会等:从写完代码到调调试成功,最最后不断的改改进和完善,不不仅巩固了类类定义和实现现,还极大的的挑战了我们们编程能力。五 用户使用说明 银行模拟系统在程序运行时会会依次显示-欢迎使用银银行模拟系统统,请按提示示输入-请输入银行最初初存款总额:请输入银行营业业时间:输入客户交易时时间的上、下下界,并以逗逗号分隔开:请输入事件之间间时间间隔的的上、下界,并以逗号分分隔开:请按顺序输入客客户存取款的
7、的数额(取款负在金额额前增加“-”,存款直接接输入金额即即可,并以空空格区分)输入0模拟结束束:只需按照提示输输入数据即可可得到结果六 测试数据 银行模拟系统:l 正确的测试数据据:输入数据:0 600 1100,1 20,1 100 2200 -3300 200 0 y10000 660000 20,1 20,1 -100000 -1 100000 -500000 600000 -7000 -800000 -900000 110000000 0 nn输出:-欢迎使用银银行模拟系统统,请按提示示输入-请输入银行最初初存款总额:请输入银行营业业时间:输入客户交易时时间的上、下下界,并以逗逗号分隔
8、开:请输入事件之间间时间间隔的的上、下界,并以逗号分分隔开:请按顺序输入客客户存取款的的数额(取款负在金额额前增加“-”,存款直接接输入金额即即可,并以空空格区分)输入0模拟结束束:第1个客户,从从营业开始的的第0分钟,来来到银行,想想要存取款1100当前银行余額为为¥0第1个客户,从从营业开始的的第0分钟,向向银行存款$100当前银行余額为为¥100第1个客户,从从营业开始的的第53分钟钟,离开银行行当前银行余額为为¥100现在检查第二队队列第2个客户,从从营业开始的的第65分钟钟,来到银行行,想要存取取款200当前银行余額为为¥100第2个客户,从从营业开始的的第65分钟钟,向银行存存款$
9、2000当前银行余額为为¥300第2个客户,从从营业开始的的第72分钟钟,离开银行行当前银行余額为为¥300现在检查第二队队列第3个客户,从从营业开始的的第79分钟钟,来到银行行,想要存取取款-3000当前银行余額为为¥300第3个客户,从从营业开始的的第79分钟钟,向银行存存款$-3000当前银行余額为为¥0第3个客户,从从营业开始的的第148分分钟,离开银银行当前银行余額为为¥0现在检查第二队队列第4个客户,从从营业开始的的第155分分钟,来到银银行,想要存存取款20当前银行余額为为¥0第4个客户,从从营业开始的的第155分分钟,向银行行存款$200当前银行余額为为¥20第4个客户,从从营
10、业开始的的第230分分钟,离开银银行当前银行余額为为¥20现在检查第二队队列广播:走过路过过不要错过,存存钱取钱安全全方便又实惠惠是否需要对次日日继续模拟(YY/N):请输入银行最初初存款总额:请输入银行营业业时间:输入客户交易时时间的上、下下界,并以逗逗号分隔开:请输入事件之间间时间间隔的的上、下界,并以逗号分分隔开:请按顺序输入客客户存取款的的数额(取款负在金额额前增加“-”,存款直接接输入金额即即可,并以空空格区分)输入0模拟结束束:第1个客户,从从营业开始的的第0分钟,来来到银行,想想要存取款-100000当前银行余額为为¥100000第1个客户,从从营业开始的的第0分钟,向向银行存款
11、$-100000当前银行余額为为¥0第1个客户,从从营业开始的的第13分钟钟,离开银行行当前银行余額为为¥0现在检查第二队队列第2个客户,从从营业开始的的第25分钟钟,来到银行行,想要存取取款-1当前银行余額为为¥0银行总额不足,第第2个客户转转入第二队列列等待当前银行余額为为¥0第3个客户,从从营业开始的的第32分钟钟,来到银行行,想要存取取款100000当前银行余額为为¥0第3个客户,从从营业开始的的第32分钟钟,向银行存存款$100000当前银行余額为为¥100000第3个客户,从从营业开始的的第41分钟钟,离开银行行当前银行余額为为¥100000现在检查第二队队列在第3个客户后后,从营
12、业开开始的第577分钟,有第第二队列客户户从银行取款款-1离开第4个客户,从从营业开始的的第57分钟钟,来到银行行,想要存取取款-500000当前银行余額为为¥99999银行总额不足,第第4个客户转转入第二队列列等待当前银行余額为为¥99999第5个客户,从从营业开始的的第72分钟钟,来到银行行,想要存取取款600000当前银行余額为为¥99999第5个客户,从从营业开始的的第72分钟钟,向银行存存款$600000当前银行余額为为¥699999第5个客户,从从营业开始的的第84分钟钟,离开银行行当前银行余額为为¥699999现在检查第二队队列在第5个客户后后,从营业开开始的第1111分钟,有有
13、第二队列客客户从银行取取款-500000离开第6个客户,从从营业开始的的第111分分钟,来到银银行,想要存存取款-70000当前银行余額为为¥199999第6个客户从银银行取款¥-7000当前银行余額为为¥129999第6个客户,从从营业开始的的第113分分钟,离开银银行当前银行余額为为¥129999第7个客户,从从营业开始的的第126分分钟,来到银银行,想要存存取款-800000当前银行余額为为¥129999银行总额不足,第第7个客户转转入第二队列列等待当前银行余額为为¥129999第8个客户,从从营业开始的的第130分分钟,来到银银行,想要存存取款-900000当前银行余額为为¥12999
14、9银行总额不足,第第8个客户转转入第二队列列等待当前银行余額为为¥129999第9个客户,从从营业开始的的第148分分钟,来到银银行,想要存存取款10000000当前银行余額为为¥129999第9个客户,从从营业开始的的第148分分钟,向银行行存款$100000000当前银行余額为为¥10122999第9个客户,从从营业开始的的第155分分钟,离开银银行当前银行余額为为¥10122999现在检查第二队队列在第9个客户后后,从营业开开始的第1771分钟,有有第二队列客客户从银行取取款-800000离开在第9个客户后后,从营业开开始的第1778分钟,有有第二队列客客户从银行取取款-900000离开广播:走过路过过不要错过,存存钱取钱安全全方便又实惠惠是否需要对次日日继续模拟(YY/N):七 源程序 见附件