航班号查询

更新时间:2025-09-23 05:32:37 阅读: 评论:0

-

航班号查询
2023年2月16日发(作者:獐岛村)

航班信息查询系统分析

航班信息查询系统

当今乘飞机的人越来越多,人们需要关心了解各类航班的班次、

时间、价格、机型等信息,设计一个航班信息查询系统,可供人们查

询航班信息,该查询系统可按一个或者多个条件查询,航班信息表的

部分内容如下:

一、需求分析(余子轩、包灵美)

制作一个航班信息查询系统,能够完整显示航班信息可以通过

航班号、机型、起点站、到达站、起飞时间中的一个或多个条件查询

并显示航班动态。

要求进入查询系统后,可以按要求选择需要更新的操作,并按提

速输入要更新的航班数据,更新操作完成后返回初始界面。在选择查

询时,能显示输入查询条件的界面并提示输入信息(航班号、起点站、

航班号起点站终点站起飞时间机型票价

CA1544合肥北京10:55733960

MU5341上海重庆14:20M901280

CZ3869广州南京08:557331010

MU3682深圳桂林20:50M901060

HUI1863昆明西安10:157381250

终点站、班期、起飞时间、到达时间、飞机型号及票价),若输入的

信息符合要求则显示相对应的航班信息,否则显示“没有相关航班”

并返回输入界面。如果主要想实现查询功能,就可以采用顺序的存储

结构;想实现更新操作,采用链式存储结构;相比之下,这次主要想

实现的功能是查询功能,因此采用顺序存储结构。考虑到此航班信息

查询系统查询功能用到的比较多而更新操作使用的比较少,为了使操

作简便,程序利用效率高,使用顺序表来存储航班信息。本系统采用

二分查找法、基数排序法、最高位优先法。

二分查找法也称为折半查找法:将n个元素分成个数大致相同的

两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算

法终止。如果x

(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数

组a的右半部继续搜索x。

基数排序法:其时间复杂度为O(nlog(r)m),其中r为所采取

的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比

较性排序法。

最高位优先法:先按k1排序分组,同一组中记录,关键码k1相

等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样

的排序分组,直到按最次位关键码kd对各子组排序后。再将各组连

接起来,便得到一个有序序列。

需要注意到的是:在整个航班信息查询系统当中,需要对所要查

询的信息进行一定的判断,看是否存在乘客所要查询的航班信息,以

及在进行关键字查询时出现错误输入等。

二、概要设计(黄飞)

1.系统的功能:

本任务要求对飞机航班信息进行排序和查找。可按航班的航班号、

起点站、到达站、起飞时间、飞机型号及票价等信息进行查询。本设计

主要是对航班信息存储、排序以及查找等概念进行综合练习。以链式基

数排序为主线,用到二分查找和顺序查找等知识,还有建立静态链表等

相关概念,本系统使用dos界面实现。

2.系统模块分析:

(1)航班排序对输入系统内的航班首先要进行排序,我们采用的

按航班号排序,从低位到高位依次对关键字进行分配和收集,分两段实

现其算法。

输入信息:MU5341上海重庆14:20M901280

CZ3869广州南京08:557331010

排序之后:CZ3869广州南京08:557331010

MU5341上海重庆14:20M901280

(2)按航班号查找航班的信息。

输入航班号:MU5341

显示:MU5341上海重庆14:20M9012

(3)按航班起始站查找航班的信息。

输入起始站:广州

显示:CZ3869广州南京08:557331010

(4)按航班终点站查找航班的信息。

输入起始站:南京

显示:CZ3869广州南京08:557331010

(5)根据航班的起飞时间查找航班的信息。

输入起飞时间:08:55

显示:CZ3869广州南京08:557331010

(6)根据航班的机型查找航班的信息。

输入飞机机型:733

显示:CZ3869广州南京08:557331010

(7)根据航班的票价查找航班的信息。

输入飞机票价:1010

显示:CZ3869广州南京08:557331010

三、详细分析(包灵美、陈足萍)

根据题目所述,程序必须实现对航班信息的录入和查询,应该首

先定义一个用于存储航班信息数据类型,再由管理员录入航班数据,

将数据进行整理后,实现通过按照关键字搜索项目,有下面几种情况:

按航班号查询

按起飞时间查询

按到机型查询

按出发地查询

按目的地查询

退出系统

系统功能图:(包灵美)

定义数据类型

//tydedefstruct{

//charstart[6];//起点站

//charend6];//终点站

//charStime[5];//起飞时间

//charmodel[4];//机型

//intprice;//票价

}infotype;//航班记录类型

tydedefstruct{

keytypekeys[keylen];//关键字

infotypeothers;

航班信息查询系统

退

输入航班信息

intnext;

}slnode;//表结点

typedefstruct{

slnodesl[maxspace];

intkeynum;//关键字长

intlength;//当前表长

}sllist;//静态链表类型

typedefintarrtype_n[10];//十进制数字指针组

typedefintarrtype_c[26];//26个字母指针数组

各函数说明

1.一趟分配函数

voiddistribute_c(slnode*sl,inti,arrtype_cf,arrtype_ce)

{//一趟字母分配字符函数

intj,p;

for(j=0;j

{

f[j]=e[j]=0;

}

for(p=sl[0].next;p;p=sl[p].next)

{

j=sl[p].keys[i]%65;

if(!f[j])

f[j]=p;

else

sl[e[j]].next=p;

e[j]=p;

}

}

2.一趟收集函数

voidcollect_c(slnode*sl,inti,arrtype_cf,arrtype_ce)

{

intj,t;

for(j=0;!f[j];j++);

sl[0].next=f[j];

t=e[j];

while(j

{

for(j=j+1;j

if(f[j])

{

sl[t].next=f[j];

t=e[j];

}

}

sl[t].next=0;

}

3.链式基数排序

voidradixsort(sllist&l)//链式基数排序函数

{

inti;

arrtype_nfn,en;

arrtype_cfc,ec;

for(i=0;i<;i++)

[i].next=i+1;

[].next=0;

for(i=-1;i>=2;i--)

{

distribute(,i,fn,en);

collect(,i,fn,en);

}

for(i=1;i>=0;i--)

{

distribute_c(,i,fc,ec);

collect_c(,i,fc,ec);

}

}

4.二分法查找函数

intbinsearch(sllistl,keytypekey[])

{

intlow,high,mid;

low=1;

high=;

while(low<=high)

{

mid=(low+high)/2;

if(strcmp(key,[mid].keys)==0)

returnmid;

elseif(strcmp(key,[mid].keys)<0)

high=mid-1;

else

low=mid+1;

}

return0;

}

本文发布于:2023-02-16 00:20:20,感谢您对本站的认可!

本文链接:http://www.yoguilin.com/write/167647802026584.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:乌克兰机票
下一篇:国际航班
标签:航班号查询
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 数学伊甸园369文学xp系统