课程设计报告银行模拟系统.doc

上传人:laozhun 文档编号:4186628 上传时间:2023-04-09 格式:DOC 页数:14 大小:50.50KB
返回 下载 相关 举报
课程设计报告银行模拟系统.doc_第1页
第1页 / 共14页
课程设计报告银行模拟系统.doc_第2页
第2页 / 共14页
课程设计报告银行模拟系统.doc_第3页
第3页 / 共14页
课程设计报告银行模拟系统.doc_第4页
第4页 / 共14页
课程设计报告银行模拟系统.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《课程设计报告银行模拟系统.doc》由会员分享,可在线阅读,更多相关《课程设计报告银行模拟系统.doc(14页珍藏版)》请在三一办公上搜索。

1、C+课程设计报告设计题目:银行模拟系统n 一、概述:银行模拟系统要求模拟银行一天0closetime的营业情况,业务总共分为两类。存款与取款。开始银行拥有一定数量的总额total供运行。程序运行输出银行在处理业务后的事件表。包括时间,存款数量,取款数量,银行余額,等待情况。程序输入的形式是按以下顺序输入到屏幕中,只需按照提示操作即可:银行总余額 银行运行时间-交易时间上、下界-事件时间上、下界-客户存取金额程序输出的形式是按照时间顺序输出银行运行期间的事件表二、软件功能说明程序的功能是模拟显示银行在整个营业阶段的运行状况。用户使用说明银行模拟系统在程序运行时会依次显示-欢迎使用呼小毛银行模拟系

2、统,请按提示输入-请输入银行最初存款总额:请输入银行营业时间:输入客户交易时间的上、下界,并以逗号分隔开:请输入事件之间时间间隔的上、下界,并以逗号分隔开:请按顺序输入客户存取款的数额(取款负在金额前增加“-”,存款直接输入金额即可,并以空格区分)输入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输出:-欢迎使用

3、呼小毛银行模拟系统,请按提示输入-请输入银行最初存款总额:请输入银行营业时间:输入客户交易时间的上、下界,并以逗号分隔开:请输入事件之间时间间隔的上、下界,并以逗号分隔开:请按顺序输入客户存取款的数额(取款负在金额前增加“-”,存款直接输入金额即可,并以空格区分)输入0模拟结束:第1个客户,从营业开始的第0分钟,来到银行,想要存取款100当前银行余額为¥0第1个客户,从营业开始的第0分钟,向银行存款$100当前银行余額为¥100第1个客户,从营业开始的第53分钟,离开银行当前银行余額为¥100现在检查第二队列第2个客户,从营业开始的第65分钟,来到银行,想要存取款200当前银行余額为¥100第

4、2个客户,从营业开始的第65分钟,向银行存款$200当前银行余額为¥300第2个客户,从营业开始的第72分钟,离开银行当前银行余額为¥300现在检查第二队列第3个客户,从营业开始的第79分钟,来到银行,想要存取款-300当前银行余額为¥300第3个客户,从营业开始的第79分钟,向银行存款$-300当前银行余額为¥0第3个客户,从营业开始的第148分钟,离开银行当前银行余額为¥0现在检查第二队列第4个客户,从营业开始的第155分钟,来到银行,想要存取款20当前银行余額为¥0第4个客户,从营业开始的第155分钟,向银行存款$20当前银行余額为¥20第4个客户,从营业开始的第230分钟,离开银行当前

5、银行余額为¥20现在检查第二队列广播:走过路过不要错过,存钱取钱安全方便又实惠是否需要对次日继续模拟(Y/N):请输入银行最初存款总额:请输入银行营业时间:输入客户交易时间的上、下界,并以逗号分隔开:请输入事件之间时间间隔的上、下界,并以逗号分隔开:请按顺序输入客户存取款的数额(取款负在金额前增加“-”,存款直接输入金额即可,并以空格区分)输入0模拟结束:第1个客户,从营业开始的第0分钟,来到银行,想要存取款-10000当前银行余額为¥10000第1个客户,从营业开始的第0分钟,向银行存款$-10000当前银行余額为¥0第1个客户,从营业开始的第13分钟,离开银行当前银行余額为¥0现在检查第二

6、队列第2个客户,从营业开始的第25分钟,来到银行,想要存取款-1当前银行余額为¥0银行总额不足,第2个客户转入第二队列等待当前银行余額为¥0第3个客户,从营业开始的第32分钟,来到银行,想要存取款10000当前银行余額为¥0第3个客户,从营业开始的第32分钟,向银行存款$10000当前银行余額为¥10000第3个客户,从营业开始的第41分钟,离开银行当前银行余額为¥10000现在检查第二队列在第3个客户后,从营业开始的第57分钟,有第二队列客户从银行取款-1离开第4个客户,从营业开始的第57分钟,来到银行,想要存取款-50000当前银行余額为¥9999银行总额不足,第4个客户转入第二队列等待当

7、前银行余額为¥9999第5个客户,从营业开始的第72分钟,来到银行,想要存取款60000当前银行余額为¥9999第5个客户,从营业开始的第72分钟,向银行存款$60000当前银行余額为¥69999第5个客户,从营业开始的第84分钟,离开银行当前银行余額为¥69999现在检查第二队列在第5个客户后,从营业开始的第111分钟,有第二队列客户从银行取款-50000离开第6个客户,从营业开始的第111分钟,来到银行,想要存取款-7000当前银行余額为¥19999第6个客户从银行取款¥-7000当前银行余額为¥12999第6个客户,从营业开始的第113分钟,离开银行当前银行余額为¥12999第7个客户,

8、从营业开始的第126分钟,来到银行,想要存取款-80000当前银行余額为¥12999银行总额不足,第7个客户转入第二队列等待当前银行余額为¥12999第8个客户,从营业开始的第130分钟,来到银行,想要存取款-90000当前银行余額为¥12999银行总额不足,第8个客户转入第二队列等待当前银行余額为¥12999第9个客户,从营业开始的第148分钟,来到银行,想要存取款1000000当前银行余額为¥12999第9个客户,从营业开始的第148分钟,向银行存款$1000000当前银行余額为¥1012999第9个客户,从营业开始的第155分钟,离开银行当前银行余額为¥1012999现在检查第二队列在第

9、9个客户后,从营业开始的第171分钟,有第二队列客户从银行取款-80000离开在第9个客户后,从营业开始的第178分钟,有第二队列客户从银行取款-90000离开广播:走过路过不要错过,存钱取钱安全方便又实惠是否需要对次日继续模拟(Y/N):三、软件结构本程序中用到的抽象数据类型有伪随机数类random,队列类bankqueue,客户类client伪随机数类random的定义如下:class randompublic:random();/空构造函数random(unsigned short initialSeed);/带参构造unsigned short randomInterger();/种子

10、seed产生函数double rabdomDouble();/双精度数产生函数double between(double low ,double high);/范围随机数产生函数(double型)int between(int low,int high);/范围随机数产生函数(int型)private:unsigned short seed;客户类client的定义如下:class Client public:int num;int money;Client *next;int Dealingtime;int Casetime;客户队列bankqueue定义如下:class bankqueue

11、public:int n;bankqueue();/构造bankqueue();/析构void enqueue(Client * c);/进队列Client* dequeue();/出队列int isEmpty();/判断空否void deleteALLValues();/删除所有元素private:Client *front,*tail;本程序利用队列结果储存客户信息: 按提示输入初始化银行系统客户信息随机类产生客户信息储存与q1队列里从q1中逐个弹出客户信息,进行交易,并显示结果不能满足的客户保存在q2中等待处理时间到或者所以业务已经完成就退出。删除q1,q2保存的信息。 详细设计随机数类

12、实现:l 随机数类构造种子=时钟;l 返回短整数的函数乘数=33339;加数=759812;种子=(乘数*种子+加数)%31637687;返回种子;l 在low和high之间产生整型随机数调用 返回短整数的函数+low; 银行节点和队列类实现:l 银行队列构造函数前指针=0;尾指针=0;长度=0;l 析构函数;进队列函数(银行节点指针)节点指针数据复制到新节点指针数据如果队列空前指针=0; 尾指针=0尾指针=0;长度+1;出队列新建指针P头指针向前走查看队列是否为空返回指针Pl 判断队列是否为空返回 头指针是否为0;删除所有元素长度,尾指针置0;从队列里弹出节点并删除四、 源程序#ifndef

13、 BANK#define BANK#includeiostream#includerandom.h#includefstreamusing namespace std;/客户类,包含五个数据:客户符号,客户存取款数,指向下一级指针,交易时间,中间时间间隔。class Client ;class bankqueue;class Client public:int num;int money;Client *next;int Dealingtime;int Casetime;/客户队列bankqueueclass bankqueuepublic:int n;bankqueue();/构造bankq

14、ueue();/析构void enqueue(Client * c);/进队列Client* dequeue();/出队列int isEmpty();/判断空否void deleteALLValues();/删除所有元素private:Client *front,*tail;/以下是函数实现bankqueue:bankqueue()front=0;tail=0;n=0;bankqueue:bankqueue()void bankqueue:enqueue(Client *c)Client *exp=new Client;exp-Dealingtime=c-Dealingtime;exp-mon

15、ey=c-money;exp-next=c-next;exp-num=c-num;exp-Casetime=c-Casetime;if(front=0)tail=exp;front=exp;elsetail-next=exp;tail=tail-next;tail-next=0;n+;Client* bankqueue:dequeue()Client* q=front;front=front-next;if(front=0)tail=0;n-;return q;int bankqueue:isEmpty()return front=0;void bankqueue:deleteALLValue

16、s()tail=0;n=0;while(front!=0)Client *ip=front;front=front-next;delete ip;#endif#ifndef RANDOM#define RANDOM#include /随机数产生类randomclass randompublic:random();/空构造函数random(unsigned short initialSeed);/带参构造unsigned short randomInterger();/种子seed产生函数double rabdomDouble();/双精度数产生函数double between(double l

17、ow ,double high);/范围随机数产生函数(double型)int between(int low,int high);/范围随机数产生函数(int型)private:unsigned short seed;/以下函数实现random:random()seed=(unsigned)time(NULL);unsigned short random:randomInterger()const long multiplier=33339;const long adder=759812;seed=(multiplier*seed+adder)%31637687;return seed;do

18、uble random:rabdomDouble()double dseed=randomInterger();return dseed/65536.0;double random:between(double low,double high)待添加的隐藏文字内容2return low+(high-low)*rabdomDouble();int random:between(int low, int high)/随机数产生函数between.return low+randomInterger()%(high-low+1);#endif#includebank.h#include#include

19、random.h#includeusing namespace std;int main() /ifstream cin(1.txt);/ofstream cout(2.txt);cout-欢迎使用呼小毛银行模拟系统,请按提示输入-;/主函数.in.txt文件开头顺序输入是total,closetime,交易时间的上、下届,事件时间的上、下届。(共六个基本输入参数)int z=0;while(true)while(z)coutq;if(q=N|q=n|q=Y|q=y)while(q=N|q=n)return 0;while (q=Y|q=y) break;else cout。!输入错误请重新输

20、入n;if(q=Y|q=y) break;z+;bankqueue q1,q2; int total,closetime;char d;coutntotal;coutclosetime;random b;int i=1;int DealingLowTime,DealinghighTime,CaseLowTime,CasehighTime;coutDealinghighTimedDealingLowTime;coutCasehighTimedCaseLowTime;cout请按顺序输入客户存取款的数额n(取款负在金额前增加“-”,存款直接输入金额即可,并以空格区分)np-money)if(p-m

21、oney=0)break;p-num=i;p-Dealingtime=b.between(DealingLowTime,DealinghighTime);p-Casetime=b.between(CaseLowTime,CasehighTime);q1.enqueue(p);i+;int time=0;/下面从队列1里逐个出队列进行操作while(!q1.isEmpty() & time=closetime)Client *op=q1.dequeue();cout第num个客户,从营业开始的第time分钟,来到银行,想要存取款moneyn;cout当前银行余額为¥totalmoneymoney

22、)total)/不满足的进队列2 q2.enqueue(op);time+=op-Casetime;cout银行总额不足,第num个客户转入第二队列等待n;cout当前银行余額为¥totalmoneymoney)money;cout第num个客户从银行取款¥moneyn;cout当前银行余額为¥totalDealingtime;if(timeclosetime)break;cout第num个客户,从营业开始的第time分钟,离开银行n;cout当前银行余額为¥totalCasetime;if(timeclosetime)break;else /存款int store=total;total+=

23、op-money;cout第num个客户,从营业开始的第time分钟,向银行存款$moneyn;cout当前银行余額为¥totalDealingtime;if(timeclosetime)break;cout第num个客户,从营业开始的第time分钟,离开银行n;cout当前银行余額为¥totalCasetime;cout现在检查第二队列store)/存款之后检查队列2Client *d=q2.dequeue();if(total-(d-money)time+=op-Dealingtime;if(timeclosetime) break;else total+=d-money;cout在第nu

24、m个客户后,从营业开始的第time分钟,有第二队列客户从银行取款money离开closetime)break;/时间到了所有客户出队列.关闭if(q1.n0|q2.n0)cout广播:银行营业时间已到,欢迎明天再来,再见n;q1.deleteALLValues();q2.deleteALLValues();elsecout广播:走过路过不要错过,存钱取钱安全方便又实惠n;参考文献1 关治,陈景俩。数值计算。北京:清华大学出版社,19932谭浩强。C+程序设计实践指导,清华大学出版社,20043 彭佩。面向对象程序设计教程。北京:高等教育出版社,20014 陆润敏 C语言绘图教程与计算机仿真技术 北京:北京航天航空大学出版社,1995

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号