#include<stdio.h>//标准输入、输出头文件#include<string.h>//包含字符串函数处理头文件#include<process.h>//包含access函数的头文件#define N 99//定义最多的航班数#define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count//宏定义输出格式struct air//定义结构体数组{int num;//定义航班号char start[20];//航班起始站char over[20];//终点站char time[10];//飞行时间int count;//机票数量}s[N];int i,m=0;//定义全局变量char ii[10];void add();//函数声明增加航班信息函数void print();//显示航班信息void search();//查找航班信息void dingpiao();//订票业务void tuipiao();//退票void read();//读取文件void save();//保存文件void output();//输出格式void paixu();//航班排序void chushihua();//系统初始化void build();//建立数据文件void paixu1();//按航班号从小到大排序void paixu2();//从大到小void main()//主函数{int j;chushihua();//系统初始化判断是否存在原始数据文件printf("欢迎使用飞机订票系统\n");//打印出系统主界面do{printf("============================================================= =================== ");printf("1.增加航班信息\n""\t2.浏览航班信息\n""\t\t3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n""\t\t\t4.航班排序(按航班号)\n""\t\t\t\t5.订票业务\n""\to(︶︿︶)o\t\t\t6.退票业务\n""\t\t\t\t\t\t0.退出\n");printf("=========================================================== ===================== ");printf("请在0-6中选择以回车键结束:");scanf("%d",&j);switch(j){case 1: add();//调用增加航班函数break;case 2:print();//调用显示模块break;case 3:search();//调用查找模块break;case 4:paixu();//调用排序函数break;case 5:dingpiao();//调用订票模块break;case 6:tuipiao();//调用退票模块break;case 0://退出系统save();printf("谢谢使用,再见!");break;}}while(j!=0);//判断是否调用其他函数}void chushihua()//定义系统初始化函数{if(access("hangban.dat",0)){build();}elseread();}void build()//定义建立数据文件函数{FILE *fp;//定义文件指针if((fp=fopen("hangban.dat","wb"))==NULL)//打开文件并判定是否出错{printf("创建文件失败! ");//打印出错提示getchar();return;}printf("请依次输入航班信息(以回车键结束):\n");//打印提示信息printf("-------------------------------------------------------------------------- \n");for(i=0;i<N;i++){printf("请输入航班号:");scanf("%d",&s[i].num);//输入航班号printf("请输入起始站:");scanf("%s",s[i].start);//输入起始站printf("请输入终点站:");scanf("%s",s[i].over);//输入终点站printf("请输入时间(星期几):");scanf("%s",s[i].time);//输入时间printf("请输入机票数:");scanf("%d",&s[i].count);//输入机票数fwrite(&s[i],sizeof(struct air),1,fp);m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);if(strcmp(ii,"y")!=0)//判断是否继续添加航班信息{fclose(fp);//关闭文件return;}}}void read()//定义读取文件函数{FILE *fp;if((fp=fopen("hangban.dat","r"))==NULL){printf("创建文件失败! "); getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct air),1,fp);//逐块读取数据i++;m++;//计算存在航班数}m--;fclose(fp);}void save()//定义保存函数{FILE *fp;if((fp=fopen("hangban.dat","wb"))==NULL){printf("创建文件失败! "); getchar();return;}for(i=0;i<m;i++)//逐块保存数据fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}void add()//定义增加航班信息函数{do{printf("请依次输入您要增加的航班信息(以回车键结束):\n");//打印提示信息printf("-------------------------------------------------------------------------- \n"); printf("请输入航班号:");scanf("%d",&s[m].num);//读取航班号printf("请输入起始站:");scanf("%s",s[m].start);//读取起始站printf("请输入终点站:");scanf("%s",s[m].over);//读取终点站printf("请输入时间:");scanf("%s",s[m].time);//读取时间printf("请输入机票数:");scanf("%d",&s[m].count);//读取机票数m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);}while(!strcmp(ii,"y"));//判断是否继续添加}void output()//定义输出格式函数{printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n");//信息标题for(i=0;i<m;i++)printf(PRINT);//打印出信息}void print()//定义显示航班信息函数{printf("\n目前我们有如下航班:\n");output();//调用输出格式函数printf("\n请按回车键返回上层菜单");getchar();getchar();}void search()//定义查询函数{int n;do{printf("\n请输入航班号:");scanf("%d",&n);//输入查询的航班号for(i=0;i<m;i++){if(s[i].num==n)//按航班号判定输出条件{printf("\n您所查找的航班信息为:\n ");printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n");printf(PRINT);//显示信息printf("\n查询完毕,按回车键继续");getchar();getchar();return;}}printf("\n对不起,没有您需要的信息!\n ");printf("是否重新查找?请键入y或n以回车键结束");scanf("%s",ii);}while(!strcmp(ii,"y"));//判定是否重新查找}void dingpiao()//定义订票业务函数{int n;char a[10]="y";do{search();//调用查询模块if(!strcmp(ii,"n")){printf("对不起!没有找到您所需要的航班,所以不能订票。