航班信息的查询与检索
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
航班信息的查询与检索
航班信息的查询与检索
目录 (4)
1 概述 (4)
1.1 课程设计名称 (4)
1.2 课程设计目的 (4)
1.3 课程设计内容 (4)
2 系统分析 (4)
2.1 设计要求 (4)
2.2 设计分析 (5)
3 概要设计 (5)
3.1 系统总流程图 (5)
3.2 定义数据类型 (6)
3.3 实现排序的各函数的说明....................... 错误!未定义书签。
4 详细设计............................................................. 错误!未定义书签。
4.1 数据类型的定义 ..................................... 错误!未定义书签。
4.2 链式基数排序 (10)
4.2.1 一趟数字字符分配函数 ............. 错误!未定义书签。
4.2.2 一趟数字字符的收集函数.......... 错误!未定义书签。
4.2.3 一趟字母字符分配函数 ............. 错误!未定义书签。
4.2.4 一趟字母字符收集 .................... 错误!未定义书签。
4.2.6 链式基数排序函数 .................... 错误!未定义书签。
4.3 重新整理静态链表 (11)
4.4 查找算法实现 (12)
4.4.1 二分查找函数 (12)
4.4.2 顺序查找函数 (13)
4.5 输入输出函数 (14)
5 运行与测试 (17)
6 总结与心得 (20)
7 参考文献 (21)
8 附录(程序源代码) (21)
目录
1 概述
1.1 课程设计名称
航班信息的查询与检索
1.2 课程设计目的
通过本次实验,掌握数据结构中的几种排序算法和查找算法,了解静态链表的运用,利用上述的算法完成航班信息的查询与检索。
2 系统分析
2.1 课程设计内容
本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。我们可以利用航班的这些信息,通过其中的任意一个信息,找出我们所需要的查找的航班的所有信息,所以,我们可以采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排序好的航班记录按航班号实现快速查找,并按其他关键字的查找可以采用最简单的顺序查找方法进行。
2.2 设计要求
1) 提供对航班信息的排序功能
2 提供对航班信息的输入输出记录功能找出我们所需要的查
找的航班的所有信息
3)提供按关键字(航班号)快速查询或顺序查询功能
2.3 设计分析
对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因为它们用得比较少。
每个航班记录包括八项,分别是:航班号,起点站,终点站,班期,起飞时间,到达时间,飞机型号以及票价等。其中航班号一项的格式为:
K0 k1 k2 k3 k4 k5
航班关键字可分为两段,即字母和数字。其中k0和k1是航空公司的别称,用两个大写字母表示,后4位为航班编号。
3 概要设计
3.1 系统总流程图
3.2 定义数据类型
根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的数据类型:typedef struct {
char start[7]; //起点
char end[7]; //终点
char sche[12]; //班期
char time1[5]; //起飞时间
char time2[5]; //到达时间
char model[4]; //机型
int price;
//票价
}InfoType;
//航班记录类型
typedef struct{
KeyType keys[keylen]; //关键字
InfoType others;
int next;
}slnode;
//表结点
typedef struct{
SLNode sl[MaxSpace]; //静态链表,s1[0]为头结点
int keylen; //关键字长
int length; //当前表长
}SLList;
//静态链表类型
为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:
typedef int ArrType_n[10]; //十进制数字指针数组
typedef int ArrType_c[26]; //26个字母指针数组
typedef struct {
slnode sl[maxspace];//静态链表
sl[0]为头结点
int keynum; //记录当前关键字字符个数int length; //当前表长
}sllist; //静态链表类型
typedef int arrtype_n[radix_n];//十进制数字指针typedef int arrtype_c[radix_c];//26个字母指针4.2 链式基数排序
开
输入数据、基数、长度
改造为
对关键字