project 飞机场实验报告_project学生实验报告

2020-02-27 其他范文 下载本文

project 飞机场实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“project学生实验报告”。

Project 2 飞机场模拟问题

班级:2014级计科三班

姓名 张万涛 学号14348172

姓名 张锐滨 学号14348171

姓名 覃佳 学号14349020 【题目要求】

P1.将所有用于飞机场模拟的函数和方法组合成一个完整的程序。用飞机场模拟程序做若干次试运行实验,调整准备着陆和起飞的飞机数的期望值,并找出在飞机不会被拒绝服务的条件下这些数字尽可能大的近似值。如果队列的长度增加或减少,那么这些值将会有什么变化?

P2.修改模拟程序,使飞机场有两条飞机跑道,其中一条总是用来着陆,另一条总是用来起飞。比较双跑道机场能服务的总飞机数和单条飞机跑道的飞机场的相应数字,前者是否为后者的两倍?

P3.修改模拟程序,使飞机场有两条飞机跑道,其中一条总是用来着陆,另一条总是用来起飞。如果某个队列是空的,那么两条跑道都能用于其他的队列。如果着陆队列总是满的,并且另一架飞机要到达着陆,那么将停止起飞,并将两条跑道都用于清理搁置的着陆飞机。

P4.修改模拟程序,使飞机场有3条飞机跑道,其中各保留一条总是用于着陆和起飞,第三条用于着陆,但在着陆队列为空的情况下,第三条亦可用于起飞。P5.修改最初的模拟程序(单条跑道),使得当每架飞机到达着陆时,它将有(作为它的数据成员的)一个(随机产生的)油位,以剩余的时间单元度量。如果飞机没有足够的油位在队列中等待,则允许它立即着陆。因此着陆队列里的飞机可能需要再等待附加的单元,因此可能用完自身的燃料。作为着陆函数的一部分要检查这一点,并查明在飞机由于燃料耗尽而开始坠毁前机场有多忙。P6.写一个占位程序来代替随机函数,这个占位程序既能用于调试程序又允许用户正确地控制每一个时间单元内每个队列到达的飞机数。

【数据结构与算法】

P1题目比较简单,就是把课本给的代码连同课本附录B生成随机数的方法进行整合。①输入结束时间、队列的最大值,飞机起飞和降落的频率,建立一条跑道。②初始化current_time的值为0,当时间未结束时进行一个循环。该循环大致是将等待降落的飞机加入等待降落队列,如果队列已满就拒绝它;将等待起飞的飞机加入等待起飞队列,如果队列已满也同样拒绝它。如果有飞机等待降落,则让飞机降落;若没有,就判断也没有飞机等待起飞,若也为空则为跑道是空闲状态;若有,则让飞机起飞。③跳出循环后,将飞机请求数、起飞降落数量和时间等等输出。

P2与P1有相似之处,不同的是有了起飞跑道和降落跑道两个。因此建立了等待起飞和等待降落两个队列。若有飞机等待降落,则让飞机降落;如果没有,则等待降落队列为空。在判断又无飞机要起飞,如果有,则让飞机起飞,如果没有,那么等待起飞队列也是空的。其他的步骤和P1大致相同。

P3题目是在P2的基础上再进行修改。与前面不同的是,降落跑道如果返回值是land(降落),则让等待降落的飞机降落。如果降落跑道没有飞机着陆,就判断返回值是否为take_off(起飞),如果也不是那么跑道空闲中;如果是,则让飞机起飞。其他与P1大致相同

Runway类的public成员中增加:

int arrival_size();int departure_size();int Runway::departure_size(){ return takeoff.size();}

int Runway::arrival_size(){ return landing.size();} P4即是在P1基础上增加两条跑道,判断方法与P3基本一致。

P5 先判断是否有紧急事件,如果没有,就让请求起飞或降落的飞机分别加入到等待起飞和等待降落的队列中。接着判断是否有飞机处于紧急降落状态,如果有,则让紧急需要降落的飞机降落;如果没有,调用activity函数,如果返回值是land,则让等待降落的飞机降落,反之若返回值是take_off,则让等待起飞的飞机起飞。Plane类的public成员中增

Plane_status get_status()const;

成员中增加:int kj;定义:

#include using namespace std;#ifndef PLANE_STATUS #define PLANE_STATUS enum Plane_status {null, arriving, departing,emergency};#endif

#ifndef PLANE #define PLANE cla Plane{ public: Plane();Plane(int flt, int time, Plane_status status);void refuse()const;void land(int time)const;void fly(int time)const;int started()const;Plane_status get_status()const;private: int flt_num;int clock_start;Plane_status state;int fuel;};#endif P6先初始化各个函数和变量,进而选择飞机场的模拟模式,可以进行随机数模拟也可以进行用户输入,最后得出结果用于分析。

【测试数据、结果及分析】

输入的数据就是书中给出的例子,5、1000、0.48、0.48 下面给出一些运行截图

【分工、贡献%、自我评分】

张万涛:负责完成代码

33.4% 95 张锐滨:负责完成实验报告

33.3% 95 覃

佳:运行代码,分析数据

33.3% 95 【项目总结】

1、通过这一次的实验,我们加深了对队列的理解,认识到这不是一个抽象的知识,而是能运用到实际问题中的,让我们认识到不能读死书,应该懂得理论联系实际。

2、其中,考虑飞机燃油情况事实上就是队列优先级的一种应用。将飞机的燃油情况加入飞机的标志中,在原来的机场调度的情况下加入了飞机优先级,通过计算判断其是否处于紧急状态,是的话则将队列中应降落的飞机设为当前的紧急飞机,改变其入队顺序。

3、本次实验加深了我们对于队列的理解,以及更深刻地理解了他的实际应用,可以仿真机场的调度,由此推广开,也可以仿真任何可以用于排队的场合,只要修改相应的类对象就可以实现。

4、本次项目在实现过程中依照课本中给的类定义及主函数实现一条跑道的问题,优先处理降落的飞机。

而两条跑道的时候,则可以同时处理起飞和降落,可以用两个函数来判断,一个判断是否有降落,一个判断是否有起飞。

同样是两条轨道的情况,但是当一条轨道为空时可用于其他用途。小组最开始讨论的结果是再加上一条队列,但是考虑到实际情况,以及该种方法可能不是最优的做法,小组放弃了这种思路。最后采用的方法的关键是给Runway函数添加两个size函数,通过size函数判断跑道现在的状态,在作出相应的响应。

三条轨道的情况同样也没有太大的改变,只要判断出landing 轨道为空时就可以改变其用途用于起飞。

5、本次试验出现的问题

Plane类Runway类、队列以及Random类分别放在不同的头文件中,但相互之间有交集,存在着相互引用的现象,导致重复定义的问题。解决方法为每个类及自定义类型加上宏定义——“#ifndef #define #endif”就可以避免重定义问题。

6、本次实验的难度在于实验所涉及的项目非常之多,各种对象,函数非常之多,导致调试问题较多。我们觉得这次实验比上一次的难度有所加大,主要在于代码之多,之杂。但是我们期待着下一次实验的到来。

Project实验报告

Project实验报告 朱曦朦 学号:2010306202412 信管1001 实验目的:通过做出一个标准的实验,了解project的基本运用方法和实验步骤,掌握设定项目的开始日期的基本方法。完成资源的......

project

四、各4S店普遍存在的问题:1.4S的经营理念没有完全体现:首先,在欧美4S品牌的统计中,整车销售、配件、维修的比例是2∶1∶4,汽车销售及服务的利润超过了汽车生产利润,成为汽车第一大......

飞机场观后感

飞机场观后感5月18日上午八点半,在安阳市实验幼儿园福园领导和老师的组织安排下,我和中班的孩子们有幸到《安阳市航空运动学校》进行了参观学习。安阳航空运动学校,创建于1955......

黔江飞机场

黔江飞机场机场自动广播正不断广播:“渝航yq101航班,本机飞往重庆,请各位乘客自备零钞或IC卡主动购票,全程票价10块,不设找零。”[安检]:人生鼎沸,有人扛着蛇皮袋,有人拎着活鸡活鸭......

参观飞机场作文

刀豆文库小编为你整合推荐7篇参观飞机场作文,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

《project 飞机场实验报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
project 飞机场实验报告
点击下载文档
相关专题 project学生实验报告 实验报告 飞机场 Project project学生实验报告 实验报告 飞机场 Project
[其他范文]相关推荐
[其他范文]热门文章
下载全文