资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
课程设计报告课程设计名称:数据结构课程设计题目:设计并实现一个航班信息查询与检索系统院系:计算机学院专业:班级:学号:姓名:指导教师: 学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期: 年 月 日课程设计名称数据结构课程设计专业学生姓名班级学号题目名称设计并实现一个航班信息查询与检索系统起止日期2016年12月18日起至2017年1月4日止课设内容和要求:对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。 要求:1. 设计数据结构2. 选择合适的排序和查找算法3. 设计软件的功能结构4. 采用模块化编程5. 给出现实方法和算法6. 按课程设计规范撰写课程设计报告参考资料:1 严蔚敏、陈文博,数据结构及应用算法教程M.北京:清华大学出版社,2011.52 张小莉、王苗、罗文劼,数据结构与算法M.北京:机械工业出版社,2014.4 教研室审核意见: 教研室主任签字:指导教师(签名)年月日学 生(签名)年月日课程设计总结:本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为主线,用到了二分查找和顺序查找等知识,还有建立静态链表等。通过这次课程设计,使我对C语言编程有了新的认识。以前编程只是注重如何编写函数能够完成所需要的功能,只是凭单纯的意识和简单的语句来堆砌出一段程序。但现在编程感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素,选取自己需要的数据结构,在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当前状况的算法。这样,即使在完整的程序还没有写出来之前,自己心中已经有了明确的原图了。这样无形中就提高了自己编写的程序的质量。另外,我还体会到深刻理解数据结构的重要性。只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。目 录1 题目介绍52 课程设计要求52.1 课程设计内容52.2 课程设计目标53 概要设计53.1 设计思路53.2 流程图54 算法概述64.1定义数据类型64.2 函数描述75 测试数据10附 录(关键部分程序清单)121、题目介绍 设计一个航班信息查询与检索系统。可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。2、课程设计要求1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。如下表所示:航班号起点站终点站班期起飞时间到达时间机型票价CA1544合肥北京1.2.4.510551240733960MU5341上海广州每日14201615M901280CZ3869重庆深圳2.4.60855103573310102、对航班信息进行排序与查找。3、概要设计3.1、设计思路根据题目所要求,程序必须实现航班信息的录入和查询。程序首先定义了一个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。在查询设计中,使用折半查找法对排好序的航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。3.2、流程图数据输入、排序定义数据类型 接受查找条件、查找关键字显示输出 开 始录入信息提示信息录入查询菜单显示输入查询序号判断符号是否合法按终点站查询按到达时间查询按起点站查询按起飞时间查询按航班号查询输出查询结果结 束4、算法实现 4.1 . 定义数据类型 根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的数据类型:typedef struct char start6; /起点站char end6; /终点站char sche10; /班期char time15; /起飞时间char time25; /到达时间char model4; /机型int price; /票价info; /航班记录类型typedef structchar keyskeylen; /关键字info others;int next;slnode; /表结点typedef structslnode slmaxspace; int keynum; /关键字长int length; /当前表长sllist; /静态链表类型为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:typedef int arrtype_n10; /十进制数字指针数组typedef int arrtype_c26; /26个字母指针数组4.2 . 函数描述 void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)int j,p;for(j=0;j10;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个结点void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)int j,t;for(j=0;!fj;j+); /找第一个非空子表sl0.next=fj;t=ej;while(j10-1)for(j=j+1;j10-1&!fj;j+); /找下一个非空子表if(fj)slt.next=fj;t=ej; /链接两个非空子表slt.next=0;链式基数排序算法 void radixsort(sllist &l)int i;arrtype_n fn,en;arrtype_c fc,ec;for(i=0;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);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=q;折半查找函数定义int binsearch(sllist l,char 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;5、测试数据编译后运行,显示:录入信息_航班号起点站终点站班期起飞时间到达时间机型票价录入:CA1544合肥 北京 1.2.4.5 1055 1240 733960显示:是否继续?y/n:录入:y显示:航班号 起点站 终点站 班期起飞时间到达时间机型票价录入:MU5341上海 广州 每日 1420 1615 M901280 显示:是否继续?y/n:录入:y显示:航班号 起点站终点站班期起飞时间
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号