银行业务活动的模拟Word格式文档下载.docx
- 文档编号:16956772
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:17
- 大小:165.60KB
银行业务活动的模拟Word格式文档下载.docx
《银行业务活动的模拟Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《银行业务活动的模拟Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
(2)算法设计(函数模块及功能,可画流程图)
2.2设计表示
(1)关系调用图
(2)函数接口规格说明
函数调用
1.主函数main
2.进栈函数push
3.出栈函数pop
4.查找和处理函数service*searchAndDel
5.到达函数arrive
6.存款函数putMoney
7.群款函数getMoney
8.随机函数rand
2.3详细设计(伪码,注释)
ADTQueue{
数据对象:
D={ai∈Elemseti=1,2,…,n,n≥0}
数据关系:
R1={<
ai-1ai>
ai-1ai∈D,i=2,…,n}
约定其中a1端为队列头,an端为队列尾.
基本操作:
InitQueue(&
Q)
操作结果:
构造一个空队列Q
QueueEmpty(Q)
若Q为空队列,则返回TRUE,否则FALSE
GetHead(Q&
q)EnQueue(&
Qq)
插入元素q为Q的新的队尾素
DeQueue(&
Q&
q);
操作结果删除Q的队头元素,并用q返回其值。
3调试分析(时间空间复杂度)
银行业务模拟程序,在编译的时候,由于对话框之间的衔接不太懂,所以并没有实现应有的结果。
但后来还是通过学生,上网查询等多种方法,终于弄清了对话框之间的衔接和一些基本算法。
最终也运行出来了。
4.用户手册
本程序是在visualsdudio2012上编译测试的。
5.测试数据及测试结果
测试数据:
存款10000,时间480,最大时间间隔30,最大处理时间5
存款30000,时间360,最大时间间隔10,最大处理时间10
6.源程序清单
#include<
iostream>
string>
usingnamespacestd;
inttotal;
intcloseTime;
intarriveTime;
intdealTime;
intdealMoney=5000;
intcurrentTime=0;
inttotalTime=0;
intcounter=0;
intnumber=1;
+
structservice
{
intnum;
stringtype;
intbeginTime;
intendTime;
intmoney;
service*next;
};
structqueue
{
service*head;
service*rear;
voidpush(queue&
q,intd)
service*temp=newservice;
temp->
money=d;
next=NULL;
if(NULL==q.head)
{
q.head=temp;
q.rear=temp;
}
else
q.rear->
next=temp;
q.rear=q.rear->
next;
}
voidpop(queue&
q)
{
service*temp;
temp=q.head;
if(NULL==q.head->
next)
q.head=q.rear=NULL;
else
q.head=q.head->
deletetemp;
service*front(queue&
returnq.head;
service*back(queue&
returnq.rear;
service*searchAndDel(queue&
q,intm)
service*sign=q.head;
while(NULL!
=q.head)
{
if((-(q.head->
money))<
m)
if(q.head==q.rear)
q.head=q.rear=NULL;
returntemp;
q.head=q.head->
if(q.head==q.rear){}
next=q.head;
q.rear=q.rear->
q.head=q.head->
if(q.head==sign)
returnNULL;
}
boolstate=1;
intcurrentTimeOfDeal=0;
inttheArriveTime=0;
queueeq;
queuefq;
queuesq;
voidarrive()
push(fq,(rand()%(2*dealMoney)-dealMoney));
back(fq)->
beginTime=currentTime;
num=number;
push(eq,(back(fq)->
money));
back(eq)->
type="
到达"
;
++number;
voidputMoney()
total+=front(fq)->
money;
push(eq,front(fq)->
money);
离开"
num=front(fq)->
num;
endTime=(front(fq)->
beginTime+rand()%dealTime+1);
++counter;
totalTime+=(back(eq)->
endTime-front(fq)->
beginTime);
pop(fq);
currentTimeOfDeal=back(eq)->
endTime;
state=0;
voidgetMoney()
if((-fq.head->
money)>
total)
push(sq,front(fq)->
money);
back(sq)->
beginTime=front(fq)->
beginTime;
total+=back(fq)->
beginTime=0;
totalTime+=(back(eq)->
endTime-back(fq)->
beginTime);
service*temped;
intrandomTemp;
voidfindAndDeal()
while((temped=searchAndDel(sq,total))&
&
NULL!
=temped)
total+=temped->
push(eq,temped->
num=temped->
randomTemp=rand()%dealTime+1;
endTime=currentTime+randomTemp;
currentTimeOfDeal+=randomTemp;
endTime-temped->
deletetemped;
temped=NULL;
state=0;
intmain()
printf("
********************************************\n"
);
**\n"
*欢迎进入银行模拟系统*\n"
1.开始模拟0.退出\n"
intn;
scanf("
%d"
&
n);
while(n==1)
srand(NULL);
输入银行的初始存款:
\n"
total);
输入银行的营业时间:
closeTime);
输入最大到达时间间隔:
arriveTime);
输入最大的处理时间:
dealTime);
theArriveTime+=rand()%arriveTime+1;
while(currentTime<
closeTime)
++currentTime;
if(currentTimeOfDeal<
currentTime)currentTimeOfDeal=currentTime;
if(currentTimeOfDeal==currentTime)state=1;
if(currentTime==theArriveTime)
arrive();
theArriveTime+=rand()%arriveTime+1;
}//if
if(1==state&
NULL!
=fq.head)
if(fq.head->
money>
=0)
putMoney();
findAndDeal();
getMoney();
cout<
<
endl<
"
客户序列"
"
\t"
<
事件类型"
\t\t"
时间"
处理金额"
endl;
while(NULL!
=eq.head)
if(eq.head->
type=="
)
eq.head->
num<
eq.head->
type<
endTime<
money<
beginTime<
pop(eq);
未处理客户:
totalTime+=(closeTime-fq.head->
fq.head->
num<
endl;
客户逗留平均时间为:
totalTime/counter<
cout<
银行当前余额:
total<
break;
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行业务 活动 模拟
![提示](https://static.bdocx.com/images/bang_tan.gif)