1、数据结构课程设计说 明 书学 院: 信息科学与工程学院 班 级: 计算机 11-3 完 成 人:姓 名:徐海杰 学 号:201101050323姓 名:薛德利 学 号:201101050324指导教师: 彭延军 山 东 科 技 大 学2012 年 12 月 12 日课 程 设 计 任 务 书1、课程设计题目: 救护车调度模拟系统 二、课程设计应解决的主要问题:(1)模拟每一起病人呼救派车往救接人回院的过程 (2)显示每辆救护车的状态(待命、 往救、送院可能还有返点)和每个病人的状态(待派车、待接、送院途中),显示各医院的待命救护车队列 (3)实时显示当前的病人平均接送时间和平均派车延迟时间以及
2、已送达病人数。 (4)救护车应按最快的路线接送病人。 (5)呼救事件发生的间隔时间和地点都是随机的(其发生频度先给一个省缺值,可实时 调整)。 (6)点数 m、点名、路段数 e 和每段长度以及医院点的名称都由教师以文本文件形 式给出,格式为: m n e ABCDEFGH (m 个点名称,大小写代表不同点) AEGHK (n 个医院名称) AB11,AC15,EG9, FK24, (e 条路段及长度) 救护车总数及分派方案在运行前从键盘输入。 三、任务发出日期: 2012-11-10 课程设计完成日期: 2012-12-15 小组分工说明小组编号 题 目: 救护车调度模拟系统 小组分工情况:徐
3、海杰主要完成函数main();ready();InitAmbu();start();CreateGraph(MGraph *);Event_ArriveHome();Event_ArriveHos();Event_Call();GetEvent(EVENT *);InsertEvent(EVENT *,EVENT);Ambu_WaitTime();EnQueue(LinkQueue *,CHE);Short_Path(MGraph,int,int,int);薛德利主要完成函数readfile();arrange_ambulances();InitQueue(LinkQueue *);Displ
4、ay_Queue(LinkQueue);Display_All();DeleteEvent(EVENT *);IsEmptyQueue(LinkQueue);Display_Patient_Status(EVENT *,EVENT *);Display_Ambulance_Status(EVENT *);Display_WaitingAmbu();组长签字: 年 月 日指导教师对课程设计的评价成绩: 指导教师签字: 年 月 日 目 录1需求分析说明 52概要设计说明 63详细设计说明 84调试分析 95使用说明 96课程设计总结 127测试结果 138参考书目 14需求分析说明内部排序教学软件
5、的总体功能要求:设计实现一个用事件驱动的“救护车调度”离散模型,模拟 120 急救中心响应每个病人的呼救信号统一调度救护车运行的情况。我们对问题作适当简化,假设:某城市共有m 个可能的呼救点(居民小区、工厂、学校、公司、机关、单位等),分布着 n 所医院(包含在 m 个点中),有 k 辆救护车分派在各医院待命,出现呼救病人时,由急救中心统一指派救护车接送至最近的医院救治。救护车完成一次接送任务后即消毒,并回原处继续待命。假定呼救者与急救中心、急救中心与救护车之间的通讯畅通无阻,也不考虑道路交通堵塞的影响。可以用 m 个顶点的无向网来表示该城市的各地点和道路。时间可以分钟为单位,路段长可表示为救
6、护车行驶化费的分钟数。1、 模拟每一起病人呼救派车往救接人回院的过程2、 显示每辆救护车的状态(待命、 往救、送院可能还有返点)和每个病人的状态(待派车、待接、送院途中),显示各医院的待命救护车队列3、 实时显示当前的病人平均接送时间和平均派车延迟时间以及已送达病人数。4、 救护车应按最快的路线接送病人。5、呼救事件发生的间隔时间和地点都是随机的(其发生频度先给一个省缺值,可实时 调整)。6、点数 m、点名、路段数 e 和每段长度以及医院点的名称都由教师以文本文件形 式给出,格式为:m n eABCDEFGH (m 个点名称,大小写代表不同点)AEGHK (n 个医院名称)AB11,AC15,
7、EG9, FK24, (e 条路段及长度 )救护车总数及分派方案在运行前从键盘输入。以下是各功能模块的功能描述:1 主函数模块救护车调度模拟系统首先调用 system(“cls“)函数进行清屏,然后调用 ready()读取文件,创建矩阵等一系列准备,然后调用 InitAmbu 函数,进行救护车的初始化,再调用start 函数实现救护车调度。2 准备函数模块这个模块是软件最为复杂,开发时间最长,修改次数最多的一个模块。先读取文件,然后安排救护车,同时创建矩阵,筛选出呼救地点和医院地点,然后计算医院距离呼救地点距离;最后按距离排序,找出最短路径。3 初始化函数模块实现救护车的初始化,矩阵初始化,队
8、列初始化与事件等一系列函数的初始化4 调度函数模块初始化随机函数种子,令其随机产生病人,模拟呼救事件发生的间隔时间和地点都是随机的。呼救事件函数、往救事件函数、送院事件函数、救护车等待时间函数,并进行输出,输出救护车,医院和病人的状态。测试数据:地点数 8 医院数 3 路段数 10地点名称 ABCDEFGH医院名称 AEG路段名称 AB6,AC7,AG5,AH10,AE8,AD9,BG4,GH9,EH3,EF7概要设计说明main();/主函数ready();/事件发生之前读取文件,安排救护车等准备工作的函数InitAmbu();/救护车初始化函数start();/事件发生,插入事件队列等re
9、adfile();/读取文件函数arrange_ambulances();/分配救护车函数CreateGraph(MGraph *);/创建矩阵函数Short_Path(MGraph,int,int,int);/最短路径函数InitQueue(LinkQueue *);/队列初始化函数EnQueue(LinkQueue *,CHE);/进队函数Display_Queue(LinkQueue);/输出队列函数InsertEvent(EVENT *,EVENT);/插入事件队列GetEvent(EVENT *);/获取事件Event_Call();/呼救事件函数Event_ArriveHome()
10、;/往救事件函数Event_ArriveHos();/送院事件函数Ambu_WaitTime();/救护车等待时间函数Display_All();/综合输出函数DeleteEvent(EVENT *);/删除事件IsEmptyQueue(LinkQueue);/判断队列是否为空Display_Patient_Status(EVENT *,EVENT *);/输出病人状态Display_Ambulance_Status(EVENT *);/输出救护车状态Display_WaitingAmbu();/输出待命救护车详细设计说明1 主函数模块救护车调度模拟系统首先调用 system(“cls“)函数
11、进行清屏,然后调用ready()读取文件,创建矩阵等一系列准备,然后调用 InitAmbu 函数,进行救护车的初始化,再调用 start 函数实现救护车调度。2 准备函数模块这个模块是软件最为复杂,开发时间最长,修改次数最多的一个模块。先读取文件,然后安排救护车,同时创建矩阵,筛选出呼救地点和医院地点,然后计算医院距离呼救地点距离;最后按距离排序,找出最短路径。读取测试数据,并输出给定的地点,给定的医院数,给定的路段,如有超出测试数据范围的数,则是无效输入。3 初始化模块创建一个救护车队列,并进行救护车队列的初始化,并实现实现初始化,队列初始化与事件等一系列函数的初始化4. 调度函数模块初始化
12、随机函数种子,令其随机产生病人,模拟呼救事件发生的间隔时间和地点都是随机的。呼救事件函数、往救事件函数、送院事件函数、救护车等待时间函数。5. 输出模块按照要求输出病人状态、输出救护车状态、输出待命救护车、平均处理、平均延迟和平均等待调试分析我遇到的问题: 怎样求最短路径 怎样随机产生呼救病人 将呼救事件插入事件队列使用说明开始运行,输入程序运行的时间。然后屏幕会输出文件中给出的数据,并要求键盘输入安排救护车。从文件中读出给定 8 个地点,其中 A,E,G 为医院,其余为可能发生病人呼救事件的地点。并且得到 10 条路段。现假设共 12 辆救护车,三所医院分别为 3,4,5 辆救护车,分配好救
13、护车后按任意键进入综合显示界面,界面显示“已接送病人数”,“平均延迟时间”“平均处理时间”“平均等待时间”“病人的状态”“救护车状态”“待命救护车”和 ESC 退出键。程序结束,按任意键退出程序。课程设计总结这次的课程设计让我意识到数据结构存储和算法的具体编写具有十分密切的关系。通过这次数据结构课程设计,使我对哈希表的设计有了一个比较深刻的了解,对各种内部关键字处理方法的性能有了清晰的认识,使我感觉到到,一个优秀的程序,不仅仅是可以运行的,更应该具有人性化的界面,协调的布局,合理的结构,良好的性能和一定的容错性。在以后的学习中我们会更加注意各个方面的能力的协调发展,加强合作,努力提高自身能力。参考书目1 数据结构,汤文兵,华东理工大学出版社2 数据结构习题与解析,李春葆,清华大学出版社3 Data Structures and Algorithm Analysis in C: Second Edition, Mark Allen Weiss, Person4 C 语言课程设计案例精编,郭翠英,中国水利出版社