名称机场航空管制模拟.docx

上传人:b****4 文档编号:6234211 上传时间:2023-05-09 格式:DOCX 页数:13 大小:431.61KB
下载 相关 举报
名称机场航空管制模拟.docx_第1页
第1页 / 共13页
名称机场航空管制模拟.docx_第2页
第2页 / 共13页
名称机场航空管制模拟.docx_第3页
第3页 / 共13页
名称机场航空管制模拟.docx_第4页
第4页 / 共13页
名称机场航空管制模拟.docx_第5页
第5页 / 共13页
名称机场航空管制模拟.docx_第6页
第6页 / 共13页
名称机场航空管制模拟.docx_第7页
第7页 / 共13页
名称机场航空管制模拟.docx_第8页
第8页 / 共13页
名称机场航空管制模拟.docx_第9页
第9页 / 共13页
名称机场航空管制模拟.docx_第10页
第10页 / 共13页
名称机场航空管制模拟.docx_第11页
第11页 / 共13页
名称机场航空管制模拟.docx_第12页
第12页 / 共13页
名称机场航空管制模拟.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

名称机场航空管制模拟.docx

《名称机场航空管制模拟.docx》由会员分享,可在线阅读,更多相关《名称机场航空管制模拟.docx(13页珍藏版)》请在冰点文库上搜索。

名称机场航空管制模拟.docx

名称机场航空管制模拟

实验名称机场航空管制模拟

 

学院:

计算机科学与技术学院、软件学院

组长:

软工(2+2)1101顾宏201126740107

指导老师:

叶阳

完成日期:

2012年5月2日

目录

一、实验内容分析2

1.1任务描述2

1.2基本数据2

1.2.1模拟参数变量2

1.3类的设计3

1.3.1客户类:

Plane类3

1.3.2队列类:

Queue类3

1.3.3模拟类:

Simulation类4

1.3.4计时器:

Timer类5

1.4基本流程5

二、实验验证分析7

2.1输入的形式和输入值的范围7

2.2输出的形式7

跑道的繁忙程度、着陆飞机的总的等待时间和平均等待时间、起飞飞机的总的等待时间和平均等待时间,计算每架飞机花费在一个队列中的平均时间。

7

2.3程序所能达到的功能7

2.4测试数据7

三、调试分析8

3.1调试中的技术问题与具体解决办法8

3.2技术难点分析(本人的分析过程,仅供参考,以实际程序为准)8

3.3调试错误及修正方法9

四、测试结果9

4.1程序运行结果9

4.2利用边界数据及极端数据运行结果10

五、实验分工11

六、附录:

代码12

 

一、实验内容分析

1.1任务描述

假设机场有一条跑道,每架飞机需花费一定时间着陆,花费一定时间起飞,飞机的起降满足一定的概率。

一般来讲,机场存在两个队列,一个等待着陆的飞机队列和一个等待起飞的飞机队列,同样等待时间下,等待着陆的飞机比准备起飞的飞机具有更高的优先级。

试编写程序模拟这个机场的运行。

1.1.1目标

要求能在指定的时间内(如9:

00-22:

00)完成系统模拟,并计算出跑道的繁忙程度、着陆飞机的总的等待时间和平均等待时间、起飞飞机的总的等待时间和平均等待时间,计算每架飞机花费在一个队列中的平均时间。

1.2基本数据

1.2.1模拟参数变量

说明

变量名

变量类型

降落所需的占用跑道的时间

loadingTime

int

起飞所需的占用跑道的时间

takeOffTime

int

降落每小时的数量

loadingNumPerHour

int

起飞每小时的数量

takeOffNumPerHour

int

模拟时间的长度

myLengthOfSimulation

string

降落的飞机总数

loadingSum

int

起飞的飞机总数

takeOffSum

int

计时器

myTimer

Timer

降落的队列

myLoadingPlanes

Queue

起飞的队列

myTakeOffPlanes

Queue

1.3类的设计

1.3.1客户类:

Plane类

Plane类储存飞机的基本信息:

intmyTimeOfArrival;//飞机到达的时间

intmyServiceTime;//飞机在跑道上的时间

1.3.2队列类:

Queue类

Queue类实现客户的进队、出队、判空、删除:

队列类里面还有一个Node类,是为了建立这个数据结构而建立的私有类型的类

主要参数有typedefNode*NodePointer;

NodePointermyFront,//指向队列的头

myBack;//指向队列的尾部

 

1.3.3模拟类:

Simulation类

模拟类是运行程序的主类,其主要参数为

//----输入

intloadingTime,takeOffTime;//分别为降落和起飞所需的占用跑道的时间,在加入队列时由随机数产生

doubleloadingRate,takeOffRate;//飞奔为降落和起飞的频率

intloadingNumPerHour,takeOffNumPerHour;

//分别为降落和起飞每小时的数量

stringmyLengthOfSimulation;//模拟时间的长度

//----输出

intloadingSum,takeOffSum;//降落的飞机总数,起飞的飞机总数,之和就是跑道的繁忙程度

intloadingSumWaitTime,takeOffSumWaitTime;

/*

降落和起飞在各自队列中等待的时间之和,之和就是所有飞机在各自队列中等待时间之和

*/

//--CountdownTimer

TimermyTimer;

//--降落和起飞的队列

QueuemyLoadingPlanes,myTakeOffPlanes;

1.3.4计时器:

Timer类

计算器类是产生每架飞机在跑道上的时间和控制整个程序的时间,主要参数为:

intmyMinutes;

1.4基本流程

1.4.1类及类间关系

Simulation类调用Timer类产生一个时间段,并将该值赋值给Queue类中的对象,二Queue类的元素类型是Plane类型的

1.4.2程序流程图

本实验的基本流程图:

二、实验验证分析

2.1输入的形式和输入值的范围

每小时起飞飞机的架次,每小时降落飞机的架次takeOffNumPerHour,loadingNumPerHourtotal:

int型,无范围要求

输入一天跑道所运行的时间:

myLengthOfSimulation:

string型,正常的24小时的格式输入,比如09:

00-22:

00

2.2输出的形式

跑道的繁忙程度、着陆飞机的总的等待时间和平均等待时间、起飞飞机的总的等待时间和平均等待时间,计算每架飞机花费在一个队列中的平均时间。

2.3程序所能达到的功能

利用离散事件模拟来模拟每天的飞机场跑道业务,更直观地了解跑道从开始到结束,跑道的使用情况

2.4测试数据

假设某天09:

00-22:

00开始使用跑道,每小时起飞飞机6000架次,每小时降落飞机7000架次

错误数据测试:

在输入错误的极端数据下程序任然继续运行,给出错误数据源

三、调试分析

3.1调试中的技术问题与具体解决办法

1、如何检查上一架飞机已经使用完跑道了

解决方法:

用一个while循环,直到其剩余的使用时间为0

2、如何按照题目要求的格式输入时间

解决方法:

加入一个格式输入函数。

3、求平均使用时间和平均等待时间的时候会出现死机的情况

解决方法:

加入一个异常处理,可以使程序在任何输入下任然能运行

3.2技术难点分析(本人的分析过程,仅供参考,以实际程序为准)

1、应该输入降落频率(loadingRate),和起飞频率(takeOffRate),这两个参数都是1分钟之内起飞和降落的飞机的频率。

输入的应该是1分钟之内起飞和降落的飞机的架次

2、飞机的起飞或降落都会占用跑道一段时间,降落所需时间为:

loadingTime,起飞所需时间为:

takeOffTime

3、“同样等待时间下,等待着陆的飞机比准备起飞的飞机具有更高的优先级。

试编写程序模拟这个机场的运行。

”这句话的意思是当跑道空闲时首先检查降落队列是否为空,如果降落队列不为空,则优先处理降落队列中的飞机,其次再检查起飞队列中的飞机。

4、指定时间的实现:

(如9:

00-22:

00)可以按照字符串输入,再将这个字符串的第1,34,67,910个转换成数字,再用后面的结束时间减去开始营业的时间,就可以得到机场的整个营业的总时间。

应该有一个计时器的类,即模拟时钟的类,用于周期性的实现飞机的起飞,降落,计算器应该有两个作用,第一个就是控制一天时间内程序的运行,第二个就是实现了题目要求的这句话“检查跑道是否空闲。

若空闲,首先检查着陆队列是否为非空,如果是,允许第一架飞机着陆;否则,处理起飞队列。

”每从起飞或者降落队列中取出一架飞机,就将其takeOffTime或者loadingTime设置为时钟,

5、自己实现队列的数据结构,因为要用到起飞和降落两个队列(因为先进入等待状态的起飞或者降落的飞机,应该先拥有跑道,所有即应是先进先出,所以用队列)队列可以用链表实现

6、跑道繁忙程度就应是跑道一天所经过的所有的起飞和降落的飞机架次之和

7、起飞或者降落的总的等待时间及应是所有起飞或者降落的飞机的各个等待时间之和。

其平均等待时间就是再除以起飞或者降落的所有架次,而“计算每架飞机花费在一个队列中的平均时间”应该是等待起飞的飞机和等待降落的飞机花在队列中时间之和在除以起飞和降落飞机的总数

3.3调试错误及修正方法

1、一开始输入架次较少时程序会死机。

修正方法是:

加入异常处理,因为架次少,那么频率低,产生的随机数永远比它大,无法使得程序进入循环,所以会使产生的等待队列中飞机的数量为0,在除法时会出现错误

2、在输入数字较小时,运行结果中显示数字为0,因为输入的飞机数量在程序中经过了先除以100再除以60的运算,会使得与产生随机数比较的值相对较小,应该输入较大的每小时起飞和降落的架次

四、测试结果

4.1程序运行结果

假设某天09:

00-22:

00开始使用跑道,每小时起飞飞机6000架次,每小时降落飞机7000架次

输出结果都符合实际情况。

4.2利用边界数据及极端数据运行结果

进行以下两组测试:

第一组:

机场跑道运行时间长,而每小时起飞和降落的架次少:

可以看出降落飞机的占用跑道次数最多,所以它是最优先的

第二组:

机场跑道运行时间短,但每小时起飞和降落的飞机架次多

输出结果都符合实际情况。

五、实验分工

代码编写:

负责人:

顾宏

参与者:

代码测试:

负责人:

顾宏

参与者:

结果分析:

负责人:

顾宏

参与者:

报告编写:

六、附录:

代码

见附件。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2