数据结构课程设计航班信息查询与检索

上传人:re****.1 文档编号:493656009 上传时间:2022-11-24 格式:DOCX 页数:27 大小:22.03KB
返回 下载 相关 举报
数据结构课程设计航班信息查询与检索_第1页
第1页 / 共27页
数据结构课程设计航班信息查询与检索_第2页
第2页 / 共27页
数据结构课程设计航班信息查询与检索_第3页
第3页 / 共27页
数据结构课程设计航班信息查询与检索_第4页
第4页 / 共27页
数据结构课程设计航班信息查询与检索_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《数据结构课程设计航班信息查询与检索》由会员分享,可在线阅读,更多相关《数据结构课程设计航班信息查询与检索(27页珍藏版)》请在金锄头文库上搜索。

1、资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载数据结构课程设计航班信息查询与检索地点:时间:说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与 义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时 请详细阅读内容学院名称数据结构课程设计报告题目一一航班信息查询与检索班 级:姓 名:时 间:2012/12/29-2013/1/5二。一二年十二月二十九日课程设计任务书及成绩评定I、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知 识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1) 通过本课程的

2、学习,能熟练掌握几种基本数据结构的基本操作。(2) 能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出 问题的正确求解过程并编写代码实现。2、设计题目要求:问题描述:该设计要求对飞机航班信息进行排序和查找。可按航班的航班 号、起点站、到达站、起飞时间以及到达时间等信息进行查询。任务要求:对于本设计,可采用基数排序法对一组具有结构特点的飞机航班 号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按 其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。 每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时 间、到达时间、飞机型号以及票价等,假

3、设航班信息表(8条记录)其中航班号一项的格式为:K0K1K2K3 K4K5其中K0和K1的输入值是航空公司的别称,用两个大写字母标示,后4位 为航班号,这种航班号关键字可分成两段,即字母和数字。其余七项输入内容 因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。II、设计进度及完成情况III、主要参考文献及资料1 严蔚敏 数据结构(C语言版)清华大学出版社19992 严蔚敏数据结构题集(C语言版)清华大学出版社19993 谭浩强C语言程序设计清华大学出版社4 与所用编程环境相配套的C语言或C+相关的资料W、成绩评定:设计成绩:(教师填写)指导老师:(签字)二、一三年一月五日目

4、录HYPERLINK l _Toc6211 一、概述6HYPERLINK l _Toc10268 二、系统分析6三、概要设计6四、详细设计71. 定义数据类型72. 算法实现8五、测试数据10六、收获与体会13七、参考文献1314八、附录一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉 及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让 同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。数 据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结 构的选择和应用、算法

5、的设计及其实现等方面,加深对课程基本内容的理解。 同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统 和严格的训练。本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利 用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检 索。我们可以利用航班的这些信息,通过其中的任意一个信息,找出我们所需 要的查找的航班的所有信息,所以,我们可以采用基数排序法对一组具有结构 特点的飞机航班号进行排序,利用二分查找法对排序好的航班记录按航班号实 现快速查找,并按其他关键字的查找可以采用最简单的顺序查找方法进行。二、系统分析1设计要求(1) 提供对航班信息的排序功能

6、(2) 提供对航班信息的输入输出记录功能找出我们所需要的查找的航班的 所有信息(3) 提供按关键字(航班号)快速查询或顺序查询功能2 设计分析对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排 序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关 键字的查找可采用最简单的顺序查找方法进行,因为它们用得比较少。每个航班记录包括八项,分别是:航班号,起点站,终点站,班期,起飞 时间,到达时间,飞机型号以及票价等。其中航班号一项的格式为:K0 k1 k2 k3 k4 k5C Z 3869航班关键字可分为两段,即字母和数字。其中k0和k1是航空公司的别 称,用两个大写字母

7、表示,后4位为航班编号。三、概要设计1、设计思路根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了 一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并 对数据进行排序,最后执行数据查询和检索。在查询设计中,使用二分查找法 对排好序的航班数据按航班号实现快速查找,按起点站、终点站、起飞时间、 到达时间查找的则采用顺序查询方法。定义数据类型2、流程图接受查找条件、查找关键字数据输入、排序输出查找结果四、详细设计1 .定义数据类型根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关 的数据类型:1typedef struct (char start6;/起

8、点站char end6;/终点站/航班期char sche10;char time15;char time25;char model4;int price;infotype;typedef struct(keytype keyskeylen;infotype others;int next;slnode;typedef struct(slnode slmaxspace;结点int keynum;int length;sllist;起飞时间到达时间机型票价/航班记录类型/关键字/表结点/静态链表,s10为头关键字长当前表长/静态链表类型为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:

9、typedef int arrtype_n10;/十进制数字指针数组typedef int arrtype_c26;/26 个字母指针数组2 .算法实现(1) 一趟分配算法2void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)int j,p;for(j=0;jradix_n;j+)(fj=ej=0;for(p=sl0.next;p;p=slp.next)(j=slp.keysi%48;将数字字符转化为对应的数值型数字if(!fj)fj=p;elseslej.next=p;ej=p;/将p指向的结点插入到第j个结点(2) 一趟收集算法

10、void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)(int j,t;for(j=0;!fj;j+);/找第一个非空子表s10.next=fj;t=ej;while(jradix_n-1)(for(j=j+1;jradix_n-1&!fj;j+); /找下一个非空子表if(fj)(s1t.next=fj;t=ej;链接两个非空子表slt.next=0;(3) 链式基数排序算法3void radixsort(sllist &l)(int i;arrtype_n fn,en;arrtype_c fc,ec;for(i=0;i=2;i-)/按最

11、低位优先依次对各关键字收集(distribute(l.sl,i,fn,en);collect(l.sl,i,fn,en);for(i=1;i=0;i-)distribute_c(l.sl,i,fc,ec);collect_c(l.sl,i,fc,ec);void arrange(sllist &l)(int p,q,i;slnode temp;p=l.sl0.next;for(i=1;il.length;i+)(while(pi)p=l.slp.next;q=l.slp.next;if(p!=i)(temp=l.slp;l.slp=l.sli;l.sli=temp;l.sli.next二p;p

12、=q;按指针链表整理静态链表/交换记录(4)二分查找函数定义4int binsearch(sllist l,keytype key)(int low,high,mid;low=1;high=l.length;while(low=high)(mid=(low+high)/2;if(strcmp(key,l.slmid.keys)=0) return mid;else if(strcmp(key,l.slmid.keys)0) high=mid-1;elselow=mid+1;return 0;五、测试数据航班信息输入如图:按航班号查询:输入航班号错误则显示如下图:按航班起点站查询:按航班起点查询

13、:按起飞时间查询:显示查询主菜单,退出查询系统:六、收获与体会通过本实验,我了解了基数排序是作为一种内部排序方法,当关键字位数 较少而排序序列较长时,该排序算法有一定的优越性。而对于有序序列的查找 算法,二分查找是一种效率比较高的方法。在本实验中,对这两种算法的应 用,我加深了对他们的理解,掌握了他们的实现方法。在本次实验过程中,输入错误还是存在的问题,但能很快的通过编译解 决,一些编译不能发现的问题,在组建过程中也能发现并解决。这次实验的过 程中遇到了很多问题,定义的过程中存在定义不清楚的问题,还有一些模糊定 义和重定义的问题出现。在程序的定义过程中,存在着函数的调用失败的问 题,在调用过程

14、中不能正常调用,通过把调用的函数直接用在程序中,不通过 调用的方法,使得程序正常运行。本次实验的问题只要通过调试和对整个程序 的理解,便可以解决所有的发现的问题本次实验利用二分查找法很快的完成了对航班信息的查找,使我们对二分 查找有了一个很好的掌握。其查找过程是先确定待查记录所在的范围(区 间),然后逐步缩小范围直到找到或找不到该记录为止。在实验过程中,程序中许多定义需要我们有一个很仔细的了解,比如上述 的对字符长度的定义,这需要对所定义的对象给一个合理的字符长度,在输入 的过程中才不会出现因输入的字符长度过长而不能识别。本次实验中用到了静 态链表,定义静态链表的过程中,需要有一个很熟悉的了解,知道静态链表是 如何定义以及如何实现。通过这次实验,使得对于查找以及检索有了一个很好 的掌握,让我们在以后的程序设计过程中对于

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号