航班信息查询与检索系统_第1页
航班信息查询与检索系统_第2页
航班信息查询与检索系统_第3页
航班信息查询与检索系统_第4页
航班信息查询与检索系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告课程设计名称:数据结构课程设计题目:设计并实现一个航班信息查询与检索系统院系:计算机学院专业:班级:学号:姓名:指导教师:指导教师评语;年 月 日学术诚信声明本人声明 :所呈交的报告(含电子版及数据文件)是我个人在导师指 导下独立进行设计工作及取得的研究结果。 尽我所知, 除了文中特别 加以标注或致谢中所罗列的内容以外, 报告中不包含其他人己经发表 或撰写过的研究结果, 也不包含其它教育机构使用过的材料。 与我一 同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说 明并表示了谢意。 报告资料及实验数据若有不实之处, 本人愿意接受 本教学环节“不及格”和“重修或重做”的评分结

2、论并承担相关一切 后果。本人签名 :日期: 年 月 日课程设计名称数据结构课程设计专业学生姓名班级学号题目名称设计并实现一个航班信息查询与检索系统起止日期2016 年 12 月 18 日起至2017 年1月 4日止课设内容和要求:对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间 和到达时间等信息进行查询。要求:1. 设计数据结构2. 选择合适的排序和查找算法3. 设计软件的功能结构4. 采用模块化编程5给出现实方法和算法6.按课程设计规范撰写课程设计报告参考资料:1 严蔚敏、陈文博,数据结构及应用算法教程M.北京:清华大学出版社,2011.52 张小莉、王苗、罗文劼,数据结

3、构与算法M.北京:机械工业出版社,2014.4教研室审核意见:教研室主任签字:指导教师(签名)年月日学生(签名)年月日课程设计总结:本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为主线,用到了二分查找和顺序查找等知识,还有建立静态链表等。通过这次课程设 计,使我对C语言编程有了新的认识。以前编程只是注重如何编写函数能够完成 所需要的功能,只是凭单纯的意识和简单的语句来堆砌出一段程序。但现在编程 感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素,选取自己 需要的数据结构,在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当 前状况的算法。这样,即使在完整的程序还没有

4、写出来之前,自己心中已经有了 明确的原图了。这样无形中就提高了自己编写的程序的质量。另外,我还体会到 深刻理解数据结构的重要性。只有真正理解这样定义数据类型的好处,才能用好 这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序 的关键。3目录1 题目介绍 52 课程设计要求 52.1 课程设计内容 52.2 课程设计目标 53 概要设计 53.1 设计思路 53.2 流程图 54 算法概述 64.1定义数据类型 64.2 函数描述 75 测试数据 10附 录(关键部分程序清单) 1251、题目介绍设计一个航班信息查询与检索系统。可按航班的航班号、起点站、终点站、起飞时间 以及

5、到达时间等信息进行查询。2、课程设计要求1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、至U达时间、 飞机型号、票价。如下表所示:航班号起点站终点站班期起飞时间到达时间机型票价CA1544合肥北京1.2.4.510551240733960MU5341上海广州每日14201615M901280CZ3869重庆深圳2.4.60855103573310102、对航班信息进行排序与查找。3、概要设计3.1、设计思路根据题目所要求,程序必须实现航班信息的录入和查询。 程序首先定义了一 个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进 行排序,最后执行数据查询和检索

6、。在查询设计中,使用折半查找法对排好序的 航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采 用顺序查询方法。3.2、流程图开始1录入信息提示1r查询菜单显示1!信息录入/输入查询序号7#按航班号 查询按起飞时间 查询#4、算法实现4.1 . 定义数据类型根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的 数据类型:typedef struct char start6;char end6;char sche10;char time15;char time25;char model4;int price;info;typedef structchar keys

7、keylen;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,

8、arrtype_n f,arrtype_n e)int j,p;for(j=0;j<10;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(j<10-1)for(

9、j=j+1;j<10-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<l.length;i+) l.sli.next=i+1;l.sll.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

10、>=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;i<l.length;i+)while(p<i)p=l.slp.next;q=l.slp.next;if(p!=i)temp=l.slp;/交换记录l.slp=l.sli;l.sli=temp;l.sli.nex

11、t=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、测试数据 编译后运行,显示: 录入信息A/航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价录入: CA1544 合肥

12、北京 1.2.4.510551240 733 960显示:是否继续? y/n:录入: y显示:航班号 起点站终点站班期起飞时间到达时间机型票价录入: MU5341 上海广州每日14201615M901280显示:是否继续? y/n:录入: y显示: 航班号 起点站终点站班期起飞时间到达时间机型票价录入: CZ3869 重庆深圳2.4.6085510357331010显示:是否继续? y/n:录入: n录入航班信息后,屏幕显示:航班信息查询系统*1航班号*2起点站*3终点站*4起飞时间*5.到达时间*0.退出*(0-5)号服务项目:录入:1显示:输入要查询的航班号(字母要大写):录入:CA154

13、4显示:航班号起点站终点站班期起飞时间到达时间机型票价CA1544 合肥 北京 1.2.4.51055124073396013馆-号服务项目次*航班信息查询系统*牛去爲氐bug協走楚构庚没诵弋国足xb口!rS站! 班点希岀 mV 暫 12 3 4 5 0 *输入要查询的航班号I字母要大写:CA1544航班号税点站峰髦班期起飞时间到达时间机型票价CA1544 合月巴 j 匕乐 1.2.4,510551240733?60*航班信息查询耳范*:强屛補-一 口基站间一班= 一 一蟹终起臺'«»-12 3 4录入:2显示:输入要查询的航班起点站:录入:合肥显示:航班号起点站终

14、点站班期起飞时间到达时间机型票价显示:CA1544 合肥 北京 1.24510551240733 9607:;豪殳Dmbug阖垂曲谍设源代碍e占回伯峙号服穷项目诈画入要查询的航坯亘点站:合肥航班号退点站菸宜苗班期起飞时间至I卜司机型票价CA1544 合肥北杲 1.2.4.51055 1240 7331!K!B*翩信息查询系统* 養站馬 ?駅 12 3 4 5 0 声* * # *奸站号服务项目汕前入要查询的骯班终点姑:北京航班号CA1S44终嚳班期起飞时间到达时间机型禀价j 匕示1,2.4.51055 1240 733 M015=| 回-J一:-一荃站厲一班支点讯岀 -起剰 « -1

15、2 3 4 5 0H:'湧決Wbug曲克曲侯设源代码心«-s号服务琐目堪输A.要查谊的航班号字母要大写:acl514无此航班信息,可能是输入错误! 航班信息查询系统-航班号赳点站终苞站班期起飞时间到记厂间机型票价CR1544 合肥 北帛 1.2,.510551240?33?60*航題信息查询系统*#17ST号服务项目拓渝入要查询的航班到达时|HJ:1240航班号却站怨姑班期起飞时间到达时间机型票价CR1544 合肥 北杲 1,2,4.510551240733?60#* 吕站站鬧 班点点辭 Hi12 350录入:2显示:输入要查询的航班起点站录入:广州显示: H :谭设Debu

16、 g躅彌结物送设源代码exe'I = |回EMI#侗-恥号眾务顶目汐输入要查询的航班起点站:广州葱申曙爭严间到达时间机型票价#附录源程序:#include <stdio.h> #include <string.h> #define max 100 #define keylen 7typedef structchar start6; char end6;char sche10; char time15; char time25;char model4; int price;info;typedef structchar keyskeylen; info other

17、s;int next;slnode;typedef structslnode slmax;int keynum;int length;sllist;typedef int arrtype_n10;typedef int arrtype_c26;void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) int j,p;for(j=0;j<10;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;void col

18、lect(slnode *sl,int i,arrtype_n f,arrtype_n e) int j,t; for(j=0;!fj;j+);sl0.next=fj;19t=ej;while(j<10-1)for(j=j+1;j<10-1&&!fj;j+);if(fj)slt.next=fj; t=ej; slt.next=0;void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e) int j,p;for(j=0;j<26;j+)fj=ej=0; for(p=sl0.next;p;p=slp.n

19、ext)j=slp.keysi%65;if(!fj)fj=p;elseslej.next=p;ej=p;void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e)int j,t;for(j=0;!fj;j+);sl0.next=fj;t=ej;while(j<26-1)for(j=j+1;j<26-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

20、,ec;for(i=0;i<l.length;i+)l.sli.next=i+1;l.sll.length.next=0;for(i=l.keynum-1;i>=2;i-)distribute(l.sl,i,fn,en);21collect(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;i<l.length;i+)wh

21、ile(p<i)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=

22、mid+1;return 0;void seqsearch(sllist l,char key,int i)int j,k,m=0;printf("n");printf(" 航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 n"); for(j=1;j<=l.length;j+)switch(i)case 2:k=strcmp(key,l.slj.others.start);break;case 3:k=strcmp(key,l.slj.others.end);break;23case 4:k=strcmp(key,l.slj.othe

23、rs.time1);break;case 5:k=strcmp(key,l.slj.others.time2);break;if(k=0)m=1;printf(" %-8s%-7s%-7s%-11s%-6s%-6s%5s%4dn",l.slj.keys,l.slj.others.start,l.slj.others.end,l.slj.others.sche,l.slj.others.time1,l.slj.others. time2,l.slj.others.model,l.slj.others.price);if(m=0)printf(" 无此航班信息,可能是

24、输入错误! n");printf("n");void searchcon(sllist l)char keykeylen;int i=1,k;while(i>=1&&i<=5) printf("n");printf(" * 航班信息查询系统 *n");printf("n");printf(" *1.航 班 号*n");printf(" *2.起 点 站*n");printf(" *3.终 点 站*n");printf(

25、" *4.起飞时间*n");printf(" *5.到达时间*n");printf(" *0.退出*n");printf(" n");printf(" (0-5) 号服务项目 :"); scanf("%d",&i);printf("n");switch(i)case 1:printf(" 输入要查询的航班号 (字母要大写 ):");scanf("%s",key);k=binsearch(l,key);prin

26、tf("n");if(k=0)printf(" 无此航班信息,可能是输入错误! n");elseprintf(" 航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 n");printf(" %-8s%-7s%-7s%-11s%-6s%-6s%-5s%4d n",l.slk.keys,l.slk.others.start,l.slk.others.end,l.slk.others.sche,l.slk.others.time1,l.slk.oth ers.time2,l.slk.others.model,l.slk.others.price);printf("n");break;case 2:printf(" 输入要查询的航班起点站 :"); scanf("%s",ke

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论