1青岛理工大学数据结构课程设计报告题目:航班信息查询与检索院(系):计算机工程学院学生姓名:卢浪班级:网络121学号:201207125起迄日期:2014.7.6-2014.7.19指导教师:张艳2013—2014年度第2学期2目录一、需求分析----------------------------------------------------------------------------------------------------------31.1、问题描述:-----------------------------------------------------------------------------------------------31.2、基本功能:-----------------------------------------------------------------------------------------------31.3、输入输出:-----------------------------------------------------------------------------------------------3二、设计内容----------------------------------------------------------------------------------------------------------22.1、设计思路--------------------------------------------------------------------------------------------------32.2、数据结构设计--------------------------------------------------------------------------------------------32.3、软件结构设计--------------------------------------------------------------------------------------------4三、详细设计--------------------------------------------------------------------------------------------------------123.1、数据及其数据结构设计和基本操作------------------------------------------------------------123.2、主函数和其他函数-----------------------------------------------------------------------------------123.3、主函数流程图------------------------------------------------------------------------------------------123.4、调用关系图---------------------------------------------------------------------------------------------143.5、各函数说明---------------------------------------------------------------------------------------------14四、调试分析--------------------------------------------------------------------------------------------------------134.1、实际完成的情况:-----------------------------------------------------------------------------------134.2、程序的性能说明:-----------------------------------------------------------------------------------134.3、程序中可以改进的地方:-------------------------------------------------------------------------134.4、上机中出现的问题及解决方法:----------------------------------------------------------------134.5、程序中可以扩充的功能及其设计实现遐想:-----------------------------------------------13五、测试结果--------------------------------------------------------------------------------------------------------15六、用户手册--------------------------------------------------------------------------------错误!未定义书签。七、体会与自我评价----------------------------------------------------------------------错误!未定义书签。3一、需求分析1.问题描述我所选的题目是航班信息的查询与检索。该设计要求对飞机航班信息进行排序和查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。2.基本功能该设计要实现航班信息的录入与查询功能。录入航班信息需要调用inputdata函数。查询功能的实现需要用到seqsearch函数和searchcon函数。查询时要求能按航班号、起点站、到达站、起飞时间、到达时间信息查询。3.输入输出录入航班信息时,除了票价需要int型,其他都要用char型。查询时,输入的int型,用于选择指令。如按票价查询,则输入int型,其他则输入char型。输出的航班信息为线性表形式。如果输入超过或与录入信息不匹配,则会输出错误提示。二、概要设计1.设计思路根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。在查询设计中,使用二分查找法对排好序的航班数据按航班号实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。本设计需要用到基数排序算法和二分查找算法。2.数据结构设计本设计的逻辑结构为线性,存储结构为链式。航班记录类型的数据类型typedefstruct{charstart[6];//起点站charend[6];//终点站charsche[10];//航班期chartime1[5];//起飞时间chartime2[5];//到达时间charmodel[4];//机型intprice;//票价}infotype;//航班记录类型静态链表typedefstruct{slnodesl[maxspace];//静态链表,s1[0]为头结点intkeynum;//关键字长intlength;//当前表长}sllist;//静态链表类型typedefintarrtype_n[10];//十进制数字指针数组4typedefintarrtype_c[26];//26个字母指针数组3.软件结构设计主要功能模块图:录入航班信息:voidinputdata(sllist&l)查询航班信息:voidseqsearch(sllistl,keytypekey[],inti)voidsearchcon(sllistl)三、详细设计1.定义程序中所有用到的数据及其数据结构,及其基本操作的实现typedefstruct{charstart[6];//起点站charend[6];//终点站charsche[10];//航班期chartime1[5];//起飞时间chartime2[5];//到达时间charmodel[4];//机型intprice;//票价}infotype;//航班记录类型typedefstruct{keytypekeys[keylen];//关键字infotypeothers;intnext;}slnode;//表结点航班信息查询与检索录入航班信息查询航班信息按航班号查询按起点站查询按终点站查询按起飞时间查询按到达时间查询退出系统5typedefstruct{slnodesl[maxspace];//静态链表,s1[0]为头结点intkeynum;//关键字长intlength;//当前表长}sllist;//静态链表类型为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:typedefintarrtype_n[10];//十进制数字指针数组typedefintarrtype_c[26];//26个字母指针数组2.主函数和其他函数的伪码算法主函数:voidmain(){sllistl;l.keynum=6;l.length=0;inputdata(l);searchcon(l);}录入航班信息函数函数:voidinputdata(sllist&l){inti=++l.length;charyn='y';while(yn=='y'||yn=='Y'){printf(航班号起点站终点站航班期起飞时间到达时间机型票价\n);scanf(%s%s%s%s%s%s%s%d,l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.end,l.sl[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl[i].others.price);++i;getchar();radixsort(l);arrange(l);printf(继续输入吗?y/n:);scanf(%c,&yn);}l.length=i-1;}查询函数:voidsearchcon(sllistl){keytypekey[keylen];inti=1,k;while(i=1&&i=5){printf(\********************\n);6printf(*航班信息查询系统*\n);printf(********************\n);printf(*1.航班号*\n);printf(*2.起点站*\n);printf(*3.终点站*\n);printf(*4.起飞时间*\n);printf(*5.到达时间*\n);printf(*0.退出系统*\n);printf(********************\n);printf(请选择(0-5):);scanf(%d,&i);printf(\n);switch(i){case1:printf(输入要查询的航班号(字母要大写):);scanf(%s,key);k=binsearch(l,key);printf(*************************************************************\n);if(k==0)printf(*无此航班