数据结构课程设计报告---银行业务模拟

2018-12-22 21:06

数据结构课程设计报告

学院: 专业: 学生: 学号:XX

XX

XX

XX

一. 问题描述

题目内容:银行业务模拟

基本要求:设某银行有N个窗口,可同时为N位顾客办理业务。当顾客进门时,若有窗口空闲,则可立刻办理业务,否则需要依次排队等候。一旦有顾客业务办理完毕,派在队头的顾客便可开始办理业务。若银行每天连续营业T小时,求一天内顾客在银行内的平均逗留时间,顾客排队等候办理业务的队列长度平均值,营业时间到点后仍需完成服务的收尾工作时间。

测试数据:服务窗口数目N及营业时间有拥护设定,第一个顾客进门的时刻为0,之后每个顾客的进门时刻在前一个顾客进门时设定。即在进门事件发生时随即产生两个随机数(durtime,intertime),durtime为进门顾客办理业务所需的服务时间(简称办理时间);intertime为下一个顾客将到达的时间间隔(简称时间间隔)。R为由随机数发生器产生的随机数,顾客办理时间和顾客之间的时间间隔不妨假设与R有关,可以由下式确定:

durtime=15+RP intertime=2+R

确定的方法与实际越吻合,模拟的结果越接近现实的情况。

二. 需求分析

1. 程序模拟银行排队现象。当给定窗口数及营业时间后,由随机数确定顾客办理业务及进

门间隔时间,可求出一天内顾客在银行平均逗留时间,平均对长及关门后收尾工作的时间。

2. 本程序由用户读入的数据仅为窗口数及营业时间,营业的时间以分钟计,窗口数及关门

时间均为整型,且均大于等于1。

3. 运行本程序后,得到结果为顾客数、平均等候时间、平均队长和收尾工作的时间。仿真

程序运行后屏幕输出结果应包括如下各项的模拟结果数据: Number of customer: CustomerNum

Average time: Totaltime/CustomerNum Average queuelength: Totallength/CustomerNum Addition time: t-CloseTime

三. 程序模块

本程序包括4个模块:

主程序模块;

实现队抽象数据类型的队模块; 实现链表抽象数据类型的链表模块;

事项银行事件抽象数据类型的银行事件模块。 各模块之间的调用关系如图所示。

主程序模块 银行事件模块 队列模块 链表模块

函数调用关系图:

main

CustomerArrived OpenForday CustomerDeparture

EnQueue OrderInsert DeQueue QueueEmpty OrderInsert

MakeNode MakeNode

InitQueue OrderInsert InitList

四. 源程序

#include #include #include #include

#define MONEY 5000 //个人业务值,交易额上限 #define OK 1 //离开事件1:办理存款 #define ERROR 0 #define OVERFLOW -2 typedef int status;

typedef struct{//队列1元素 int arrivetime; //到达时间 int OccurTime; //事件发生时间

int NType; //事件类型,0表示到达事件,1表示离开事件。同时用1表示存款,2表示取款。 int duration; //办理业务时间 long int money;//交易金额 }Event,ElemType1;

typedef struct{ //队列2元素 int arrivetime; //到达时间 int duration; //办理业务时间 long int money; //交易金额 }wait,ElemType2;

typedef struct QNode1{//队列1结点类型 ElemType1 data; struct QNode1 *next; }QNode1,*Queue1;

typedef struct QNode2{ //队列2结点类型 ElemType2 data;

struct QNode2 *next; }QNode2,*Queue2;

typedef struct{//链队列类型 Queue1 front; //队头 Queue1 rear; //队尾 }LinkQueue1;

typedef struct{ //链队列类型 Queue2 front; //队头 Queue2 rear; //队尾 }LinkQueue2; //全局变量

long int total_money; //银行现存资金总额 int total_time; //客户逗留总时间 int use_time;//每个顾客所用时间 int money;//每个顾客办理的款数 int closetime;//银行营业时间

int INTERTIME; //下一用户到达的时间间隔 int DURATION; //办理业务所需时间 int number; //办理业务的次序 int time1; //系统现在时间 LinkQueue1 Q1; LinkQueue2 Q2;

Event en; //事件

wait en1; //列表2元素 //初始化队列1 status InitQueue1()

{ Q1.front=Q1.rear=(Queue1)malloc(sizeof(QNode1)); if(!Q1.front)exit(OVERFLOW); Q1.front->next=NULL;

return OK; }//初始化队列2 status InitQueue2()

{ Q2.front=Q2.rear=(Queue2)malloc(sizeof(QNode2)); if(!Q2.front)exit(OVERFLOW); Q2.front->next=NULL; return OK; } //销毁队列1

status destroyqueue1() { while(Q1.front)

{ Q1.rear=Q1.front->next; free(Q1.front);

Q1.front=Q1.rear; } return OK; } //销毁队列2

status destroyqueue2()

{ while(Q2.front)

{ Q2.rear=Q2.front->next; free(Q2.front);

Q2.front=Q2.rear; } return OK; } //队列1入队列 status EnQueue1() { Queue1 p,r,r1;

p=(Queue1)malloc(sizeof(QNode1)); if(!p)exit(OVERFLOW);

p->data.arrivetime=en.arrivetime; p->data.OccurTime=en.OccurTime; p->data.NType=en.NType; p->data.duration=en.duration; p->data.money=en.money; r=Q1.front->next; while(r) { if(p->data.arrivetime < r->data.arrivetime) { if(r==Q1.front->next) {p->next=r; Q1.front->next=p; } else{r1->next=p; p->next=r; } } r1=r;r=r->next; } if(!r)

{ if(Q1.front->next==NULL) { Q1.front->next=p; Q1.rear=p; Q1.rear->next=NULL; } else{ p->next=NULL; Q1.rear->next=p; Q1.rear=p; } } return OK; } //队列2入队列 status EnQueue2() { Queue2 p;

p=(Queue2)malloc(sizeof(QNode2)); if(!p)exit(OVERFLOW);

p->data.arrivetime=en1.arrivetime; p->data.duration=en1.duration; p->data.money=en1.money; p->next=NULL; Q2.rear->next=p; Q2.rear=p;


数据结构课程设计报告---银行业务模拟.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:消费税条例及讲解

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: