一、概要设计

构建一个结构体,用于存放单个航班信息表,其中存储航班号、起点站、终点站、起飞时间、到达时间、飞机型号和票价;再在外部嵌套一个结构体,内含一个数组,用于存放总航班信息表。

初始化函数利用循环体,将航班信息存入每个单个航班信息表中。若输入与规定类型不符,则报错,并返回后重新输入。

展示函数利用循环体,将已存入的所有航班信息输出。

六个顺序查找函数分别用于按起点站、终点站、起飞时间、到达时间、飞机型号、票价查找航班,并将查找到的航班进行输出。

排序函数将航班信息按航班号进行排序。

折半查找函数内含排序函数,先将航班信息按航班号进行排序,再利用折半查找找到用户输入的航班号,最后输出航班号对应航班信息。

总查找函数按照输入的序号,来决定调用七个查找函数中的哪一个,并输入需要查找的对象。若未找到相应航班信息,则退出,并输出“无法找到该航班!”

主函数中先构建结构体,并调用初始化函数,随后进入循环函数,即进入主程序,由判断函数决定进入展示还是查询系统,并通过用户输入来决定进入的程序。

二、详细设计和编码

struct FlyNode为单个航班信息表,其中包含 string num,string depart_station,string arrive_station,string depart_time,string arrive_time,string model,int price,分别为航班号、起点站、终点站、起飞时间、到达时间、飞机型号和票价。

FlyList用于存放总航班信息表,其中包含FlyNode类型的数组。

void create(FlyList& list)用于初始化总航班信息表,利用循环结构分别将每条航班信息的航班号、起点站、终点站、起飞时间、到达时间、飞机型号和票价输入。若票价为NULL或其余六项存在空字符串,则报错,清空cin缓存后返回,重新输入;反之则赋值到FlyNode中的各项中。

其余函数:

void show(FlyList& list)

void sort(FlyList& list, int n)

void search_depart_station(FlyList list, string k)

void search_arrive_station(FlyList list, string k)

void search_depart_time(FlyList list, string k)

void search_arrive_time(FlyList list, string k)

void search_model(FlyList list, string k)

void search_price(FlyList list, int k)

void search_num(FlyList list, string k)

void Search(FlyList list, int key)

三、主要代码

void sort(FlyList& list, int n)                   //将航空信息按航班号排序
{int i = n - 1;                                //冒泡排序FlyNode temp;for (int i = 0; i < MaxSize - 1; i++)for (int j = 0; j < MaxSize - 1 - i; j++)if (list.sl[j].num.compare(list.sl[j + 1].num) > 0)               //航班号从小到大排序,若前项大于后项,则交换整个FlyNode{temp = list.sl[j];list.sl[j] = list.sl[j + 1];list.sl[j + 1] = temp;}
}void search_depart_station(FlyList list, string k)                       //起点站_顺序查找
{int j = 0;cout << "航班号\t起点站\t终点站\t起飞时间\t到达时间\t飞机型号\t票价" << endl;for (int i = MaxSize - 1; i >= 0; i--){if (k == list.sl[i].depart_station){j++;cout << list.sl[i].num << "\t" << list.sl[i].depart_station << "\t" << list.sl[i].arrive_station << "\t" << list.sl[i].depart_time << "\t" << list.sl[i].arrive_time << "\t" << list.sl[i].model << "        " << list.sl[i].price << endl;}}if (j == 0)cout << "无法找到该航班!" << endl;
}void search_num(FlyList list, string k)                       //航班号_折半查找
{int low = 0, high = MaxSize - 1, j = 0;cout << "航班号\t起点站\t终点站\t起飞时间\t到达时间\t飞机型号\t票价" << endl;while (low <= high){int mid = (low + high) / 2;if (k == list.sl[mid].num){j++;cout << list.sl[mid].num << "\t" << list.sl[mid].depart_station << "\t" << list.sl[mid].arrive_station << "\t" << list.sl[mid].depart_time << "\t" << list.sl[mid].arrive_time << "\t" << list.sl[mid].model << "        " << list.sl[mid].price << endl;break;}else if (k > list.sl[mid].num)low = mid + 1;else high = mid - 1;}if (j == 0)cout << "无法找到该航班!" << endl;
}

四、调试分析及运行结果

算法与数据结构——航班信息的查询与检索相关推荐

  1. 数据结构编程回顾(七)航班信息的查询与检索

    题目七:航班信息的查询与检索 设计要求:对飞机航班信息进行排序和查找.可按航班号. 起点站.终点站.起飞时间及到达时间等信息进行查询. 每个航班记录包括八项:航班号.起点站.终点站.航班期. 起飞时间 ...

  2. 基于C语言的航班信息的查询与检索,航班信息的查询和检索.

    题目:航班信息的查询与检索 设计一个实用的航班信息查询和检索系统,要求能对飞机航班信息进行排序和查询.可按航班的航班号.起点站.到达站.起飞时间以及到达时间等信息进行查询. 一. 模型分析 当今乘飞机 ...

  3. 航班信息的查询与检索Java,航班信息查询与检索

    第 2 章 设计要求与分析 2.1 设计要求 该设计要求对飞机航班信息进行排序和查找.可按航班的航班号.起点站.到达站.起 飞时间以及到达时间等信息进行查询. ...... 课程设计报告课程设计名称: ...

  4. 航班信息的查询与检索Java,航班信息查询与检索(java)

    大二上时用C语言写过一个关于航班信息查询与检索的课程设计,当时是自己抄代码,然后再让学长帮改的,前天晚上在"抄"代码时,突然想用java把那个课设题再写一次,于是昨天晚上就开始了, ...

  5. 航班信息的查询与检索Java,航班信息的查询与检索

    这是本人在网上下载的..给大家分享 #include #include #include #define MaxSpace 100 #define keylen 6 #define RADIX_n 1 ...

  6. 航班信息的查询与检索(C语言版)

    #include<stdio.h> #include<string.h> #include<malloc.h> #define MaxSpace 100 #defi ...

  7. C/C++航班信息的查询系统[2023-02-05]

    C/C++航班信息的查询系统[2023-02-05] 选题十七:航班信息的查询系统 [问题描述] 该设计要求对飞机航班信息进行排序和查找.可按航班的航班号.起点站.到达站.起飞时间以及到达时间等信息进 ...

  8. MyBatis -- 小练习之查询航班信息

    目标:如图所示,选择起飞机场或者降落机场进行查询 航班信息 步骤: 数据库设计如下: 1.搭建mybatis 环境 整个项目搭建过程中所遇到的问题, a.  忘记设置<typeAliases&g ...

  9. 航班信息查询和检索系统-数据结构课程设计

    问题及代码: 设计并实现一个航班信息查询和检索系统.要求:对飞机航班信息进行排序和查找,可按照航班号.起点站.到达站.起飞时间和到达时间等信息进行查询.航班信息表的样式如下: 航班号 起点站 终点站 ...

最新文章

  1. jsp 使用base标签 没有作用_JSP学习篇
  2. 四十七、Tableau地理可视化
  3. 2012-05-04 12:58 eclipse老是building workspace及自动更新问题,eclipse加速
  4. CodeForces - 1529E Trees of Tranquillity(贪心+线段树)
  5. 6 PP配置-生产主数据-工作中心相关-工作中心标准值参数
  6. 缺失值填充4——使用线性模型(岭回归、Lasso回归、ElasticNet回归)填充序列缺失值
  7. 学习hadoop需要具备基础知识
  8. Bailian4119 复杂的整数划分问题【DP】
  9. MDT错误之日志查看方法
  10. Nmap小技巧——探测大网络空间、局域网中的存活主机
  11. 996,活着抑或死亡
  12. 2014年11月合肥黄山宏村之旅
  13. Field not found; typically this occurs with arrays which are not mapped as single value
  14. Selector空轮询
  15. 遥感应用发展观察(更新)
  16. vscode 前端常用插件推荐
  17. iOS--上传AppStore时遇到的10个大坑
  18. 用python计算工资工资_python练习-工资计算器
  19. 三菱PLC QD77定位模块功能块FB ,用私服电机控制中
  20. Netty - 一个简单的聊天室小项目

热门文章

  1. join on后面 加条件 与 where后面加条件的区别
  2. Python 集合06 discard()方法—删除集合中的指定元素
  3. Deepin / UOS 中配置 DTK 开发环境
  4. R语言按某一列分类求均值+绘图总结
  5. 深入理解 Linux 内核---块设备驱动程序
  6. 机器学习新概念-MLOps简介
  7. 第四范式下的科教研:算力困局怎么解?
  8. Scilab : 数据可视化
  9. yolov5 7.0 classify原理,1000字
  10. 央行叫停网络虚拟信用卡及二维码支付