银行业务活动的模拟

合集下载

银行业务活动模拟--数据结构

银行业务活动模拟--数据结构

题目:银行业务活动的模拟C++编写VS2008调试1.题目要求假设某银行有4个窗口对外接待客户,从早晨银行开门起不断有客户进入银行,由于每个窗口在某个时刻只能接待一个客户。

因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户。

如果某个窗口的业务员正空闲,则可上前输业务。

反之,若个窗口均有客户所占,他便会排在为数最少的队伍后面。

编制一个程序模拟银行的这种业务活动并计算一天中客户在银行的平均逗留时间。

2.实现功能功能要求:1).实现数据的输入;2).各个窗口数据的访问和输出;3)当前窗口的人员分布情况动态显示。

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计。

请在最后的上交资料中指明你用到的存储结构;总体设计从题目要求不难得出,银行排队是典型的队列操作,4个窗口就是四个队列,客户的进出就是出队,入队操作,客户窗口的选择,以及平均逗留时间可以对队列的长度进行相应计算得出。

因此,可以设计两个类,一个队列类,四个窗口就是四个队列对象,一个数据类,用于对客户排队编号的文件读取,写入,计算逗留时间。

通过两个类的连接,实现数据的输入,动态显示。

代码部分://bank.h#include"iostream"#include"fstream"using namespace std;intconst SIZE=100;struct node{intnum;node *next;};class link{public:link();void add(intnum);void dele();void print();intr_count();node* r_head();intr_rear();private:node *head,*rear,*front; int count;};class data{public:void write(node *head,inti);void read(inti);void wait(int count[4]);intnum[4][SIZE],count_rear[4];private:ofstream we;ifstream re;};//data函数.cpp#include"iostream"#include"fstream"#include"bank.h"using namespace std;。

商业银行业务模拟实验报告

商业银行业务模拟实验报告

商业银行业务模拟实验报告一、实验目的本实验旨在通过模拟商业银行业务的开展,让学生了解商业银行的基本运营模式和相关业务操作,并掌握一定的风险控制能力和决策能力。

二、实验内容1.选择合适的业务模式在模拟商业银行业务的开展前,需要选择适合的业务模式。

常见的业务模式包括:个人存款业务、贷款业务、国际业务、资金融通等。

根据实验要求和自身情况,选择合适的业务模式。

2.设立银行档案根据业务模式的选择,设立相应的银行档案,包括银行名称、注册资本、机构设置、员工人数等。

这些档案能够为业务开展提供参考依据。

3.开展业务根据选择的业务模式,开始开展相应的业务。

例如,在个人存款业务中,你可以设置不同的存款产品,设定存款利率、起存金额等规则,并向客户进行宣传和推广,吸引客户存款。

4.进行风险控制在业务开展的过程中,要时刻注意风险控制。

通过设置风险预警线、上线等措施,规避风险,保障客户资金安全。

5.分析经营状况根据实际业务开展情况,定期分析经营状况,包括资金流入流出情况、业务收入和支出等,以便及时调整经营策略,提高盈利能力。

三、实验结果在实际操作中,我选择了个人存款业务模式。

设立了一个名为“安顺银行”的商业银行档案,注册资本为1000万元,机构设置包括行长办公室、财务部、营销部等。

共有20名员工参与业务开展。

根据业务模式的选择,我为客户提供了四种不同的存款产品:活期存款、定期存款、零存整取存款和教育储蓄存款。

设定了不同的存款利率、起存金额和存款期限等规则,并通过广告宣传、推荐奖励等方式吸引客户存款。

在业务开展的过程中,我密切关注风险控制。

制定了风险预警线,当存款流动性超过预警线时,将及时采取措施规避风险。

同时,严格审核贷款申请,确保贷款资金安全。

经过一段时间的经营,我对经营状况进行了分析。

根据资金流入流出情况和业务收支情况,我发现存款业务的收入占比较高,但资金利用率有待提高。

为此,我计划增加贷款业务的拓展,提高资金利用率和盈利能力。

数据结构银行业务活动的模拟

数据结构银行业务活动的模拟

数据结构银行业务活动的模拟数据结构银行业务活动的模拟1.引言1.1 目的本文档旨在模拟银行业务活动,并运用数据结构来实现相关功能。

通过模拟不同的银行业务场景,使读者能够更好地理解数据结构在银行业务中的应用。

1.2 背景银行作为金融机构,每天都要处理大量的业务活动,包括客户开户、存款、取款、转账等。

为了提高业务处理的效率和准确性,银行业务系统需要利用适当的数据结构来组织和管理这些数据。

2.系统设计2.1 功能需求2.1.1 客户开户- 输入客户信息(姓名、联系号、联系方式等) - 唯一的客户账号- 将客户信息和账号存储到数据结构中 2.1.2 存款- 输入客户账号- 输入存款金额- 更新客户账户余额2.1.3 取款- 输入客户账号- 输入取款金额- 检查账户余额是否足够- 更新客户账户余额2.1.4 转账- 输入转出账号- 输入转入账号- 输入转账金额- 检查转出账号余额是否足够- 更新转出账号和转入账号的余额2.2 数据结构设计2.2.1 客户信息- 姓名- 联系号- 联系方式- 账号2.2.2 账户信息- 账号- 余额3.算法设计3.1 开户算法- 唯一的账号- 将账号和客户信息存储到数据结构中 3.2 存款算法- 在数据结构中找到指定的账号- 更新账号的余额3.3 取款算法- 在数据结构中找到指定的账号- 检查账户余额是否足够- 更新账号的余额3.4 转账算法- 在数据结构中找到转出账号和转入账号- 检查转出账号余额是否足够- 更新转出账号和转入账号的余额4.测试与验证4.1 测试用例1:客户开户输入:客户姓名、联系号、联系方式预期输出:唯一账号并存储客户信息到数据结构中4.2 测试用例2:存款输入:客户账号、存款金额预期输出:更新客户账户余额4.3 测试用例3:取款输入:客户账号、取款金额预期输出:检查账户余额是否足够,更新客户账户余额4.4 测试用例4:转账输入:转出账号、转入账号、转账金额预期输出:检查转出账号余额是否足够,更新转出账号和转入账号的余额5.附件本文档涉及的附件包括测试用例和源代码文件。

银行业务模拟程序

银行业务模拟程序

银⾏业务模拟程序实验⼆银⾏业务模拟程序⼀、实验⽬的⽤Turbo C 语⾔设计实现⼀个⽤事件驱动的银⾏业务离散模型, 模拟每⼀个客户到达银⾏、排⼊⼈最少的业务窗⼝队列、排⾄窗⼝并处理完业务后离开的整个过程,统计客户在银⾏的平均逗留时间⼆、实验环境1、Windows7操作系统;2、VisualC++.三、实验内容假设某银⾏有4个窗⼝对外接待客户,从早上银⾏开门起不断有客户进⼊银⾏。

由于每个窗⼝在某时刻只能接待⼀个客户,因此在客户⼈数众多的时需在每个窗⼝前顺次排队,对于刚进⼊银⾏的客户,如果某个窗⼝的业务员正空闲,则可上前办理业务;反之,若4个窗⼝均有客户所占,他便会排在⼈数最少的队伍后⾯。

现在需要编制⼀个程序⼀模拟银⾏的这种业务活动并计算⼀天中客户在银⾏的平均逗留时间。

假设每个客户办理业务的时间不超过30分钟;两个相邻到达银⾏的客户的时间间隔不超过5分钟。

模拟程序从第⼀个客户到达时间为“0”开始起运⾏。

四、概要设计1、存储结构的类型定义:此模拟程序需要两种数据类型:有序链表和队列。

它们的数据元素类型定义分别如下:(1)typedef struct{int OccurTime; //事件发⽣时刻int NType; //事件类型,Qu表⽰到达事件,0-Qu-1表⽰Qu个窗⼝的离开事件}Event,ElemType;//事件类型,有序链表LinkList的数据元类型typedef LinkList EventList; // 事件链表类型,定义为有序链表(2)typedef struct{int ArrivalTime;//到达时刻int Duration;//办理业务所需时间}QElemType; //队列的数据元素类型2、单链表⽰意图:如课本P69图所⽰。

3、项⽬组成图:4、exp_yh.cpp的程序⽂件包含的函数原型及功能int cmp(Event a,Event b){ }:依事件a的发⽣时刻<、=或>事件b的发⽣时刻分别返回-1、0或1 ;Status InitList(LinkList &L):构造⼀个空的线性链表;Status InitQueue(LinkQueue &Q):构造⼀个空的队列;Status OrderInsert():已知L为有序线性链表,将元素e按⾮降序插⼊在L中;void OpenForDay():初始化操作;void Random():产⽣两个随机数,分别表⽰客户办理时间和两个相邻达到银⾏的客户的时间间隔;int QueueLength():求队列的长度;int Minimum() :返回最短队列的序号Status EnQueue():插⼊元素e为Q的新的队尾元素;Status DeQueue():若队列不空,删除Q的对头元素,⽤e返回其值,并返回OK,否则返回ERRORV oid CustomerArrived():处理客户到达事件;Status GetHead():若队列不空,⽤e返回Q的对头元素,并返回OK,否则返回ERROR;Position GetHead():返回线性链表L中头结点的位置;Status QueueEmpty():若Q为空队列,则返回TRUE,否则返回FALSE;void CustomerDeparture():处理客户离开事件Status ListEmpty():若线性链表L为空表,则返回TRUE,否则返回FALSE;Status DelFirst():h指向L的⼀个结点,把h当做头结点,删除链表中的第⼀个节点并以q返回,若链表为空,q=NULL,并返回FALSE;ElemType GetCurElem():已知p指向线性链表中的⼀个结点,返回p所指节点中数据元素的值;void Bank_Simulation():打印出窗⼝,平均逗留时间main():主函数5、项⽬的模块结构及函数调⽤关系:本程序包含5个模块:(1)主程序模块:void main(){ 接受命令;处理命令;}(2)事件链表表单元模块——实现链表的抽象数据类型;(3)队列单元模块——实现队列的抽象数据类型;(4)事件结点结构单元模块——定义链表的结点结构;(5)队列结点结构单元模块——定义队列的结点结构;各模块之间的调⽤关系如下:主程序模块—〉链表、队列表单元模块—>队列、链表结点结构单元模块。

实验报告银行业务模拟系统的设计与实现(1)

实验报告银行业务模拟系统的设计与实现(1)
if(en表示客户到达)
CustomerArrived( );// 处理客户到达事件
else
CustomerDeparture( ) ;// 处理客户离开事件
}//while
CloseForDay( );//计算客户的平均逗留时间
}// Bank_Simulation
环境语言:Windows下的Microsoft VC++
void Bank_Simulation()
{
int i;
OpenForDay( ); //初始化
while(!ListEmpty(ev))
{
//output_ev(ev);
//for(i=1;i<QU+1;i++) output_q(q[i]);
//getchar();//为观察执行结果用
Gethead(ev,en); //printf("事件%d %d\n ",en.NType,en.OccurTime);
数 据 结 构实验报告
学 号
姓 名
年 级
班级
填实际班级
机号:
学院机房
时 间
指导教师
张磊
一、实验题目:银行业务模拟系统的设计与实现 (该实验为综合性实验,共用6个学时)
二、实验要求:
1.问题描述:
假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。

角色游戏银行反思模板(3篇)

角色游戏银行反思模板(3篇)

第1篇一、引言角色游戏是幼儿教育中的一项重要活动,通过模拟真实社会中的银行角色,孩子们可以在游戏中学习货币知识、培养人际交往能力和解决问题的能力。

以下是一篇关于角色游戏银行反思的模板,旨在帮助教师和家长更好地理解幼儿在游戏中的表现,以及如何进一步优化游戏环境。

二、游戏回顾1. 游戏主题与背景(1)游戏主题:模拟银行(2)游戏背景:幼儿在教师的引导下,扮演银行工作人员和客户,体验银行业务的办理过程。

2. 游戏过程(1)幼儿进入银行,了解银行环境及功能。

(2)幼儿扮演银行工作人员,学习如何接待客户、办理业务。

(3)幼儿扮演客户,体验存款、取款、转账等业务。

(4)游戏结束后,幼儿分享游戏感受。

三、游戏反思1. 幼儿表现(1)幼儿对银行角色扮演的积极性:观察幼儿在游戏中的参与程度,是否积极主动地参与游戏。

(2)幼儿对银行业务的了解程度:观察幼儿在游戏过程中是否能够正确办理银行业务。

(3)幼儿在游戏中的沟通能力:观察幼儿在游戏中与同伴的沟通情况,是否能够礼貌、清晰地表达自己的想法。

2. 游戏环境与材料(1)游戏场地:游戏场地是否宽敞、安全,是否便于幼儿开展游戏。

(2)游戏材料:游戏材料是否充足、多样,是否与游戏主题相关。

(3)游戏规则:游戏规则是否清晰、易懂,是否有利于幼儿在游戏中学习。

3. 教师引导(1)教师对游戏过程的观察与引导:教师是否关注幼儿在游戏中的表现,是否及时给予指导。

(2)教师对幼儿的鼓励与肯定:教师是否在游戏中对幼儿的进步给予肯定和鼓励。

(3)教师与幼儿的互动:教师是否与幼儿进行有效的互动,是否关注幼儿的情感需求。

四、改进措施1. 优化游戏环境(1)增加游戏场地:根据幼儿需求,适当增加游戏场地,以满足更多幼儿同时参与游戏。

(2)丰富游戏材料:根据游戏主题,增加更多与银行业务相关的游戏材料,如各种面值的纸币、存折、银行卡等。

2. 优化游戏规则(1)制定清晰的游戏规则:确保幼儿在游戏过程中能够明确游戏规则,有利于游戏的顺利进行。

银行活动游戏策划方案

银行活动游戏策划方案

银行活动游戏策划方案活动目的:通过游戏形式,让参与者了解银行业务,提升金融知识,并提供一个互动、有趣的学习平台。

活动对象:社会各界人士、学生群体等对金融知识感兴趣的人群,年龄范围不限。

活动时间:一天(八小时)活动地点:银行展览馆(设置不同场景)一、活动设计1.1 前期准备工作- 设计并制作游戏道具:包括地图、任务卡、奖励卡等- 活动地点布置:根据游戏场景,打造仿真的银行环境,增加游戏的代入感- 招募志愿者:负责组织游戏流程、解答参与者问题等1.2 游戏规则- 游戏分为多个关卡,每个关卡都有特定的任务和挑战- 参与者需要按照任务卡上的指示,在规定的时间内完成任务- 参与者还可以通过解答问题、找到隐藏的线索等方式获取奖励卡,增加游戏乐趣- 参与者可以组成小组,共同完成任务,增加互动、合作性1.3 游戏流程- 参与者进入游戏,领取游戏道具(地图、任务卡等)- 组织人员解释游戏规则和流程,解答参与者问题- 参与者按照任务卡上的指示,在银行展览馆中逐步探索,并完成各项任务- 参与者在规定的时间内完成任务后,回到起点领奖励卡- 活动结束后,参与者可凭奖励卡兑换精美礼品或参加抽奖二、游戏关卡2.1 关卡一:银行历史之旅- 参与者按照地图上的指示,依次参观不同历史时期的银行场景- 在每个场景中,参与者需要回答与该时期相关的问题,并获得奖励卡2.2 关卡二:金融产品探秘- 参与者需要解开谜题,找到隐藏的金融产品模型- 解答问题、了解其特点和适用场景,并获得奖励卡2.3 关卡三:理财技巧大考验- 参与者需要参观银行理财产品陈列区,根据提示选择合适的产品- 在规定的时间内答题,回答正确即可获得奖励卡2.4 关卡四:金融风险挑战- 参与者需要在模拟的金融市场中进行策略交易- 根据市场行情、新闻影响等因素,进行买入、卖出操作- 获得最高收益的参与者将获得奖励卡2.5 关卡五:银行安全挑战- 参与者需要在虚拟网络环境中进行网络安全挑战- 解答网络安全问题,完成任务并获得奖励卡三、奖励与礼品3.1 奖励机制- 参与者根据完成任务的时间和正确率等指标获得奖励卡- 每个奖励卡对应不同的奖品或抽奖机会3.2 礼品设置- 奖品设置多样化,包括银行会员积分、银行理财产品体验资格、银行定制周边商品等- 抽奖设置丰富,例如抽取总奖池的一定比例作为幸运参与者的奖励四、宣传与推广4.1 宣传渠道- 在社交媒体平台发布活动信息,引发关注和分享- 与合作伙伴(学校、金融机构等)合作进行宣传,扩大活动影响力- 利用海报、传单等宣传物料在公共场所进行宣传4.2 宣传内容- 强调学习金融知识的重要性,以及活动为参与者带来的学习机会和奖励- 突出活动的创新性和互动性,吸引目标人群参与五、活动评估与改进5.1 监测活动反馈- 设立监测点,收集参与者对活动的评价和建议- 通过问卷调查、口头交流等方式了解参与者的游戏体验和对活动的满意度5.2 活动改进- 根据参与者反馈,总结活动经验教训,进行适当改进- 保持活动的新鲜感和吸引力,不断更新内容和关卡设计以上仅为初步的活动策划方案,实际情况还需要根据组织者的实际需求和参与者的特点进行调整和改进。

银行业务模拟实训报告

银行业务模拟实训报告

银行业务模拟实训报告实训目的在商业银行实训课程中通过用智慧银行数字化运营决策仿真系统进行实训,进一步了解和巩固在学校本学期期间所研究的商业银行经营与管理课程的基本理论和基础知识。

学会理论联系实际,增强自我解决实际问题的能力。

在中国银行实训课程中的实训,达到学校的社会实践要求,并在商业银行实训课程指导老师的指导、帮助和教育下,熟悉中国银行和房地产企业的主要经济业务活动。

较为系统地研究了银行内部和房地产企业内部各个职务所负责的金融管理工作和日常业务的操作流程。

通过此次商业银行实训课程的实操,学会了如何更好的适应新的工作环境以及端正自我的研究及工作态度,为更好的走入社会打下坚定地基础。

实训任务银行任务:在年初时,查看本年宏观政策,查看盘点中的各项资产与负债明细。

第二年起,查看银行的风险计提状况。

在第一季度时,可以进行个人存款竞标、消费贷款挂牌,此项目在任意季度都可进行和委托贷款挂牌。

然后进行个人存款选择,商业贷款挂牌以及申请、审批、支取商业贷款,也可以在各季度多次进行。

与此同时进行网点与团队建设,并且需要注意团队何时可用。

在第二季度时,可以进行消费贷款挂牌,此项目在任意季度都可以进行,也可以进行央票竞标,如没有央票发行也可以不做。

在第三季度时,可以进行消费贷款审批。

在第四季度时,继续消费贷款审批。

进行公存款利率挂牌,此项目任意季度都可以进行。

可以进行国债竞标,如果没有可以选择放弃竞标。

最后进行缴纳存款准备金、管理费、税金,这些操作系统会自动进行。

在年末时,进入下一年后查看团队评分(商业银行、房企综合评级)、注意资金是否充裕。

企业任务:在年初时,可以查看本年宏观政策,查看盘点中的各项资产与负债明细,并进行本年度的资金预算、融资缺口。

在第一季度时,可以进行土地竞标,房屋修建并计算所需贷款额,查看挂牌并申请。

也可以申请、审批、支取商业贷款,此项目可以在各季度多次进行。

与此同时,可以进行团队建设,并且注意团队何时可用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构指导老师:陈桂玲罗开华 | 193132班 | 201310018422015年1月5日题号:1 题目:银行业务活动的模拟1.需求分析1.客户的业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;2.第二种是向银行中投入一笔资金,即存款或还款。

银行有两个服务窗口,相应地有两个队列。

客户到达银行后先排第一个队。

3.处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立刻排入第二个队等候,直至满足时才离开银行;否则业务处理完后立刻离开银行。

每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。

4.注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。

任何时刻都只开一个窗口。

假设检查不需要时间。

营业时间结束时所有客户立刻离开银行。

5.要求:模拟银行业务活动,按时间顺序输出业务活动的事件,并求出客户在银行内逗留的平均时间。

2.设计2.1设计思想(1)数据结构设计(采用的结构及原因)本题我采用的是用队列来储存客户数据,用rand函数来提取随值。

(2)算法设计(函数模块及功能,可画流程图)2.2设计表示 (1)关系调用图(2)函数接口规格说明函数调用1.主函数 main2.进栈函数push3.出栈函数pop4.查找和处理函数service* searchAndDel5.到达函数arrive6.存款函数putMoney7.群款函数getMoney8.随机函数rand2.3详细设计(伪码,注释)ADT Queue{数据对象:D={ai∈Elemset i=1,2,…,n,n≥0}数据关系:R1={<ai-1 ai> ai-1 ai∈D,i=2, …,n}约定其中a1端为队列头,an端为队列尾.基本操作:Init Queue(&Q)操作结果:构造一个空队列QQueueEmpty(Q)操作结果:若Q为空队列,则返回TRUE,否则FALSE GetHead(Q &q) EnQueue(&Q q)操作结果:插入元素q为Q的新的队尾素DeQueue(&Q &q);操作结果删除Q的队头元素,并用q返回其值。

3调试分析(时间空间复杂度)银行业务模拟程序,在编译的时候,由于对话框之间的衔接不太懂,所以并没有实现应有的结果。

但后来还是通过学生,上网查询等多种方法,终于弄清了对话框之间的衔接和一些基本算法。

最终也运行出来了。

4.用户手册本程序是在visual sdudio 2012上编译测试的。

5.测试数据及测试结果测试数据:存款10000,时间480,最大时间间隔30,最大处理时间5存款30000,时间360,最大时间间隔10,最大处理时间106.源程序清单#include<iostream>#include<string>using namespace std;int total;int closeTime;int arriveTime;int dealTime;int dealMoney = 5000;int currentTime = 0;int totalTime = 0;int counter = 0;int number = 1; +struct service{int num;string type;int beginTime;int endTime;int money;service* next;};struct queue{service* head;service* rear;};void push(queue &q,int d){service* temp = new service; temp->money = d;temp->next = NULL;if(NULL == q.head){q. head = temp;q. rear = temp;}else{q. 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* searchAndDel(queue &q,int m){service* sign = q. head;service* temp;while(NULL != q. head){if((-(q. head->money)) <m){if(q. head==q.rear){temp = q. head;q. head = q. rear = NULL;return temp;}else{temp = q. head;q. head = q. head->next;return temp;}}else{if(q. head == q. rear){}else{q. rear->next = q. head;q. rear = q. rear->next;q. head =q. head->next;q. rear->next = NULL;}}if(q. head == sign)return NULL;}return NULL;}bool state =1;int currentTimeOfDeal = 0;int theArriveTime = 0;queue eq;queue fq;queue sq;void arrive(){push(fq,(rand()% (2*dealMoney) -dealMoney)); back(fq)->beginTime = currentTime;back(fq)->num = number;push(eq,(back(fq)->money));back(eq)->beginTime = currentTime;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 - 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);}else{total += back(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);back(eq)->beginTime = 0;currentTimeOfDeal = back(eq)->endTime;++counter;totalTime += ( back(eq)->endTime - back(fq)->beginTime );pop(fq);state =0;}}service* 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;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(" * *\n");printf(" ********************************************\n");printf("1.开始模拟 0.退出\n");int n;scanf("%d",&n);while(n==1){srand(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( currentTimeOfDeal < currentTime ) currentTimeOfDeal = currentTime ;if( currentTimeOfDeal == currentTime ) state = 1;if( currentTime == theArriveTime ){arrive();theArriveTime +=rand()%arriveTime +1;}//ifif( 1 == state && NULL != fq.head){if(fq.head->money >= 0){putMoney();findAndDeal();}//ifelsegetMoney();}//if}cout <<endl<< "客户序列"<<"\t" <<"事件类型"<<"\t\t"<<" 时间"<<"\t"<<" 处理金额"<<endl;while( NULL != eq.head){if(eq.head->type=="离开")cout << eq.head->num<<"\t\t"<<eq.head->type<<"\t\t"<<"\t\t"<<eq.head->endTime<<"\t\t"<<eq.head->money<<endl;if(eq.head->type=="到达")cout << eq.head->num<<"\t\t"<<eq.head->type<<"\t\t"<<"\t\t"<<eq.head->beginTime<<"\t\t"<<eq.head->money<<endl;pop(eq);}cout << "未处理客户:" <<""<<endl;while( NULL != fq.head){totalTime += ( closeTime - fq.head->beginTime );cout <<fq.head->num <<" "<<endl ;++counter;pop(fq);}cout <<"客户逗留平均时间为: " << totalTime/counter <<endl;cout<<"银行当前余额:"<<total<<endl;break;}return 0;}。

相关文档
最新文档