/********************************************
设计并实现一个航班信息查询和检索系统。
要求:对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。
航班信息表的样式如下:航班号   起点站 终点站     班期        起飞时间    到达时间    机型    票价CA1544    合肥  北京    1.2.4.5      10:55       12:40       733      960MU5341   上海  广州     每日          14:20       16:15       M90      1280CZ3869  重庆  深圳     2.4.6       08:55       10:35       733  1010
其中航班号一项的格式为:前两个大写字母表示航空公司的名称,后4位为航班编号,例如:CA1544,CA表示航空公司的名称,1544为航班编号。
**********************************************/
#include <iostream>
#include <malloc.h>
#include<ctime>
#include <string.h>
#include <stdio.h>
using namespace std;
typedef struct        //定义航班信息结构体类型
{char  number[10];      //航班号char staddress[10];    //起始站char arraddress[10];   //终点站char DATE[10];         //班期char stime[10];        //起飞时间char atime[10];        //到达时间char TYPE[4];          //机型int value;             //票价
} Data_type;typedef struct node  //定义存储航班信息结构体链表
{Data_type *info;struct node *next;
} Node_list;Node_list *L;  //定义存储链表
Data_type *E;  //定义航班信息结构体
/*
用于存储链表的初始化
*/
bool init_N(Node_list **L)
{(*L)=(Node_list *)malloc(sizeof(Node_list));if( (*L)!=NULL ){(*L)->next=NULL;return true;}else{cout<<"malloc failed!\n";return false;}
}/*
航班信息结构体的初始化
*/
bool init_D(Data_type **E)
{(*E)=(Data_type *)malloc(sizeof(Data_type));if((*E)!=NULL)return true;else{cout<<"malloc failed!\n";return false;}
}/*
插入链表存储
*/
bool save_insert(Node_list *L,Data_type *E)
{Node_list *new_node;  //定义一个链表节点init_N(&new_node);    //初始化链表new_node->info=E;     //给节点元素赋值while(L->next != NULL)L=L->next;L->next=new_node;     //将其插入到链表中return true;
}/*
根据航班号排序
*/
void Bubsort_number(Node_list *L)
{Node_list *p,*q;Data_type *tmp;for(p=L->next; p != NULL; p=p->next)for(q=p->next; q != NULL; q=q->next ){if(strcmp(p->info->number,q->info->number) > 0){tmp=p->info;p->info=q->info;q->info=tmp;}}
}/*
根据起飞时间排序(用于按航班日期查询显示函数)
*/
void Bubsort_statime(Node_list *L)
{Node_list *p,*q;Data_type *tmp;for(p=L->next; p != NULL; p=p->next)for(q=p->next; q != NULL; q=q->next ){if(strcmp(p->info->stime,q->info->stime) > 0){tmp=p->info;p->info=q->info;q->info=tmp;}}
}void show_one(Node_list *L)  //封转打印函数,固定打印格式
{printf("%-9s%-10s-->  %-11s%-12s%-6s%-9s%-9s%-8d\n",  L->info->number,L->info->staddress,L->info->arraddress,L->info->DATE,L->info->TYPE,L->info->stime,L->info->atime,L->info->value);
}/*
显示当前链表的所有信息
*/
void show_info(Node_list *L)
{cout<<"航班号    起点站        终点站       班期    机型   起飞时间  到达时间  票价\n";while(L->next != NULL){L=L->next;show_one(L);}
}/*
根据航班号进行查找,并显示:
从链表第一个节点进行查找,如果表中节点的number等于用户输入,则输出此航班信息;否则,继续查找下一个节点,直到链表结束。
*/
void inquire_by_number(Node_list *L, char num[] )
{L=L->next;int flag=0;while(L != NULL){if(strcmp(num,L->info->number) == 0){show_one(L);flag=1;break;}L=L->next;}if( flag == 0)cout<<"对不起!没有此航班!\n";
}/*
根据起飞地点查找,并显示:
从链表第一个节点进行查找,如果表中节点的staddress等于用户输入,则输出此航班信息;否则,继续查找下一个节点,直到链表结束。
*/
void inquire_by_staddress(Node_list *L,char s[])
{int flag=0;L=L->next;while(L != NULL){if(strcmp(s,L->info->staddress) == 0){show_one(L);flag=1;}L=L->next;}if(flag == 0)cout<<"对不起!没有此航班!\n";
}/*
根据降落地点查找,并显示:
从链表第一个节点进行查找,如果表中节点的arraddress等于用户输入,则输出此航班信息;否则,继续查找下一个节点,直到链表结束。
*/
void inquire_by_araddress(Node_list *L,char a[])
{int flag=0;L=L->next;while(L != NULL){if(strcmp(a,L->info->arraddress) ==0){show_one(L);flag=1;}L=L->next;}if( flag == 0 )cout<<"对不起!没有此航班!\n";
}/*
根据航班日期查找,并显示:
从链表第一个节点进行查找,如果表中节点的DATE等于用户输入,则输出此航班信息;否则,继续查找下一个节点,直到链表结束。
*/
void inquire_by_data(Node_list *L,char d[])
{Node_list *N;init_N(&N);L=L->next;int flag = 0;while(L != NULL){if(strcmp(d,L->info->DATE) == 0){show_one(L);flag=1;}L=L->next;}if(flag == 0)cout<<"对不起!没有此航班!\n";
}/*
根据起飞时间查找,并显示:
从链表第一个节点进行查找,如果表中节点的stime等于用户输入,则输出此航班信息;否则,继续查找下一个节点,直到链表结束。
*/
void inquire_by_stime(Node_list *L,char sd[])
{Node_list *N;init_N(&N);L=L->next;int flag = 0;while(L != NULL){if(strcmp(sd,L->info->stime) == 0){show_one(L);flag=1;}L=L->next;}if(flag == 0)cout<<"对不起!没有此航班!\n";
}/*
根据到达时间查找,并显示:
从链表第一个节点进行查找,如果表中节点的atime等于用户输入,则输出此航班信息;否则,继续查找下一个节点,直到链表结束。
*/
void inquire_by_atime(Node_list *L,char ad[])
{Node_list *N;init_N(&N);L=L->next;int flag = 0;while(L != NULL){if(strcmp(ad,L->info->atime) == 0){save_insert(N,L->info);flag=1;}L=L->next;}if(flag == 0)cout<<"对不起!没有此航班!\n";
}/*
删除所选航班号
*/
void delete_by(Node_list *L,char d[])
{Node_list *p,*q;p=q=L;while(p!=NULL){if(strcmp(d,p->info->number)==0){if(L==p)L=p->next;elseq->next=p->next;free(p);break;}else{q=p;p=p->next;}}if(p==NULL)printf("\n\t  查无此航班    \n");
}void inseart_by(Node_list *L)
{E=(Data_type *)malloc(sizeof(Data_type));cout<<"按照航班号、起点站、终点站、班期、起飞时间、到达时间、机型、票价,输入航班信息"<<endl;cin>>E->number>>E->arraddress>>E->staddress>>E->DATE>>E->stime>>E->atime>>E->TYPE>>E->value;save_insert(L,E);
}/*
文件导入链表
*/
void open_file()
{FILE *fp;//文件指针fp=fopen("flight_input.txt","r");E=(Data_type *)malloc(sizeof(Data_type));while(8 ==fscanf(fp,"%s %s %s %s %s %s %s %d",&E->number,E->staddress,E->arraddress,E->DATE,E->TYPE,E->stime,E->atime,&E->value))//读取文件内容,对应结构体各元素{save_insert(L,E);//将其放入链表存储E=(Data_type *)malloc(sizeof(Data_type));//开辟结构体指针}
}/*
欢迎界面
*/
void user_welcome()
{cout<<"*************************************\n";cout<<"$      航班信息查询和检索系统       $\n";cout<<"-------------------------------------\n";cout<<"$         请选择查询方式 :          $\n";cout<<"$          A:所 有 航 班            $\n";cout<<"$          B: 航  班  号            $\n";cout<<"$          C: 起  点  站            $\n";cout<<"$          D: 终  点  站            $\n";cout<<"$          E:  班   期              $\n";cout<<"$          F:起 飞 时 间            $\n";cout<<"$          G:到 达 时 间            $\n";cout<<"$          H:退 出 系 统            $\n";cout<<"-------------------------------------\n";
}/*
业务员登录系统界面
*/
void admin_welcome()
{cout<<"-------------------------------------\n";cout<<"$         请输入操作项目 :         $\n";cout<<"$          1:插 入 航 班            $\n";cout<<"$          2:删 除 航 班            $\n";cout<<"$        3:按航班号排序             $\n";cout<<"$        4:按起飞时间排序           $\n";cout<<"$         5:管理员退出              $\n";user_welcome();
}
int define;
/*
选择管理员或者用户登录
*/
void admin_or_user()
{int ch;cout<<"-------------------------------------\n";cout<<"$         请选择登录方式:          $\n";cout<<"$          1.业务员登录             $\n";cout<<"$          2. 用户登录              $\n";cout<<"-------------------------------------\n";cout<<"请输入您的选择:";cin>>ch;switch (ch){case 1:{admin_welcome();define=1;break;}case 2:{define=0;user_welcome();break;}default:cout<<"没有此选择!"<<endl;}
}void s_welcome()
{cout<<"\n\n\n\t\t\t即将进入航班信息查询系统!";                     //准备开始double start;for (int i = 3; i >= 0; i--){//clock()是C/C++中的计时函数,以毫秒为单位,除以CLOCKS_PER_SEC转化为秒start = (double)clock() / CLOCKS_PER_SEC;                 //得到程序目前为止运行的时间while ((double)clock() / CLOCKS_PER_SEC - start <= 1);    //现在已运行时间-开始时的时间即时间差,表示经过1秒之后if (i > 0){system("cls");                                        //系统中的函数,表示清屏cout<<"\n\n\n\t\t\t\t进入倒计时:"<<i<<endl;            //倒计时}else{system("cls");                                        //系统中的函数,表示清屏admin_or_user();                                            //进入欢迎界面}}
}/*
选择函数
*/
void hello_choose()
{char choice;   //读取用户选择char number[10];char num[10];char s_addr[10];char a_addr[10];char  date[10];char s_time[10];char a_time[10];cout<<"请输入您的选择: ";while(cin>>choice){if('A' == choice){show_info(L);//浏览所有航班信息cout<<"请输入您的选择: ";continue;}if('B' == choice){cout<<"请输入航班号:";cin>>num;inquire_by_number(L,num);//根据航班号查找cout<<"请输入您的选择: ";continue;}if('C' == choice){cout<<"请输入起飞地点:";cin>>s_addr;inquire_by_staddress(L,s_addr);//根据起飞地点查找cout<<"请输入您的选择: ";continue;}if('D' == choice){cout<<"请输入到达地点:";cin>>a_addr;inquire_by_araddress(L,a_addr);//根据降落地点查找并显示cout<<"请输入您的选择: ";continue;}if('E' == choice){cout<<"请输入航班日期:";cin>>date;inquire_by_data(L,date);//根据航班日期浏览,并根据起飞时间排序cout<<"请输入您的选择: ";continue;}if('F' == choice){cout<<"请输入起飞时间:";cin>>date;inquire_by_stime(L,date);//根据航班日期浏览,并根据起飞时间排序cout<<"请输入您的选择: ";continue;}if('G' == choice){cout<<"请输入到达时间:";cin>>date;inquire_by_atime(L,date);//根据航班日期浏览,并根据起飞时间排序cout<<"请输入您的选择: ";continue;}if('H' == choice){cout<<"再见!!\n";exit(1);//退出系统}if('1' == choice){inseart_by(L);cout<<"请输入您的选择: ";continue;}if('2' == choice){cout<<"输入所要删除的航班号:";cin>>number;delete_by(L,number);cout<<"请输入您的选择: ";continue;}if('3' == choice){cout<<"输出按航班号排序后的航班:"<<endl;Bubsort_number(L);show_info(L);//浏览所有航班信息cout<<"请输入您的选择: ";continue;}if('4' == choice){cout<<"输出按起飞时间排序后的航班:"<<endl;Bubsort_statime(L);show_info(L);//浏览所有航班信息cout<<"请输入您的选择: ";continue;}if('5'==choice){admin_or_user();cout<<"请输入您的选择: ";continue;}else{//输入错误提示并返回 欢迎界面cout<<"没有此选择.\n";if(define)admin_welcome();elseuser_welcome();cout<<"请输入您的选择: \n";}}
}/*
main函数
*/
int main()
{init_N(&L);    //初始化链表open_file();   //打开文件Bubsort_number(L);//航班号排序s_welcome();     //进入欢迎界面hello_choose();      //进入选择界面return 0;
}

资源:

运行结果:

C++—航班查询系统相关推荐

  1. 航班编程代码c语言,航班查询系统C语言源程序

    <航班查询系统C语言源程序>由会员分享,可在线阅读,更多相关<航班查询系统C语言源程序(8页珍藏版)>请在人人文库网上搜索. 1.include #include #inclu ...

  2. c语言航班信息查询系统 程序,航班查询系统C语言源程序.doc

    航班查询系统C语言源程序 #include #include #include #define NOD struct plane_list struct plane {char number [10] ...

  3. java 航班_Java实现简单航班查询系统-Go语言中文社区

    #java实现简单航班管理系统 题目要求:声明一个Flight(航班)类,该类包含private域航班号(如:CA1430),起飞时间(如:10:15AM),到达时间(如:2:30PM).为该类声明合 ...

  4. Java实现简单航班查询系统

    #java实现简单航班管理系统 题目要求:声明一个Flight(航班)类,该类包含private域航班号(如:CA1430),起飞时间(如:10:15AM),到达时间(如:2:30PM).为该类声明合 ...

  5. ## 大一java课程设计_航班查询系统(我是小白)

    大一java课程设计_航班查询系统(我是小白) 备注:第一个java程序有借鉴别人的成分,因为忘了在哪个大佬上面借鉴的,所以在此备注,如有侵权,请联系删除,(仅用于学习使用,并未想盈利) 框体介绍 一 ...

  6. 基于Android的航班查询系统的设计与实现

    需求分析是把来自用户的信息加以分析和提炼,在功能和性能上加以描述.它是软件开发过程的初始阶段部分,它的基本任务是理解用户需要什么,确定系统必须完成哪些工作,从而对目标系统提出完整.准确.清晰.具体的要 ...

  7. Java 编写航班查询系统 窗体程序 完整源码

    开发环境 开发语言为Java,开发环境Eclipse或者IDEA都可以.数据库采用:MySQL.运行主程序,或者执行打开JAR文件即可以运行本程序. 系统框架 利用JDK自带的SWING框架开发,需要 ...

  8. Myflight航班查询系统

    1.导入命名空间,并且定义连接对象和命令对象 using System.Data.SqlClient; //定义连接对象 SqlConnection conn = null; //定义命令对象 Sql ...

  9. 简单航班查询系统java_基于jsp的航班信息查询-JavaEE实现航班信息查询 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的航班信息查询, 该项目可用各类java课程设计大作业中, 航班信息查询的系统架构分为前后台两部分, 最终实现在线上 ...

最新文章

  1. hardnet68尝试
  2. 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型
  3. 魔域几点服务器重置,服务器维护后第一轮BOSS时间以及每张地图的BOSS点!
  4. c++制表符_在Linux命令行中将制表符(tab)转换为空格
  5. mysql jsp servlet 中文乱码问题。
  6. 14 exec/fork/wait cycles for Process Management
  7. Centos 6.5 服务器下面配置邮件客户端 发送报警邮件
  8. Firefox4开发计划公布:使浏览器得更快更强
  9. Vc数据库编程基础1
  10. 丢弃法(基于MXNet)
  11. 浅谈人工智能(AI)
  12. Keil MDK5解决error: L6002U: Could not open file …\obj\main.o: No such file or directory
  13. android studio计算机代码,Android Studio实现简易计算器
  14. java excel 字体_java中Excel字体的设置,背景和纹理的操作
  15. MATLAB胸部CT图像中肺部提取,轮廓跟踪技术勾画出肺部轮廓
  16. 分享几个搜图,图标,图片网站
  17. 折纸测珠峰python程序_哪个大神能帮忙用python做一下这个程序,真的万分感谢
  18. 深度技术ghost win8 32位/64位装机旗舰版V2014
  19. 机器学习与公共传播、舆情检测的研究总结
  20. 专业系统维护:CleanMyMac X for mac

热门文章

  1. 好多粉如何统计微信加粉复制次数?
  2. 从购置阿里云学生机到开发部署一个SpringBoot+Vue项目全过程
  3. 【预测模型】基于BP神经网络、LSTM、GRNN实现风电功率预测附matlab代码
  4. ENVI下植被指数模型详解
  5. 是什么引起数据库响应超时?
  6. 基于Python的Open3D库模型数据简单读取测试
  7. 机器学习系列笔记一:Introduction
  8. 机器学习之支持向量机(SVM)学习笔记-Datawhale Task05
  9. 第三周-周测-Rhizomys
  10. 【分治】POJ2083 Fractal