机场模拟试验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
一.试验目的通过机场模拟试验了解计算机模拟
机场模拟实验报告
一( 实验目的
通过机场模拟实验,了解计算机模拟虚拟技术的应用,着重掌握队列这个数据结构
的应用,巩固已有的编程技巧,进一步提高编程水平,为以后的编写大型程序打下
基础。
二( 问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
描述
修改机场模拟程序AirportSimulation,使之能反映准备降落飞机的所剩燃油情况。当
一架飞机到达准备降落时,按均匀分布随即生成该机可等待的时间单元数(反映所
剩燃油)。若该机无等待时间,立即降落,这可能导致等待降落队列中的其他飞机燃
油耗尽。若一个时间单元内有多架飞机燃油耗尽,也只能安排一架飞机降落,其余
的被认为出现坠落事故。运行模拟程序,显示因燃油耗尽导致飞机坠落事故之前机
场的繁忙程度,并分析采取什么措施防止燃油耗尽事故。
三( 编程
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
四( 关键代码以及相关注释
template
class Queue {
public:
Queue ( int MaxQueueSize = DefaultSize);
//~Queue();
Boolean IsFull( );
void Add(const Type& item);
Boolean IsEmpty( );
Type* Delete( Type& );
int Size(); //返回队列的大小
void QueueFull();
void QueueEmpty();
void Reduce(); //当进入下个单元时降落飞机的等待时间减一
void Change(); //把队列中的等待时间最小的提到队列的首部
Boolean Broken(); //判断是否有元素等待时间小于零 private:
int front, rear;
Type* queue;
int MaxSize;
};
template
Boolean Queue::Broken() {
for(int k=front;k!=rear;k=(k+1)%MaxSize)
{
if(queue[k+1].wt<0)
return TRUE;
}
return FALSE;
}
template
void Queue::Change() {
int k=front;
do{
k=(k+1)%MaxSize;
}while(queue[k].wt!=0&&k!=rear) ;
if(queue[k].wt==0){
Type temp;
temp=queue[front+1];
queue[front+1]=queue[k];
queue[k]=temp;
}
}
template
void Queue::Reduce() {
for(int k=front;k!=rear;k=(k+1)%MaxSize)
{
queue[k+1].wt--;
}
}
//飞机可描述为:
struct plane {
int id; // 编号
int tm; // 到达队列时间
int wt; //燃料剩余
};
//飞机的动作为:
enum action { ARRIVE, DEPART };
class AirportSimulation { // 机场模拟。一个时间单元 = 起飞或降落的时间 public:
AirportSimulation( ); // 构造函数
void RunSimulation( ); // 模拟运行
private:
Queue landing; // 等待降落飞机队列,假设用环
// 型队列,实际长度为5
Queue takeoff; // 等待起飞飞机队列,同上
double expectarrive; //一个时间单元内期望到达降落飞机数
double expectdepart; //一个时间单元内期望到达起飞飞机数
int curtime; // 当前时间
int endtime; // 模拟时间单元数
int idletime ; // 跑道空闲时间单元数
int landwait ; // 降落飞机的总等待时间
int takeoffwait; //起飞飞机的总等待时间
int nland ; // 降落的飞机数
int nplanes; // 处理的飞机数
int nrefuse; // 拒绝服务的飞机数
int ntakeoff; // 起飞的飞机数
void Randomize( ); // 设置随机数种子
int PoissionRandom(double& expectvalue);
// 根据泊松分布和给定期望值生成随机非负整数
plane* NewPlane(plane& p, action kind);
// 建立新飞机的数据项
void Refuse(plane& p, action kind); // 拒绝服务
void Land(plane& p); // 降落飞机
void Fly(plane& p); // 起飞飞机
void Idle( ); // 处理空闲时间单元
void Conclude( ); // 总结模拟结果
};
void AirportSimulation::RunSimulation( ) {
Boolean flag=FALSE;
int pri; // 伪随机整数
plane p;
for (curtime = 1; curtime <= endtime&&!flag; curtime++) {
cout << "时间单元" << curtime << ":" ;
pri = PoissionRandom(expectarrive);
for (int i =1; i <= pri; i++) { //处理新到达准备降落的飞机
p = *NewPlane(p, ARRIVE);
if (landing.IsFull( )) Refuse(p, ARRIVE);
else landing.Add(p);
}
pri = PoissionRandom(expectdepart);
for ( i =1; i <= pri; i++) { //处理新到达准备起飞的飞机
p = *NewPlane(p, DEPART);
if (takeoff.IsFull( )) Refuse(p, DEPART);
else takeoff.Add(p);
}
if (!landing.IsEmpty( )) { // 降落飞机
landing.Change();
p = *landing.Delete(p);
Land(p);
landing.Reduce();
if(landing.Broken())
{
cout<
本文档为【机场模拟试验报告一.试验目的通过机场模拟试验了解计算机模拟】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。