【东南大学】【数据结构】实验报告机场模拟程序Airport.
东南大学数模实验报告

东南大学数模实验报告随机一致性指标求解一、实验目的1)掌握用matlab求解随机一致性指标的方法2)加深对随机一致性指标概念的理解二、实验内容用matlab或C++编写程序分别计算n=3-30时的n阶矩阵的随机一致性检验指标的值RI。
程序如下:B=[1/9,1/8,1/7,1/6,1/5,1/4,1/3,1/2,1,1,2,3,4,5,6,7,8,9]k=0n=3for p=1:1000A=zeros(n)for i=1:nfor j=i:nb=randi(18,1)A(i,j)=B(1,b)A(j,i)=1/A(i,j)A(i,i)=1endendk=k+max(eig(A)) endk=k/pr=(k-n)/(n-1) 三、实验结果四、实验分析实验所得数据与书上给的前11个误差不大, 由于选用了较为笨拙的循环算法, 使计算高阶的矩阵时耗时很长。
曲线插值一、实验目的1)熟悉一般的曲线插值的方法2)熟悉“\”、polyfit、polyval、interp1.spline、cscvn等Matlab 命令3)学会用常见插值函数的求解及应用二、实验内容(1)已知某平原地区的一条公路经过如下坐标所表示的点,请用样条插值绘出这条公路(不考虑公路的宽度)。
X(m) 0 30 50 70 80 90 120 148 170 180Y(m) 80 64 47 42 48 66 80 120 121 138X(m) 202 212 230 248 268 271 280 290 300 312Y(m) 160 182 200 208 212 210 200 196 188 186X(m) 320 340 360 372 382 390 416 430 478 440Y(m) 200 184 188 200 202 240 246 280 296 308X(m) 420 380 360 340 320 314 280 240 200(2)对于上表给出的数据, 估计公路长度程序如下:function interpolationroad_x1 = [ 0, 30, 50, 70, 80, 90, 120, 148, 170, 180, 202, 212, 230, 248,268, 271, 280, 290, 300, 312, 320, 340, 360, 372, 382, 390, 416, 430, 478];road_y1 = [80, 64, 47, 42, 48, 66, 80, 120, 121, 138, 160, 182, 200, 208, 212, 210, 200, 196, 188, 186, 200, 184, 188, 200, 202, 240, 246, 280, 296];x1 = 0:478;y1 = interp1(road_x1,road_y1,x1,'spline');length1 = 0;for i = 0:477y_i = abs(interp1(road_x1,road_y1,i+1)-interp1(road_x1,road_y1,i));length1 = length1+sqrt(1+(y_i)^2);endplot(road_x1,road_y1,'.',x1,y1);hold on;road_x2 = [478, 440, 420, 380, 360, 340, 320, 314, 280, 240, 200];road_y2 = [296, 308, 334, 328, 334, 346, 356, 360, 392, 390, 400];x2 = 200:478;y2 = interp1(road_x2,road_y2,x2,'spline');length2 = 0;for j = 200:477y_j = abs(interp1(road_x2,road_y2,j+1)-interp1(road_x2,road_y2,j));length2 = length2+sqrt(1+(y_j)^2);endplot(road_x2,road_y2,'.',x2,y2);hold off;disp('路线总长度: ');length = length1+length2三、实验结果路线总长度:length = 967.4565四、实验分析由实验所绘的图可以看出公路在大多数地方还是比较平滑的, 效果较好。
飞机场的模拟起降程序报告_C语言课程设计

一、引言二、任务概述三、功能分析四、模块分析五、函数介绍六、系统流程图七、程序代码一、引言1.1课题要求模拟机场飞机起飞、降落,以及空中交通调度,具有动画仿真效果。
1.2应用背景目前在中国经济高速发展时期,飞机已经成为了人们不可缺少的交通工具。
而机场作为飞机起飞与降落的大型枢纽,其作用更是不可小视。
机场的运行效率直接关系到了航班准点高效的运行。
而机场的调度系统更是保证机场可以高效率运行的核心。
本机场仿真系统可以在用户给定单位时间内需要起飞,中转,降落的飞机数量和机场跑道的数量的情况下动画模拟飞机场的运行状况,在模拟结束以后统计机场处理各种飞机用户可以根据飞机场的模拟情况来判断机场的容纳能力,并以此为参考得到不同机场最佳的运行状态。
二、功能分析2.仿真运行模块2.1模拟系统的简要说明用户在选择仿真模式和输入参数确定后即进入程序的仿真运行模块。
此仿真界面下的机场主画面如图所示机场主界面图形及注释·1.机场整个机场一共分为三大区域:空中等待区,地面等待区和跑道区。
其中空中等待区和地面等待区为系统默认的分为了6个区域,而跑道区的跑道数量可以由用户在0条和3条间自由选择。
区域内各个子区域的位置和编号如图所示。
我们这里用的各个区域用的是同一种结构的结构体struct area,期中根据了各种区域的不同功能对结构体的数据加以利用使之得到了不同的实现。
空中等待区(Waitair):空中的飞机在没有分配到机场跑道的区域时在空中等待区里进行盘旋等待。
地面等待区(Waitland):处于地面暂时没有分配到跑道的飞机会停留在地面等待区地面等待区内若用飞机正在停留则会在区域内部用淡蓝色高亮显示。
跑到区(Runway):飞机起飞和降落的区域。
跑道两边的灯会根据跑道的使用状态改变颜色。
若有飞机正在使用跑道则显示为红色;若跑道已经预定给某架飞机使用则显示为黄色;若跑道为被飞机预定使用则显示为绿色。
·2.飞机本模拟系统中的飞机一共有三种,他们分别为中转的飞机,降落的飞机和起飞的飞机。
数据结构课程设实验报告

《数据结构程序设计》实验报告专业**********学号 ******* 姓名****************学院****年**月一.实验名称:航班信息的查询与检索【问题描述】排序和查找是在数据信息处理中使用频度极高的操作。
为了加快查找的速度,需要先对数据记录按关键字排序。
当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、时间、价格及机型等信息。
在这个飞机航班数据的信息模型中,航班号是关键字,而且是具有结构特点的一类关键字。
因为航班号是字母数字混编的,例如CZ3869,这种记录集合是一个适合于多关键字排序的例子。
系统总体功能程序流程图:详细设计:#include<stdio.h>#include<stdlib.h>#include<string.h>int i,j;int max=0;struct airplane{char num[10];char start[10];char final[10];char day[10];char on[10];char off[10];char mode[10];char ticket[10];}air[10]={0};struct airplane_num{int a;char b[5];int c;}air_num[10];void Input();void Search();void Print();void Menu();int Two_Devide(int x); void Menu_Choose();void main(){air_num[0].a=1544;air_num[1].a=1836;air_num[2].a=3528;air_num[3].a=3682;air_num[4].a=3869;air_num[5].a=4594;air_num[6].a=5341;air_num[7].a=7425; strcpy(air_num[0].b,"CA"); strcpy(air_num[1].b,"HU"); strcpy(air_num[2].b,"CZ"); strcpy(air_num[3].b,"MU"); strcpy(air_num[4].b,"CZ"); strcpy(air_num[5].b,"MU"); strcpy(air_num[6].b,"MU"); strcpy(air_num[7].b,"SC");air_num[0].c=0;air_num[1].c=4;air_num[2].c=5;air_num[3].c=3;air_num[4].c=2;air_num[5].c=6;air_num[6].c=1;air_num[7].c=7;Input();for(i=0;i<8;i++)printf("\n\n\n");Menu_Choose();getchar();}void Input(){strcpy(air[0].num,"CA1544"); strcpy(air[0].start,"HeFei"); strcpy(air[0].final,"BeiJing"); strcpy(air[0].day,"1-2-4-5"); strcpy(air[0].on,"1055");strcpy(air[0].off,"1240");strcpy(air[0].mode,"733"); strcpy(air[0].ticket,"960"); strcpy(air[1].num,"MU5341"); strcpy(air[1].start,"ShangHai"); strcpy(air[1].final,"GuangZhou"); strcpy(air[1].day,"full");strcpy(air[1].on,"1420");strcpy(air[1].off,"1615");strcpy(air[1].mode,"M90"); strcpy(air[1].ticket,"1280"); strcpy(air[2].num,"CZ3869"); strcpy(air[2].start,"ChongQing"); strcpy(air[2].final,"ShenZhen"); strcpy(air[2].day,"2-4-6"); strcpy(air[2].on,"1035");strcpy(air[2].off,"1035");strcpy(air[2].mode,"733");strcpy(air[2].ticket,"1010");strcpy(air[3].num,"MU3682");strcpy(air[3].start,"GuiLin");strcpy(air[3].final,"NanJing");strcpy(air[3].day,"2-3-4-6-7");strcpy(air[3].on,"2050");strcpy(air[3].off,"2215");strcpy(air[3].mode,"M90");strcpy(air[3].ticket,"1380");strcpy(air[4].num,"HU1836");strcpy(air[4].start,"ShangHai");strcpy(air[4].final,"BeiJing");strcpy(air[4].day,"full");strcpy(air[4].on,"0940");strcpy(air[4].off,"1120");strcpy(air[4].mode,"738");strcpy(air[4].ticket,"1250");strcpy(air[5].num,"CZ3528");strcpy(air[5].start,"ChenDu");strcpy(air[5].final,"ShaMeng");strcpy(air[5].day,"1-3-4-5-7");strcpy(air[5].on,"1510");strcpy(air[5].off,"1650"); strcpy(air[5].mode,"CRJ"); strcpy(air[5].ticket,"1060");strcpy(air[6].num,"MU4594");strcpy(air[6].start,"KunMing");strcpy(air[6].final,"XiAn");strcpy(air[6].day,"1-3-5-6"); strcpy(air[6].on,"1015"); strcpy(air[6].off,"1140"); strcpy(air[6].mode,"328"); strcpy(air[6].ticket,"1160");strcpy(air[7].num,"SC7425");strcpy(air[7].start,"QIngDao");strcpy(air[7].final,"HaiKou");strcpy(air[7].day,"1-3-6"); strcpy(air[7].on,"1920"); strcpy(air[7].off,"2120"); strcpy(air[7].mode,"DH4"); strcpy(air[7].ticket,"1630");}void Print(){printf("********************MENU*********** **********\n\n");printf("航班号起点站终点站班期起飞时间到达时间机型票价\n");printf("%6s%11s%11s%11s%7s%9s%10s%7s\n",air[i ].num,air[i].start,air[i].final,air[i].day,air[i].on,air[i].of f,air[i].mode,air[i].ticket);}void sort(){int i,j,flag;airplane t[10];airplane temp;for(i=0;i<10;i++){flag=0;for(j=0;j<10-1;j++)if(t[j].num>t[j+1].num){flag=1;strcpy(temp.num,t[j].num);strcpy(temp.start,t[j].start);strcpy(temp.final,t[j].final);strcpy(temp.day,t[j].day);strcpy(temp.on,t[j].on);strcpy(temp.off,t[j].off);strcpy(temp.mode,t[j].mode);strcpy(temp.ticket,t[j].ticket);strcpy(t[j].num,t[j+1].num);strcpy(t[j].start,t[j+1].start);strcpy(t[j].final,t[j+1].final);strcpy(t[j].day,t[j+1].day);strcpy(t[j].on,t[j+1].on);strcpy(t[j].off,t[j+1].off);strcpy(t[j].mode,t[j+1].mode);strcpy(t[j].ticket,t[j+1].ticket);strcpy(t[j+1].num,temp.num);strcpy(t[j+1].start,temp.start);strcpy(t[j+1].final,temp.final);strcpy(t[j+1].day,temp.day);strcpy(t[j+1].on,temp.on);strcpy(t[j+1].off,temp.off);strcpy(t[j+1].mode,temp.mode);strcpy(t[j+1].ticket,temp.ticket);}if(flag==0)break;}}void Menu(){printf("******************菜单*****************************\n");printf("1.按航班号查询:\n");printf("2.按起点站查询:\n");printf("3.按终点站查询:\n");printf("4.按起飞时间查询:\n");printf("5.按到达时间查询:\n");printf("6.按机型查询:\n");printf("7.按票价查询:\n");printf("8.按航班号排序显示:\n");printf("************************************* ***************\n");printf("输入1-8选择:\n");}int Two_Devide(int x){int low=0,high=7,mid;printf("%d\n",x);while(low<=high){mid=(low+high)/2;if(x>air_num[mid].a) low=mid+1;if(x<air_num[mid].a) high=mid-1;if(x==air_num[mid].a) return mid;}}void Search(){int a; char b[5]; int y,z;scanf("%s",b);scanf("%d",&a);y=Two_Devide(a);if(strcmp(b,air_num[y].b)==0){z=air_num[y].c; i=z; Print();}} void Menu_Choose(){int key,key2;charnum[10],start[10],final[10],on[10],off[10],mode[10],ti cket[10];do{Menu();scanf("%d",&key);switch(key){case 1:scanf("%s",num); for(i=0;i<8;i++){if(strcmp(num,air[i].num)==0)Print();} break;case 2:scanf("%s",start); for(i=0;i<8;i++){if(strcmp(start,air[i].start)==0)Print();} break;case 3:scanf("%s",final); for(i=0;i<8;i++){if(strcmp(final,air[i].final)==0) Print();} break;case 4:scanf("%s",on); for(i=0;i<8;i++){if(strcmp(on,air[i].on)==0) Print();} break;case 5:scanf("%s",off); for(i=0;i<8;i++){if(strcmp(off,air[i].off)==0) Print();} break;case 6:scanf("%s",mode); for(i=0;i<8;i++){if(strcmp(mode,air[i].mode)==0) Print();} break;case 7:scanf("%s",ticket); for(i=0;i<8;i++){if(strcmp(ticket,air[i].ticket)==0) Print();} break;case 8:sort();printf("航班号起点站终点站班期起飞时间到达时间机型票价\n");for(i=0;i<10-1;i++)printf("%6s%11s%11s%11s%7s%9s%10s%7s\n",air[i ].num,air[i].start,air[i].final,air[i].day,air[i].on,air[i].of f,air[i].mode,air[i].ticket);break;}printf("按任意数字继续:\n");scanf("%d",&key2);}while(key2!=0);}调试分析:显示功能调试:航班号查询测试选择1,然后输入航班号,例如MU4594起点站查询测试:选择2,然后输入起点站,例如KunMing终点站查询测试:选择3,然后输入终点站,例如XiAn起飞时间查询测试:选择4,然后输入起飞时间,例如1015(10点15分)到达时间查询测试:选择5,然后输入到达时间,例如1140(11点40分)机型查询测试:选择6,然后输入机型,例如328票价查询测试:选择7,然后输入票价,例如1160航班号排序显示测试:选择8课程总结:通过做这次的课程设计我自学到很多新的东西,而且对以前所学的知识有了更深的理解:1.设计图对程序的作用,至今才真正体会到。
东南大学系统实验报告

实验八:抽样定理实验(PAM )一.实验目的:1. 掌握抽样定理的概念2. 掌握模拟信号抽样与还原的原理和实现方法。
3. 了解模拟信号抽样过程的频谱 二.实验内容:1.采用不同频率的方波对同一模拟信号抽样并还原,观测并比较抽样信号及还原信号的波形和频谱。
2. 采用同一频率但不同占空比的方波对同一模拟信号抽样并还原,观测并比较抽样信号及还原信号的波形和频谱 三.实验步骤:1. 将信号源模块、模拟信号数字化模块小心地固定在主机箱中,确保电源接触良好。
2. 插上电源线,打开主机箱右侧的交流开关,在分别按下两个模块中的电源开关,对应的发光二极管灯亮,两个模块均开始工作。
3. 信号源模块调节“2K 调幅”旋转电位器,是“2K 正弦基波”输出幅度为3V 左右。
4. 实验连线5. 不同频率方波抽样6. 同频率但不同占空比方波抽样7. 模拟语音信号抽样与还原 四.实验现象及结果分析:1.固定占空比为50%的、不同频率的方波抽样的输出时域波形和频谱: (1) 抽样方波频率为4KHz 的“PAM 输出点”时域波形:抽样方波频率为4KHz 时的频谱:50K…………PAM 输出波形输入波形分析:理想抽样时,此处的抽样方波为抽样脉冲,则理想抽样下的抽样信号的频谱应该是无穷多个原信号频谱的叠加,周期为抽样频率;但是由于实际中难以实现理想抽样,即抽样方波存在占空比(其频谱是一个Sa()函数),对抽样频谱存在影响,所以实际中的抽样信号频谱随着频率的增大幅度上整体呈现减小的趋势,如上面实验频谱所示。
仔细观察上图可发现,某些高频分量大于低频分量,这是由于采样频率为4KHz ,正好等于奈奎斯特采样频率,频谱会在某些地方产生混叠。
(2) 抽样方波频率为8KHz 时的“PAM 输出点”时域波形:2KHz6K 10K 14K输入波形PAM 输出波形抽样方波为8KHz 时的频谱:分析:当采样频率为8KHz 时,频谱如上图所示,已抽样信号的频谱有无穷多个原始信号频谱叠加而成,周期为采样频率8KHz ,由于此时采样频率>>那奎斯特速率,故没有混叠。
数据结构课程设计报告(航班管理系统)分解

数据结构课程设计报告班级:指导老师日期:2014年12月【需求分析】2.航空订票系统试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。
采用链式存储结构。
要求:系统能实现的操作和功能如下:(1)航班信息管理。
(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。
(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。
若需要,可登记排队候补。
(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
【设计】2.1 设计思想(1)数据结构设计①.‘航班信息数据结构’采用链式储存结构,并且设置链接‘订票乘客名单域’和‘排队等候名单域’的借口。
设计如下:/*航班信息数据结构 */typedef struct Airp{char airnum[10];//航班号char planenum[10];//机型char departure[10];//起飞机场char terminal[10];//降落机场char weekday[5];//日期struct time uptim;//起飞时间time downtim;// 降落时间time flytim;// 飞行时间int price;//价格int tkt_ful;//乘员定额int tkt_sur;//余票量Book_list *book;//订票客户名单Wait_list wait;//等待候补客户名单Airp *next;}lineinfo;//②‘订票乘客名单域’采用链式存储结构,以单链表形成名单列表。
project飞机场实验报告讲解

Project 2飞机场模拟问题班级:2014级计科三班姓名张万涛学号14348172姓名张锐滨学号14348171姓名覃佳学号14349020【题目要求】P1.将所有用于飞机场模拟的函数和方法组合成一个完整的程序。
用飞机场模拟程序做若干次试运行实验,调整准备着陆和起飞的飞机数的期望值,并找出在飞机不会被拒绝服务的条件下这些数字尽可能大的近似值。
如果队列的长度增加或减少,那么这些值将会有什么变化?P2.修改模拟程序,使飞机场有两条飞机跑道,其中一条总是用来着陆,另一条总是用来起飞。
比较双跑道机场能服务的总飞机数和单条飞机跑道的飞机场的相应数字,前者是否为后者的两倍?P3.修改模拟程序,使飞机场有两条飞机跑道,其中一条总是用来着陆,另一条总是用来起飞。
如果某个队列是空的,那么两条跑道都能用于其他的队列。
如果着陆队列总是满的,并且另一架飞机要到达着陆,那么将停止起飞,并将两条跑道都用于清理搁置的着陆飞机。
P4.修改模拟程序,使飞机场有3条飞机跑道,其中各保留一条总是用于着陆和起飞,第三条用于着陆,但在着陆队列为空的情况下,第三条亦可用于起飞。
P5.修改最初的模拟程序(单条跑道),使得当每架飞机到达着陆时,它将有(作为它的数据成员的)一个(随机产生的)油位,以剩余的时间单元度量。
如果飞机没有足够的油位在队列中等待,则允许它立即着陆。
因此着陆队列里的飞机可能需要再等待附加的单元,因此可能用完自身的燃料。
作为着陆函数的一部分要检查这一点,并查明在飞机由于燃料耗尽而开始坠毁前机场有多忙。
P6.写一个占位程序来代替随机函数,这个占位程序既能用于调试程序又允许用户正确地控制每一个时间单元内每个队列到达的飞机数。
【数据结构与算法】P1题目比较简单,就是把课本给的代码连同课本附录B生成随机数的方法进行整合。
①输入结束时间、队列的最大值,飞机起飞和降落的频率,建立一条跑道。
②初始化current_time的值为0,当时间未结束时进行一个循环。
飞机场
飞机场调度模拟程序实验说明在本实验中,需要同学们利用队列实现一个飞机场调度模拟,根据不同的输入参数得到不同的模拟结果。
程序运行开始,首先需要输入以下参数:机场跑道数,飞机降落占用跑道时间(整数),飞机起飞占用跑道时间(整数)整个模拟的时间以分钟为单位,从0开始,每分钟的开始需要输入:该分钟要求降落飞机数,该分钟要求起飞飞机数机场调度原则是降落优先起飞,在此原则下按来的顺序排队;每驾飞机都有一个编号,要起飞飞机从1开始,要降落飞机从5001开始;每驾飞机需要等待的时间是从其提要求开始到分配跑道为止;每个跑道都有一个编号(从1开始),都可以用来降落和起飞,但同一时间只能被一架飞机占用,占用时间为该飞机降落(起飞)占用跑道时间。
当输入的要求降落飞机数和要求起飞飞机数都小于0时,表示机场关闭,不再接受新的请求,但余下没有降落(起飞)的飞机需照常进行。
模拟过程中需要随时输出以下数据:1.当前时间(%4d)2.所有从占用变为空闲的跑道编号(在输入降落、起飞飞机数前输出)3.可以降落(起飞)飞机编号(%04d)、跑道编号(%02d)(在输入降落、起飞飞机数后输出)模拟结束后,程序需输出以下统计结果:1.模拟时间(%4d)2.降落平均等待时间(%4.1f)3.起飞平均等待时间(%4.1f)4.每条跑道被占用时间(%4d)5.跑道平均被占用的百分比(%4.1f,平均占用时间×100/模拟时间)例:(下面的黑斜体为输入)Please input number of runways, landing time, takeoff time:4 3 5Current Time: 0Please input number of arrivals, number of departures(离开,出发)required in next minute:1 4airplane 5001 is ready to land on runway 01airplane 0001 is ready to takeoff on runway 02airplane 0002 is ready to takeoff on runway 03airplane 0003 is ready to takeoff on runway 04Current Time: 1Please input number of arrivals, number of departures required in next minute:0 0Current Time: 2Please input number of arrivals, number of departures required in next minute:0 2Current Time: 3runway 01 is freePlease input number of arrivals, number of departures required in next minute: 3 0airplane 5002 is ready to land on runway 01Current Time: 4Please input number of arrivals, number of departures required in next minute: 0 0Current Time: 5runway 02 is freerunway 03 is freerunway 04 is freePlease input number of arrivals, number of departures required in next minute: 0 0airplane 5003 is ready to land on runway 02airplane 5004 is ready to land on runway 03airplane 0004 is ready to takeoff on runway 04Current Time: 6runway 01 is freePlease input number of arrivals, number of departures required in next minute: 2 4airplane 5005 is ready to land on runway 01Current Time: 7Please input number of arrivals, number of departures required in next minute: -1 -1Current Time: 8runway 02 is freerunway 03 is freeairplane 5006 is ready to land on runway 02airplane 0005 is ready to takeoff on runway 03Current Time: 9runway 01 is freeairplane 0006 is ready to takeoff on runway 01Current Time: 10runway 04 is freeairplane 0007 is ready to takeoff on runway 04Current Time: 11runway 02 is freeairplane 0008 is ready to takeoff on runway 02Current Time: 12Current Time: 13runway 03 is freeairplane 0009 is ready to takeoff on runway 03Current Time: 14runway 01 is freeairplane 0010 is ready to takeoff on runway 01Current Time: 15runway 04 is freeCurrent Time: 16runway 02 is freeCurrent Time: 17Current Time: 18runway 03 is freeCurrent Time: 19runway 01 is freesimulation finishedsimulation time: 19average waiting time of landing: 1.0 average waiting time of takeoff: 4.2 runway 01 busy time: 19runway 02 busy time: 16runway 03 busy time: 18runway 04 busy time: 15runway average busy time percentage: 89.5%。
实验四 队列综合应用 实验报告
队列综合操作(机场起降模拟程序)实验报告一、实验内容和目的1.队列的基本概念和基本操作:队列的入队操作,队列的出队操作,判断队列是否为空队列,队列的初始化操作2.链表的基本概念和基本操作:链表的初始化,链表的定位操作,链表的插入,删除操作。
二、实验原理1.队列是只允许在表的一端进行插入(队尾),而在另一端(队头)进行删除操作的线性表。
队列的修改是按照先进先出的原则进行的。
2.模拟程序采用两个队列结构,分别表示机场的进场队列(包括正在降落的飞机和等待降落的飞机)和出场队列(包括正在起飞的飞机和等待起飞的飞机),另外,还采用了两个链表分别储存已经降落但尚未到达离场时间的飞机(即空闲状态的飞机)以及尚未到达降落时间的飞机。
3.模拟程序中,飞机的数据包括航班名,飞机状态,飞机在该状态下持续的时间(用于判断飞机的起飞和降落等过程的完成情况),飞机降落的时间和日期。
另外,程序中使用了全局变量记录模拟程序中的时间,并且模拟程序时间的起始值记录在数据文件中。
三、程序流程图3.1 程序整体流程图3.2 程序主逻辑函数(控制飞机走向的函数)四、实验结果4.1 程序第一次运行(或者存放飞机信息的数据文件不存在时,询问如何产生飞机信息)4.2 选择手动输入飞机数据(除了输入飞机信息以外,还需要输入模拟程序的起始时间)4.3 选择随机生成数据4.4 模拟程序开始界面从左到右,分别是进场队列,机场的机库以及出场队列。
航班名前面方括号中的为飞机的状态。
进场队列中的“等待”表示飞机正处于申请立场的状态,出场队列中的“等待”表示飞机正处于申请离场的状态。
4.5 使用pinfo 参数启动程序,重新输入飞机数据(旧的数据文件会被覆盖)4.6 使用apinfo 参数启动程序,重新生成飞机数据(旧的数据文件被覆盖)4.7 模拟程序结束,输出提示信息五、操作说明1.在第一次启动程序或者程序找不到飞机数据文件时,程序会进入到编辑飞机信息的界面。
东南大学数据结构实验报告电气工程学院王磊实验三
br[i].lated0.real=0;
br[i].lated0.image=0;
br[i].linked.real=0;
br[i].linked.image=0;
p2->data=&bu[br[j].Next-1];
p2->next=NULL;
mark++;
}
else
{
p2->next=new struct node;
p2=p2->next;
p2->link=&br[j];
p2->data=&bu[br[j].Next-1];
p2->next=NULL;
}
}
cout<<br[i].Former<<setw(5)<<br[i].Next <<setw(5)<<br[i].Name <<setw(5)<<br[i].Type
<<setw(5)<<br[i].R<<setw(5)<<br[i].X<<setw(5)<<br[i].B<<setw(5)<<br[i].K<<endl;
br[i].front0.real=0;
br[i].front0.image=0;
数据结构课程设计—机场管理系统
/*时间结点*/ /*栈内停放车辆结点*/
/*队列停放车辆结点*/
str,carNode
*ptr=NULL)
class Parkstack { private: struct Car *elements; int top; int Maxsize; 数
停车栈
栈所能容纳的最大停放
public: Parkstack():top(-1),Maxsize(Max)
数据结构课程设计报告 机场管理系统
目录
1.机场管理系统概 述………………………………………………………………1 1.1 景………………………………………………………………… 1.2 析…………………………………………………………………
1.3 能………………………………………………………………… 1.4 涉 点………………………………………………………………… 2.概要设 计………………………………………………………………… 2 2.1系统的结构图 ………………………………………………………………2 2.2 抽象数据 义…………………………………………………………3 2.3 构………………………………………………………………… 3.详细设 计………………………………………………………………… 5 3.1系统的功能模块 图…………………………………………………………5 3.2 …………………………………………………………………… 4.系统的实 现………………………………………………………………… 10 4.1 系统 法………………………………………………………………11 4.2 系统
Customer *prior; 前结点以作删除操作 void RefundticketMenu(); };
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告(第一次)oxstar名称机场模拟程序AirportSimulation(三跑道)问题描述设机场有三个跑道,跑道1专用于降落,跑道2专用于起飞,跑道3优先用于降落。
当等待降落队列为空时,跑道3也可用于起飞。
修改并运行机场模拟程序AirportSimulation,使之能利用所有的跑道资源。
分析教材中已经给出了非常详细的实例,由于只是跑道数量的不同,只需在它的基础上将模拟函数、参数设置和数据成员做一些修改即可。
数据结构和算法分析本例涉及的数据结构类型主要是环状队列,用于存储等待的飞机队列。
由于飞机从哪一条跑道降落或者起飞是由机场方面动态决定的,故仍只需两个队列。
原例中跑道大约可以提供1/2时间用于降落,不妨设权重为1/2,那么根据题意,本例降落时间权重将达1+1/2=3/2,因而将等待队列延长至15(需开设16)。
起飞等待队列同理。
队列长度在Queue.h中默认定义:const int DefaultSize = 16;Queue( int MaxQueueSize = DefaultSize );Queue结构属于数据结构基础的内容,不在此讨论,代码详见Queue.h。
与上述相似的原因,单位时间期望到达飞机总数上限也相应提升至3。
只可能同时安排2架飞机起飞或者降落,所以增加单起/降总数限制为2。
AirportSimulation::AirportSimulation(){ ……else if( expectarrive + expectdepart > 3.0 || expectarrive > 2.0 || expectdepart > 2.0 ){cout << "机场将饱和!请重新输入。
"<< endl;ok = false;}……}为确保供数据分析的数据全面,为每一条跑道提供了单独储存空闲时间单元数、降落/起飞飞机数等的变量,并在程序相应位置给出设置和显示输出。
int idletime1; // 跑道1空闲时间单元数int idletime2; // 跑道2空闲时间单元数int idletime3; // 跑道3空闲时间单元数int nland1; // 跑道1降落的飞机数int nland3; // 跑道3降落的飞机数int nland; // 降落的飞机总数int ntakeoff2; // 跑道2起飞的飞机数int ntakeoff3; // 跑道3起飞的飞机数int ntakeoff; // 起飞的飞机总数在实现安排跑道的算法方面,基于各条跑道的不同性质,可以用3条顺序执行的判断语句用以安排飞机起降,形如:void AirportSimulation::RunSimulation() { ……if( !landing.IsEmpty() ){ // 跑道1降落飞机p = *landing.Delete( p );Land( p, 1 );}else Idle( 1 );if( !takeoff.IsEmpty() ){ //跑道2起飞飞机p = *takeoff.Delete( p );Fly( p, 2 );}else Idle( 2 );if( !landing.IsEmpty() ){ // 跑道3降落飞机p = *landing.Delete( p );Land( p, 3 );}else if( !takeoff.IsEmpty() ){ // 跑道3起飞飞机p = *takeoff.Delete( p );Fly( p, 3 );}else Idle( 3 ); // 处理空闲时间单元……}由于跑道增多,起飞和降落飞机需要显示具体跑道信息,因此Fly 、Land、Idle和Conclude 函数需要重新定义:void AirportSimulation::Fly( plane& p, int airstrip ){int wait = curtime - p.tm;cout << " ▲▲飞机" << p.id << "从跑道" << airstrip << "起飞,该机等待时间:" << wait << "。
" << endl;if( airstrip == 2 )ntakeoff2++; // 跑道2起飞飞机总数加1elsentakeoff3++; // 跑道3起飞飞机总数加1takeoffwait += wait; // 累加总起飞等待时间}Land函数与之完全类似,在此省略。
void AirportSimulation::Idle( int airstrip ){cout << " ¤¤跑道" << airstrip << "空闲。
" << endl;if( airstrip == 1 )idletime1++; // 跑道1空闲时间加1else if( airstrip == 2 )idletime2++; // 跑道2空闲时间加1elseidletime3++; // 跑道3空闲时间加1}void AirportSimulation::Conclude(){nland = nland1 + nland3;ntakeoff = ntakeoff2 + ntakeoff3;cout << endl;cout << "总模拟时间单元数:" << endtime << endl;cout << "一个时间单元内期望到达降落飞机数:" << expectarrive << endl;cout << "一个时间单元内期望到达起飞飞机数:" << expectdepart << endl;cout << endl;cout << "总共处理的飞机数:" << nplanes << endl;cout << "跑道1降落飞机数:" << nland1 << endl;cout << "跑道3降落飞机数:" << nland3 << endl;cout << "降落飞机总数:" << nland << endl;cout << "跑道2起飞飞机数:" << ntakeoff2 << endl;cout << "跑道3起飞飞机数:" << ntakeoff3 << endl;cout << "起飞飞机总数:" << ntakeoff << endl;cout << "拒绝服务的飞机总数:" << nrefuse << endl;cout << "队列中剩余的准备降落飞机数:" << landing.Size() << endl;cout << "队列中剩余的准备起飞飞机数:" << takeoff.Size() << endl;cout << endl;if( endtime > 0 ){cout << "跑道1空闲时间百分比:" << ( (double) idletime1 / endtime ) * 100.0 << endl;cout << "跑道2空闲时间百分比:" << ( (double) idletime2 / endtime ) * 100.0 << endl;cout << "跑道3空闲时间百分比:" << ( (double) idletime3 / endtime ) * 100.0 << endl;}if( nland > 0 )cout << "降落平均等待时间:" << (double) landwait / nland << endl;if( ntakeoff > 0 )cout << "起飞平均等待时间:" << (double) takeoffwait / ntakeoff << endl;}其它相关函数与书上是一样的。
书中程序中还有一些小错误需要修正如下:x = rand() / (double) RAND_MAX;使用INT_MAX是不正确的,INT_MAX≠RAND_MAX。
Queue<plane> landing; // 等待降落飞机队列,假设用环型队列,实际长度为15Queue<plane> takeoff; // 等待起飞飞机队列,同上类定义中是不允许为变量赋值的。
即不可写为Queue<plane> landing(16);测试数据和实例总模拟时间单元数:100一个时间单元内期望到达降落飞机数:1.5一个时间单元内期望到达起飞飞机数:1.5运行结果分析限于篇幅,这里只安排执行结果片段以及一次执行的最终结果:说明:△△表示迎接新飞机▲▲表示飞机使用跑道〓〓表示拒绝飞机请求¤¤表示跑道空闲……时间单元82:△△飞机263准备降落。
△△飞机264准备降落。
△△飞机265准备降落。
△△飞机266准备降落。
△△飞机267准备起飞。
△△飞机268准备起飞。
〓〓告诉飞机268等一会儿再尝试起飞。
▲▲飞机260从跑道1降落,该机等待时间:1。
▲▲飞机222从跑道2起飞,该机等待时间:10。
▲▲飞机261从跑道3降落,该机等待时间:1。