机场航空管制模拟实验报告
数据结构大型实验实验报告
机场航空管制模拟实验报告
数据结构大型实验实验报告
实验题目
假设机场有一条跑道,每架飞机需花费一定时间着陆,花费一定时间起飞,飞机的起降满足一定的概率。一般来讲,机场存在两个队列,一个等待着陆的飞机队列和一个等待起飞的飞机队列,同样等待时间下,等待着陆的飞机比准备起飞的飞机具有更高的优先级。试编写程序模拟这个机场的运行。要求使用队列或优先队列实现;要求可以变换起飞和着陆频率来模拟一天中的飞行高峰期和空闲期;要求可以改变着陆和起飞时间以模拟不同的效果。
1. 实验内容分析
1.1实验目的
实验模拟了机场的航空管制,通过程序,来模拟管理飞机的起飞与着陆。它要求我们考虑起飞与着陆的优先级不同,以及根据飞机起飞/着陆时间,起飞/着陆频率模拟机场一天的运营情况。并计算出跑道的繁忙程度、着陆飞机的总的等待时间和平均等待时间、起飞飞机的总的等待时间和平均等待时间, 计算每架飞机花费在一个队列中的平均时间。
1.2内容分析
系统主要模拟了机场一天的运营。所以,需要一个计时器(以分钟计时)来计算机场的运营时间。同时,为了管理飞机的起飞与着陆,需要两个队列来存放着陆和起飞的飞机。 设计用户输入的数据为:机场开始、结束运营时间;高峰期开始、结束时间;空闲期开始、结束时间;着陆飞机最长等待时间;高峰期、空闲期以及一般时期每小时起飞、着陆的飞机数,飞机起飞、着陆需要的时间。
考虑到机场的高峰期,与空闲期,设计了Workslot类,设定不同时期的飞机起飞、着陆率。
设计Timer类,其主要方法是实现计时功能和返回当前工作时间。Plane类主要功能是记录飞机开始等待时间,开始工作时间以及起飞、着陆所需时间。
飞机起飞/着陆都需要花费一定的时间,并不是马上就完成的。所以在起飞/着陆服务函数中,不仅要调用spend(),还需要判断takeoff/landing是否结束。当t.now-startworktime<workTime时,说明飞机还在准备着陆/起飞,占用了跑道。当t.now-startworktime==workTime时,表示飞机着陆/起飞成功。调用pop方法,从队列中删除一架等待服务的飞机,并获取当前时间,减去飞机接受服务的时间,得到该飞机的等待服务时间。我们就可以计算出所有飞机的等待服务时间。
等待起飞/着陆队列总长度,等待服务总时间,以及服务起飞/着陆的飞机总数,我们就可以得出起飞/着陆飞机的平均等待时间,平均等待队列长度。同时根据当天的的工作时间,跑道的忙碌时间,可以计算得到跑道的繁忙程度。
数据结构大型实验实验报告
1.3程序基本流程
数据结构大型实验实验报告
图 1 实验基本流程
1.4基本数据结构,类设计
1.4.1类 Airport
输入:
数据结构大型实验实验报告
输出
成员
数据结构大型实验实验报告
1.4.2类Plane
成员:
1.4.3类Timer
成员:
1.4.4类Workslot
成员:
1.4.5结构 Busy
成员:
数据结构大型实验实验报告
1.5基本函数功能
1.5.1 类Simulation
setTimer():
设定计时器函数
setTakeoffTime(int t1):
设定起飞所需时间函数
setLandingTime(int t2):
设定着陆所需时间函数
setMaxlandingwaitTime(int mlwd):
设定着陆飞机最大等待时间
setStartworkTime(string s):
设定机场开始工作时间函数
setEndworkTime(string s):
设定机场结束工作时间函数
setHighslot(Workslot h):
设定高峰期机场属性
setLowslot(Workslot l):
设定空闲期机场属性
setOtherslot(Workslot o):
设定一般时段机场属性
run():
模拟飞机场运营。
数据结构大型实验实验报告
display():
该函数主要用于计算一些值,并输出在屏幕上。
跑道的繁忙程度= workTime/(endworkTime-startworkTime) 着陆飞机平均等待时间=landingwaitTime/landingNum 着陆飞机在队列中的平均等待时间=LwaitTime/landingNum 起飞飞机总的等待时间=takeoffwaitTime
起飞飞机平均等待时间=takeoffwaitTime/takeoffNum
起飞飞机在队列中的平均等待时间=TwaitTime/takeoffNum 起飞队列中剩余未起飞飞机数量=intakeoffNum-takeoffNum 再使用输出语句输出这些值。
1.5.2 类Plane
Plane()
用于初始化飞机的startwaitTime,startworkTime,workTime。
Plane(int a,int b,int c)
同上。
1.5.3 类Timer
Timer()
初始化当前时间。
Timer(int n)
同上。
void spend()
计时累加函数。
数据结构大型实验实验报告
2. 实验验证分析
2.1输入的形式和输入值的范围
2.2输出的形式
控制台下运行,结果输出形式:
时间: XX: XX X号起飞飞机进入起飞队列
时间: XX: XX X号起飞飞机开始起飞; 等待时间: XXmin ……
本日机场运营情况:
跑道的繁忙程度: XX 着陆飞机总的等待时间: XXh 着陆飞机平均等待时间: XXmin 着陆飞机在着陆队列中的平均等待时间: XXmin 起飞飞机总的等待时间: XXh 起飞飞机平均等待时间: XXmin 起飞飞机在起飞队列中的平均等待时间: XXmin 起飞队列中剩余未起飞飞机数量: XX
2.3程序所能达到的功能
程序实现了如下的功能:
数据结构大型实验实验报告
设置机场的工作时间 模拟机场的运营
模拟机场的高峰期和空闲期
计算出机场当天起飞/着陆的飞机数目
计算出等待队列(起飞/着陆)的平均长度 计算队列的平均等待时间 简单表示跑道的繁忙程度
2.4测试数据
数据结构大型实验实验报告
3. 调试分析
3.1遇到的问题及解决方法
3.1.1问题一
问题:在模拟结果中只有起飞飞机或着陆飞机。 解决方案:算法出现问题,重新写主程序。
3.1.1问题二
问题:机场的忙碌情况大于1。
解决方案:检查后发现,跑道功能工作时间的实现有问题,将代码进行改进。
3.1.1问题三
问题:产生随机数太过规则。
解决方案:发现是产生随机数的函数位置有问题,进行调整。
3.2技术难点分析
3.2.1难点一
一架飞机完成起飞/着陆花费一般超过一分钟,那么随着时间的累积,该如何来判断对当前飞机的服务结束了呢。
解决办法是给Plane类添加开始工作时间的参数,这样是要判断当前时间与开始工作时间的差值是否已到达起飞/着陆所耗时,即可判断起飞/着陆是否完成。
3.2.2难点二
单单用bool busy数据记录跑道是否忙碌会出现:当跑道忙碌时,不能判断跑道上运行的是起飞飞机还是着陆飞机这种情况。因此,我构造了Busy结构,里面不仅包括对跑道是否忙碌的的记录(bool busy)还包括对跑道上运行的是否为起飞飞机的记录(is_takeoff)。这样就可以判断跑道上忙碌时运 …… 此处隐藏:2853字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




