1、C语言程序设计航班管理系统仲恺农业工程学院C语言程序设计报告航班信息管理系统课程名称C语言程序设计姓名XXX院(系)信息科学与技术学院专业班级网络工程XX学号201320XX指导教师XXX仲恺农业工程学院教务处制1需求分析 12系统总框图和功能模块说明 12.1系统总框图 12.2功能模块说明 23系统设计 33.1主要结构体 33.2主要功能函数 33.3关键函数的流程图 44系统调试 55总结 76源程序清单 71需求分析航班信息包括航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号、票价,八项信息。试设计航班信息管理系统,使之能提供以下功能:系统以菜单方式工作航班信息录入功能(航
2、班信息用文件保存)输入航班信息浏览功能输出航班信息查询功能算法(其中查询方式可以按学历查询、按职工号查询等)航班信息排序、筛选功能2系统总框图和功能模块说明2.1系统总框图图1系统总框图2.2功能模块说明输入航班信息模块,完成航班信息的录入。航班信息的录入前,录入系统先完成新建文件,检测文件是否存在的功能。检测完毕,采用循环的输入流程,以检测文件是否终止为循环的判定条件;输入信息时,以检测编号判断输入的信息与文件中的信息是否有冲突,防止输入的信息存在冲突;把航班信息一一输入后,判断其有没有存入文件中。排序航班信息模块,完成航班信息中的价格排序,便于筛选信息结果的查看,排序是利用冒泡排序法,按照
3、价格从高到低编排。查询航班信息模块,根据输入的航班编号,查询航班编号的信息,。其过程中,首先是对输入的信息判断,判断输入的信息无误后再查询。筛选航班信息模块,筛选模板分为四种不同条件的筛选,分别是起点站、到达站、起点时间、到达时间。利用字符串函数strcmp比较输入的筛选条件与文件中字符串是否一致为判断,利用循环结构把筛选条件与有效字符串一一作比较。3系统设计3.1主要结构体航班编号、起飞点、到达点、班期、起飞时间、达到时间、型号、价格structfly intno;/*航班号*/ charstartpointM;/*起飞点*/ charfinalpointM;/*到达点*/ intbanqi
4、;/*班期*/ charstartimeM;/*起飞时机*/ charfinaltimeM;/*到达时间*/ chartipeM;/*型号*/ floatprice;/*价格*/;3.2主要功能函数voidin();/*航班信息输入系统*/voidorder();/*航班价格排序系统*/voidsearch();/*航班信息查询系统*/voidmenu();/*信息展现函数*/voidstartpoint();/*起点站筛选系统*/voidfinalpoint();/*达到站筛选系统*/voidstartime();/*起点时间筛选系统*/voidfinaltime();/*到达时间筛选系统*
5、/3.3关键函数的流程图4系统调试1、航班信息的输入2、输入航班号,对航班信息进行查找3、输入到达站,对航班信息进行筛选5总结在程序的编写中,导致程序出现逻辑错误,我个人经验不足,所以一旦出现错误就添加一些语句,比如添加printf(测试语句|n);在程序中,断定其程序中哪一些地方出现错误,发现其中的错误,修改后再删除掉。由于忘记了函数的调用方法,导致程序show无法调用,查看网上类似的程序,终于发现错误。6源程序清单#include#include#include#include#defineN15#defineM20#defineLENsizeof(structfly)typedefstr
6、uctfly intno;/*航班号*/ charstartpointM; charfinalpointM; intbanqiM; charstartimeM; charfinaltimeM; chartipeM; floatprice;structflyfN;voidin();voidshow(inti);voidorder(int);/*排序*/voidsearch();/*编号查询系统*/voidmenu();voidstartpoint();/*起点站查询系统*/voidfinalpoint();/*达到站查询系统*/voidstartime();/*起点时间查询系统*/voidfin
7、altime();/*到达时间查询系统*/voidmain() intn; menu(); scanf(%d,&n); while(n) switch(n) case1: in(); break; case2: search(); break; case3: startpoint(); break; case4: finalpoint(); break; case5: startime(); break; case6: finaltime(); break; default:break; getch(); menu(); scanf(%d,&n); voidmenu() system(cls)
8、; printf(nnnnn); printf(tt|-航班信息查询系统-|n); printf(tt|0.退出|n); printf(tt|1.录入记录|n); printf(tt|2.航班号查询|n); printf(tt|3.起点站查询|n); printf(tt|4.到达站查询|n); printf(tt|5.起飞时间查询|n); printf(tt|6.到达时间查询|n); printf(tt|-|nn); printf(ttt选择(0-6):_);voidin() inti,m=0; charch2; FILE*fp; if(fp=fopen(data,ab+)=NULL) pri
9、ntf(不能打开文件n); return; while(!feof(fp)/feof()是文件结束检测函数,如果没有结束,返回值是0,结束了是1 if(fread(&fm,LEN,1,fp)=1) m+; fclose(fp); if(m=0) printf(没有找到n); else system(cls); /*system就是调用DOS命令,CLS命令的意思是清除屏幕上所有的文字*/ for(i=0;im;i+) show(i); if(fp=fopen(data,wb)=NULL) printf(不能打开文件n); return; for(i=0;im;i+) fwrite(&fi,LE
10、N,1,fp); printf(是否输入?输入请按Y否则按任意键-); scanf(%s,ch); while(strcmp(ch,Y)=0|strcmp(ch,y)=0) printf(编号-); scanf(%d,&fm.no); for(i=0;im;i+) if(fi.no=fm.no) printf(该记录应经存在,请按任意键继续n); getch(); fclose(fp); return; printf(起点站-); scanf(%s,&fm.startpoint); printf(终点站-); scanf(%s,&fm.finalpoint); printf(班期-); sca
11、nf(%s,&fm.banqi); printf(起飞时间-); scanf(%s,&fm.startime); printf(到达时间-); scanf(%s,&fm.finaltime); printf(飞机型号-); scanf(%s,&fm.tipe); printf(价格-); scanf(%f,&fm.price); printf(是否保存?输入请按Y否则按任意键-); scanf(%s,ch); if(strcmp(ch,Y)=0|strcmp(ch,y)=0) if(fwrite(&fm,LEN,1,fp)!=1) printf(不能保存n); getch(); else pr
12、intf(编号为%d的航班信息已经保存n,fi.no); m+; printf(是否继续,继续请按-Y-,否则按任意键); scanf(%s,ch); fclose(fp); printf(OK);voidsearch()/*编号查询系统*/ FILE*fp; intsnum,i,m=0; charch2; if(fp=fopen(data,ab+)=NULL) printf(不能打开文件n); return; while(!feof(fp) if(fread(&fm,LEN,1,fp)=1); m+; fclose(fp); if(m=0) printf(没有记录); return; pri
13、ntf(请输入编号-); scanf(%d,&snum); for(i=0;im;i+) if(snum=fi.no) printf(已经找到该记录,是否显示?显示请按Y); scanf(%s,ch); if(strcmp(ch,Y)=0|strcmp(ch,y)=0) show(i); break; else printf(没有相关的记录n); return; voidstartpoint()/*起点站查询系统*/ FILE*fp; inti,m=0; charsnumM; if(fp=fopen(data,ab+)=NULL) printf(不能打开文件n); return; while(
14、!feof(fp) if(fread(&fm,LEN,1,fp)=1); m+; fclose(fp); if(m=0) printf(没有记录); return; printf(请输入起点站-); scanf(%s,&snum); for(i=0;im;i+) if(strcmp(fi.startpoint,snum)=0) show(i); continue; else printf(没有相关的记录n); return; voidfinalpoint()/*到达站查询系统*/ FILE*fp; inti,m=0; charsnumM; if(fp=fopen(data,ab+)=NULL)
15、 printf(不能打开文件n); return; while(!feof(fp) if(fread(&fm,LEN,1,fp)=1); m+; fclose(fp); if(m=0) printf(没有记录); return; printf(请输入到达站-); scanf(%s,&snum); for(i=0;im;i+) if(strcmp(fi.finalpoint,snum)=0) show(i); continue; else printf(没有相关的记录n); return; voidstartime()/*起点时间查询系统*/ FILE*fp; inti,m=0; charsnu
16、mM; if(fp=fopen(data,ab+)=NULL) printf(不能打开文件n); return; while(!feof(fp) if(fread(&fm,LEN,1,fp)=1); m+; fclose(fp); if(m=0) printf(没有记录); return; printf(请输入起点时间-); scanf(%s,&snum); for(i=0;im;i+) if(strcmp(fi.startime,snum)=0) show(i); continue; else printf(没有相关的记录n); return; voidfinaltime()/*达到时间查询
17、系统*/ FILE*fp; inti,m=0; charsnumM; if(fp=fopen(data,ab+)=NULL) printf(不能打开文件n); return; while(!feof(fp) if(fread(&fm,LEN,1,fp)=1); m+; fclose(fp); if(m=0) printf(没有记录); return; printf(请输入到达时间-); scanf(%s,&snum); for(i=0;im;i+) if(strcmp(fi.finaltime,snum)=0) show(i); continue; else printf(没有相关的记录n);
18、 return; voidshow(inti) printf(航班编号为%d的航班信息如下:n,fi.no); printf(起点站-%sn,fi.startpoint); printf(终点站-%sn,fi.finalpoint); printf(起飞时间-%sn,fi.startime); printf(到达时间-%sn,fi.finaltime); printf(班期-%sn,fi.banqi); printf(航班型号-%sn,fi.tipe); printf(价格-%5.2fn,fi.price); printf(nnnn);voidorder(inti) intj; floattemp; for(i=0;iN-1;i+) for(j=i+1;jN;j+) if(fi.pricefj.price) temp=fi.price; fi.price=fj.price; fj.price=temp;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1