航班信息查询与检索系统方案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

...专业资料.课程设计报告课程设计名称:数据结构课程设计题目:设计并实现一个航班信息查询与检索系统院系:计算机学院专业:班级:学号:姓名:指导教师:2学术诚信声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。本人签名:日期:年月日34课程设计名称数据结构课程设计专业学生姓名班级学号题目名称设计并实现一个航班信息查询与检索系统起止日期2016年12月18日起至2017年1月4日止课设内容和要求:对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。要求:1.设计数据结构2.选择合适的排序和查找算法3.设计软件的功能结构4.采用模块化编程5.给出现实方法和算法6.按课程设计规范撰写课程设计报告参考资料:[1]严蔚敏、陈文博,数据结构及应用算法教程[M].北京:清华大学出版社,2011.5[2]张小莉、王苗、罗文劼,数据结构与算法[M].北京:机械工业出版社,2014.4教研室审核意见:教研室主任签字:指导教师(签名)年月日学生(签名)年月日5课程设计总结:本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为主线,用到了二分查找和顺序查找等知识,还有建立静态链表等。通过这次课程设计,使我对C语言编程有了新的认识。以前编程只是注重如何编写函数能够完成所需要的功能,只是凭单纯的意识和简单的语句来堆砌出一段程序。但现在编程感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素,选取自己需要的数据结构,在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当前状况的算法。这样,即使在完整的程序还没有写出来之前,自己心中已经有了明确的原图了。这样无形中就提高了自己编写的程序的质量。另外,我还体会到深刻理解数据结构的重要性。只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。6目录1题目介绍.........................................................52课程设计要求.....................................................52.1课程设计内容...................................................52.2课程设计目标..................................................53概要设计.........................................................53.1设计思路.......................................................53.2流程图.........................................................54算法概述.........................................................64.1定义数据类型...................................................64.2函数描述.......................................................75测试数据.........................................................10附录(关键部分程序清单)........................................1271、题目介绍设计一个航班信息查询与检索系统。可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。2、课程设计要求1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。如下表所示:航班号起点站终点站班期起飞时间到达时间机型票价CA1544合肥北京1.2.4.510551240733960MU5341上海广州每日14201615M901280CZ3869重庆深圳2.4.60855103573310102、对航班信息进行排序与查找。3、概要设计3.1、设计思路根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了一个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。在查询设计中,使用折半查找法对排好序的航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。3.2、流程图数据输入、排序接受查找条件、查找关键字定义数据类型显示输出8开始录入信息提示信息录入查询菜单显示输入查询序号判断符号是否合法按航班号查询按起飞时间查询按到达时间查询按起点站查询按终点站查询输出查询结果结束94、算法实现4.1.定义数据类型根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的数据类型:typedefstruct{charstart[6];//起点站charend[6];//终点站charsche[10];//班期chartime1[5];//起飞时间chartime2[5];//到达时间charmodel[4];//机型intprice;//票价}info;//航班记录类型typedefstruct{charkeys[keylen];//关键字infoothers;intnext;}slnode;//表结点typedefstruct{slnodesl[maxspace];intkeynum;//关键字长intlength;//当前表长}sllist;//静态链表类型为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:typedefintarrtype_n[10];//十进制数字指针数组typedefintarrtype_c[26];//26个字母指针数组104.2.函数描述voiddistribute(slnode*sl,inti,arrtype_nf,arrtype_ne){intj,p;for(j=0;j10;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%48;//将数字字符转化为对应的数值型数字if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p;//将p指向的结点插入到第j个结点}}voidcollect(slnode*sl,inti,arrtype_nf,arrtype_ne){intj,t;for(j=0;!f[j];j++);//找第一个非空子表sl[0].next=f[j];t=e[j];while(j10-1){11for(j=j+1;j10-1&&!f[j];j++);//找下一个非空子表if(f[j]){sl[t].next=f[j];t=e[j];}//链接两个非空子表}sl[t].next=0;}链式基数排序算法voidradixsort(sllist&l){inti;arrtype_nfn,en;arrtype_cfc,ec;for(i=0;il.length;i++)l.sl[i].next=i+1;l.sl[l.length].next=0;//将普通的线性表改为静态链表for(i=l.keynum-1;i=2;i--)//按最低位优先依次对各关键字进行分配和收集{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);}}12voidarrange(sllist&l)//按指针链表整理静态链表{intp,q,i;slnodetemp;p=l.sl[0].next;for(i=1;il.length;i++){while(pi)p=l.sl[p].next;q=l.sl[p].next;if(p!=i){temp=l.sl[p];l.sl[p]=l.sl[i];l.sl[i]=temp;//交换记录l.sl[i].next=p;}p=q;}}折半查找函数定义intbinsearch(sllistl,charkey[]){intlow,high,mid;low=1;high=l.length;while(low=high){mid=(low+high)/2;13if(strcmp(key,l.sl[mid].keys)==0)returnmid;elseif(strcmp(key,l.sl[mid].keys)0)high=mid-1;elselow=mid+1;}return0;}5、测试数据编译后运行,显示:录入信息^_^航班号起点站终点站班期起飞时间到达时间机型票价录入:CA1544合肥北京1.2.4.510551240733960显示:是否继续?y/n:录入:y显示:航班号起点站终点站班期起飞时间到达时间机型票价录入:MU5341上海广州每日14201615M901280显示:是否继续?y/n:录入:y显示:航班号起点站终点站班期起飞时间到达时间机型票价录入:CZ3869重庆深圳2.4.6085510357331010显示:是否继续?y/n:14录入:n录入航班信息后,屏幕显示:-------------------------------*航班信息查询系统*-------------------------------*1.航班号**2.起点站**3.终点站**4.起飞时间**5.到达时间**0.退出*-----------------------------(0-5)号服务项目:录入:1显示:输入要查询的航班号(字母要大写):录入:CA1544显示:航班号起点站终点站班期起飞时间到达时间机型票价CA1544合肥北京1.2.4.51055124073396015录入:2显示:输入要查询的航班起点站:录入:合肥显示:航班号起点站终点站班期起飞时间到达时间机型票价显示:CA1544合肥北京1.2.4.51055124073396016录入:2显示:输入要查询的航班起点站:录入:广州显示:17附录源程序:#includestdio.h#includestring.h#definemax100#definekeylen7typedefstruct{charstart[6];charend[6];charsche[10];chartime1[5];chartime2[5];charmodel[4];intprice;}info;typedefstruct{charkeys[keylen];infoothers;intnext;}slnode;typedefstruct{slnodesl[max];18intkeynum;intlength;}sllist;typedefintarrtype_n[10];typedefintarrtype_c[26];voiddistribute(slnode*sl,inti,arrtype_nf,arrtype_ne){intj,p;for(j=0;j10;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].key

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功