机场起飞降落调度仿真系统课程设计报告.pdf

上传人:奔*** 文档编号:89813038 上传时间:2023-05-13 格式:PDF 页数:113 大小:11.50MB
返回 下载 相关 举报
机场起飞降落调度仿真系统课程设计报告.pdf_第1页
第1页 / 共113页
机场起飞降落调度仿真系统课程设计报告.pdf_第2页
第2页 / 共113页
点击查看更多>>
资源描述

《机场起飞降落调度仿真系统课程设计报告.pdf》由会员分享,可在线阅读,更多相关《机场起飞降落调度仿真系统课程设计报告.pdf(113页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C语言课程设计机场起飞降落调度仿真系统课程设计报告控制科学与工程系控 实1 001班组员:陈明U 2 01 01 3 6 4 8樊旭 U 2 01 01 3 7 1 7目录一.导言1.任务背景2.编写目的二.功能操作1.欢迎界面2.菜单界面3.飞机场操作界面4.退出界面三.重点程序分析四.流程图五.任务分工六.编程心得七.参考资料八.源代码一.导言1.任务背景航空公司每天都要拟订第二天的航班计划,简言之,就是安排匕机飞哪里,用哪架飞机执行航班任务,签派要综合机务和市场部提供的信息,安排好计划,并通过电报的形式发送到各地航务代办,否则第二天航班无法执行每个航班起飞之前,要拿到计算机飞行计划,相关

2、机场天气报告,天气预报图,高空风温图,航行通告,航行资料,这些都要签派来提供。飞机起飞后,要对飞机全程进行监控。飞机出现的任何不正常情况,签派都要协助机组进行处理,保证飞机安全落地天气不好,飞机故障,流量控制等等,只要造成了预定计划不能正常执行,签派就要综合各保障部门提供的情况,对航班计划进行及时调整,既要保障公司效益也要尽量减少航班延误当然了,每天下班的前提是公司所有航班都结束了,第二天计划都搞定了才行。所谓下班只是理论上的,半夜有飞机过来备降,或者有其它情况,还得随时上岗,因为毕竟他是公司里唯一一个24小时都值班的单位。2.编写目的通过对机场飞机的起飞降落及其调度的分析,建立了对于飞机场相

3、关信息规律分析的函数模型,并给出基于二维动画界面的调度的C语言程序,实现机场飞机的起飞降落及其调度的全过程模拟。此 次C语言课程设计是本专业的第一次课程设计,具有重要的意义:通过上个学期对C语言的学习,对C语言编程有了初步的了解,获得了一定的基础但是非常缺乏实际的编程经验,无法从质上对自己的编程技巧有一个很大的提高,这次的课程设计给我们提供了一个非常好的锻炼机会。通过二个人的分工合作,在实际中运用和训练程序设计的模块化和工程化思想和技术,努力掌握C语言精髓;同时提高自己的交流与团队合作的能力.为以后的更专业更复杂的课程设计和实践活动打好基础。二.功 能 介 绍1.欢迎界面/*52.cpp中函数

4、调用*/extern void ShowHz(int leftjnt top,unsigned char bytel.unsignedchar byte2,int color);这是汉字库初始化函数extern void outhzxy(int x,int y,char*str,int color);在图形界面中(x,y)坐标处用颜色color显示汉字,也可显示字符串extern void ShowBigHz(int leftjnt top,unsigned charbytel.unsigned char byte2,int color);extern void outbighzxy(int

5、x,int y.char*str,int color);由于写汉字,大小有16*16,24*24点阵,所以有两种版本/*53.cpp中函数调用*/extern void cb();/2 后面背景初始化效果extern void welcomeO;/3 画出欢迎字体extern int function6();/2 背后条形框架extern void loadingO;/这是登陆延迟void Button(int coIori,int color2,int x,int y.char*str,int len)/X匕按钮int EXIT(int x,int y)按钮效果显示效果int functio

6、n6()综合函数完成欢迎界面完成按钮操作void zuyuanOvoid shuomingO/这两的函数分别画不同背景的下拉框2.菜单界面/*54.cpp中函数调用*/extern void bkg();菜单界面的主要背景函数/*-菜 单 选 项 单 机 之 后 的 框 架 背 景-*/extern void filebkl();/菜单的框架背景extern void filebk2();/选择 的 框 架 背 景extern void filebk3();/帮助的框架背景/*-每 个 菜 单 头 分 别 对 应 的 子 菜 单extern void filel();/菜单的打开情况子菜单ex

7、tern void file2();/选择 的打开情况 子菜单extern void file3();/帮助的说明 子函数/*-花 被 选 中 后 某 选 项 红 色 背 景extern int ch1(int x,int y,int c);extern void filebk21();/flynum 的 框架背景extern void file21();飞 机 数 flynum 的打开情况 子菜单/*-等待用户输入的光标-*/extern void sign(int a,int b);/*-在指定位置输出一个字符串extern void showinput(int x,int y,char

8、ch);/*-显示输入的字符-*/extern void print(int x,int y.char str);/*55.cpp中函数调用*/extern void keyoperation();这是菜单界面的主要操作函数,通过按键完成/*56.cpp中函数调用*/extern void flynum();飞机数目输入函数extern void flycome();飞来飞机数目输入函数extern void flygo();飞走飞机数目输入函数extern void jinrucaozuo();开始介入飞机调度界面进行操作extern void reallyex让();菜单界面退出函数/*-

9、特 别 返 回 值 函 数extern void f1();/flynum O中的函数,得到所需的飞机飞来飞走数目的函数extern int come,go;外部参照的数值extern void f2(int qw.int wq);画出与机场stop对应的八个矩形,在有用的地方写上数字extern int panduan(char cc);判断字符是否在1 至 8 之间extern char a1 8,b1 8;用来外部参照的字符数组extern int a28,b28;用来外部参照的整形数组3.飞机场操作界面void drawing();画机场调用的总函数void sun();画机场界面(包

10、括太阳天空等)void stop();画机场界面(包括跑道,停车位,控制楼等)void flip(struct fly plane,int alpha,int(*tihuan)8 2,int m);起飞降落时画飞机的函数被void flying和 void jiangluo调用,定位追踪飞机坐标参数void drawysh(struct fly plane,int alpha);画静态飞机的函数,飞机起飞和降落到机场时调用void flying(struct fly plane,int ms,int(*tihuan)8J2,int m,void*buffer,void*buffers2);飞机

11、起飞的函数void jiangluo(struct fly plane,int ms,int(*tihuan)82,int m,void*buffer,void buffers2);飞机降落的函数void dengdai(int(*tihuan)82,int dd,int ang,int bbs2,void*buffers2);当机场无停机位时,调用使其在空中等待void xiaoshi(int(*tihuan)82,struct fly plane,int ms,int m);当飞机起飞到空中之后,逐步向前缩小,产生飞机远去的效果void draws(int(*tihuan)82,int k

12、,int m);被 void xiaoshi调用,用来接收void xiaoshi产生的飞机坐标变换并圆出逐渐向前缩小的飞机void flips(int alpha,int(*tihuan)82,int bbs2,int dd);被 void dengdai调用,画出天空中运行的飞机void drawyshs(int(*tihuan)82,int alpha,int bbs2,int dd);被 void dengdai调用,当飞机到达预计位置时画出飞机void hunhe(struct fly plane,int ms,int(*tihuan)网,void*buffer,voidbuffer

13、s2,int bbs2,int dd,struct fly planeef);当天空中有等待飞机,再按起飞时.,被调用,让两架飞机同时起飞和降落;(以下含ppp的与起飞有关,含 pppp和 ppppp的与降落有关,功能类似)void pppO(int*xycO,int(*tihuan)82,int*aaa,int*qq,int ab);被 void hunhe调用,用来判断飞机运行的状态(飞直线或是转弯)void ppp 1 (int*xycO,int*ps,int*aaa);void ppp2(int*xycO,int(*tihuan)82,int*aaa,int*qq);void ppp3

14、(int*xycO,int*ps,int*aaa);void ppp4(int*xycO,int(*tihuan)82,int*aaa,int*qq);void ppp5(int*xycO,int*ps,int*aaa);void ppp6(int*xycO,int(*tihuan)82,int*aaa,int*qq);void ppp7(int*xycO,int*ps,int*aaa);void ppp8(int*xycO,int(*tihuan)82,int*aaa,int*qq);void ppp9(int*xycO,int*ps,int*aaa);void ppplO(int*xycO

15、,int(*tihuan)82,int*aaa,int*qq);void pppll(int*xycO,int*ps,int*aaa);void pppl2(int*xycO,int(*tihuan)82,int*aaa,int*qq,int*pd,int*k);void ppppO(int*xycO,int(*tihuan)82,int*bbb,int*qq);void pppp 1 (int*xycO,int*ps,int*bbb);void pppp2(int*xycO,int(*tihuan)82,int*bbb,int*qq);void pppp3(int*xycO,int*ps,i

16、nt*bbb);void pppp4(int*xycO,int(*tihuan)82,int*bbb,int*qq);void pppp5(int*xycO,int*ps,int*bbb);void pppp6(int*xycO,int(*tihuan)82,int*bbb,int*qq);void pppp7(int*xycO,int*ps,int*bbb,int ms);void pppp8(int*xycO,int(*tihuan)82,int*bbb,int*qq);void pppp9(int*xycO,int*ps,int*bbb);void pppplO(int*xycO,int

17、(*tihuan)82,int*bbb,int*qq,int ab);void pppp 11(int*xycO,int*ps,int*bbb);void ppppl2(int*xycO,int(*tihuan)8 2,int*bbb,int*qq,int ac);void pppp 13(int*xycO,int*ps,int*bbb);void ppppl4(int*xycO,int(*tihuan)82,int*bbb,int*qq,int ab,struct flyplanee,int ms,int*q);(因为降落时选择停机位有两种情况,与pppp区分)void pppppl5(in

18、t*xycO,int(*tihuan)82,int*bbb,int*qq,int ac);void ppppp 16(int*xycO,int*ps,int*bbb);void ppppp 17(int*xycO,int(*tihuan)82,int*bbb,int*qq,struct flyplanee,int ms,int*q);4.退出界面三.重点程序分析v o i d k e yo p e r a t i o n()这是菜单界面的主要操作函数,通过按键完成(/0 bi n t x,y;/xy 为坐标ch a r c,;/成为输入的字符x=100;y=100;b g;/图形初始化11:e

19、 s c退出返回出cvp;b k g ();wh i l e (1)/z o n g 01i f (k b h i t ()/*如果用户按键*/z o n g11/2b(c=g e t ch ();i f(c=Es c)b r e a k;/*如果为ESC键,则退出程序*/e l s e i f(c=6)/*如果为CT RL+F”组合键,则弹出菜单*/第一连接(/1f i l e b k l O;y=ch l(100,16 0,RED);的位置*/*首先将选项条标记在第一个选项f i l e l O;/*然后绘制菜单*/wh i l e(c!=CR)/2c=g e t ch();/*等待用户按

20、键*/i f (c=Es c)/*如果为ESC键,则回到初始界面的状态*/g o t o 11;/如何让wh i l e函数退出,条件虽然是c=cr才推出,用go操作e l s e(/3i f(c=u p)/*当按u p键时*/i f(y!=16 0)(y-=3 0;/*否则,将选项条的坐标y值减3 0,并重新画选项条和菜单*/f i l e b k l ();y=ch l (100,y,RED);f i l e l O;)/*如果当前选项条已在最顶项,则不做处理*/i f(c=d o wn)/*当按d o wn键时,处理情况与上类似*/i f (y!=190)(y+=3 0;f i l e

21、b k l ();y=ch l (100,y,RED);f i l e l O;)/*e l s e*/wh i l ei f(y=16 0)m a i n l ();)e l s e i f(y=190)(r e a l l y e xi t ();g o t o q a a a;i f (c=6)-e l s e i f (c=7)出菜单*/第2连接(/1f i l e b k 2();y=ch l (200,16 0,RED);的位置*/f i l e 2();/12:wh i l e(c!=CR)(/2c=g e t ch ();i f(c=Es c)状态*/*-e l s e*/1/

22、*如果为CT RL+G”组合键,则弹/*首先将选项条标记在第一个选项/*然后绘制菜单*/*等待用户按键*/*如果为ESC键,则回到初始界面的e l s eg o t o 11;/*否则分别进行按键处理*/i f (c=u p)/*当按u p键时*/i f(y!=16 0)(y-=3 0;/*否则,将选项条的坐标y值减3 0,并重新画选项条和菜单*/f i l e b k 2();y=ch l (200,y,RED);f i l e 2();)/*如果当前选项条已在最顶项,则不做处理*/)i f(c=d o wn)/*当按d o wn键时,处理情况与上类似*/i f(y!=220)(y+=3 0

23、;f i l e b k 2();y=ch l (200,y,RED);file2();)/*else*/3 /while/2if(y=160)(flynum();)if(y=190)(flycome();)if(y=220)(flygoO;/*-e l s ei f (c=7)-*/1e l s e i f(c=8)则弹出菜单*/第一连接/*如果为CT RL+H”组合键,/1f i l e b k 3();y=ch l (3 00,16 0,RED);的位置*/*首先将选项条标记在第一个选项f i l e 3();/*然后绘制菜单*/wh i l e(c!=CR)/2状态*/c=g e t

24、ch ();/*等待用户按键*/i f (c=Es c)/*如果为ESC键,则回到初始界面的然是c=cr 才推出,用 g o 操作g o t o 11;/如何让wh i l e 函数退出,条件虽e l s e/3i f (c=u p)/*当按u p 键时*/i f(y!=16 0)(y-=3 0;/*否则,将选项条的坐标V值减3 0,并重新画选项条和菜单*/f i l e b k 3();y=ch l (3 00,y,RED);f i l e 3();)/*如果当前选项条已在最顶项,则不做处理*/)i f(c=d o wn)/*当按d o wn 键时,处理情况与上类似*/i f(y!=190)

25、y+=3 0;f i l e b k 3();y=ch l (3 00,y,RED);f i l e 3();)/*e l s e*/wh i l ei f(y=16 0)(z u y u a n ();)e l s e i f(y=190)s h u o m i n g ();)/*-e l s ei f (c=6)-*/1)/*-i f (k b h i t ()-*/2e)/*-wh i l e(1)-*/z o n g 01/l eq a a a:/g e t ch();cl o s e g r a p h ();说明:1.进 入 菜 单 界 面 以 后,由 于 菜 单 有 三 处 可

26、 操 作,有co n t r o l+fco n t r o l+g co n t r o l+h分别控制,co n t r o l+f分为两处,一个是开始一个是退出,退出直接关掉函数,开始时进入机场飞机起降调度函数。2co n t r o l+h是版主函数的菜单栏,打开以后,可以查阅组员信息及其相关的按键操作引导,其中分为上下两部分,第一个是介绍键盘操作按键的相关说明,用来帮助操作者熟悉菜单界面的按键,通过按键的熟悉,可以做到了熟于胸。3.co n t r o l+g是重点,在这一菜单栏目下,需要输入飞机飞来的以及飞走的数目,因为飞机场调度是非常有规律的,必须提前制定好一个科学合理的周密计划

27、,比如有3架飞机飞过来,调度员在明确任务以后,即知道有三家飞机即将飞过来,这样可以庭前做好准备,可以顺利完成任务。所以飞机飞来以及飞走的数目非常重要,这里用co m e,g o两 个i n t型整型变量保存,当调度员得到这两个参数以后,可以在预先是极好的选择菜单栏中选择(飞来)(飞走)两个模块分别输入,按下回车键以后,会在菜单界面显示与飞机场停飞机位置对应的8个s t o p矩形框,例如原来要有4架飞机飞走,一开始的时候,让四架飞机停在八个飞机停机位不能没有规律,这时候,在菜单界面下,(飞走)模块中8 个 s t o p键入4 个数字,在 1 到 8 之间,比如输入1,5,7,8,o 即在1,

28、5,7,8四个停机位置写上数字,表示在这四个位置,会有飞机起飞,与此同时,通过外部参照,将信息传递,在进入飞机场附近起飞降落及其调度的界面中,1,5,7,8 号 s t o p 就会停上飞机当 c o m e 及 g o 等相关参数输入完毕以后,即可进入操作对几个重要流程过程分析:1.0起飞:Case Fl:caozuo(&jiluf,sss,bbs,tihuan,dd,plane,planee,pp,buffer,buffers,0);下面是调用的函数(caozuo 0)(sss=0;作为判断是否运行flying(单纯起飞)jihif+;对起飞飞机数目累加if(ppO=l)判断0号停机位是否

29、有飞机,无则不运行(chioce=0;起飞需要的参数,与路径有关if(ddO!=Ollddl!=l)是否空中与选定停机位都有飞机,有则运行drawy sh(planee 0,0);消除掉画的静态飞机if(dd0=1&dd 1 !=2)判断空中等待的飞机情况(一架还是两架)ch=l;个与void dengdai和 hunhe用关的参数if(ddl=2&dd0!=l)ch=2;if(ddO=1&dd 1=2)ch=l;hunhe(plane,chioce,tihuan,buffer,buffers,bbs,ch,planee);H时起飞和降落的函数pp0=l;停机位有飞机if(dd0J=l&ddl

30、!=2)dd0=0;还原未调用前的数据if(ddl=2&dd0!=l)d d l=l;还原未调用前的数据if(dd0=l&ddl=2)dd0=0;还原未调用前的数据sss=l;运行该函数后,使其不能接着运行相面的单纯起飞函数if(sss=O)意味着同时起飞降落没有运行if(dd=0&ddl=l)天空中无等待飞机(ppO=O;该停机位无飞机了chioce=0;与路径有关的参数drawysh(planeeO,O);消除掉先前画的静态飞机flying(plane,chioce,tihuan,0,buffer,buffers);飞函数xiaoshi(tihuan,plane,chioce,0);产生远

31、去效果)break;2.0降落:case F9:jiluj+;对降落的的飞机数目累加j=0;初始化判断机场飞机数目for(i=0;i8;i+)if(ppi=l)j+;)if(j=8)意味着无空余的停机位(if(ddO=O)空中1号等待位置无等待飞机(dengdai(tihuan,ddO,ang,bbs,buffers);空中等待ddO=l;一个与空中飞行有关的参数(坐标)break;)if(dd=1)空 中2号等待位置无等待飞机(dengdai(tihuan,ddl,ang,bbs,buffers);空中等待ddl=2;一个与空中6行有关的参 数(坐标)break;)break;)if(j=0

32、;i)(if(ppi=O)(chioce=i;)ppchioce=l;与坐标有关的参数jiangluo(plane,chioce,tihuan,l,buffer,buffers);降落函数drawysh(planeechioce,0);画静态的飞机)if(ddO=1&dd 1 =2&j=8)如果无空余停机位,空中等待也饱和则无法运行break;break;3.0转弯与直线运行for(;ang0;ang=(ang+1)%360)控制转弯角度(flip(planems,ang,tihuan,m);调用画飞机函数delay(lO);flip(planems,ang,tihuan,m);擦掉所画的)w

33、hile(tihuanm|6 0l 0)运动状态判断xyc00=l;是则继续执行(可能会在执行两个不同的代码,但不会用影响)elsex y c O O =O;换飞机运动状态a a a 4 =0;意味着这个判断语句以后将不再执行a a a 5 =1;执行下个判断语句*q q=l;改变角度的参数,决定是左转还是右转)重要数据结构:1.0飞机参数s t r u c t f l y(i n t x y c 2 ;(基准坐标)i n t p l a n e s 8 J 2 J;(U机各个坐标的相对值);定义了两组s t r u c t f l y p l a n e 1 0 =8 1,4 0 5 ,5,

34、-3 ,-5,-3 ,-9,-9,-9,9,-5,3 ,5,3 ,7,0 ,5,-3 ,8 1,4 5 5 ,5,-3 ,-5,-3 ,-9,-9,-9,9,-5,3 ,5,3 ,7,0 ,5,-3 ),1 8 1,4 0 5 ,5,-3 ,-5,-3),-9,-9,-9,9,-5,3 ,5,3 ,7,0 ,5,-3 ,1 8 1,4 5 5 ,5,-3 ,-5,-3 ,-9,-9,-9,9,-5,3 ,5,3 ,7,0 ,5,-3 ,2 8 1,4 0 5 ,5,-3 ,-5,-3 ,-9,-9,-9,9,-5,3 ,5,3 ,7,0 ,5,-3 ,2 8 1,4 5 5 ,5,-3 ,-5

35、,-3),-9,-9,-9,9,-5,3 ,5,3 ,7,0 ,5,-3 ,3 8 1,4 0 5 ,5,-3 ,-5,-3 ,-9,-9,-9,9,-5,3 ,5,3 ,7,0 ,5,-3 ,381,455,5,-3,-5,-3,-9,-9,-9,9,-5,3,5,3,7,0,5,-3,500,50,5,-3,-5,-3,-9,-9,-9,9,-5,3,5,3,7,0,5,-3;这些是对运动飞机设定的,这些数据中后面的planes是始终不变;变的是xyc,并通过改变它传递到void flip等函数中,void flip需要依此来画出飞机;另外一个结构planee是针对画静态飞机的,void

36、yuansh函数中调用的重要数据2.0三维数组tihuantihuan会被void flip和void flips调用,并在这些函数中追踪飞机此时的位置坐标,接着反馈到void flying和void jiangluo及voidhunhe和void dengdai中;这是控缶U飞机飞行状态的重要参数,例如,当tihuan060=150(tihuan0口口是针对起飞的,tuhuan。口口是针对降落的,tihuan3口口是针对等待的,tihuan2口口是等待时的不变坐标)void flips函数中没有planes数据,而是用tihuan2口口代替的。3.0关于角度的的ang,an gl和ang2其

37、中ang参与降落和起飞角度空中,每次调用void flying和void jiangluo时、ang初始化为零。a n g l和ang2在同时起飞和降落中用到,angl是针对起飞,ang2是针对降落,同样每次调用void hunhe时它们将被初始化。4.0关于如何选择停机位和从哪个停机位起飞的choice这个数据在m ain函数中调用void flying,void jiangluo及voidhunhe之前将由所选择的按键来决定(传递时是用的ms)。5.0同时起飞降落中用来判断的数据aaa口和bbb初始化时它们都是aaa0=l,bbb0=l,其他的都为零,它们的运用这里介绍一下。在void h

38、unhe函数的循环中飞机运行一个单位后,调用如下只写了一个:if(aaa0=l)pppO(xycO,tihuan,aaa,&a,ab);在ppp函数中判断xycO口的值并反馈。6.0还有其他的一些数据将在源代码中说明。算法分析:1.0:关于动画开始时听同学的意见,先画飞机,然后用背景色再画掩盖,但由于飞行界面颜色不一,难以做到;再 后 来 想 了 用getimage和putimage来实现,但是飞行时效果太差,飞机不停闪烁,达不到要求;最后我们选用setwritemode(l)这一异或模式来画飞机和擦飞机,这样飞行效果比较好,同时也便于控制(只是不停画飞机和擦飞机);但是这也有一个问题,由于是

39、用异或模式画飞机时飞机的颜色可能会改变,所以对飞机的颜色有所要求才能达到好的效果;而且,当不运行时飞机就消失了,所以需要画静态飞机,例如,当飞机降落后,到达停机位时需要接着画一个飞机(静态),不管怎样,这是我们想到的相对较好的动画算法,当然,因为我们无法参照以前学长的程序,所以可能有很多不完善之处。2.0关于飞行降落的路径设定(动画路径)单纯的起飞降落路径比较简单,只需两种路径,起飞大类和降落大 类,用一类的可以通过参数choice(ms)来实现。而对于同时起飞和降落来说就比较复杂了,必须把起飞和降落放在同一循环中,传递choice(ms)就难以实现,起飞和降落的步调经常改变,一个飞行路径就要

40、一个函数,由于有8个停机位,这样的话就没有什么意义了,况且在这个动画中兼顾起飞和降落,一个路径设置就比单纯的起飞和降落麻烦得多。考虑到以上问题,经过仔细考虑后,我们换了一种路径设置算法:同时起飞和降落时,一共有四种状态,即:1.0起飞飞机和降落飞机都飞(滑行)直线;2.0两者都转弯;3.0起飞飞机直飞(滑行)降落飞机转弯;4.0起飞飞机转弯和降落飞机直飞。设定数组xyc2,xyc0针对起飞飞机,xycl针对降落飞机,它们可取两个值(。或1),。代表转弯,1代表直飞或滑行。这样在混合运动循环中加一组判断语句(ppp,pppp和ppppp)用来判断飞机的状态以及及时改变飞机运行状态,同时对一些参数

41、变换使之能够较好的达到多重动画目的且互不影响。7.0再看一下程序运行的效果1.进入操作函数后的机场界面2,飞机起飞降落的仿真情形3,同时起降的情形四.流程图E退出/A返回选择继续操作五.任务分工陈明:50.cpp 52.cpp 53.cpp 54.cpp 55.cpp 56.cpp51.h樊旭:gchOl.cpp gch02.cpp gch03.cpp gch04.cppgch05.cpp gch06.cpp gch07.cpp gch08.cpp六.编程心得这是我们第一次做这种儿千行的程序,肯定会存在很多的不足之处。下面,我就列举出儿点:首先,我们还有很多小的bug没有解决,虽然这些bug不

42、是特意去做针对性的测试也是很难看出来的。但是我们的程序在功能这个方面确实还存在比较多的漏洞。有的虽然解决起来不难,但是由于牵涉的地方比较多,解决起来比较复杂,比如说要在多个函数里面增加数据。加上时间上的限制,我们也就没有对这些小bug给予重点处理了。其次,是算法上的问题。我们的机场飞机起飞降落算法纯粹是我们两人商量出来的结果,没有借鉴任何现成的控制算法。所以看起来显得有些幼稚,很多的地方都是可以优化的。这种优化可以从两个方面来看。一个方面是算法的实现效果。我们的这个控制算法对各个飞机制还做不到一切尽在掌控之中,有时候偶尔会出现一些“空中事故”。另外一个方面是算法的效率问题,我们觉得这一部分控制

43、算法的效率太低,时间复杂度比较高,应该有很大的优化空间。还有就是程序模块化设计这个方面的问题,我们存在的一个很大的不足就是在很多时候我们编写程序都是走一步算一步,没有一个详细的设计提纲。以致于后面做出来的程序缺乏条理性,很多控制量纠结在一起。虽然后来经过大动干戈的修改在这一方面改进了不少,但是还是有很多的函数达不到较高的复用性,程序的可移植性并不强。通过这10周 的c语言课程设计,我们巩固上学期所学的c语言的基本知识。由于我们在学习c语言的过程中掌握的只是很基本的东西,所以在课程设计过程中遇到了不少的困难.程序要求在图形界面下完成,然而根据以前所学的内容,我们可以说是对图形生成和处理等都一无所

44、知。不仅如此,我们所编的程序多达儿千行,对我们而言,这是一个巨大的工程,它牵涉到C语言编程知识的许多不同领域,所以此项任务困难重重。我们必须通过自学来掌握c语言编程的技巧及软件开发的基本的方法。我们的项目是机场飞机起飞降落及其调度,它涉及到图形的绘制和动画的实现,作为一个可供使用的程序,它必须还要有操作界面,因此程序者需要有界面的图形设计和键盘的应用的相关知识。如此一来,光是学习相关知识就是一个极为繁重的任务。不过,我们是双人开发,对于程序我们进行了分工处理,所以我们只需学习自己任务所需的知识即可,然后再在编程过程中以实际操作为例将自己所学授于队友,这样大大节省了编写程序前的知识储备时间,并且

45、通过知识交流来弥补自己的不足,同时也培养了团队协作精神。在进行编写时所学要学习的虽然只有图形与动画,但是其中数据繁多,且各类数据之间又联系紧密。因此在编写过程中稍有不慎就会发生错误,我们对于程序的调试也往往是在这部分进行。程序的调试过程是很费时间和精力的,有时候程序出现的B U G只是数据的数值或关系没处理好,只要作出相应的调动即可。有时程序出现的B U G却需要添加函数甚至是删除已写好的函数。此外,我们也要感谢我们的老师,课程设计过程中,当我们遇到问题解决起来有困难时,老师们和助教们都耐心的给我们解答,让我们获益匪浅。通过课程设计,我们学到了不少东西,不仅是c语言的知识,方法,技巧,更多的是

46、我们在学习过程中掌握的一些学习的技巧,手段和方法。正如有个学长曾经说过的一句话:“经历了 C语言课程设计以后,你 会 发 现 你 的C语言编程能力以到达一个以前完全不能相比的高度”。课程设计虽然结束了,但是它给我们带来好处是很多的,影响是很远的,我们感觉到,只有认真的完成这样的任务,才会在实践中有所提高,因此,我们应该在以后的学习中更加重视动手能力,学会在动手中发挥自己的想像,与所学的东西结合,学会创新,这个才是我们大学学习的真正目的所在。七.参考资料王 士 元.C高级实用程序设计.北京:清华大学出版社.1 9 9 6周纯杰,刘正林,何顶新等.标准C语言程序及应用.武汉:华中科技大学出版社.2

47、005谭浩强.C语言程序设计.北京:清华大学出版社,2000八.源代码/5 1.H头文件#i n c l u d e#i n c l u d e#i n c l u d e#i n c l u d e#d e f i n e Esc 27t t d e f i n e En t e r 13#d e f i n e bl 11Sd e f i n e u p 72#d e f i n e d o w n 80#d e f i n e L EFT 75#d e f i n e RIGHT 77d e f i n e A L T_F 33#d e f i n e SP A C E 32#d e f

48、 i n e C TRL _H 8#d e f i n e C R 13#d e f i n e i g(g d,g m)i n i t g r ap h(&g d,&g m,*c:TC 30B GI);#d e f i n e bg i n t g d=DETEC T,g m;d e t e c t g r ap h(&g d,&g m);i g(g d,g m);#d e f i n e e g c l o se g r ap h();#d e f i n e g h g e t c h();t t d e f i n e sc (x)se t c o l o r (x);#d e f i

49、 n e st s(a,b,c)se t t e x t st y l e (a,b,c);Sd e f i n e sf s(a,b)se t f i l l st y l e (a,b);#d e f i n e o x y (a,b,s)o u t t e x t x y (a,b,s);#d e f i n e r e t (a,b,n,m)r e c t an g l e (a,b,n,m);t t d e f i n e t bg(i)t e x t bac k g r o u n d(i);#d e f i n e c r c l r sc r O ;f t d e f i n

50、e t c(i)t e x t c o l o r(i);t t d e f i n e w(q,w,e,r)w i n d o w (q,w,e,r);#d e f i n e m t (q,w,e,r,t,y)m o v e t e x t (q,w,e,r,t,y);t t d e f i n e p t (a,s,d,f,g)p u t t e x t (a,s,d,f,g);#define gt(a,s,d,f,g)gettext(a,s,d,f,g);ttdefine tm(i)textmode(i);#define cvp clearviewport();Sdefine sbc(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁