1、 数据结构课程设计报告 学院:XX 专业:XX 学生:XX 学号:XX 一 问题描述 题目内容:银行业务模拟 基本要求:设某银行有 N 个窗口,可同时为 N 位顾客办理业务。当顾客进门时,若有窗口空 闲,则可立刻办理业务,否则需要依次排队等候。一旦有顾客业务办理完毕,派在队头的顾客便 可开始办理业务。若银行每天连续营业 T 小时,求一天内顾客在银行内的平均逗留时间,顾客排 队等候办理业务的队列长度平均值,营业时间到点后仍需完成服务的收尾工作时间。 测试数据:服务窗口数目 N 及营业时间有拥护设定,第一个顾客进门的时刻为 0,之后每个 顾客的进门时刻在前一个顾客进门时设定。即在进门事件发生时随即
2、产生两个随机数 (durtime,intertime),durtime 为进门顾客办理业务所需的服务时间(简称办理时间) ; intertime 为下一个顾客将到达的时间间隔 (简称时间间隔) 。 R 为由随机数发生器产生的随机数, 顾客办理时间和顾客之间的时间间隔不妨假设与 R 有关,可以由下式确定: durtime=15+R%50 intertime=2+R%10 确定的方法与实际越吻合,模拟的结果越接近现实的情况。 二 需求分析 1 程序模拟银行排队现象。当给定窗口数及营业时间后,由随机数确定顾客办理业务及进 门间隔时间,可求出一天内顾客在银行平均逗留时间,平均对长及关门后收尾工作的时
3、间。 2 本程序由用户读入的数据仅为窗口数及营业时间,营业的时间以分钟计,窗口数及关门 时间均为整型,且均大于等于 1。 3 运行本程序后,得到结果为顾客数、平均等候时间、平均队长和收尾工作的时间。仿真 程序运行后屏幕输出结果应包括如下各项的模拟结果数据: Number of customer: CustomerNum Average time: Totaltime/CustomerNum Average queuelength: Totallength/CustomerNum Addition time: t-CloseTime 三 程序模块 本程序包括 4 个模块: 主程序模块; 实现队抽
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