一个银行业务模拟的程序.docVIP

  • 19
  • 0
  • 约1.72万字
  • 约 19页
  • 2016-10-21 发布于陕西
  • 举报
银行业务模拟 一、需求分析 1程序问题描写: 本程序为银行客户业务模拟, 其业务模拟分为两种: 第一是申请从银行得到一笔资金,即取款或借款。第二是向银行投入一笔资金,即存款或还款。银行有两个服务窗口,相应地有两个队列。第一客户到达银行后先排第一个队。处理每个客户业务时,且申请额超出银 行现存资金总额而得不到满足,则立刻排入第二个队等候,直至满足时才离开银行;否则业务处理完后立刻离开银行。每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。在此检查过程中,一旦银行资金总额于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。任何时刻都只开一个窗口。假设检查不需要时间。营业时间结束时所有客户立即离开银行。 银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平均时间。3. 演示程序以用户与计算机交互方式执行,即在计算机终端上显示提示信息 之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤去输入中的非法字符)和运算结果显示在其后。 4.数据测试 一天营业开始时银行拥有的款额为10000(元),营业时间为600(分钟)。其他模拟参 量自定,注意测定两种极端的情况:一是两个到达事件之间的间隔时间很短,而客户的交易时间很长,另一个恰好相反,设置两个到达事件的间隔时间很长,而客户的交易时间很短。 二、概要设计 1基本要求: 用动态存储结构以及队列来实现 2所需的数据类型 为实现上述程序功能,应以需要定义单链表的抽象数据类型以及队列集合并还需要用到结构体。为此,需要两个抽象数据类型:单链表和队列还有结构体声明。 (1)ai-1, ai,在存储地址中可以不相邻,既地址不连续。不同的教材的表示基本是一致的。 typedef struct LNode { ElemType data; /* 数据子域 */ struct LNode *next; /* 指针子域 */ }LNode; /* 结点结构类型 */ (2) typedef struct QNode { QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct{ QueuePtr front;//头指针 QueuePtr rear;//尾指针 }LinkQueue; InitQueue(LinkQueue Q) 操作结果:构造一个空的队列。 DestroyQueue (LinkQueue Q) 初始条件:队列Q已存在。 操作结果:销毁队列Q。 QueueLength(LinkQueue Q) 初始条件:队列已存在。 操作结果:返回队列的长度。 QueueEmpty(LinkQueue Q) 初始条件:队列已存在。 操作结果:队列为空表,则返回True,否则返回 False。 ClearQueue(LinkQueue Q) 初始条件:队列已存在。 操作结果:清空队列 EnQueue(LinkQueue *Q,int x); 初始条件:队列已存在。 操作结果:插入元素为x的新的对尾元素 DeleteQueue(LinkQueue *Q,int e) 初始条件:队列已存在。 操作结果:删除对头元素,用e返回。 (3)定义结构体的一般格式: struct 结构体类型名 { 类型名1 变量名1; //数据子域 类型名2 变量名2;…… 类型名n 变量名n; }; 其中struct是保留字。结构体类型名由用户自己命名。在使用时必须声明一个具体的结构体类型的变量,声明创建一个结构体变量的方法是: struct 结构体类型名 结构体变量名; 4程序包括三个模块 1)主函数模块 main() { 初始化: while(命令!=退出) { 建立事件; 接受命令; 处理命令; } } 2)动态存储结构模块 第一部分:外部变量声明 第二部分: 队列结构体以及链表建立 3)函数模块: 5 三个模块的图形关系: 三详细设计 [1]原代码: 1 **************所需要的文件库*

文档评论(0)

1亿VIP精品文档

相关文档