收藏 分享(赏)

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

上传人:精品资料 文档编号:10740690 上传时间:2020-01-03 格式:DOC 页数:20 大小:253KB
下载 相关 举报
数据结构课程设计航班信息查询与检索.doc_第1页
第1页 / 共20页
数据结构课程设计航班信息查询与检索.doc_第2页
第2页 / 共20页
数据结构课程设计航班信息查询与检索.doc_第3页
第3页 / 共20页
数据结构课程设计航班信息查询与检索.doc_第4页
第4页 / 共20页
数据结构课程设计航班信息查询与检索.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、学院名称数据结构课程设计报告题目航班信息查询与检索班 级: 姓 名: 时 间: 2012/12/29-2013/1/5 二 一二年十二月二十九日课程设计任务书及成绩评定课题名称 航班信息查询与检索、题目的目的和要求: 1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。2、设计题目要求:问题描述:该设计要求对飞机航班信息进行排序和查找。可按航班的航班号、起点

2、站、到达站、起飞时间以及到达时间等信息进行查询。任务要求:对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,假设航班信息表(8 条记录)航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价CA1544 合肥 北京 1.2.4.5 1055 1240 733 960MU5341 上海 广州 每日 1420 1615 M90 1280CZ3869 重庆

3、 深圳 2.4.6 0855 1035 733 1010MU3682 桂林 南京 2.3.4.6.7 2050 2215 M90 1380HU1836 上海 北京 每日 0940 1120 738 1250CZ3528 成都 厦门 1.3.4.5.7 1510 1650 CRJ 1060MU4594 昆明 西安 1.3.5.6 1015 1140 328 1160SC7425 青岛 海口 1.3.6 1920 2120 DH4 1630其中航班号一项的格式为:K0 K1 K2 K3 K4 K5C Z 3 8 6 9其中 K0 和 K1 的输入值是航空公司的别称,用两个大写字母标示,后 4 位为

4、航班号,这种航班号关键字可分成两段,即字母和数字。其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。、设计进度及完成情况日 期 内 容12.29 选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。12.30 创建相关数据结构,录入源程序。12.31 调试程序并记录调试中的问题,初步完成课程设计报告。1.4 上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师 3-4 个问题。1.5 考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。、主要参考文献及资料1 严蔚敏 数据结构(C 语言版)清华大学出版社 19992

5、严蔚敏 数据结构题集(C 语言版)清华大学出版社 19993 谭浩强 C 语言程序设计 清华大学出版社4 与所用编程环境相配套的 C 语言或 C+相关的资料、成绩评定:设计成绩: (教师填写)指导老师: (签字)二一三年一月五日数据结构课程设计5目录一、概述6 二、系统分析6三、概要设计6四、详细设计71.定义数据类型72.算法实现8五、测试数据10六、收获与体会13七、参考文献13八、附录14数据结构课程设计6一、 概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解

6、和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。我们可以利用航班的这些信息,通过其中的任意一个信息,找出我们所需要的查找的航班的所有信息,所以,我们可以采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用

7、二分查找法对排序好的航班记录按航班号实现快速查找,并按其他关键字的查找可以采用最简单的顺序查找方法进行。二、系统分析1 设计要求(1) 提供对航班信息的排序功能(2) 提供对航班信息的输入输出记录功能找出我们所需要的查找的航班的所有信息(3)提供按关键字(航班号)快速查询或顺序查询功能2 设计分析对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因为它们用得比较少。每个航班记录包括八项,分别是:航班号,起点站,终点站,班期,起飞时间,到达时间,飞机型号以及票价等。其中航班

8、号一项的格式为:K0 k1 k2 k3 k4 k5航班关键字可分为两段,即字母和数字。其中 k0 和 k1 是航空公司的别称,用两个大写字母表示,后 4 位为航班编号。三、概要设计1、设计思路根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进C Z 3 8 6 9数据结构课程设计7行排序,最后执行数据查询和检索。在查询设计中,使用二分查找法对排好序的航班数据按航班号实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。2、流程图 四、详细设计1 . 定义数据类型根据设计要求,设计中所

9、用到的数据记录只有航班信息,因此要定义相关的数据类型:1typedef struct char start6; /起点站char end6; /终点站char sche10; /航班期char time15; /起飞时间char time25; /到达时间char model4; /机型int price; /票价infotype; /航班记录类型typedef structkeytype keyskeylen; /关键字infotype others;int next;slnode; /表结点typedef structslnode slmaxspace; /静态链表,s10 为头结点int

10、 keynum; /关键字长int length; /当前表长sllist; /静态链表类型数据输入、排序接受查找条件、查找关键字输出查找结果定义数据类型数据结构课程设计8为了进行基数排序,需要定义在分配和收集操作时用到的指针数组: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;j=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 slnode temp;p=l.sl0.next;for(i=1;i#include #define MaxSpace 100#define keylen 7#define RADIX_n 10#define RADIX_c 26typedef char KeyType;typedef struct char start6; /

12、起点char end6; /终点char sche10; /班期char time15; /起飞时间char time25; /到达时间char model4; /机型int price; /票价InfoType; /航班记录类型typedef structKeyType keyskeylen; /关键字(航班号)InfoType others;int next;SLNode; /静态链表结点类型typedef structSLNode slMaxSpace; /静态链表,s10 为头结点int keynum; /记录当前关键字字符个数int length; /当前表长SLList; /静态链

13、表类型typedef int ArrType_nRADIX_n; /十进制数字指针数组typedef int ArrType_cRADIX_c; /26 个字母指针数组/ 一趟数字字符分配函数void Distribute(SLNode *sl,int i,ArrType_n f,ArrType_n e) int j,p;for(j=0;j=2;i-) /按最低位优先次序对各关键字进行分配和收集,先做低 4 位数字部分Distribute(L.sl,i,fn,en);Collect(L.sl,i,fn,en);for(i=1;i=0;i-) /对高位的 2 位大写字母进行分配和收集Distri

14、bute_c(L.sl,i,fc,ec);Collect_c(L.sl,i,fc,ec);数据结构课程设计17/按指针链重新整理静态链表void Arrange(SLList SLNode temp;p=L.sl0.next; /p 指向第一个记录的当前位置for(i=1;i=1printf(“ * 航班信息查询系统 *n“);printf(“ *n“);printf(“ * 1.航 班 号 *n“);printf(“ * 2.起 点 站 *n“);printf(“ * 3.终 点 站 *n“);printf(“ * 4.起飞时间 *n“);printf(“ * 5.到达时间 *n“);数据结

15、构课程设计19printf(“ * 0.退出系统 *n“);printf(“ *n“);printf(“ 请选择(0-5): n“);scanf(“%d“,switch(i)case 1:printf(“输入要查询的航班号(字母要大写):“);scanf(“%s“,key);k=BinSearch(L,key);printf(“*n“);if(k=0)printf(“ 无此航班信息,可能是输入错误!n“);elseprintf(“* 航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价 *n“);printf(“* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *

16、n“,L.slk.keys,L.slk.others.start,L.sl k.others.end,L.slk.others.sche,L.slk.others.time1,L.slk.others.time2,L.sl k.others.model,L.slk.others.price);printf(“*n“);break;case 2:printf(“输入要查询的航班起点站名:“);scanf(“%s“,key);SeqSearch(L,key,i);break;case 3:printf(“输入要查询的航班终点站名:“);scanf(“%s“,key);SeqSearch(L,key

17、,i);break;case 4:printf(“输入要查询的航班起飞时间:“);scanf(“%s“,key);SeqSearch(L,key,i);break;case 5:printf(“输入要查询的航班到达时间:“);scanf(“%s“,key);SeqSearch(L,key,i);break;case 0:printf(“再 见 n“);数据结构课程设计20/ 输入航班记录函数void InputData(SLList char yn=y;while(yn=y|yn=Y)printf(“航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价n“);scanf(“%s%s%

18、s%s%s%s%s%d“,L.sli.keys,L.sli.others.start,L.sli.others.end,L.sl i.others.sche,L.sli.others.time1,L.sli.others.time2,L.sli.others.model,+i; getchar(); RadixSort(L);Arrange(L);printf(“继续输入吗?y/n:“);scanf(“%c“,L.length=i-1;void main()/ int i,k;SLList L;/ KeyType keykeylen;L.keynum=6; L.length=0; /输入航班记录InputData(L); /基数排序RadixSort(L);Arrange(L);searchcon(L);return ;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报