1、 数据结构 课课 程程 设设 计计 报报 告告 题 目: 银行业务模拟 学院(系) : 数学与计算科学学院 班 级: 11 级信息与计算科学 4 班 2013 年 6 月 28 日 1 1 目目 录录 摘要摘要2 2 一、需求分析一、需求分析2 2 二、概要设计二、概要设计3 3 三、详细设计三、详细设计3 3 1 1、预定义和定义结构体、预定义和定义结构体 3 3 2 2、基本操作的算法描述基本操作的算法描述6 6 3 3、测试界面操作提示、测试界面操作提示 8 8 4 4、不断进入队列,出队列,时间的更新,总金额的更新、不断进入队列,出队列,时间的更新,总金额的更新 9 9 5 5、营业结
2、束时判断是否为所有客户服务,并输出最后的银行总金额、营业结束时判断是否为所有客户服务,并输出最后的银行总金额 9 9 四、 设计和调试分析四、 设计和调试分析1010 五、 用户手册五、 用户手册1111 六、 测试结果六、 测试结果1111 七、 设计心得七、 设计心得1414 八、 参考文献八、 参考文献1414 九、 附录九、 附录1414 2 摘摘 要要 在日常生活中,我们经常会遇到许多为了维护社会正常秩序而需要排队的情况,这 样一类活动的模拟程序通常需要用到队列和线性表之类的数据结构, 因此是队列的典型应用 例子之一, 而这次实验的题目银行业务的模拟程序就正是这样一个典型的例子。 队
3、列是一种 先进先出的线性表,它只允许在表的一端插入,而在另一端删除元素。在队列中允许插入的 一端叫做队尾, 允许删除的一端则称为队头。 我们需要编写一个程序已模拟银行的这种各种 业务活动,并计算一天中客户在银行逗留的平均时间。这是一个离散事件驱动模拟程序。这 也是一个的操作系统中的排队问题。 假设某银行有 3 个窗口对外接待客户, 从早晨银行开门 (开门 9:00am,关门 5:00pm)起不断有客户进入银行。由于每个窗口在某个时刻只能接 待一个客户, 因此在客户人数众多时需要在每个窗口前顺次排队, 对于刚进入银行的客户 (客 户进入时间使用随机函数产生) ,如果某个窗口的业务员正空闲,则可上
4、前办理业务。 关键词:排队、队列、先进先出、离散事件驱动模拟程序、关键词:排队、队列、先进先出、离散事件驱动模拟程序、 一、需求分析一、需求分析 程序中处理的对象主要是“事件” ,事件的主要信息是事件类型和事件发生 的时刻。算法中处理的事件有两类:一类是客户到达事件,另一类是客户离开事 件。前一类事件发生的时间随客户到来自然形成,后一类事件发生时刻则由客户 事物所需时间和等待所耗时间而定。 由于程序驱动是按事件发生时刻的先后顺序 进行,则时间应是有序表,其主要操作是插入和删除事件。 由于在实际的银行中,客户到达的时刻及其办理事物所需时间都是随机的, 在模拟中可用随机数代替。客户到达时间时需产生两个随机数,其一为此时刻到 达的客户办理事务所需时间 solvetime;其二为下一客户将到达的时间间隔 waitTime,假设当前事件发生的时刻为 occurtime,则下一个客户到达事件发生的时 刻为 occurtime+waitTime。由此应产生一个新的客户到达事件插入事件表。