飞机订票系统(限1 人完成)

任务:通过此系统可以实现如下功能:
1)录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
2)查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
3)订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班;
4)退票: 可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)修改航班信息: 当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
using namespace std;typedef struct FLIGHT   //航班信息
{char number[5];  //飞机编号char CityDeparture[10]; //起飞城市char CityArrival[10]; //抵达城市char TimeDeparture[10];  //起飞时间char TimeArrival[10]; //抵达时间int price;          //价格double discount; //折扣int vacancy;  //空位
} Flight;typedef struct INDENT  //订单信息
{char number[15]; //订单编号char name[10];  //姓名char CertificateNumber[30]; //证件号码Flight Flight; //航班信息
} Indent;int num_ind=1;
void InputFlight() //录入航班信息
{Flight a;FILE *fp;fp = fopen("flight.txt", "a"); //打开航班信息文件if(fp == NULL)printf("fail to open the file! \n");//提醒用户输入printf("格式:编号 起飞城市 抵达城市 起飞时间 抵达时间 价格 折扣 空位。\n");printf("如:025 北京 上海 09:45 11:30 487 3.5 80\n");printf("请输入你要录入的航班信息:\n");scanf("%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy);fprintf(fp,"%3s%6s%6s%8s%8s%5d%5.1lf%4d\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);printf("\n航班信息:%s %s %s %s %s %4d %.1lf %2d  录入成功\n\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);fclose(fp);
}void query()//查询航班信息
{Flight a;FILE *fp;int n,ok=1;fp = fopen("flight.txt", "r");//打开航班信息文件if(fp == NULL)printf("fail to open the file! \n");printf("--------------------------------\n");//用户选择查找方式printf("1.输入航班编号查询航班信息\n");printf("2.输入起飞抵达城市查询航班信息\n");printf("--------------------------------\n");printf("\n请输入你选择的操作:");scanf("%d",&n);if(n==1){char number[5];printf("请输入你要查询的航班编号:");scanf("%s",number);while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy)){if(!strcmp(a.number,number)){ok=0;break;}}if(ok){printf("\n没有查询到符合要求的航班。\n\n");}else{printf("\n查询成功!航班信息如下:\n");printf("编号 起飞城市 抵达城市 起飞时间 抵达时间  售价   折扣  余票\n");printf("%4s %6s %8s %9s %8s %6d %6.1lf %4d\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);}}else if(n==2){char city_de[20],city_ar[20];printf("请输入起飞城市:");scanf("%s",city_de);printf("请输入抵达城市:");scanf("%s",city_ar);while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy)){if(!strcmp(a.CityArrival,city_ar)&&!strcasecmp(a.CityDeparture,city_de)){if(ok){ok=0;printf("\n查询成功!航班信息如下:\n");printf("编号 起飞城市 抵达城市 起飞时间 抵达时间  售价   折扣  余票\n");}printf("%4s %6s %8s %9s %8s %6d %6.1lf %4d\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);}}if(ok){printf("\n没有查询到符合要求的航班。\n\n");}else printf("\n");}fclose(fp);
}void BookTicket()  //订票
{time_t timep;struct tm *p;time (&timep);p=gmtime(&timep);char numb[20];Flight a,s[50];Indent indent;int ok=1,cnt=0;char city_de[20],city_ar[20],number[5];FILE *fp,*fpp;fp = fopen("flight.txt", "r"); //以追加的方式打开订票信息文件if(fp == NULL)printf("fail to open the file! \n");//用户输入起飞抵达城市printf("请输入起飞城市:");scanf("%s",city_de);printf("请输入抵达城市:");scanf("%s",city_ar);//查询航班信息while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy)){if(!strcmp(a.CityArrival,city_ar)&&!strcasecmp(a.CityDeparture,city_de)){if(ok){ok=0;printf("\n查询成功!航班信息如下:\n");printf("编号 起飞城市 抵达城市 起飞时间 抵达时间  售价   折扣  余票\n");}s[cnt++]=a;printf("%4s %6s %8s %9s %8s %6d %6.1lf %4d\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);}}if(ok) //没有航班提醒用户并退出{printf("\n没有查询到符合要求的航班。\n\n");fclose(fp);return ;}//用户选择要购买的航班printf("请选择你要购买的航班编号:");scanf("%s",number);for(int i=0; i<cnt; i++){if(!strcmp(s[i].number,number)){if(s[i].vacancy==0){printf("\n该航班票以售空,请选择其他航班。\n\n");for(int j=0; j<cnt; j++){if(s[j].vacancy!=0){printf("编号:%s %s->%s  %s->%s 售价:%d人民币 折扣:%.1lf折 余票:%d\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);}}}else{printf("请输入你的身份信息,姓名 证件号码:");scanf("%s %s",indent.name,indent.CertificateNumber);Indent tt;memset(tt.name,0,sizeof(tt.name));fpp=fopen("indent.txt","r");num_ind=0;while(EOF!=fscanf(fpp,"%d %s %s %s %s %s %s %s",&num_ind,tt.Flight.number,tt.Flight.CityDeparture,tt.Flight.CityArrival,tt.Flight.TimeDeparture,tt.Flight.TimeArrival,tt.name,tt.CertificateNumber));fclose(fpp);int m,d;m=1+p->tm_mon;d=p->tm_mday;if(num_ind/10000==m*100+d){num_ind%=10000;num_ind++;}else num_ind=1;indent.number[0]=m/10+48;indent.number[1]=m%10+48;indent.number[2]=d/10+48;indent.number[3]=d%10+48;indent.number[4]=num_ind/1000+48;indent.number[5]=num_ind/100%10+48;indent.number[6]=num_ind/10%10+48;indent.number[7]=num_ind++%10+48;indent.number[8]=0;indent.Flight=s[i];fp = fopen("flight.txt", "r+");if(fp == NULL)printf("fail to open the file! \n");while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy)){if(strcmp(s[i].number,a.number)==0){fseek(fp,-2,SEEK_CUR);fprintf(fp,"%02d",a.vacancy-1);fseek(fp,-2,SEEK_CUR);fprintf(fp,"%02d",a.vacancy-1);break;}}}break;}}fclose(fp);fp = fopen("indent.txt", "a"); //以追加的方式打开订票信息文件if(fp == NULL)printf("fail to open the file! \n");printf("-------------------------------------------\n\n");printf("订票成功!\n");printf("订单编号:%s\n航班:%s %s->%s  %s->%s\n姓名:%s 证件号码:%s\n",indent.number,indent.Flight.number,indent.Flight.CityDeparture,indent.Flight.CityArrival,indent.Flight.TimeDeparture,indent.Flight.TimeArrival,indent.name,indent.CertificateNumber);printf("\n-------------------------------------------\n");fprintf(fp,"%s %s %s %s %s %s %10s %20s\n",indent.number,indent.Flight.number,indent.Flight.CityDeparture,indent.Flight.CityArrival,indent.Flight.TimeDeparture,indent.Flight.TimeArrival,indent.name,indent.CertificateNumber);fclose(fp);
}
void RefundTicket()  //退票
{FILE *fp,*f;int ok=1;fp = fopen("indent.txt", "r");f=fopen("a.txt","w");if(fp == NULL||f==NULL)printf("fail to open the file! \n");char num[20];Indent a;Flight b;printf("请输入你要退的机票编号:");scanf("%s",num);//标记while(EOF!=fscanf(fp,"%s %s %s %s %s %s %s %s",a.number,a.Flight.number,a.Flight.CityDeparture,a.Flight.CityArrival,a.Flight.TimeDeparture,a.Flight.TimeArrival,a.name,a.CertificateNumber)){if(strcmp(num,a.number)==0){ok=0;continue;}else fprintf(f,"%s %s %s %s %s %s %10s %20s\n",a.number,a.Flight.number,a.Flight.CityDeparture,a.Flight.CityArrival,a.Flight.TimeDeparture,a.Flight.TimeArrival,a.name,a.CertificateNumber);}if(ok){printf("未查询到此订单!\n");fclose(fp);fclose(f);return ;}elseprintf("\n退票成功!\n\n");fclose(fp);fclose(f);remove("indent.txt");remove("indent.txt");rename("a.txt","indent.txt");rename("a.txt","indent.txt");fp = fopen("flight.txt", "r+");if(fp == NULL)printf("fail to open the file! \n");while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",b.number,b.CityDeparture,b.CityArrival,b.TimeDeparture,b.TimeArrival,&b.price,&b.discount,&b.vacancy)){if(strcmp(a.Flight.number,b.number)==0){fseek(fp,-2,SEEK_CUR);fprintf(fp,"%02d",b.vacancy+1);fseek(fp,-2,SEEK_CUR);fprintf(fp,"%02d",b.vacancy+1);break;}}fclose(fp);
}void ModifyFlight() //修改航班信息
{FILE *fp,*f;int n;fp=fopen("flight.txt","r");f=fopen("a.txt","w");if(fp == NULL||f==NULL)printf("fail to open the file! \n");char num[10];Flight a;printf("请选择你要进行的操作,删除(1)/修改(2):");scanf("%d",&n);printf("请输入你要修改的航班编号:");scanf("%s",num);if(n==2){while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy)){if(strcmp(a.number,num)==0){printf("\n当前航班信息为:\n编号:%s %s->%s  %s->%s 售价:%d人民币 折扣:%.1lf折 余票:%d\n\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);printf("格式:编号 起飞城市 抵达城市 起飞时间 抵达时间 价格 折扣 空位。\n");printf("如:025 北京 上海 09:45 11:30 487 3.5 80\n");printf("请输入更改后的航班信息:");scanf("%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy);fseek(fp,-45,SEEK_CUR);fprintf(fp,"%3s%6s%6s%8s%8s%5d%5.1lf%4d\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);// fseek(fp,-45,SEEK_CUR);//fprintf(fp,"%3s%6s%6s%8s%8s%5d%5.1lf%4d\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);printf("\n修改成功!\n");printf("航班信息已修改为:编号:%s %s->%s  %s->%s 售价:%d人民币 折扣:%.1lf折 余票:%d\n\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);break;}}}else if(n==1){int ok;while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy)){if(strcmp(a.number,num)==0){ok=0;continue;}fprintf(f,"%3s%6s%6s%8s%8s%5d%5.1lf%4d\n",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);}if(ok){printf("\n没有找到此航班!\n\n");}elseprintf("\n删除成功!\n\n");fclose(fp);fclose(f);remove("flight.txt");rename("a.txt","flight.txt");return ;}fclose(fp);fclose(f);
}
void query_d() //查询订单信息
{char name[20],zj[20];FILE *fp;int ok=1;Indent a;fp = fopen("indent.txt", "r");if(fp == NULL)printf("fail to open the file! \n");printf("请输入你的姓名:");scanf("%s",name);printf("请输入你的证件号:");scanf("%s",zj);while(EOF!=fscanf(fp,"%s %s %s %s %s %s %s %s",a.number,a.Flight.number,a.Flight.CityDeparture,a.Flight.CityArrival,a.Flight.TimeDeparture,a.Flight.TimeArrival,a.name,a.CertificateNumber)){if(!strcmp(name,a.name)&&!strcmp(zj,a.CertificateNumber)){if(ok){printf("\n查询成功!\n");ok=0;printf("订单编号 飞机编号 起飞城市 抵达城市 起飞时间 抵达时间 姓名   证件号\n");}printf("%s %6s %7s %8s %8s %9s %5s %9s\n",a.number,a.Flight.number,a.Flight.CityDeparture,a.Flight.CityArrival,a.Flight.TimeDeparture,a.Flight.TimeArrival,a.name,a.CertificateNumber);}}if(ok){printf("\n查询无果!\n\n");}
}
int main()
{int n;while(1){printf("|----------------欢迎使用双A飞机订票系统------------|\n");printf("|         /\\         1.录入航班信息        /\\       |\n");printf("|        /  \\        2.查询航班信息       /  \\      |\n");printf("|       /    \\       3.订票              /    \\     |\n");printf("|      /______\\      4.查询订单         /______\\    |\n");printf("|     /        \\     5.退票            /        \\   |\n");printf("|    /          \\    6.修改航班信息   /          \\  |\n");printf("|   /            \\   7.退出          /            \\ |\n");printf("|---------------------------------------------------|\n");printf("\n请输入你选择的操作:");scanf("%d",&n);switch(n){case 1:InputFlight();break;case 2:query();break;case 3:BookTicket();break;case 4:query_d();break;case 5:RefundTicket();break;case 6:ModifyFlight();break;case 7:return 0;}}return 0;
}

数据结构实训——飞机订票系统相关推荐

  1. 飞机订票系统 python实现(大二上数据结构课设)

    说明: 本博客是从课设报告中截取的重要部分.这个飞机订票系统是本人大二上的数据结构课设,功能相对完善,界面相对美观.图形界面,本来想用Qt5(python中一个图形界面的类库,风格偏向于win10)去 ...

  2. c语言飞机订票信息查询,C语言飞机订票系统

    <C语言飞机订票系统>由会员分享,可在线阅读,更多相关<C语言飞机订票系统(11页珍藏版)>请在人人文库网上搜索. 1.课程设计课程:数据结构专业班级:XX软件工程XX班姓名: ...

  3. 飞机订票系统c语言大作业,C语言知识学习飞机订票系统

    C语言知识学习飞机订票系统 课程设计 课程:数据结构 专业班级:xx软件工程 xx班 姓名:xx 学号:xxx 姓名:xxx 学号:xxx 设计时间:xxx 指导老师:xxx 课程设计题:飞机订票系统 ...

  4. Java版飞机订票系统

    数据结构课程设计题目:          [飞机订票系统]            通过此系统可以实现如下功能: 录入:可以录入航班情况(数据存储在一个数据文件中,数据结构和具体数据自定) 查询:可以查 ...

  5. 课程设计---飞机订票系统

    1. 题目 本课程设计的题目为:飞机订票系统. 2. 项目描述 基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票 ...

  6. 飞机订票系统(C语言版)

    目录 飞机订票系统 一.问题描述 二.功能要求 三.算法提示 四.测试数据 五.其它 六.代码段                                          飞机订票系统    ...

  7. 数据结构课设航班订票系统(C语言版)

    数据结构课设航班订票系统(C语言版) 课设要求 (1) 航班管理.每条航线设计出合理的信息,包括:起点和终点站名,航班号,成员额定,飞行周期.飞机型号.余票量.航班票价等 (2) 客户管理.订票的客户 ...

  8. C/C++飞机订票系统

    C/C++飞机订票系统 设计一个飞机订票系统,通过此系统可以实现如下功能: (1) 录入:可以录入航班信息(具体内容自定); (2) 查询:可以查询某个航线的情况; (3) 订票:可以订票,如果该航班 ...

  9. web类协议脚本-飞机订票系统示例

    以下是LR自带的飞机订票系统的Demo,希望能帮助大家. Action() {int iRand;int iTmp;char *strTmpA;char *strTmpB;char *strTmpC; ...

最新文章

  1. mac安全与隐私只有两个选项,少了一个任何来源
  2. 论文浅尝 | 基于用户反馈的交互式自然语言回答系统提升机制
  3. 【转】用VC2008编译最新SVN版本OpenCV源代码
  4. 是时候开始好好考虑自己的职业定位了
  5. 【采集读写】基于matlab语音采集与读写【含Matlab源码 538期】
  6. U盘存储设备有回收站吗及如何快速恢复u盘数据
  7. 360看在线视频加速
  8. Android Widget 小部件(一) 简单实现
  9. java给文件777权限_Linux常用命令:chmod修改文件权限 777和755分别是什么意思?
  10. STM32 VCP PC端安装驱动失败的问题解决
  11. 全球疫苗接种状况数据分析
  12. RTX4060参数 RTX4060功耗 RTX4060 显卡性能
  13. 以前flyback的osdiy
  14. 安东尼罗宾--激发你的无限潜能[连载]--19 20章
  15. 如有需要跟我学习 触摸精灵软件的朋友请加我QQ 811037998 备注来源 CSDN
  16. 韩国外交部:官网因萨德间歇性遭来自中国黑客攻击
  17. CVPR2020:Deep Unfolding Network for Image Super-Resolution解读
  18. disp()函数的用法
  19. 数据分享|中国各省、各市、各区县分年、分月、逐日平均气温数据(2000年~2019年)
  20. 云计算 | 中国信通院《2022 云计算白皮书》阅读、理解与总结

热门文章

  1. 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数
  2. httpd的安装配置
  3. chrome浏览器主页被hao123劫持、篡改了怎么办
  4. BUUCTF Crypto Rabbit
  5. c语言pn,C++_C语言实现的PNPoly算法代码例子,写C语言的实验用到的一个算法 - phpStudy...
  6. Revit插件推动建筑行业BIM“正向设计”发展
  7. Linux中,root安装了jdk,其他用户组用户无法使用的问题解决
  8. 【Linux】死锁的产生
  9. 1058 A+B in Hogwarts (20 分)
  10. php.ini 配置引发的问题