银行业务模拟程序

合集下载

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验报告本学期教务处为我们安排了商业银行综合业务模拟实验,在实验操作过程中,我们发现问题、解决问题,逐渐理解和掌握了银行日常业务的处理,包括个人储蓄业务和对公业务的处理;对现代商业银行的架构、运营模式有了一定的认识。

在这十几周的学习中,我们将银行经营管理的理论与实践相结合,系统地实践、体验和学习银行业务的相关业务,拓展了知识面,提高了我们学习、判断、操作、分析等各个方面的能力。

接下来按实验操作过程对相关业务的操作情况进行描述分析。

(一)个人储蓄业务一、储蓄柜员初始操作操作内容:登陆个人储蓄系统→修改密码和学号并增加尾箱→用尾箱登录在开始银行模拟业务前,老师给我们每个人分配了一个个人账号。

我们可以用此账号作为用户名登陆模拟系统,然后进入“信息中心”修改个人资料并增加尾箱,同时设置尾箱密码以及登录密码,这样方可保证每位柜员都有属于自己的操作空间,避免他人修改银行业务的相关数据。

本次模拟实验采取实名制,我们每个人都要在个人资料中填写自己的真实姓名,以便日后老师查看各位同学的实验进度以及得分。

修改完后,每次登陆后右边信息栏中就会出现自己的相关信息。

在本模块操作中一定要牢牢记住自己的柜员号以及所设置的密码,否则就无法登陆银行模拟系统进行业务操作,这样就只能重新申请一个柜员号。

二、储蓄柜员日初操作操作内容:凭证领用→重要空白凭证出库→现金出库→凭证综合查询→重要空白凭证查询银行柜台工作人员进行日初业务处理首先应领用凭证。

凭证及现金出库到柜员个人钱箱后才能进行柜员的日常业务操作。

我们必须注意到凭证“开始号码”与“结束号码”不能与其他柜员领取的号码相同。

自己领取的凭证号码应记下,以便接下来的业务操作使用。

在实验过程中,若我们想了解凭证的使用情况,则可以进行凭证综合查询和重要空白凭证查询。

三、储蓄日常业务操作之个人储蓄业务操作内容:开普通客户和一卡通客户→为普通客户和一卡通客户开活期储蓄账户并进行存取款、销户操作→开整存整取账户、部分提前支取→开定活两便账户并销户→开零存整取账户、存款并销户→开存本取息账户、取息并销户→开通知存款账户、支取部分款项并销户→普通支票账户开户、预开户、存款、取款、结清、销户→开教育储蓄账户、存款、销户→一卡通、凭证、新旧系统凭证替换、挂失、解挂、新旧凭证对照新增在本实验中听到了很多之前从未接触过的专业名词,如:一卡通、整存整取、定活两便、零存整取、存本取息等。

银行业务模拟程序

银行业务模拟程序

银⾏业务模拟程序实验⼆银⾏业务模拟程序⼀、实验⽬的⽤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、日常业务处理流程介绍 (2)2、系统登录 (3)3、业务处理 (5)3.1开新客户 (5)3.2开户 (6)3.2.1 活期开户 (6)3.2.2 定期开户 (10)3.3 存款 (11)3.4 取款 (12)3.5 转账 (13)3.6 销户 (14)3.7 凭证管理 (15)3.7.1 总行新置凭证 (15)3.7.2 总行凭证下发 (19)3.7.3 支行凭证领用 (21)3.7.4 柜员凭证调出 (24)3.7.5 柜员凭证调入 (26)3.8 现金管理 (28)3.8.1 总行现金领用 (28)3.8.2 总行现金下放 (30)3.8.3 柜员现金领用 (31)3.8.3 柜员现金调出 (33)3.8.4 柜员现金调入 (35)4、业务查询 (37)4.1 流水账查询 (37)4.2 凭证查询 (38)4.3 库存查询 (40)5、轧账 (42)6、退出系统 (45)1、日常业务处理流程介绍在银行系统中,应按照如下的流程处理日常业务(注:本流程是按照东方迪格模拟系统使用说明给出。

各商业银行具体业务流程与此略有出入):1、开机器,进入系统。

2、做现金及凭证日初。

3、处理具体日常业务。

4、可进行换班轧帐。

5、做现金日终平帐。

6、做柜员轧帐,可重复做。

7、网点轧帐,每天只做一次。

8、退出系统、关机。

2、系统登录⑴双击桌面上“net term”图标,进入系统,见图1⑵在“login”下输入“front”,“password”下输入“front”图1(3)按回车,进入“登录系统”界面,见图2(4)在“登录系统”界面下输入“柜员号”、“尾箱号”、“密码”初次登陆时,柜员号和密码为相同号码,密码为“88888图2(5)光标移动到“【提交】”后按回车,进入“东方迪格商业银行”主界面,见图3图33、业务处理3.1开新客户当一个客户要求开立账户时,应该先使用“开新客户”功能输入客户的个人资料。

在主界面,选择“客户系统”,在该界面下选择“开客户”(2100),见下图在“开客户”界面下选择“ID类别”,输入ID号、选择“客户称谓”、输入客户名称、联系电话、地址等信息。

银行业务模拟

银行业务模拟

银行业务模拟1.问题描述假设银行有5个窗口对外接待客户。

从早晨银行开门后不断有客户进入银行。

由于每个窗口在某个时刻只能接待一个客户,因此在顾客众多时客户需要在窗口前排队等候。

对于刚进入银行的客户,如果某个小黄口均有客户在办理业务,则他会排在人数最少的队伍后面。

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

2.概要设计要计算一天中客户在银行的平均逗留时间,需要计算每个客户在银行的逗留时间,而客户在银行的逗留时间由他到达银行的时刻决定。

每个客户在银行的逗留时段与3个时刻或时间间隔有关,及客户到大银行的时刻、客户在银行排队等候的时间和客户在窗口办理业务的时间。

对于这三个时刻和时间,客户在银行排队等候的时间有队列长短自然决定,与其它客户的多少和办理业务时间长短没有关系,因此可以使用两个随机数进行模拟。

银行一天的营业过程中,每个客户到达或离开银行的时刻是补丁的,但对于所有客户而言,到达或离开银行在实际上总有一个先后顺序。

可以将客户到达或离开银行称为实际,则一天银行中发生的所有事总有一个先后顺序,尹锡可以按照事件发生的先后顺序来一次多所有时间进行处理,及县发生先处理,后发生后处理,每次处理的是当前最早发生的事件。

在模拟过程中主要处理两类事件,及客户到达事件和客户离开事件。

而模拟过程本身是一个动态过程,在处理已发生事件的同时,总不断有新事件发生,一次模拟程序必须以便处理客户到达和客户离开事件,一边产生新事件。

由于所述原因,模拟程序可以按一下思路进行设计:Bank_Simulation(int ClloseTime) //CloseTime是关门时间{ InitDay(); //初始化工作While(如已发生事件还未处理结束){ 驱动新事件发生;//新事件的发生时间必须小于CloseTime才有效若正在处理事件是客户到达事件,则按处理客户到达时间要求进行处理;若正在处理事件使客户离开事件,则按处理客户离开时间要求进行处理;};输出一天客户在银行的平均逗留时间;}要实现上述设计,首先需要解决数据结构问题。

小组模拟银行个人业务营销流程

小组模拟银行个人业务营销流程

小组模拟银行个人业务营销流程1. 准备:小组成员分工合作,其中一人扮演银行业务员的角色,其他人分别扮演客户的角色。

2. 客户咨询:一个成员扮演客户,向业务员咨询个人业务产品,包括存款、贷款、信用卡等。

业务员需根据客户的需求和情况,提供相关的产品信息,并解答客户的疑问。

3. 客户需求分析:业务员需聆听客户的需求,并针对不同的客户提供个性化的服务和产品推荐。

例如,如果客户是有稳定收入的年轻人,业务员可以向其推荐理财产品;如果客户是打算购房的人,业务员可以向其介绍住房贷款。

4. 产品展示:根据客户的需求,业务员向客户详细介绍相关的产品,包括产品的特点、利率、申请流程等。

业务员需利用各种形式的资料和工具,如宣传册、网络演示等,将产品的优势和价值传达给客户。

5. 客户选择和申请:客户根据自己的需求,选择适合自己的产品,并向业务员提出申请。

业务员需协助客户填写申请表格,指导客户准备相关的申请材料,并提供必要的手续办理信息。

6. 客户审批和签约:业务员收到客户的申请后,将其提交给银行相关部门进行审批。

在审批过程中,业务员需与客户保持沟通,及时向客户提供审批进度和结果。

一旦申请被批准,业务员需协助客户进行签约手续,确保合同的正确和完整。

7. 产品交付和服务跟踪:一旦签约完成,业务员需协助客户办理产品的交付手续和后续服务。

对于存款和信用卡等产品,业务员需协助客户办理开户手续,并介绍如何使用该产品;对于贷款等产品,业务员需协助客户解决还款和产品使用中的问题,并及时提供相关的客户服务。

8. 客户满意度调查:在业务办理完成一段时间后,业务员可以向客户进行满意度调查,了解客户对银行产品和服务的评价,并提供改进意见。

这有助于银行改进个人业务的销售流程和服务质量。

银行ATM模拟模拟程序

银行ATM模拟模拟程序
(二)、查询功能:查询账户余额。
(四)、修改密码:输入原密码和新设置密码。 (五)、吃卡功能:密码输错3次锁卡。 (六)、退出:退出系统,退卡。
模块结构图
详细功能—登陆
? 登陆流程
? 修改密码
? 取款流程
? 查询流程
?(2)用户类:有用户姓名、卡号、密码等特征。需要 实现密码修改、查询余额、交易成功更改余额等操作。 这些可以定义为用户类的成员函数。
系统设计
? 模拟ATM取款操作 ? 首先录入账户信息 ? 姓名 卡号 密码 ? 张三 123456 123456
余额 10000.00
(一)、登录功能:输入帐号和密码进行登录,如密码错 误提示重新输入密码,如帐号错误提示无此帐户。
银行ATM 模拟模拟程序
设计分析
? 涉及一个银行卡和ATM之间的“对话”。需要处理两个 对象,即:ATM 和用户,因此可以定义两个类来解决这 个问题。
? (1)ATM机类:有余额,密码输入次数等基本属性,需 要实现:核对密码、修改密码、取款、查询信息、退出 系统、锁卡等功能。可以将这些定义为ATM 机类的成员 函数。

银行业务模拟课程设计

银行业务模拟课程设计

课程名称:计算机技术综合课程设计题目:银行业务模拟学院:信息工程系:*专业:*班级:0*学号:*学生姓名:*时间:*一、问题描述:客户业务分为两种。

第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行中投入一笔资金,即存款或还款。

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

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

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

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

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

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

假设检查不需要时间。

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

写一个银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平均时间。

二、分析与设计1.问题分析:本问题主要需要处理两个队列(fq,sq)和一个事件表(eq)。

一个队列(fq)表示第一种业务(存款或还款),另一个队列(sq)表示第二种业务(取款或借款)。

事件有两类:到达银行和离开银行。

到达事件发生时随机地设置此用户的交易时间和距下一到达事件之间的时间间隔。

每个客户要办理的款额也应该是随机确定的。

初始时银行现存资金总额为total。

开始营业后的第一个事件是客户到达,营业时间从0到closetime。

Total 和closetime以及随机产生的时间和款项的上下界都是交互地从让用户从输入,作为模拟参数。

要得到相关的结果:由于下班时间到而没能办理的顾客数;分别列出需要办理两种业务的顾客数;分别列出已成功办理两种业务的顾客数;分别列出两种业务的成功办理率;客户在银行内的平均逗留时间;下班时银行所剩余的资金总额。

商业银行业务模拟实务9p

商业银行业务模拟实务9p
3.输入支取金额。30000元,操作时间4月7日。单击执行。
3:销户
1.点击个人业务中销户一项。
2.将账户信息中的账号复制到整存整取中账号一栏,单击卡号,系统自动跳转进入该账户。输入操作日期4月7日
3.单击执行,完成销户。
三:4月7日,存活两便业务
1:开户
1.首先点击业务中心系统中的综合项目中的客户管理一项,开立一个具体的个人账户,账户名为某人。打开代码生成器,系统自动生成一个身份证号码。
3.输入授权人名称预授权人密码。
4单击执行,完成销户。
六:单位活期一本通业务4月8日
1:活期一本通开户
1.首先点击业务中心系统中的综合项目中的客户管理一项,开立一个具体的对公业务账户,账户名为某某单位。打开代码生成器,系统自动生成一个营业执照号码。
2.点击综合业务中重要空白凭证项,领取其中单位一本通,并输入尾箱号,点击执行。
2.点击综合业务中重要空白凭证项,领取其中存活存单,并输入尾箱号,点击执行。
3.点击个人业务中存活两便项,,将账户中的身份证号码复制到存活两便中证件号码一栏,单击客户号,系统自动跳转进入一个账户。输入金额45000元并输入4月7号,点击执行。
2:销户
1.点击个人业务中销户一项。
2.将账户信息中的账号复制到存活两便中账号一栏,单击卡号,系统自动跳转进入该账户。输入操作日期4月7日
2.将账户信息中的账号复制到对公业务定期存款一项中账号一栏,单击卡号,系统自动跳转进入该账户。
3.输入取款金额110000元,操作时间4月8日。、
4.输入授权人名称及授权人密码,单击执行完成
4:销户
1.点击对公业务中销户一项。
2.将账户信息中的账号复制到对公定期取款中账号一栏,单击卡号,系统自动跳转进入该账户。

银行业务活动的模拟

银行业务活动的模拟

数据结构指导老师:陈桂玲罗开华 | 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返回其值。

银行情景模拟销售方案

银行情景模拟销售方案

一、方案背景随着金融市场的日益竞争激烈,银行业如何提升销售业绩、提高客户满意度成为关键。

为了更好地模拟实际销售场景,提升销售人员的产品知识和销售技巧,本方案特制定银行业情景模拟销售方案。

二、目标人群本方案适用于银行销售团队、客户经理、新入职员工以及有志于提升销售能力的银行工作人员。

三、模拟场景设定1. 场景一:新产品发布会- 模拟银行新推出的一款理财产品或金融产品的发布会,要求销售人员准确介绍产品特点、收益预期、风险控制等。

2. 场景二:客户咨询- 模拟客户对银行产品的咨询,包括对贷款、存款、理财等产品的询问,销售人员需迅速给出专业建议。

3. 场景三:客户投诉- 模拟客户对银行服务或产品的不满,销售人员需学会处理投诉,展现出良好的沟通能力和解决问题的能力。

4. 场景四:团队销售竞赛- 模拟银行团队销售竞赛,通过角色扮演、情景模拟等形式,提升团队协作能力和销售技巧。

四、方案实施步骤1. 前期准备- 确定模拟场景,编写剧本,设计场景中的关键问题和客户反应。

- 对参与人员进行分组,分配角色,确保每个参与者都有明确的任务和目标。

2. 模拟训练- 按照设定的场景进行模拟,由专业讲师或经验丰富的销售人员担任评委,对模拟过程进行点评和指导。

- 模拟过程中,参与者需注重以下几点:- 专业知识掌握程度- 沟通技巧运用- 问题解决能力- 团队协作表现3. 反馈与总结- 模拟结束后,评委对每个参与者的表现进行评分,并给出具体反馈。

- 参与者根据反馈进行自我反思,总结经验教训,提升个人能力。

4. 持续优化- 根据模拟过程中的问题和不足,不断优化模拟方案,提高模拟的实用性和针对性。

- 定期组织模拟训练,确保销售人员始终保持良好的销售状态。

五、预期效果通过本方案的实施,预期达到以下效果:1. 提升销售人员的产品知识和销售技巧。

2. 增强团队协作能力和沟通能力。

3. 提高客户满意度,降低客户投诉率。

4. 促进银行业务的持续增长。

数据结构C语言实现之银行业务模拟

数据结构C语言实现之银行业务模拟
if (QueueLength(q[j]) < minlen) { minlen = QueueLength(q[j]); i = j;
} return i;
}
void OpenForDay()
{
// 初始化操作
TotalTime = 0; CustomerNum = 0; // 初始化累计时间和客户数
}
数据结构 C 语言实现之银行业务模拟
一、问题描述:
假设某银行有 4 个窗口对外接待客户,从早晨银行开门起不断有客户进入 银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需 要 在每个窗口前顺次排队。对于刚进和银行的客户,如果某个窗口的业务员正 空闲,则可上前输业务;反之,若个窗口均有客户所占,他便会排在为数最少 的队伍后 面。编制一个程序模拟银行的这种业务活动并计算一天中客户在银行 的平均逗留时间。
} // OpenForDay
void CustomerArrived()
{
// 处理客户到达事件,en.NType=0
int durtime, intertime, i, t;
++CustomerNum;
printf("Customer %d arrived at %d and ", CustomerNum,
typedef struct
{ int OccurTime; int NType;
0 表示到达,1~4 表示 4 个窗口的离开 }Event,ElemType; 序表 LinkList 的数据元素类型
//事件发生时刻 //事件发生类型, //事件类型,为有
typedef LinkList EventList;

C语言实现模拟银行系统

C语言实现模拟银行系统

C语言实现模拟银行系统1. 引言在现代社会中,银行系统被广泛应用于各类金融交易活动。

通过使用计算机程序模拟银行系统,我们可以更好地理解和掌握相关的技术和概念。

本文将介绍如何使用C语言实现一个简单的模拟银行系统,以帮助读者深入了解银行业务的基本原理和技术实现。

2. 需求分析在开始编写代码之前,我们首先需要明确银行系统的基本功能需求:- 用户注册和登录:用户可以通过注册一个账户,并使用该账户登录系统。

- 账户管理:用户可以查看账户信息、查询余额、存款、取款等。

- 转账功能:用户可以将资金从一个账户转移到另一个账户。

- 贷款管理:用户可以申请贷款,并按照约定的利率和期限还款。

- 日志记录:系统应该能够记录用户的操作日志,以便后续审计和查证。

3. 系统设计基于上述需求分析,我们可以设计一个简单的银行系统模型。

该模型包括以下几个主要的数据结构:- Account(账户):包括账户ID、用户名、密码、账户余额等信息。

- Transaction(交易):包括交易ID、交易类型、交易金额、交易时间等信息。

除此之外,我们还需要定义一些功能函数,如账户管理、转账、贷款管理等。

这些功能函数将与主程序相互调用,实现整个模拟银行系统。

4. 系统实现在C语言中,我们可以使用结构体来定义账户和交易的数据结构,并使用数组来存储多个账户和交易记录。

以下为一个简单的示例:```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义账户结构体struct Account {int accountId;char username[50];char password[50];float balance;};// 定义交易结构体struct Transaction {int transactionId;int accountId;char transactionType[50];float transactionAmount;char transactionTime[50];};// 声明全局变量和相关函数struct Account accountList[100]; // 最多100个账户struct Transaction transactionList[1000]; // 最多1000条交易记录int accountCount = 0; // 初始账户数量为0int transactionCount = 0; // 初始交易数量为0// 用户注册函数void userRegistration() {// TODO: 实现用户注册逻辑}// 用户登录函数void userLogin() {// TODO: 实现用户登录逻辑}// 账户管理函数void accountManagement() {// TODO: 实现账户管理逻辑}// 转账函数void transferMoney() {// TODO: 实现转账逻辑}// 贷款管理函数void loanManagement() {// TODO: 实现贷款管理逻辑}// 主函数int main() {int option;while (1) {// 打印菜单选项printf("\n==============================\n"); printf("欢迎使用模拟银行系统\n");printf("请选择以下操作:\n");printf("1. 用户注册\n");printf("2. 用户登录\n");printf("3. 账户管理\n");printf("4. 转账\n");printf("5. 贷款管理\n");printf("0. 退出系统\n");printf("==============================\n"); printf("请输入操作选项:");scanf("%d", &option);switch (option) {case 1:userRegistration();break;case 2:userLogin();break;case 3:accountManagement();break;case 4:transferMoney();break;case 5:loanManagement();break;case 0:exit(0);default:printf("无效的选项,请重新选择。

模拟银行实习,个人银行卡业务

模拟银行实习,个人银行卡业务

银行卡业务银行卡业务主要是模拟借记卡、贷记卡的业务实践操作。

客户要先向银行提交开户申请后,才能办理相关的银行卡业务。

6.6.3.2.2.1开户申请1、填写开立“借贷记卡开卡申请书”点击“银行卡业务---开户申请”按钮,在打开界面中,选择一家银行(如,浙科银行),然后点击该银行“操作”栏中的“”,打开如下界面:点击“添加”按钮,在打开界面中,选择借贷类别、是否有关联账号,填写拼音或英文姓名、性别、开户金额、联系电话、邮政编码、联系地址,如下图所示:点击“提交”按钮,系统提示:点击“确定”按钮。

提示:1、“贷记卡”的开户操作步骤同“借记卡”的相类同。

客户在开户时,只要选择“借贷类别”为“贷”就可以,其他内容的填写相同。

2、如果选择“是否有关联账号”为“是”,则需要选择关联帐户。

2、进入柜员签到窗口点击页面上方的“”按钮,进入柜员签到窗口:输入柜员密码,然后点击“签到”按钮,打开如下界面:提示:1、必须进入客户提交开户申请的银行柜台,才能处理客户提交的业务。

3、进入柜员处理银行业务主界面点击“”按钮,打开柜员操作界面:4、柜员受理客户业务点击“工具栏”中的“叫号器”,打开如下界面:点击“操作”栏中的“受理”。

5、查收客户提交的现钞点击“工具栏”中的“点钞机”,打开如下界面:系统提示:点击“确定”按钮。

6、审核客户提交的凭证点击“工具栏”中的“桌面凭证”按钮,在打开界面中,点击“审核”按钮,系统提示:点击“确定”按钮,然后关闭弹出页面。

7、输入业务数据点击柜面上的计算机显示器,在打开界面中,点击“输入密码”按钮,系统模拟输入密码后,打开如下界面:点击“保存”按钮,系统提示:点击“确定”按钮,关闭弹出窗口。

8、取出相关业务凭证点击“工具栏”中的“空白凭证”,在打开界面中,选择储蓄借记卡(空白卡),然后点击“取出”按钮,系统提示:点击“确定”按钮。

9、打印凭证点击“工具栏”中的“报表打印机”,在打开界面中,点击“打印”按钮,系统提示:点击“确定”按钮,关闭弹出窗口。

数据结构C语言版_银行业务模拟

数据结构C语言版_银行业务模拟
Event en; // 事件
Event et; // 临时变量
LinkQueue q[Qu]; // Qu个客户队列
QElemType customer; // 客户记录
int CloseTime; // 银行营业时间(单位是分)
int TotalTime = 0; // 累计客户逗留时间初始为0
{
QueuePtr p;
p = Q.front->next;
while( p )
{
vi(p->data);
p = p->next;
}
printf("\n");
return 1;
}
// 依事件a的发生时刻<、=或>事件b的发生时刻分别返回-1、0或1。
int DestroyQueue(LinkQueue *Q)
{
while((*Q).front)
{
(*Q).rear = (*Q).front->next;
free((*Q).front);
(*Q).front = (*Q).rear;
}
return 1;
}
int CustomerNum = 0; // 客户数(初值为0)
// 释放p所指结点
void FreeNode(Link *p)
{
free(*p);
*p = NULL;
}
// 构造一个空的线性链表。
int InitList(LinkList *L)
{
Link p;
int i = 0;
QueuePtr p;

大学模拟银行业务教案

大学模拟银行业务教案

大学模拟银行业务教案一、教学目标1.了解银行基本业务及其操作流程。

2.掌握银行存款、取款和转账操作流程。

3.了解常见的银行卡种类及使用方法。

二、教学内容1.银行业务基础知识(1)了解银行基本业务:存款、贷款、外汇兑换等。

(2)介绍银行的定期存款和活期存款以及利率。

(3)了解银行的时间概念:T+0、T+1、T+2等。

2.银行存款操作流程(1)了解银行存款的种类:定期存款、活期存款、保证金等。

(2)介绍银行存款操作流程:填写银行存款单、验证身份、取号等。

(3)掌握银行存款的注意事项:存款金额、转账信息及账户信息等。

3.银行取款操作流程(1)了解银行取款的种类:ATM取款和柜台取款。

(2)介绍银行取款操作流程:提交银行卡并输入密码、填写取款单等。

(3)掌握银行取款的注意事项:取款金额、手续费等。

4.银行转账操作流程(1)了解银行转账的种类:行内转账和行外转账(2)介绍银行转账操作流程:填写转账单、选择转账方式、确认交易等。

(3)掌握银行转账的注意事项:转账金额、收款人信息等。

5.银行卡种类及使用方法(1)了解各种银行卡的种类:借记卡、信用卡等。

(2)介绍银行卡的使用方法:刷卡、取款、充值等。

(3)掌握银行卡的注意事项:密码保护、卡的有效期限等。

三、教学方法1.课堂讲解2.学生讨论3.案例分析四、教学资源1.电子白板2.电脑和投影仪3.银行操作的视频五、教学评价方法1.小测试2.学生自我评价3.互相评价六、教学计划总共18课时第一周:第一天:介绍银行业务基础知识第二天:讲解银行存款操作流程第三天:课堂练习第四天:学生自我评价第五天:口头小测验第二周:第一天:讲解银行取款操作流程第二天:学生讨论第三天:案例分析第四天:互相评价第五天:笔试第三周:第一天:讲解银行转账操作流程第二天:学生讨论第三天:案例分析第四天:学生自我评价第五天:口头小测验第四周:第一天:讲解银行卡种类及使用方法第二天:课堂练习第三天:学生讨论第四天:互相评价第五天:小结与课程总结。

银行业务模拟课程设计报告

银行业务模拟课程设计报告

安徽新华学院数据结构课程设计报告题目:银行业务模拟系统学院:信息工程学院专业:信息管理与信息系统班级:12级信管1班姓名:杨丹丹学号:指导教师:李明设计时间:—课程设计任务书一、目的?巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

?(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

?(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

?二、要求1.客户业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行投入一笔资金,即存款或还款。

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

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

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

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

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

??5.?任何时刻都只开一个窗口,营业时间结束时所有客户立即离开银行。

通过离散的模拟方法求出客户在银行内逗留的平均时间课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。

《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。

?数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。

7-5银行业务队列简单模拟(25分)

7-5银行业务队列简单模拟(25分)

7-5银⾏业务队列简单模拟(25分)设某银⾏有A、B两个业务窗⼝,且处理业务的速度不⼀样,其中A窗⼝处理速度是B窗⼝的2倍 —— 即当A窗⼝每处理完2个顾客时,B窗⼝处理完1个顾客。

给定到达银⾏的顾客序列,请按业务完成的顺序输出顾客序列。

假定不考虑顾客先后到达的时间间隔,并且当不同窗⼝同时处理完2个顾客时,A窗⼝顾客优先输出。

输⼊格式:输⼊为⼀⾏正整数,其中第1个数字N(≤1000)为顾客总数,后⾯跟着N位顾客的编号。

编号为奇数的顾客需要到A窗⼝办理业务,为偶数的顾客则去B窗⼝。

数字间以空格分隔。

输出格式:按业务处理完成的顺序输出顾客的编号。

数字间以空格分隔,但最后⼀个编号后不能有多余的空格。

输⼊样例:8 2 1 3 9 4 11 13 15输出样例:1 32 9 11 4 13 15代码:#include <stdio.h>#include <stdlib.h>#include <string.h>void printk(int d){static int flag = 0;if(flag)putchar('');printf("%d",d);flag ++;}int main(){int a[1000],b[1000];int ahead,atail,bhead,btail;ahead = atail = bhead = btail = 0;int n,d;scanf("%d",&n);for(int i = 0;i < n;i ++){scanf("%d",&d);if(d%2)a[atail ++] = d;else b[btail ++] = d;}while(ahead < atail || bhead < btail){if(ahead< atail)printk(a[ahead++]);if(ahead< atail)printk(a[ahead++]);if(bhead< btail)printk(b[bhead++]);}}。

仿真商业银行业务流程(1)

仿真商业银行业务流程(1)

(一)存款业务流程1. 单位活期存款账户开户业务流程单位活期存款账户开户业务流程如图18-1。

图18-1 开立单位活期存款账户业务操作流程操作提示:(1)开户所需材料包括:证明文件、开户申请书、信息采集表、合同、单位公章、经办及主管签章。

(2)证明文件包括营业执照正本、组织机构代码证书、国税/地税登记证正本、法人身份证明、代办人授权书、身份证明、房屋产权证或租赁协议、现金库存申请表。

(3)所以证明文件都需要双份复印件。

(4)注意审核证明文件是否齐全,正本是否真实,期限是否有效,合同内容和信息表填写是否一致。

(5)一个企业只能开立一个基本账户。

2. 单位定期存款账户开户业务流程单位定期存款账户开户业务流程如图18-2。

图18-2 开立单位定期存款账户业务操作流程操作提示:(1)开户所需材料包括:证明文件、开户申请书、信息采集表、合同、单位公章、经办及主管签章。

(2)证明文件包括营业执照正本、组织机构代码证书、国税/地税登记证正本、法人身份证明、代办人授权书、身份证明、房屋产权证或租赁协议、现金库存申请表。

(3)所以证明文件都需要双份复印件。

(4)注意审核证明文件是否齐全,正本是否真实,期限是否有效,合同内容和信息表填写是否一致。

(二)贷款业务流程公司贷款业务流程如图18-3。

图18-3 公司贷款业务流程(三)贴现业务流程商业承兑汇票贴现业务流程如图18-4。

图18-4商业承兑汇票贴现业务流程(四)保理业务流程保理业务流程如图18-5。

图18-5 保理业务流程(五)结算业务流程1. 支票结算业务操作流程图18-6 支票结算业务流程说明:①持票人持转账支票及两联进账单到开户银行办理转账;②持票人开户行审核无误后为持票人办理进账,并将支票提交到央行票据交换中心;③付款人开户行收到票据交换中心交换提入的支票,进行账务处理。

注:支票核算涉及到的主要科目有“活期存款”、“存放中央银行款项”等。

2. 商业汇票结算流程(1)商业承兑汇票结算业务操作流程图18-7 商业承兑汇票结算业务具体操作流程图说明:①根据合同发货后,填写商业承兑汇票;②盖章确认承兑;③填写委托收款凭证委托收款;④解票托收;⑤交存票款;⑥传递结算凭证;⑦到期转账或收取罚金;⑧划回票款或退票;⑨收妥入账或退票。

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

实验二银行业务模拟程序一、实验目的用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、首先在编译是出现如下错误:经检查,程序中使用了Random()函数,但是相关的头文件没有被包含进来,将“#include<math.h>”补上则错误解决。

2、正常测试结果如下:七、附录——源代码附件#include "stdio.h"#include "stdlib.h"#include"math.h"#define Qu 4 //客户队列数#define Khjg 5 //两相邻到达的客户的时间间隔最大值#define Blsj 30//每个客户办理业务的时间最大值#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef int Boolean;typedef struct{int OccurTime; //事件发生时刻int NType; //事件类型,Qu表示到达事件,//0-Qu-1表示Qu个窗口的离开事件}Event,ElemType;//事件类型,有序链表LinkList的数据元类型typedef struct LNode // 结点类型{ElemType data;LNode *next;}*Link,*Position;struct LinkList // 链表类型{Link head,tail; // 分别指向线性链表中的头结点和最后一个结点int len; // 指示线性链表中数据元素的个数};typedef LinkList EventList; // 事件链表类型,定义为有序链表typedef struct{int ArrivalTime;int Duration;}QElemType; //队列的数据元素类型typedef struct QNode{QElemType data;QNode *next;}*QueuePtr; //队列struct LinkQueue{QueuePtr front,rear; // 队头、队尾指针};EventList ev;//事件表Event en; //事件Event et;//临时变量LinkQueue q[Qu]; //Qu个队列客户QElemType customer; //客户记录int TotalTime=0,CustomerNum=0;//累计客户逗留时间,客户数(初值为0) int CloseTime; // 银行营业时间(单位是分)int cmp(Event a,Event b){ // 依事件a的发生时刻<、=或>事件b的发生时刻分别返回-1、0或1 if(a.OccurTime==b.OccurTime)return 0;elsereturn (a.OccurTime-b.OccurTime)/abs(a.OccurTime-b.OccurTime);}Status InitList(LinkList &L){ // 构造一个空的线性链表Link p;p=(Link)malloc(sizeof(LNode)); // 生成头结点if(p){p->next=NULL;L.head=L.tail=p;L.len=0;return OK;}else{ printf("分配内存失败!");return ERROR;}}//InitListStatus InitQueue(LinkQueue &Q){ // 构造一个空队列Qif(!(Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode))))exit(-1);Q.front->next=NULL;return OK;}//InitQueueStatus OrderInsert(LinkList &L,ElemType e,int (*comp)(ElemType,ElemType)) { // 已知L为有序线性链表,将元素e按非降序插入在L中。

(用于一元多项式) Link o,p,q;q=L.head;p=q->next;while(p!=NULL&&comp(p->data,e)<0) // p不是表尾且元素值小于e{q=p;p=p->next;}o=(Link)malloc(sizeof(LNode)); // 生成结点o->data=e; // 赋值q->next=o; // 插入o->next=p;L.len++; // 表长加1if(!p) // 插在表尾L.tail=o; // 修改尾结点return OK;}//OrderInsertvoid OpenForDay(){int i;InitList(ev);en.OccurTime=0;en.NType=Qu;OrderInsert(ev,en,cmp);//插入事件表for(i=0;i<Qu;++i)InitQueue(q[i]);}//OpenForDayvoid Random(int &d,int &i){d=rand()%Blsj+1;//1到Blsj之间的随机数i=rand()%Khjg+1;}//Randomint QueueLength(LinkQueue Q){ // 求队列的长度int i=0;QueuePtr p;p=Q.front;while(Q.rear!=p){i++;p=p->next;}return i;}//QueueLengthint Minimum(LinkQueue Q[]) //返回最短队列的序号{int l[Qu],i,k;for(i=0;i<Qu;i++)l[i]=QueueLength(Q[i]);k=0;for(i=1;i<Qu;i++)if(l[i]<l[0]){l[0]=l[i];k=i;}//ifreturn k;}//MinimumStatus EnQueue(LinkQueue &Q,QElemType e){ // 插入元素e为Q的新的队尾元素QueuePtr p;if(!(p=(QueuePtr)malloc(sizeof(QNode)))) // 存储分配失败exit(OVERFLOW);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;return OK;}//EnQueueStatus DeQueue(LinkQueue &Q,QElemType &e){ // 若队列不空,删除Q的队头元素,用e返回其值,并返回OK,否则返回ERRORQueuePtr p;if(Q.front==Q.rear)return ERROR;p=Q.front->next;e=p->data;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;free(p);return OK;}//DeQueuevoid CustomerArrived(){QElemType f;int durtime,intertime,i;printf("到达一个客户!");++CustomerNum;Random(durtime,intertime);et.OccurTime=en.OccurTime+intertime; //下一客户到达时刻,隔了intertime来了下一//个客户et.NType=Qu; // 队列中只有一个客户到达事件if(et.OccurTime<CloseTime)OrderInsert(ev,et,cmp); //不让下一个进入营业厅了i=Minimum(q); //处理当前进来的人f.ArrivalTime=en.OccurTime;f.Duration=durtime;EnQueue(q[i],f);printf("排于窗口 %d",i+1);printf("(到达时间:%d 办理业务耗时:%d)\n",en.OccurTime,durtime);if(QueueLength(q[i])==1){et.OccurTime=en.OccurTime+durtime;et.NType=i;OrderInsert(ev,et,cmp); // 设定第i队列的一个离开事件并插入事件表}//if}//CustomerArrivedStatus GetHead(LinkQueue Q,QElemType &e){ // 若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR QueuePtr p;if(Q.front==Q.rear)return ERROR;p=Q.front->next;e=p->data;return OK;}//GetHeadPosition GetHead(LinkList L){ // 返回线性链表L中头结点的位置return L.head;}//GetHeadStatus QueueEmpty(LinkQueue Q){ // 若Q为空队列,则返回TRUE,否则返回FALSEif(Q.front==Q.rear)return TRUE;elsereturn FALSE;}//QueueEmptyvoid CustomerDeparture(){ // 处理客户离开事件,en.NType<Quint i;i=en.NType;DeQueue(q[i],customer);printf("服务窗口 %d: 离开一个客户!\n",i+1);TotalTime+=en.OccurTime-customer.ArrivalTime;if(!QueueEmpty(q[i])) //设定第i队列的一个离开事件,并插入事件表 {GetHead(q[i],customer);et.OccurTime=en.OccurTime+customer.Duration;et.NType=i;OrderInsert(ev,et,cmp);}//if}//CustomerDepartureStatus ListEmpty(LinkList L){ // 若线性链表L为空表,则返回TRUE,否则返回FALSEif(L.len)return FALSE;elsereturn TRUE;}//ListEmptyStatus DelFirst(LinkList &L,Link h,Link &q) // 形参增加L,因为需修改L{ // h指向L的一个结点,把h当做头结点,删除链表中的第一个结点并以q返回。

相关文档
最新文档