题目:飞机航班信息系统功能:能够实现航班信息的查询、修改、退票等操作具体要求:1)界面简洁美观。
2)查询航班信息的至少两种方式:1、按航班号查询2、按照航线查询3)用户订票或者退票之后,与之对应的相关航班信息要跟着改变。
4)当没有乘客要乘坐的航班时,系统能够智能提示用户的其他路线选择。
具体的代码实现:#include"stdio.h"#include"stdlib.h"#include<string.h> //包含字符串函数处理头文件#define N 50#define M 50struct air//定义结构体数组{char number[10];char start[10];char end[10];char time1[8];char time2[8];int price;int count;int num;}s[N];int m;struct{char name[20];char ID[7];int t;int co;}c[M];void save()//保存模块程序{ int i;FILE *fp;//定义文件指针if((fp=fopen("info.txt","wb"))==0)//打开文件并判断是否出错{printf("创建文件失败!\n");//打印出错提示exit (0);}for(i=0;i<m;i++)if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错printf("向文件输入数据失败!\n\n");fclose(fp);//关闭文件}void read()//从文件读取信息模块{int i;FILE *fp;//定义文件指针if((fp=fopen("info.txt","rb"))==0)//打开文件,并判断是否出错{printf("出错,请检查文件是否存在\n");//打印出错提示exit (0);}for(i=0;i<m;i++){fread(&s[i],sizeof(struct air),1,fp);//从文件中读取信息}fclose(fp);//关闭文件}void menu(){printf(" ★---您好,欢迎进入中国民航管理系统!---★\n");printf("============================================================\ n");printf(" -------- ☆ 1.输入航班信息☆-------- \n");printf(" -------- ☆ 2.浏览航班信息☆-------- \n");printf(" -------- ☆ 3.修改航班信息☆-------- \n");printf(" -------- ☆ 4.查找航班信息☆-------- \n");printf(" -------- ☆ 5.删除航班信息☆-------- \n");printf(" -------- ☆ 6.订票信息☆-------- \n");printf(" -------- ☆ 7.退票信息☆-------- \n");printf(" -------- ☆ 0.退出☆-------- \n");printf("============================================================\ n");}void Input(){int i;printf("你需要输入多少个航班信息?\n");scanf("%d",&m);printf("请依次输入航班信息:\n") ;printf("航班号起点站终点站起飞时间抵达时间票价折扣总票数\n");for(i=0;i<m;i++){scanf("%s",s[i].number); //读取航班号scanf("%s",s[i].start);//读取起始站scanf("%s",s[i].end);//读取终点站scanf("%s",s[i].time1);//读取时间scanf("%s",s[i].time2);scanf("%d",&s[i].price);scanf("%d",&s[i].count);//读取机票数scanf("%d",&s[i].num);}save();printf("输入后的航班信息如下\n");read();printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数\n"); for(i=0;i<m;i++){printf("%3s ",s[i].number);printf("%8s ",s[i].start);printf(" %8s",s[i].end);printf(" %8s ",s[i].time1);printf("%8s ",s[i].time2);printf("%8d",s[i].price);printf("%7d折",s[i].count);printf("%8d",s[i].num);printf("\n");}}void Display(int m){ int i;read();printf("*********************** 【航班信息】**********************************\n");printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数\n"); printf("************************************************************************* *\n");for(i=0;i<m;i++){printf("%3s ",s[i].number);printf("%8s ",s[i].start);printf("%8s",s[i].end);printf("%8s ",s[i].time1);printf("%8s ",s[i].time2);printf("%8d",s[i].price);printf("%8d",s[i].count);printf("%8d",s[i].num);printf("\n");}printf("********************************************************************* *****\n");}void Print(int i){printf("%-6s %8s %8s %8s %8s %6d %6d %6d \n",s[i].number,s[i].start,s[i].end,s[i].time1,s[i].time2,s[i].price,s[i].count,s[i].num);printf("--------------------------------------------------------------------\n");}void search()//查询模块{char name1[10];char name2[10];char code[10];int i,k;read();printf("请选择查找方式:\n");//打印查询方式菜单printf("1.按航班号查找\n");printf("2.按航线查找\n");printf("0.返回\n");printf("请在0-2中选择:\n");scanf("%d",&k);//读取查找方式if(k>0){switch(k){case 1: printf("请输入航班号:\n");scanf("%s",code);break;case 2: printf("请输入起始站名称:\n");scanf("%s",name1);//读取起始站printf("请输入终点站名称:\n");scanf("%s",name2);break;}}read();//调用读取函数for(i=0;i<m;i++){ if(strcmp(s[i].number,code)==0){ printf("查找航班信息成功");Print(i);break;}if(strcmp(s[i].start,name1)==0&&strcmp(s[i].end,name2)==0)//按终点站起始站判断输出条件{ printf("查找航班信息成功!\n");Print(i);break;}else if(strcmp(s[i].start,name1)==0||strcmp(s[i].end,name2)==0){ printf("查找信息失败!没有您要查询的航线,您还可以考虑乘坐以下航班\n");Print(i);}}}void Modify() //修改模块{struct //定义结构体{char ch[10];char name1[10];char name2[10];char time1[8];char time2[8];int price;int count;int num;}mo;char a;int i,n;read();//调用读取模块//Display(m);do{printf("请选择修改方式:\n");printf("*1,按航班号修改:\n");printf("*2,按航线修改: \n");printf("请选择1或2,按回车键确认:\n");scanf("%d",&n);//读取修改方式switch(n){case 1:printf("请输入航班号:\n");scanf("%s",mo.ch);//读取航班号break;case 2:printf("请输入起始站:\n");scanf("%s",1);//读取起始站printf("请输入终点站:\n");scanf("%s",2);//读取终点站break;}for(i=0;i<m;i++){if(strcmp(s[i].start,1)==0&&strcmp(s[i].end,2)==0)//判断输出条件{Print(i);break;}if(strcmp(s[i].number,mo.ch)==0)//判断输出条件{Print(i);break;}}printf("请输入新航班号、起始站、终点站、起飞时间、抵达时间、价格、折扣、机票数:\n"); scanf("%s",mo.ch); //读取航班号scanf("%s",1);//读取起始站scanf("%s",2);//读取终点站scanf("%s",mo.time1);//读取时间scanf("%s",mo.time2);scanf("%d",&mo.price);scanf("%d",&mo.count);//读取机票数scanf("%d",&mo.num);strcpy(s[i].number,mo.ch);strcpy(s[i].start,1);//替换其始站strcpy(s[i].end,2);//替换终点站strcpy(s[i].time1,mo.time1);//替换时间strcpy(s[i].time2,mo.time2);s[i].price=mo.price;s[i].count=mo.count;//替换机票数s[i].num=mo.num;save();//调用保存模块printf("修改信息成功!\n");read();printf("修改后的航班信息为\n");printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数\n");for(i=0;i<m;i++)Print(i);printf("是否继续?请键入Y或N以回车键结束:\n");scanf(" %c",&a);}while(a=='Y'); //判断结束}void Book() //实现用户订票功能{ char ch[10];int d,i=0,t;Display(m);printf("请输入您要订的航班号码\n");scanf("%s",ch);while(i<m&&(strcmp(s[i].number,ch)!=0))i++;if(i>m){printf("没有找到您所要订的航班!请重新输入\n");scanf("%s",ch);}else if(strcmp(s[i].number,ch)==0)t=i;printf("请输入你要订的票数\n");scanf("%d",&d);if(d<0){printf("请输入有效的机票数!\n");//判断机票数是否出错scanf("%d",&d);}H:i=0;do{if(s[i].num!=0&&s[i].num>=d)//判断是否出错{ s[i].num=s[i].num-d;c[i].t=d;c[i].co=t;printf("请输入您的姓名:");scanf("%s",c[i].name);printf("请输入您的证件号码(6位数字)\n");scanf("%s",c[i].ID);system("cls");//save();//调用保存函数printf("订票成功!\n\n");break;}if(s[i].count<d)//判断是否出错{printf("对不起,您所订的航班剩余机票不够,请重新输入机票数量:\n");scanf("%d",&d);goto H;}i++;}while(i<m);//read();printf("下面是已订机票的顾客的相关信息:\n");printf("--------------------------------------------------------------------\n");printf("姓名证件号码订票数量订单编号\n");printf("--------------------------------------------------------------------\n");printf("%-6s %6s %6d %6d\n",c[i].name,c[i].ID,c[i].t,c[i].co);Print(c[i].co);}void Back()//退票模块{char p[10];int n,i=0;read();//调用查询模块printf("请输入您要退订的航班号\n");scanf("%s",p);while(i<m&&strcmp(s[i].number,p)!=0)i++;if(i<m){printf("请输入您要退的机票数目:\n");scanf("%d",&n);//输入所退票数}if(n<0) //判断票数是否有效{printf("请输入有效的机票数:");scanf("%d",&n);}s[i].num=s[i].num+n;printf("退票成功!\n");//save(); //调用保存模块}void Delet(int &m)//删除模块{char a;char city1[20],city2[20],no[10];int k,i,j;read();do{printf("请选择删除以方式回车键结束:\n");//打印删除方式菜单printf("*1.按航班号删除\n" );printf("*2.按航线删除\n" );printf("*0.返回\n" );printf("请输入您的选项(0-2):\n");scanf("%d",&k);//读取删除方式switch(k){case 1: printf("请输入您要删除的航班号:\n");scanf("%s",no);//读取航班号for(i=0;i<m;i++)if(strcmp(s[i].number,no)==0){ for(j=i;j<m;j++)s[j]=s[j+1];m--;save();//调用读取函数printf("删除信息成功,剩余航班信息如下\n");read();printf("************************************************************************* *\n");printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数(张)\n");printf("************************************************************************* *\n");for(i=0;i<m;i++)Print(i);printf("**************************************************************************\n");}break;//跳出循环case 2: printf("请输入要删除的航班起始站名称:\n");scanf("%s",city1);//读取起始站printf("请输入要删除的航班终点站名称:\n");scanf("%s",city2);//读取终点站for(i=0;i<m;i++)if(strcmp(s[i].start,city1)==0&&strcmp(s[i].end,city2)==0){for(j=i;j<m;j++)s[j]=s[j+1];m--;save();//调用读取函数printf("删除信息成功,剩余航班信息如下\n");read();printf("********************************************************************* *****\n");printf("|航班号| 起点站| 终点站| 起飞时间| 抵达时间| 票价| 折扣| 剩余票数(张)\n");printf("************************************************************************* *\n");for(i=0;i<m;i++)Print(i);printf("********************************************************************* *****\n");break;}break;//跳出循环case 0:break;}printf("是否继续删除?(Y or N):\n");scanf(" %c",&a);}while(a=='Y');}void main(){int j;menu();printf("请在0-7中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1:system("cls");Input();//调用输入模块break;case 2:system("cls");Display(m);//调用打印模块break;case 3:system("cls");Modify();//调用修改模块break;case 4:system("cls");search();//调用查找模块break;case 5:Delet(m); //调用删除模块break;case 6:system("cls");Book();//调用订票模块break;case 7:system("cls");Back();//调用退票模块break;case 0: break;}}11。