ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:57.60KB ,
资源ID:28069208      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28069208.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(银行管理系统实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

银行管理系统实验报告.docx

1、银行管理系统实验报告一 需求分析 假设某银行有2个窗口对外接待客户,从早晨银行开门起不断有客户进入银行,由于每个窗口在某个时刻只能接待一个客户。因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进和银行的客户。如果某个窗口的业务员正空闲,则可上前办理业务。反之,若个窗口均有客户所占,他便会排在为数最少的队伍后面。编制一个程序模拟银行的这种业务活动并计算一天中客户在银行的平均逗留时间。1.输入:初始存款, 营业时间,最大到达时间间隔,最 大处理时间2.输出:客户到达离开时间,客户平均逗留时间,银行余额 3.功能:模拟银行业务情况,计算客户平均逗留时间4.测试数据:随机 二 概要设计数据结构:用

2、链表实现客户到来和离开事件表。用队列实现用户无法进行事物办理时的排队情况。三 详细设计1. 数据结构详细设计:struct queue /队列service* head;service* rear;queue eq; /事件队列queue fq; /队列一 queue sq; /对列二 /初始化三个队列四 调试分析 调试过程中遇到的问题:银行服务中,不只是存取款这些简单的事情,我在最初的程序设计时考虑十分浅显。对于如何使用链表实现表示客户到来跟业务办理时存在疑问,经老师同学指点后问题解决。五 使用说明和测试结果1.使用说明:用户选择1或0(开始模拟或退出)开始程序。自主输入银行的初始存款、银行

3、的营业时间、最大到达时间间隔、最大处理时间。回车。程序开始运行。2.测试结果:六 心得体会 通过此次实验,成功的实现了由队列来解决很多解决问题时需要等待排队的问题。对于如何使用链表表现相关到达及处理问题事宜也有了更近一步的学习。在实践过程中,遇到了很多由于经验不足而导致的问题,幸好在老师和同学们的帮助下,我顺利完成了实验,并学习了更多。 附录源代码:#include #include #include using namespace std;int total; /初始时银行现存资金总额int closeTime; /营业结束时间int arriveTime; /两个到达事件之间的间隔上限in

4、t dealTime; /客户之间交易的时间上限int dealMoney = 5000; /交易额上限int currentTime = 0; /当前时间int totalTime = 0; /客户逗留总时间int counter = 0; /客户总数int number = 1; /初始客户序列号bool state =1; /用于判断是否有窗口在处理int currentTimeOfDeal = 0;int theArriveTime = 0;struct service int num; /客户号 string type; /到达或离开 int beginTime; int endTi

5、me; int money; /正数为存款,负数为取款 service* next;struct queue /队列service* head;service* rear;queue eq; /事件队列queue fq; /队列一 queue sq; /对列二 /初始化三个队列void push(queue &q,int d)/ 插入元素d为Q的新的队尾元素service* temp = new service;temp-money = d;temp-next = NULL;if(NULL = q.head)/队列为空,初始化q. head = temp;q. rear = temp;/ife

6、lse /队列不为空,插入元素dq. rear-next = temp;q. rear = q.rear-next;/void pop(queue &q)/出队 service* temp;temp = q. head;if(NULL =q. head-next)q.head = q. rear =NULL;elseq. head=q. head-next;delete temp;service* front(queue &q)/返回队首元素return q. head;service* back(queue &q)/返回队尾元素return q. rear;service* searchAn

7、dDel(queue &q,int m)/在对列中寻找可处理元素service* sign = q. head; /标记头节点service* temp;while(NULL != q. head)if(-(q. head-money) next; / 首节点后移一位,返回原首节点return temp;/else/whileelse/队首元首不能被处理if(q. head = q. rear)else/首节点移到队列尾部q. rear-next = q. head; q. rear = q. rear-next;q. head =q. head-next;q. rear-next = NUL

8、L;/else/elseif(q. head = sign)/队列循环一周时停止return NULL;return NULL;void arrive()/到达函数 随机产生顾客,进入队列一产生到达事件 进入事件队列push(fq,(rand()% (2*dealMoney) -dealMoney); /随机产生顾客加入第一队列,-5000-5000back(fq)-beginTime = currentTime;back(fq)-num = number;push(eq,(back(fq)-money); /将产生事件加入事件队列back(eq)-beginTime = currentTim

9、e;back(eq)-type = 到达;back(eq)-num = number;+number;void putMoney() /存款函数total += front(fq)-money; /更新资金总额push(eq,front(fq)-money); /加入事件队列 离开back(eq)-type = 离开;back(eq)-num = front(fq)-num;back(eq)-endTime = (front(fq)-beginTime + rand()%dealTime +1);+counter; /更新客户总数totalTime += (back(eq)-endTime -

10、 front(fq)-beginTime); /更新逗留时间pop(fq); /删除第一队列第一个业务currentTimeOfDeal = back(eq)-endTime; state =0;void getMoney()/取款函数if( (-fq.head-money) total ) /资金短缺 加入第二队列push( sq,front(fq)-money );back(sq)-beginTime = front(fq)-beginTime;back(sq)-num = front(fq)-num;pop(fq);/ifelse total += back(fq)-money; pus

11、h(eq,front(fq)-money); /加入事件队列 离开 back(eq)-type = 离开; back(eq)-num = front(fq)-num; back(eq)-endTime = (front(fq)-beginTime + rand()%dealTime +1); back(eq)-beginTime = 0; currentTimeOfDeal = back(eq)-endTime; +counter; /更新客户总数 totalTime += ( back(eq)-endTime - back(fq)-beginTime ); /更新逗留时间 pop(fq);

12、/删除第一队列第一个业务 state =0;/elseservice* temped ;int randomTemp;void findAndDeal()/在对列中寻找可处理元素,对其进行处理while( (temped= searchAndDel(sq,total)&NULL != temped ) /查找可处理取款total += temped-money; /更新资金总额push(eq,temped-money); /加入事件队列训 离开back(eq)-type = 离开;back(eq)-num = temped-num;randomTemp = rand()%dealTime +1

13、;back(eq)-endTime = currentTime + randomTemp ;currentTimeOfDeal += randomTemp;+counter; /更新客户总数totalTime += ( back(eq)-endTime - temped-beginTime ); /更新逗留时间 delete temped; /删除节点temped = NULL;state = 0;int main() printf( *n);printf( 欢迎进入银行模拟系统n);printf( *n);printf(1.开始模拟 0.退出n);int n;scanf(%d,&n);whi

14、le(n=1)srand(time(NULL); /初始化随机函数printf(输入银行的初始存款:n);scanf(%d,&total);printf(输入银行的营业时间:n);scanf(%d,&closeTime);printf(输入最大到达时间间隔:n); scanf(%d,&arriveTime);printf(输入最大的处理时间:n);scanf(%d,&dealTime);theArriveTime +=rand()%arriveTime + 1; /首次到达时间while(currentTime closeTime)+currentTime;if( currentTimeOfD

15、eal money = 0)putMoney();findAndDeal();/ifelse getMoney();/ifcout endl 客户序列t 事件类型 tt 时 间 t 处理金额type=离开)cout numtttypettttendTimettmoneytype=到达)cout numtttypettttbeginTimettmoneyendl;pop(eq);cout 银行关门 未处理客户: beginTime ); /更新结束时第一队列中未处理的客户cout num endl ;+counter;pop(fq);/while cout 资金短缺 未处理客户: beginTime ); /更新结束时第二队列中未处理的客户cout num endl ;+counter;pop(sq);cout客户逗留平均时间为: totalTime/counter endl;cout银行当前余额:totalendl;break;/while(n=1)return 0;/maim()

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1