当前位置:文档之家› 单片机模拟SPI程序

单片机模拟SPI程序

单片机模拟SPI程序
单片机模拟SPI程序

时钟相位(CPHA)和时钟极性(CPOL)的不同组合使得SPI传输有了4种方式如果CPOL =0,SCK 引脚在空闲状态保持低电平;

如果CPOL =1,SCK 引脚在空闲状态保持高电平

时序图如下:

(一)A VR单片机实现代码

//IO端口定义

#define SPI_SCK PC0

#define SPI_MOSI PC1

#define SPI_MISO PC2

#define SPI_DDR DDRC

#define SPI_PORT PROTC

#define SPI_PIN PINC

//端口操作符定义

#define SCK_SET SPI_PORT|=_BV(SPI_SCK)

#define SCK_CLR SPI_PORT&=~_BV(SPI-SCK)

#define MOSI_SET SPI_PORT|=_BV(SPI_MOSI)

#define MOSI_CLR SPI_PORT&=~_BV(SPI_MOSI)

#define MISO_PIN PINC&_BV(SPI_MISO)

#define DELAY_BUS //如需要延时,用延时函数替代此符号

//模式1:CPOL=1 CPHA=1

void spi_init(void)

{

SCK_SET;

SPI_DDR|=_BV(SPI_MOSI)|_BV(SPI_SCK);

}

uint8_t spi_readwrite_byte(uint8_t data)

{

uint8_t i,ret=0;

for(i=0;i<8;i++)

{

//下降沿模拟

if(data&0x80)//设置输出

MOSI_SET;

else

MOSI_CLR;

SCK_CRL;//SCK产生下降沿

DELAY_BUS;

//上升沿模拟

ret<<=1;

if(MISO_PIN)//读数据

ret|=1;

SCK_SET; //SCK产生上升沿

data<<=1;

DELAY_BUS;

}

return ret;

}

//模式2:CPOL=0 CPHA=1

void spi_init(void)

{

SCK_CLR;

SPI_DDR|=_BV(SPI_MOSI)|_BV(SPI_SCK);

}

uint8_t spi_readwrite_byte(uint8_t data)

{

uint8_t i,ret=0;

for(i=0;i<8;i++)

{

//上升沿模拟

if(data&0x80)//设置输出

MOSI_SET;

else

MOSI_CLR;

SCK_SET;//SCK产生上升沿

DELAY_BUS;

//下降沿模拟

ret<<=1;

if(MISO_PIN)//读数据

ret|=1;

SCK_CLR; //SCK产生下降沿

data<<=1;

DELAY_BUS;

}

return ret;

}

//模式3:CPOL=1 CPHA=0

void spi_init(void)

{

SCK_SET;

SPI_DDR|=_BV(SPI_MOSI)|_BV(SPI_SCK); }

uint8_t spi_readwrite_byte(uint8_t data)

{

uint8_t i,ret=0;

//设置好输出口

if(data&0x80)

MOSI_SET;

else

MOSI_CLR;

for(i=0;i<8;i++)

{

DELAY_BUS;

//下降沿模拟

ret<<=1;

if(MISO_PIN)//读数据

ret|=1;

SCK_CRL;//SCK产生下降沿

DELAY_BUS;

//上升沿模拟

data<<=1;

if(data&0x80)//设置输出

MOSI_SET;

else

MOSI_CLR;

SCK_SET; //SCK产生上升沿

}

return ret;

}

//模式4:CPOL=0 CPHA=0

void spi_init(void)

{

SCK_CLR;

SPI_DDR|=_BV(SPI_MOSI)|_BV(SPI_SCK); }

uint8_t spi_readwrite_byte(uint8_t data)

{

uint8_t i,ret=0;

//设置好输出口

if(data&0x80)

MOSI_SET;

else

MOSI_CLR;

for(i=0;i<8;i++)

{

DELAY_BUS;

//上升沿模拟

ret<<=1;

if(MISO_PIN)//读数据

ret|=1;

SCK_SET;//SCK产生上升沿

DELAY_BUS;

//下降沿模拟

data<<=1;

if(data&0x80)//设置输出

MOSI_SET;

else

MOSI_CLR;

SCK_CLR; //SCK产生下降沿

}

return ret;

}

(二)其它单片机实现代码

#include "iom8535v.h"

#define _CPOL 1

#define _CPHA 0

#define SCK_IO DDRA|=0X01

#define MOSI_IO DDRA|=0X02

#define MISO_IO DDRA&=0XFB

#define SSEL_IO DDRA|=0X08

#define SCK_D(X) (X?(PORTA|=0X01):(PORTA&=0XFE)) #define MOSI_D(X) (X?(PORTA|=0X02):(PORTA&=0XFD)) #define SSEL_D(X) (X?(PORTA|=0X08):(PORTA&=0XF7))

#define MISO_I() (PINA&0X04)

void delay()

{

unsigned char m,n;

for(n=0;n<5;n++);

for(m=0;m<100;m++);

}

/************************************************ 端口方向配置与输出初始化

************************************************/ void SPI_Init(void)

{

SCK_IO ;

MOSI_IO ;

MISO_IO ;

SSEL_IO ;

SSEL_D(1);

MOSI_D(1);

#if _CPOL==0

SCK_D(0);

#else

SCK_D(1);

#endif

}

/********************************************** 模式零写数据

***********************************************/ #if _CPOL==0&&_CPHA==0 //MODE 0 0 void SPI_Send_Dat(unsigned char dat)

{

unsigned char n;

for(n=0;n<8;n++)

{

SCK_D(0);

if(dat&0x80)MOSI_D(1);

else MOSI_D(0);

dat<<=1;

SCK_D(1);

}

SCK_D(0);

}

/*********************************************

模式零读数据

*********************************************/ unsigned char SPI_Receiver_Dat(void)

{

unsigned char n ,dat,bit_t;

for(n=0;n<8;n++)

{

SCK_D(0);

dat<<=1;

if(MISO_I())dat|=0x01;

else dat&=0xfe;

SCK_D(1);

}

SCK_D(0);

return dat;

}

#endif

/**********************************************

模式二写数据

***********************************************/ #if _CPOL==1&&_CPHA==0 //MODE 1 0 void SPI_Send_Dat(unsigned char dat)

{

unsigned char n;

for(n=0;n<8;n++)

{

SCK_D(1);

if(dat&0x80)MOSI_D(1);

else MOSI_D(0);

dat<<=1;

SCK_D(0);

}

SCK_D(1);

}

/*********************************************

模式二读数据

*********************************************/ unsigned char SPI_Receiver_Dat(void)

{

unsigned char n ,dat,bit_t;

for(n=0;n<8;n++)

{

SCK_D(1);

dat<<=1;

if(MISO_I())dat|=0x01;

else dat&=0xfe;

SCK_D(0);

}

SCK_D(1);

return dat;

}

#endif

/*********************************************

模式一写数据

*********************************************/

#if _CPOL==0&&_CPHA==1 //MODE 0 1 void SPI_Send_Dat(unsigned char dat)

{

unsigned char n;

SCK_D(0);

for(n=0;n<8;n++)

{

SCK_D(1);

if(dat&0x80)MOSI_D(1);

else MOSI_D(0);

dat<<=1;

SCK_D(0);

}

}

/*********************************************

模式一读数据

*********************************************/ unsigned char SPI_Receiver_Dat(void)

{

unsigned char n ,dat,bit_t;

for(n=0;n<8;n++)

{

SCK_D(1);

dat<<=1;

if(MISO_I())dat|=0x01;

else dat&=0xfe;

SCK_D(0);

}

SCK_D(0);

return dat;

}

#endif

///////////////////////////////////////////////////////

///////////////////////////////////////////////////////

#if _CPOL==1&&_CPHA==1 //MODE 1 1 void SPI_Send_Dat(unsigned char dat)

{

unsigned char n;

SCK_D(1);

for(n=0;n<8;n++)

{

SCK_D(0);

if(dat&0x80)MOSI_D(1);

else MOSI_D(0);

dat<<=1;

SCK_D(1);

}

}

/************************************ 模式三读数据

************************************/ unsigned char SPI_Receiver_Dat(void)

{

unsigned char n ,dat,bit_t;

SCK_D(0);

for(n=0;n<8;n++)

{ SCK_D(0);

dat<<=1;

if(MISO_I())dat|=0x01;

else dat&=0xfe;

SCK_D(1);

}

SCK_D(1);

return dat;

}

#endif

/************************************* *************************************/ void main()

{

SPI_Init();

DDRB = 0XFF;

//#if _CPOL

//SCK_D(0);

//#endif

while(1)

{

//SSEL_D(0);

//SPI_Send_Dat(0x01);

//SPI_Send_Dat(0x31);

//SSEL_D(1);

SSEL_D(0);

SPI_Send_Dat(0x81);

PORTB =SPI_Receiver_Dat();

SSEL_D(1);

//delay();

}

}

商业银行综合业务模拟实习

商业银行综合业务模拟实习 一、实习目的 本实习在《金融学》《金融市场学》、《经济学》、《商业银行经营管理》等专业课程基础上设置的综合性实践环节。实习为学生提供了了解商业银行经营管理实务操作的机会。通过商业银行综合业务模拟操作系统的学习,使得同学了解商业银行个人和对公各类业务的操作流程,熟练运用商业银行管理知识,熟悉商业银行的运行规律,并且提升在银行业的实际工作能力。本实习是专业教学的重要组成部分。 二、实习内容 1、商业银行管理理论在实习操作中的运用 2、商业银行对公业务的操作 3、商业银行私人业务的操作 4、商业银行风险管理的操作 三、实习的组织形式及时间 本实习采用校内实验室实习方式。学生在掌握了商业银行经营管理课程理论知识的前提之下,学生可以在校内的金融实验室进行商业银行综合业务的操作,其中包括个人储蓄业务、对公会计业务以及、信息的查询、对公存贷业务;与此同时,还安排让学生在校内的图书馆和资料室查阅我国商业银行的统计数据和有关经济政策的时间。使得学生将所学的银行理论知识与商业银行综合业务管理系统相结合,使得学生理解所学的银行理论知识与实际应用系统的联系,培养学生分析问题和解决问题的能力。四、实习步骤

1.了解商业银行综合业务操作系统 2.商业银行个人业务操作 3.商业银行对公业务操作 4.商业银行报表管理系统操作 5.商业银行信贷业务及风险管理系统操作 五、实习报告/论文 实习报告/论文可以包括内容之一: 1、商业银行综合业务的流程; 2、商业银行的个人业务操作总结; 3、商业银行对公业务的操作总结; 4、对于整个实习课程的体会和建议 实验报告要求资料真实、准确、完整,用A4纸,4号宋体字打印,学校统一封面装订,必须附带操作过程的图表。 六、实习报告/论文内容 1、商业银行综合业务的流程; 1)登陆2)增加钱箱 3)普通活期客户录入 4)凭证领用5)凭证出库

银行系统模拟

数 据 结 构 实 验 报 告 实验3:银行业务模拟系统姓名:范亚平 年级:2010级 学号:1008114061 专业:计算机科学与技术专业(1)班

数据结构实验报告 一、实验目的: 1)通过实验掌握对离散事件模拟的认识; 2)进一步理解队列的实现与应用; 3)对链表的操作有更深层次的理解; 二、实验条件: 学院提供公共机房,1台/学生微型计算机。 三、实验要求: 1问题描述: 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 2.一个完整的系统应具有以下功能: 1)初始化(OpenForDay),模拟银行开门时各数据结构的状态。 2事件驱动(EventDrived), 对客户到达和离开事件做相应处理。 3下班处理(CloseForDay), 模拟银行关门时的动作,统计客户平均逗留时间。 [备注]: 假设银行开门的时刻(间)设为0 , 银行每天营业的时间在程序运行时输入(例如480分钟)。 每个客户办理业务的时间不超过30分钟,两个相邻客户到达银行的时间间隔不超过5分钟要求程序执行时,只要给出银行每天的营业时间即可输出客户平均逗留的时间。四、总的设计思想: 为了计算这个平均的逗留时间,自然需要知道每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行的逗留时间。所有客户逗留时间的总和被一天内进入银行的客户数除便是所求的平均时间。称客户到达银行和离开银行这两个时间发生的事情为“事件”,则整个模拟程序将按事件的先后顺序进行处理。这样一种程序称做事件驱动模拟。下面是上述银行客户的离散事件驱动的模拟算法。 void Bank_Simulation( int CloseTime ){ // OpenForDay ( ); //初始化,模拟银行开门时各数据结构的状态。 while(有要处理的事件时) //有事件可处理 { EventDrived ; //事件驱动,从事件表中取出事件en; //根据en的类型(客户到达事件或客户离开事件)做相应的处理

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

数据结构实验报告 银行业务模拟系统的设计与实现(该实验为综合性实验,共用6个学时)二、实验要求: 1.问题描述: 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 2.一个完整的系统应具有以下功能: 1)初始化(OpenForDay),模拟银行开门时各数据结构的状态。 2)事件驱动(EventDrived), 对客户到达和离开事件做相应处理。 3)下班处理(CloseForDay), 模拟银行关门时的动作,统计客户平均逗留时间。 [备注]: 假设银行开门的时刻(间)设为0 , 银行每天营业的时间在程序运行时输入(例如480分钟)。 每个客户办理业务的时间不超过30分钟,两个相邻客户到达银行的时间间隔不超过5分钟要求程序执行时,只要给出银行每天的营业时间即可输出客户平均逗留的时间。 三、总的设计思想、环境语言、工具等 总的设计思想: 为了计算这个平均的逗留时间,自然需要知道每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行的逗留时间。所有客户逗留时间的总和被一天内进入银行的客户数除便是所求的平均时间。称客户到达银行和离开银行这两个时间发生的事情为“事件”,则整个模拟程序将按事件的先后顺序进行处理。这样一种程序称做事件驱动模拟。下面是上述银行客户的离散事件驱动的模拟算法。 void Bank_Simulation( int CloseTime ){ // OpenForDay ( ); //初始化,模拟银行开门时各数据结构的状态。 while(有要处理的事件时) //有事件可处理 { EventDrived ; //事件驱动,从事件表中取出事件en; //根据en的类型(客户到达事件或客户离开事件)做相应的处理 if(en表示客户到达) CustomerArrived( );// 处理客户到达事件 else CustomerDeparture( ) ;// 处理客户离开事件 }//while CloseForDay( );//计算客户的平均逗留时间 }// Bank_Simulation 环境语言:Windows下的Microsoft VC++ 四、数据结构与模块说明 下面是模拟程序中需要的数据结构及其操作。

[实用参考]银行业务模拟操作实验指导书.docx

《银行业务模拟操作》 实验指导书 授课班级 教师: 第一部分实验概述 一、课程性质 本课程为金融学专业必修的实践环节。 课程编号: 适用专业:金融学 先修课:金融学、国际金融、商业银行经营管理、会计学或金融会计等 学时数:30课时 学分数:1学分 二、实验目的 1、将银行经营管理的理论与实践相结合,系统地实践、体验和学习银行业务的 相关内容; 2、理解银行与个人、银行与企业以及银行之间的关系; 3、在高度仿真的模拟环境中,获得实践的经验,基本掌握不同柜面业务的处理 方法。 三、实验内容 在银行模拟系统软件中,学生扮演在银行中工作的柜员,进行存款、贷款、出纳、结算、账户管理等业务处理的模拟练习。 四、成绩评定

每个学生由易到难、循序渐进地进行上述各大类业务的模拟练习,系统根据操作的熟练程度和正确率进行自动评分。 学生最终的成绩由以下三部分构成: 模拟操作分数:60% 考勤:20% 实验报告:20% 五、实验室要求 1、在实验室机器上不得从事与本课程无关的活动。 2、遵守实验室规则,保持实验室清洁。 第二部分主页操作介绍 一、登录系统 登录http://172.25.69.211/simbankv4/l00.aspG进入SimBank银行模拟教学平台登录界面。分别输入帐号(即自己的学号)及密码(初始没有密码),点击“登录”按钮,进入模拟教学系统首页,如图1。在此可以看到指导教师发布的通知、实验内容的链接列表、成绩图表和相关知识链接。 在画面右上角处: 点击“个人信息”:学生可查看个人信息、修改姓名及密码。 点击“在线帮助”:可查询各项功能的具体操作。 点击“退出系统”:可重新进入登录画面。 图1 二、营业大厅

银行业务模拟C++

#include #include #include 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) {//插入元素d为Q的新的队尾元素 service* temp = new service; temp->money = d; temp->next = NULL; if(NULL == q.head) {//队列为空,初始化 q. head = temp; q. rear = temp; } else {//队列不为空,插入元素d q. rear->next = temp; q. rear = q.rear->next; } } void pop(queue &q) {//若队列不为空,出队列函数 service* temp; temp = q. head;

(完整word版)商业银行业务模拟实验报告

商业银行业务模拟实验报告 班级 姓名 学号

商业银行业务模拟实验报告 实验目的: 我们在银行模拟操作过程中,能熟悉银行日常业务,如对私业务、对公业务等,对现代商业银行的架构、运营模式有所认识。我们可以在此看到每一个实验的业务图解教程,将银行经营管理的理论与实践相结合,系统地实践,体验和学习银行业务的相关业务,从而可以提高学习、判断、操作、分析等各个方面的能力。实验过程: 在银行模拟操作过程中,我们扮演在银行中工作的柜员,进行了十个业务的模拟,分别是:活期储蓄业务、整存整取业务、零存整取业务、通知储蓄业务、代理中间业务、现金业务、本票业务、汇票业务、单位活期存款业务、定期存款业务。这些业务又分为对私业务和对公业务 注意:在这些业务操作之前,都要进行工前处理([9071]网点开机,[9073]机构签到),而业务操作完成之后,都要进行日终处理([9077]柜员轧账—[9078]柜员日结—[9075]机构日结—机构签退—网点关机)。在每项操作的开始,我们都必须根据客户所递交的凭证及钱钞进行判断客户需求是否正确,再进行业务操作。 对私业务(活期储蓄业务、整存整取业务、零存整取业务、通知储蓄业务、代理中间业务)

一、活期储蓄业务 活期储蓄指不规定存期,储户随时可以存取款、存取金额不限的一种储蓄方式。 对于活期储蓄业务,我们进行的模拟业务有: 活期开户、活期续存、活期账户对转、活期存款账户支取、结清、销户等。 活期储蓄的种类有: 活期一折通储蓄卡(借记卡)一卡通 注意:在办理此业务时,一定要看清客户的要求,当然,对客户的每一项信息都必须全神贯注地仔细核对。然后根据程序的步骤进行操作,要注意系统给予的提示。 二、整存整取业务 整存整取是一种由您选择存款期限,整笔存入,到期提取本息的一种定期储蓄。其特点是:有较高的稳定收入,起存金额低,存期选择多样。这种储蓄适合个人生活暂时不用的存储。 整存整取储蓄的种类有: 定期一折通定期存单储蓄卡(借记卡 三、通知储蓄业务 通知存款是经中国人民银行批准的个人存款业务,是一种不约定存期,支取时需提前通知银行,约定支取日期和金额方能支取的一种大额存款方式。 注意:在操作过程中,要根据客户要求,是否需要凭证,若

c++银行业务模拟系统

#include #include #include #include using namespace std; const int aa=70,bb=150,cc=130,dd=50;//不同业务所需时间 struct data//客户资料 { int usetime;//客户在银行时间 int bianhao;//客户编号 int yewutime;//客户所办业务时间 string yewu;//业务名 int yewunum;//业务标号 int chutime[3];//客户到达时间,chutime[0]是秒钟,chutime[1]是分钟,chutime[2]是时钟 int motime[3];//客户离开时间 int windownum; }; class Bank { private: int windowsum[4][5]; //窗口数 long sumtime; //所有办理完业务客户总共所用时间 int suijitime; //最后两个客户间隔时间 int stilltime[4]; //每个窗口还需等待时间 int s,f,m; //分别是时、分、秒 int wind[5]; //wind[0]是空闲窗口数量,wind[1/2/3/4]存放具体窗口名 public: Bank(); //初始化 data kehu[900]; //8小时内最多客户人数 void timelocal(Bank &); //记录时间 int windows(int,int); //为客户排队 void calculatechu(int,Bank&);//记录客户到达时间 void print(int,int ,Bank); //输出客户数据 void averagetime(int,Bank); //计算平均时间 void window_dail(); //输出窗口信息 int fanhui(Bank &); //求随机时间 void custerm_dail(int,int,Bank);//选择客户编号 void choose(int,int,Bank); //选择查看内容 void todaynum(int,int,Bank);//显示今日客户量 void writetotext(int,Bank);//文件函数操作 };

银行业务模拟程序

实验二银行业务模拟程序 一、实验目的 用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的程序文件包含的函数原型及功能

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

《商业银行综合业务模拟实验》实验报告书 一、实验目的 《商业银行综合业务模拟实验》应用先进的计算机网络技术以及商业银行综合业务模拟系统,采用以总行为数据中心的集中式数据网络系统方式,把银行日常业务处理的流程和各个环节全部纳入计算机处理,形成覆盖银行管理全方位的科学体系,实现网络互联、信息共享、查询自如、方便快捷的电子化管理,实现“以客户为中心、以市场为导向、以风险控制为核心、以量化分析为主”的管理机制。本课程采用的实验平台是“深圳智盛商业银行综合业务模拟系统”,该系统的最终目的是通过模拟的交易环境加强学生对现代商业银行理论知识的理解,训练学生的实际动手能力,满足专业课程的实验、实习及课程设计任务,为学生走向社会提供一个理论结合实际的实验环境,促使学生关注最新的商业银行信息技术,训练学生的实际操作能力,为金融专业及其它相关专业的学生走向社会提供一个良好的实习环境。 二、实验意义 1、通过对模拟银行软件和相关银行系统各个功能模块的具体操作,加深学生对银行实务中基本业务流程的理解和掌握,熟悉业务操作的关键要素。 2、由于本次模拟系统采用面向管理、服务、产品、客户和数据的全新概念设计,提出面向客户信息的设计方法,以客户信息文件为基础,构造客户信息管理子系统,为银行综合掌握客户状况、提供全面的客户追踪和决策分析手段提供便利,在一定程度上有助于学生理解现代商业银行综合业务面向客户的管理体系。 3、通过本课程教学,加强学生把商业银行业务经营的管理理论和实际操作相结合的能力,促进学生充分理解和运用金融法律、银行规章等知识,提高学生运用基本知识分析解决实际问题的创新思维和

能力,为学生的成长成才奠定扎实的专业基础。同时,通过学习也能引导学生密切关注我国商业银行经营改革的现状与问题,以便提高学生观察问题、思考问题和解决问题的能力。 三、实验步骤 (一)个人业务 1、储蓄柜员初始操作和日初操作。设置个人储蓄系统的基本情况,处理与凭证相关的业务。其中,重点掌握重要空白凭证出库的思想和流程。 2、储蓄日常业务操作之个人储蓄业务。①开设普通客户和一卡通客户。②对不同类型账户进行开户、销户、存取款、部分提前支取等业务的处理。如:活期储蓄账户、整存整取账户、定活两便账户、零存整取账户、存本取息账户、通知存款账户、教育储蓄账户等。③一卡通、凭证的替换、挂失和解挂。 3、日常业务操作之特殊业务。主要包括表内记账、表外记账、信息维护、账户维护和交易维护。 4、储蓄日常业务之代理业务。主要包括代理合同新建、代理批量管理、逐笔代收、批量托收,并做日终处理,尾箱轧帐、凭证上缴和空白凭证入库。(二)对公业务 1、对公柜员初始操作和对公日初处理。设置对公会计系统的基本情况,操作总行领用下发凭证,支行领用凭证以及凭证现金出库。 2、日常业务操作之对公存贷。新开客户号并开设基本存款账户和定期存款账户,进行一般活期存款、临时存款、贷款、汇票兑付等业务操作。 3、日常业务操作之个人贷款,包括消费贷款和助学贷款。 4、日常业务操作之结算业务。辖内业务包括现金、转账通存管理、现金、

一个银行业务模拟的程序

银行业务模拟 一、需求分析 1程序问题描写: 本程序为银行客户业务模拟, 其业务模拟分为两种: 第一功能是申请从银行得到一 笔资金,即取款或借款。第二功能是向银行投入一笔资金,即存款或还款。银行有两个服 务窗口,相应地有两个队列。 2程序具体实现的功能: 1)第一功能: 客户到达银行后先排第一个队。处理每个客户业务时,且申请额超出银 行现存资金总额而得不到满足,则立刻排入第二个队等候,直至满足时才离开银行;否则 业务处理完后立刻离开银行。每接待完一个第二种业务的客户,则顺序检查和处理(如果 可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队 列的队尾。 2)第二种功能: 如果在此检查过程中,一旦银行资金总额小于或等于刚才第一个队列 中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了 一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。任 何时刻都只开一个窗口。假设检查不需要时间。营业时间结束时所有客户立即离开银行。 3)该程序要求实现银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗 留的平均时间。 3. 演示程序以用户与计算机交互方式执行,即在计算机终端上显示"提示信息" 之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤去输入中的 非法字符)和运算结果显示在其后。 4.数据测试 一天营业开始时银行拥有的款额为10000(元),营业时间为600(分钟)。其他模拟参 量自定,注意测定两种极端的情况:一是两个到达事件之间的间隔时间很短,而客户 的交易时间很长,另一个恰好相反,设置两个到达事件的间隔时间很长,而客户的交易时 间很短。 注: 测试数据均由程序随机产生。运行数据将在后面使用说明中给出 二、概要设计 1基本要求: 用动态存储结构以及队列来实现 2所需的数据类型 为实现上述程序功能,应以需要定义单链表的抽象数据类型以及队列集合并还需要用 到结构体。为此,需要两个抽象数据类型:单链表和队列还有结构体声明。 (1)单链表的抽象数据类型定义为: 关于线性表的链表存储结构的本质是:在逻辑上相邻的两个数据元素ai-1, ai,在存 储地址中可以不相邻,既地址不连续。不同的教材的表示基本是一致的。 typedef struct LNode { ElemType data; /* 数据子域 */ struct LNode *next; /* 指针子域 */

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

安徽新华学院 数据结构课程设计报告 题目:银行业务模拟系统 学院:信息工程学院 专业:信息管理与信息系统 班级: 12 级信管 1 班 姓名:杨丹丹 学号: 1242152137 指导教师:李明 设计时间: 2013.12.12— 2013.12.30

课程设计任务书 一、目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解, 最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求 解过程并编写代码实现。 二、要求 1.客户业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是 向银行投入一笔资金,即存款或还款。 2.银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客 户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足时,则立 即排入第二个队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。 3.每接待完一个第二种业务的客户,则顺序检查和处理第二个队列中的客户 , 对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。 4.假设检查不需要时间 , 在此检查过程中 , 一旦银行资金总额少于或等于刚才第一个队列 中最后一个客户( 第二种业务) 被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有满足者), 转而继续接待第一个队列的客户。 5.任何时刻都只开一个窗口 , 营业时间结束时所有客户立即离开银行。通过离散的模拟 方法求出客户在银行内逗留的平均时间 三、设计期限 日期内容 12.12-12.16 12.16-12.22选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。 创建相关数据结构 , 录入源程序。 12.22-12.26调试程序并记录调试中的问题,初步完成课程设计报告。 12.26-12.31上交课程设计报告打印版和电子版的论文程序

银行业务活动的模拟

数据结构 指导老师:陈桂玲 罗开华 | 193132班 | 20131001842 2015年1月5日

题号:1 题目:银行业务活动的模拟 1.需求分析 1.客户的业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款; 2.第二种是向银行中投入一笔资金,即存款或还款。银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。 3.处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足, 则立刻排入第二个队等候,直至满足时才离开银行;否则业务处理完后立刻离开银行。每接 待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满 足的申请者予以满足,不能满足者重新排到第二个队列的队尾。 4.注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户 (第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检 查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。任何时刻都只开一 个窗口。假设检查不需要时间。营业时间结束时所有客户立刻离开银行。 5.要求:模拟银行业务活动,按时间顺序输出业务活动的事件,并求出客户在银行内逗留的 平均时间。 2.设计 2.1设计思想 (1)数据结构设计(采用的结构及原因) 本题我采用的是用队列来储存客户数据,用rand函数来提取随值。(2)算法设计(函数模块及功能,可画流程图)

2.2设计表示 (1)关系调用图

(2)函数接口规格说明 函数调用 1.主函数 main 2.进栈函数push 3.出栈函数pop 4.查找和处理函数service* searchAndDel 5.到达函数arrive 6.存款函数putMoney 7.群款函数getMoney 8.随机函数rand 2.3详细设计(伪码,注释) ADT Queue{ 数据对象:D={ai∈Elemset i=1,2,…,n,n≥0} 数据关系:R1={ ai-1 ai∈D,i=2, …,n} 约定其中a1端为队列头,an端为队列尾. 基本操作: Init Queue(&Q) 操作结果:构造一个空队列Q QueueEmpty(Q) 操作结果:若Q为空队列,则返回TRUE,否则FALSE GetHead(Q &q) EnQueue(&Q q)

银行业务模拟操作

《银行业务模拟操作》 实验报告 姓名:丁盛 学号:14119113 专业:金融学 任课教师:贺晓波 时间:2017-2018学期第一学期

简单总结 银行业务模拟操作课程到本周就将告一段落了,在八周的课程中我们以一课一练练(两到三个业务)的形式进行有针对性、目的性的学习,学习的内容包括:业务相关的知识介绍、流程图解、凭证学习及仿真界面操作等一系列培训及实战考核。共计操作完成14项不同业务,其中对私业务9项:活期储蓄业务、整存整取业务、零存整取业务、通知储蓄业务、定活两便业务、借记卡业务、贷记卡业务、代理中间业务、储蓄特殊业务,对公业务五项:现金业务、汇票业务、汇兑业务委、托收款业务、单位活期存款业务 操作中的体会 由于大家在此之前从来没有接触过银行业务的操作过程,对于课程所用的操作软件也很不熟练。对很多需要我们填写的内容都摸不到头脑,有些是不知道在一堆桌面凭证中哪里找信息,有些找到了信息却最终显示错误,有些甚至都不知道填什么。好在这只是一介模拟课程,我们随时可以寻求老师的帮助,每当遇到问题的时候同学之间都会相互讨论,讨论不出结果时也有老师为我们排忧解难。刚开始的时候,我还由于不够细心和不够熟练经常犯错误,经常会出现忘了点钞,忘了将桌面凭证、桌面钱钞收起或者交给顾客的情况,结果就是各种扣分,错误一多就会让人感到厌烦、急躁,做完一个业务点开步骤查询,看到用红字标出的自己各种错误,突然意识到,如果自己真的有一天到银行工作,出现了这些错误可就不是扣一分两分那么简单的了,有可能会面对顾客投诉、领导批评、扣工资等一系列的麻烦。想到这些,在操作时我更加专注自习了。终于当自己第一次全部正确完成一项业务之后,发现自己只得了98分,原来自己用时太长,系统会根据不同的任务量调整操作时间,超时后会根据超时时间逐渐扣分。这又让我明白了一个银行工作的道理,作为服务业,客户的感受和心情也是评判我们工作是否成功的一项重要标准,业务操作时间过长意味着客户长时间的等待,自然也就会对我们的服务不满意。渐渐的,我对整个操作系统和业务过程都熟悉了起来,自己的业务操作速度也快了起来,经常会在业务中获得满分。再进一步我已经将每次必不可少的开机关机过程代码背了下来,网点开机熟练的输入“9073”网点关机熟练的输入“9077 9078 9075 9074”。对小键盘的熟练程度也得到了大大的提升,有时候单手输入用小键盘输入数字甚至都可以不用看键盘。

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

山东理工大学计算机学院课程设计 (数据结构) 班级 姓名 学号 指导教师 二○一一年一月二十日

课程设计任务书及成绩评定 课题名称银行业务模拟系统 Ⅰ、题目的目的和要求: 1、设计目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 2、设计题目要求: 1. 客户业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行投入一笔资金,即存款或还款。 2. 银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足时,则立即排入第二个队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。 3. 每接待完一个第二种业务的客户,则顺序检查和处理第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。 4.假设检查不需要时间,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有满足者),转而继续接待第一个队列的客户。 5. 任何时刻都只开一个窗口,营业时间结束时所有客户立即离开银行。通过离散的模拟方法求出客户在银行内逗留的平均时间。

Ⅱ、设计进度及完成情况 Ⅲ、主要参考文献及资料 [1] 严蔚敏数据结构(C语言版)清华大学出版社 1999 [2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999 [3] 谭浩强 C语言程序设计清华大学出版社 [4] 与所用编程环境相配套的C语言或C++相关的资料

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

安徽新华学院数据结构课程设计报告 题目:银行业务模拟系统 学院:信息工程学院 专业:信息管理与信息系统 班级:12级信管1班 姓名:杨丹丹 学号:1242152137 指导教师:李明 设计时间:2013.12.12—2013.12.30

课程设计任务书 一、目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 二、要求 1.客户业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行投入一笔资金,即存款或还款。 2.银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足时,则立即排入第二个队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。 3. 每接待完一个第二种业务的客户,则顺序检查和处理第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。 4.假设检查不需要时间,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有满足者),转而继续接待第一个队列的客户。 5. 任何时刻都只开一个窗口,营业时间结束时所有客户立即离开银行。通过离散的模拟方法求出客户在银行内逗留的平均时间 三、设计期限

银行业务模拟系统实验报告

数据结构课程设计报告题目:银行业务活动的模拟 学生姓名:赖锡宏 学号:1021112513 班级:10211125 指导教师:高永平 2012年6月15日

计算机与信息技术学院综合性、设计性实验报告 一、实验目的 1)通过实验掌握对离散事件模拟的认识; 2)进一步理解队列的实现与应用; 3)对链表的操作有更深层次的理解; 该实验涉及到线性表的建立、插入、删除等操作,涉及到了队列的建立、插入、删除,涉及到了离散事件的应用思想,还涉及到了排序的概念。完成这个实验对线性表、队列及C语言编程等多方面的知识将是一个很好的利用,对离散事件也将有一个初步的认识。 二、实验仪器或设备 1台/学生微型计算机。 三、总体设计(设计原理、设计方案及流程等) 1.设计原理: 为了计算平均时间,就要掌握每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行逗留的时间。所有客户逗留时间的 总和被一天内进入银行的客户数除便是所求的平均时间。 事件的主要信息是事件类型和事件发生的时刻,算法中要处理的事件有两类:一类是客户到达的时间,另一类是客户离开的时间。前一类事件 发生的时刻随客户到来自然形成,后一类事件发生时刻则由客户事务所需 时间和等待所耗时间而定。由于驱动程序是按时间发生时刻的先后顺序 进行,则事件表应该是有序表,其主要操作是插入和删除事件。 2.设计方案及流程 由于在实际的银行中,客户到达的时刻及其办理事务所需时间都是随机的,在模拟程序中可用随机数代替,不失一般性。假设第一个客户进门 的时刻为0,即是模拟程序处理的第一个事件,之后每个客户到达的时刻 在前一个客户到达时设定。因此在客户到达事件发生时需先产生两个随机 数:其一为此时刻到达的客户办理事务所需时间durtime;其二为下一个 客户将到达的时间间隔intertime,假设当前事件发生的时刻为 occurtime,则下一个客户到达事件发生的时刻为occurtime+intertime。 由此应产生一个新的客户到达时间插入表;刚到达的客户则应插入到当前 所含元素最少的队列中;若该队列在插入前为空,则还应产生一个客户离 开事件插入事件表。 客户离开时间的处理比较简单。首先计算该客户在银行逗留的时间,

银行业务模拟系统的设计与实现实验报告样本

数据结构实验报告 ——银行业务模拟系统的设计与实现 学院: 软件学院 专业: 计算机科学与技术 班级: 12级java班 学号: 姓名: 吴静 指导老师: 张磊 数据结构实验报告 学号姓名吴静年级班级计算机科学技术 .10.9、.10.16、 .10.23 机号: 学院机房时间 指导教师张磊、张俊娜 上午8:00--9:30( Java班) 一、实验题目: 银行业务模拟系统的设计与实现 ( 该实验为综合性 实验, 共用6个学时) 二、实验要求:

1.实验目的: 1) 经过实验掌握对离散事件模拟的认识; 2) 进一步理解队列的实现与应用; 3) 对链表的操作有更深层次的理解; 该实验涉及到线性表的建立、插入、删除等操作, 涉及到了队列的建立、插入、删除, 涉及到了离散事件的应用思想, 还涉及到了排序的概念。完成这个实验对线性表、队列及C语言编程等多方面的知识将是一个很好的利用, 对离散事件也将有一个初步的认识。2.问题描述: 假设某银行有四个窗口对外接待客户, 从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户, 因此在客户人数众多时需在每个窗口前顺次排队, 对于刚进入银行的客户, 如果某个窗口的业务员正空闲, 则可上前办理业务, 反之, 若四个窗口均有客户所占, 她便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 3.一个完整的系统应具有以下功能: 1) 初始化( OpenForDay) , 模拟银行开门时各数据结构的状态。 2)事件驱动( EventDrived) , 对客户到达和离开事件做相应处理。3)下班处理( CloseForDay) , 模拟银行关门时的动作, 统计客户平均逗留时间。 [备注]: 假设银行开门的时刻( 间) 设为0 , 银行每天营业的时间在程序

商业银行业务模拟

CHANGZHOU INSTITUTE OF TECHNOLOGY 《商业银行业务模拟》课程作业 题目:《商业银行业务模拟》总结 二级学院(直属学部): 数理与化工学院 专业: 数学与应用数学 班级: 15数学 学生姓名: 胡子炎 学号: 指导教师姓名: 余敏丽 职称: 讲师 评阅教师姓名: 余敏丽 职称: 讲师 2018年1月 KC020-1

实践地点:瑶光楼B308机房; 实践内容:通过《商业银行模拟软件》来进行扮演综合角色、普通柜员角色来开展各项业务(活期储蓄业务,整存整取业务,通知储蓄业务,定活两便业务,借记卡业务,贷记卡业务,代理中间业务,储蓄特殊业务,现金业务,本表业务,汇票业务,汇兑业务,委托收款业务,单位活期存款业务,单位定期存款业务,单位通知存款业务,单位其他存款业务,个人贷款业务,单位贷款业务,进口信用证业务,出口信用证业务)等二十一个业务。; 实习目的:通过模拟银行实习,使同学们了解商业银行各项业务的具体办理流程,除此以外,加深同学们对所学的有关商业银行知识的理解,加强对所学知识的掌握程度。 实验一:活期储蓄业务 操作流程: 一.存折开户:1.进入操作界面。2.到机房完成开机操作。3.点击对私柜台,进入业务操作界面,完成签到工作。4.点击受理新业务牌,查看客户递交的凭证及钱钞,接受客户业务申请,开始办理活期存款业务,办理成功后,将凭证递交客户,接受业务。开始下一业务操作。 二.一本通开户:1:受理业务。2.查看客户递交的凭证和钱钞,无误接受业务。 3.在财务箱中取出活期一本通。 4.点击电脑进行综合业务操作,根据界面填写客户信息,完成综合业务操作,活期开户成功。 5.储蓄开户凭条盖章。 6.盖章成功递交客户,凭证放入单据箱,钱钞放入钱箱,结束业务。 三.存折续存:1.受理业务。2.查看桌面凭证和桌面钱钞,接受业务。3.进行综合业务操作,活期续存提交成功。4.请客户签名,存款凭条盖章,盖章完成递交客户。凭证放入单据箱,钱钞放入钱箱。结束业务。

银行业务模拟

NANCHANG UNIVERSITY 课程设计报告 课程名称:计算机技术综合课程设计 题目:银行业务模拟 学院:信息工程系:计算机科学与技术 专业:计算机科学与技术 班级:061 班 学号:6103106020 学生姓名:邱雨田 时间:2010年1月11日至1月22日

一、问题描述: 客户业务分为两种。第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行中投入一笔资金,即存款或还款。银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立刻排入第二个队等候,直到满足时才离开银行;否则业务处理完后立刻离开银行。每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。任何时刻都只开一个窗口。假设检查不需要时间。营业时间结束时所有客户立即离开银行。 写一个银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平均时间。 二、分析与设计 1.问题分析: 本问题主要需要处理两个队列(fq,sq)和一个事件表(eq)。一个队列(fq)表示第一种业务(存款或还款),另一个队列(sq)表示第二种业务(取款或借款)。事件有两类:到达银行和离开银行。到达事件发生时随机地设置此用户的交易时间和距下一到达事件之间的时间间隔。每个客户要办理的款额也应该是随机确定的。初始时银行现存资金总额为total。开始营业后的第一个事件是客户到达,营业时间从0到closetime。Total 和closetime以及随机产生的时间和款项的上下界都是交互地从让用户从输入,作为模拟参数。要得到相关的结果:由于下班时间到而没能办理的顾客数;分别列出需要办理两种业务的顾客数;分别列出已成功办理两种业务的顾客数;分别列出两种业务的成功办理率;客户在银行内的平均逗留时间;下班时银行所剩余的资金总额。 2.测试数据及期望结果: 1)输入: 用户需要在程序运行开始时输入以下数据: ①银行初始资金total(测试数据为10000) ②银行营业时间closetime(测试数据为600) ③客户交易时间上下界dealmaxtime和dealmintime,用 于给随机数产生函数传递参数,产生一个介于这两个值之间的 值。 ④客户到达时间间隔上界arrivemaxtime arrivemintime, 用于给随机数产生函数传递参数,产生一个介于这两个值之间的 值。 ⑤交易额的最大上限dealMaxMoney.用于给随机函产生函 数参数,产生一个介于-dealMaxMoney和dealMaxMoney之间的 值,作为顾客到银行办理业务的交易额。 2)输出:

分析方案银行业务模拟系统与实现

数据结构实验报告 、实验题目: 1)通过实验掌握对离散事件模拟的认识; 2)进一步理解队列的实现与应用; 3)对链表的操作有更深层次的理解; 二、实验要求: 1 . 问题描述: 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚 进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有 客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并 计算一天中客户在银行逗留的平均时间。 2 ?一个完整的系统应具有以下功能: 1)初始化<OpenForDay),模拟银行开门时各数据结构的状态。 2)事件驱动<EventDrived ),对客户到达和离开事件做相应处理。 3)下班处理<CloseForDay ),模拟银行关门时的动作,统计客户平均逗留时间。 [备注]: 假设银行开门的时刻<间)设为0,银行每天营业的时间在程序运行时输入<例如480分

钟)。 每个客户办理业务的时间不超过30 分钟,两个相邻客户到达银行的时间间隔不超过5 分钟要求程序执行时,只要给出银行每天的营业时间即可输出客户平均逗留的时间。 三、总的设计思想、环境语言、工具等 总的设计思想:为了计算这个平均的逗留时间,自然需要知道每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行的逗留时间。所有客户逗留时间的总和被一天内进入银行的客户数除便是所求的平均时间。称客户到达银行和离开银行这两个时间发生的事情为“事件”,则整个模拟程序将按事件的先后顺序进行处理。这样一种程序称做事件驱动模拟。下面是上述银行客户的离散事件驱动的模拟算法。 void Bank_Simulation( int CloseTime >{ // OpenForDay ( > 。// 初始化, 模拟银行开门时各数据结构的状态。 while( 有要处理的事件时> // 有事件可处理 { EventDrived 。// 事件驱动,从事件表中取出事件en ; // 根据en 的类型<客户到达事件或客户离开事件)做相应的处理if(en 表示客户到达> CustomerArrived( > 。// 处理客户到达事件 else CustomerDeparture( > 。// 处理客户离开事件 }//while CloseForDay( > 。// 计算客户的平均逗留时间 }// Bank_Simulation

相关主题
文本预览
相关文档 最新文档