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