/********************************************
设计并实现一个航班信息查询和检索系统。
要求:对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。
航班信息表的样式如下:航班号   起点站 终点站     班期        起飞时间    到达时间    机型    票价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. CrackMe_001
  2. 网站ui的配色有哪些需要注意的?
  3. 英特尔科再奇:AI战略决定每家企业的未来胜负
  4. linux网络流量实时监控工具之iptraf 【个人比较喜欢用的流量监控软件】
  5. 这届互联网公司月饼:阿里卡哇伊,百度酷炫风,京东乾隆审美……
  6. 解决小键盘灯不亮的方法
  7. 用户列表 html,用户列表.html
  8. php 生成不重复的会员卡号,php生成一个不重复的会员号
  9. 【知识兔】Excel教程与数值或日期相关的8个快捷键,绝对实用,收藏备用
  10. java.lang.IllegalArgumentException: requirement failed: indices should be one-based and in ascending
  11. leetcode电话号码java_【LeetCode(Java) - 379】电话目录管理系统
  12. 玉渊潭赏樱花有感:从无到有写一个jQuery开源插件
  13. 了解Maclean Liu
  14. 倍福--本地电脑配置EtherCAT网卡
  15. 修复计算机命令行,如何用命令提示符修复系统还原_用cmd命令提示符恢复系统的方法...
  16. 【内网渗透】域横向PTHPTKPTT哈希票据传递
  17. vasp测试计算机,科学网—PWSCF 自洽计算、kpoints测试和ecut测试 - 叶小球的博文
  18. SEO是什么意思?为什么要做SEO?
  19. Androidstudio通过无线连接进行调试
  20. nginx的日志放在哪里?

热门文章

  1. 51单片机+SYN6288语音模块源码
  2. MongoDB 数据库(一):MongoDB的介绍与安装
  3. 计算可由time_t数据类型表示的最近时间。如果超出了这一时间将会如何?
  4. 删除MAC系统自带的ABC输入法[亲测]
  5. 如何使用阿里云虚拟主机搭建博客(一)初识篇
  6. 收藏能力升级,支付宝版「小程序桌面」初现!
  7. Comcast:美国电视行业变革分析,在线直播市场前景巨大
  8. 学习笔记:Unity CustomSRP-5-Baked Light
  9. WPS怎么外链网页上的实时数据_什么是外链,如何获取更多的外链?
  10. JavaGUI小结——实验做的QQ登录界面