ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:140.46KB ,
资源ID:8512518      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8512518.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(航班信息的查询与检索实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

航班信息的查询与检索实验报告.docx

1、航班信息的查询与检索实验报告 参考文献 1 概述1.1 问题描述随着科技与经济的发展,当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、时间、价格及机型等信息。在这个飞机航班数据的模型中,航班号是关键字,而且是具有结构特点的一类关键字。通过关键字的输入,你将获得你所需要的航班的所有信息。程序必须实现航班信息的录入和查询。程序首先定义了一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。在查询设计中,使用二分查找法对排好序的航班数据按航班号实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。 航班信息的查询

2、与检索1.2 基本要求1 、每个航班包括8项基本要求:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。 2 、要有输入模块。 3 、对航班信息进行排序与查找。2 系统分析2.1 功能需求分析(1)输入航班信息(2)按不同类型查询航班信息:输入航班号,显示相应信息 输入起点站,显示相应信息 输入终点站,显示相应信息 输入起飞时间,显示相应信息 输入到达时间,显示相应信息2.2 设计要求 该设计要求对航班信息进行排序和查询。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好

3、序的航班记录按航班号实现快速查找,按其他关键字的查找可采用最简单的顺序查找方法进行,因为它们用的较少。每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等。航班号起点站终点站班期起飞时间到达时间机型票价CA1544合肥北京1.2.4.510551240733960MU5341上海广州每日14201615M901280CZ3869重庆深圳2.4.6085510357331010MU1836桂林南京2.3.4.6.720502215M901380HU1836上海北京每日094011207381250CZ3528成都厦门1.3.4.5.715101650

4、CRJ1060MU4594昆明西安1.3.5.6101511403281160SC7425青岛海口1.3.619202120DH416303 概要设计3.1各函数说明(1)一趟数字字符分配函数void Distribute(SLNode *sl,int i,ArrType_n f,ArrType_n e)(2)一趟数字字符收集函数void Collect(SLNode *sl,int i,ArrType_n f,ArrType_n e)(3)一趟字母字符分配函数void Distribute_c(SLNode *sl,int i, ArrType_c f,ArrType_c e)(4)一趟字母

5、字符收集函数void Collect_c(SLNode *sl,int i, ArrType_c f,ArrType_c e)(5)链式基数排序函数void RadixSort(SLList &L)(6)按指针链重新整理静态链表void Arrange(SLList &L)/重新整理(7)二分查找函数int BinSearch(SLList L,KeyType key)(8)顺序查找函数void SeqSearch(SLList l,KeyType key,int i)(9) 显示航班记录函数 void Display(SLList L,int i)(10)查询检索菜单控制程序searchco

6、n(SLList L)(11)录入航班数据函数void InputData(SLList &L)(11)主函数void main()4 详细设计4.1数据类型定义模块结构体内包括六个字符数组和一个整型变量,六个字符数组中分别存放航班信息的起点站、终点站、班期、起飞时间、到达时间、飞机型号等信息,整型变量中存放航班的票价。然后再定义全局变量:一个结构体数组并初始化,用来存放各个航班信息。一个指向结构体变量的指针数组。typedef struct char start6; /起点char end6; /终点char sche10; /班期char time15; /起飞时间char time25;

7、 /到达时间char model4; /机型int price; /票价infotype; /航班记录类型typedef structkeytype keyskeylen; /关键字(航班号)infotype others;int next;slnode; /静态链表结点类型typedef struct slnode slmaxspace; /静态链表,s10为头结点int keynum; /记录当前关键字字符个数int length; /当前表长sllist; /静态链表类型typedef int arrtype_nradix_n; /十进制数字指针数组typedef int arrtype

8、_cradix_c; /26个字母指针数组4.2实现排序的各函数模块 4.2.1 一趟分配函数模块void 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;else slej.next=p;ej=p; 4.2.2 一趟搜集函数模块void collect(slnode *sl,int i,arrtype_n f,ar

9、rtype_n e) int j,t;for(j=0;!fj;j+) /找第一个非空子表sl0.next=fj; t=ej; /s10.next指向第一个非空子表中的一个结点while(jradix_n-1)for(j=j+1;jradix_n-1&!fj;j+) /找下一个非空子表if(fj) slt.next=fj; t=ej; slt.next=0; 4.2.3链式基数排序函数模块基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法,其是通过“分配”和“收集”两种操作对相应关键字进行排序。算法思路是按照排序关键字的每一位字符进行排序。排序前,先定义一个队列数组,每个队列数组与

10、某个关键字位对应,某队列中只能存放与该关键字位对应的元素。首先先从关键字的最后一位字符进行判断,根据关键字位,把这个元素放入相应的队列中去,这就是“分配”过程。等到所有元素均被分配到相应队列中之后,在把各个队列中的元素,按照队列数组顺序,依次重新放回原元素数组中,这就是“收集”过程。经过“分配”和“收集”后,一次排序完成。接着再以关键字的倒数第二位字符作为关键字位进行上述排序过程,直到按照关键字的所有位全部进行排序过后,整个序列就成为有序序列,排序完成。void radixsort(sllist &l)/链式 arrtype_n fn,en;arrtype_c fc,ec;for(i=0;i=

11、2;i-) /按最低位优先次序对各关键字进行分配和收集,先做低4位数字部分distribute(l.sl,i,fn,en);collect(l.sl,i,fn,en);for(i=1;i=0;i-) /对高位的2位大写字母进行分配和收集distribute_c(l.sl,i,fc,ec);collect_c(l.sl,i,fc,ec);/按指针链重新整理静态链表void arrange(sllist &l) /重新整理 p=l.sl0.next; /p指向第一个记录的当前位置for(i=1;il.length;i+) /l.s11i-1已按关键字有序化while(pi)p=l.slp.next

12、; q=l.slp.next; if(p!=i) temp=l.slp; l.slp=l.sli; l.sli=temp; l.sli.next=p; p=q; 4.2.4 二分查找函数模块二分查找是对有序序列进行快速查找的一种有效方法。它的基本思想是,每次都与这个有序序列的中间元素进行比较,若找到,则输出元素信息,若没找到,则判断这个中间元素比待查找的元素大还是小,如果大,那么查找工作继续在该有序序列的前半段进行;反之,则继续查找该有序序列的后半段。如此一直查找,直到找到该元素或者查找到只剩下一个元素而这个元素与待查找元素不相符时,查找结束。前一种情况找到了待查找元素,输出该元素,后一种没有

13、找到,输出相应提示信息。int binsearch(sllist l,keytype key) 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;else low=mid+1;return 0; 4.2.5 主控函数模块在主函数中,依然是以while循环的方式列出该程序的操作清单。该程序的菜单是请用户选择以什么作为查找关键字来查找航班信息。查找菜单如下:1.航班号,2.起点站,3.终点站,4.班期,5.起飞时间

14、,6.到达时间,7.机型,8.票价,9.退出。选择不同菜单项,将会提示不同信息让用户输入,然后程序根据各自的查找方法进行查找。void main()sllist l;l.keynum=6; l.length=0; /输入航班记录inputdata(l); /基数排序searchcon(l);5 运行与测试在VC+6.0环境下编译连接生成可执行文件。编译程序无错,继续执行!无错,程序运行成功。5.1 航班信息输入5.2 航班信息查询5.3 退出航班信息系统6 总结与心得 在细节问题的分析上,较以往有了很大的提高。在寻求最优解的问题上,也能够找到多种解决方案来使自己的程序收放自如。在课程设计过程中

15、,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪等等。对于航班系统的查询与检索这个实验,使我们更好地融入生活中,把所学到的知识点恰当地运用到生活中,达到学以致用的目的。此外,这次的课程设计进一步加强了我们运用C语言进行编程,调试,处理问题的能力,加深了我们对算法及数据结构的认识。同时我也意识到,开发程序的早期计划要做的充分,以免出现程序完成后发现不足而带来的修改麻烦。虽然这只是一个小小的软件,但对我们之后的影响确实很大的。参考文献 数据结构课程设计舒仕华 机械工业出版社 数据结构(C语言版) 严蔚敏 清华大学出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1