怎么查航班

更新时间:2025-09-23 08:35:33 阅读: 评论:0

-

怎么查航班
2023年2月23日发(作者:山东禹城)

航班信息的查询与检索

f94

#include

#include

#include

#defineMaxSpace100

#definekeylen6

#defineRADIX_n10

#defineRADIX_c26typedefcharKeyType;

typedefstruct{

charstart[8];//起点

charend[8];//

终点

charsche[8];//

班期

chartime1[6];//

起飞时间

chartime2[6];//

到达时间

charmodel[6];//

机型

intprice;//

票价

}InfoType;//

航班记录类型

typedefstruct{

KeyTypekeys[keylen];//

关键字

InfoTypeothers;

intnext;

}SLNode;//

表书点

typedefstruct{

SLNodes1[MaxSpace];//静态链表,是s1[0]为头结点

intkeynum;//

关键字长

intlength;//当前表长

}SLList;//静态联表类型

typedefintArrType_n[RADIX_n];

typedefintArrType_c[RADIX_c];

intm=0,num=0;

/*本算法时按关键字keys[i]建立radix个子表,使同一个子表中记

录的keys[i]相同,f[0…radix]

和e[0..radix]分别指向各子表,使同一个子表中的第一个和最后一

个记录*/

voidDistribute(SLNode*s1,inti,ArrType_nf,ArrType_ne)

(

intj,p;

for(j=0;j

e[j]=0;

}

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

(

j=s1[p].keys[i]%48;

应的数值性数字*/if(!f[j])f[j]=p;

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

e[j]=p;

到第j个结点*/}}

/*

/*

/*各子表初始化*/

将数字字符转换成对

将p指向的结点插入

/*本算法是按关键字keys[i]从小到大将[0…radix]所指的各子表依次链接成一

个链表*/

voidCollect(SLNode*s1,ArrType_nf,ArrType_ne)

(

intj,t;

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

子表*/

s1[0].next=f[j];/*sl[0].next

第一个非空子表中的一个结点*/

t=e[j];

while(j

{

for(j=j+1;j

if(f[j])/*

{

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

t=e[j];

}

}

s1[t].next=0;/*t

空子表*/

voidDistribute_c(SLNode*s1,inti,ArrType_cf,ArrType_ce){

intj,p;

for(j=0;j

{

f[j]=0;

e[j]=0;

}

for(p=s1[0].next;p!=0;p=s1[p].next)

{

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

if(!f[j])f[j]=P;

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

找到第一个非空

指向

找下一个非空子表*/

连接两个非空字表*/

指向最后一个非

e[j]=P;

}

}

voidCollect_c(SLNode*s1,ArrType_cf,ArrType_ce)

{

intj,t;

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

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

t=e[j];

while(j

{

for(j=j+1;j

if(f[j])

{

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

t=e[j];

}

}

s1[t].next=0;

}

/*本算法是按关键字从低位到高位依次对个关键字进行分配和收集,分两段

实现:其中RadixSort方法通过调用前面的分配函数和收集函数来从最后一

个关键字开始进行整理。*/

voidRadixSort(SLList*L){

inti;

ArrType_nfn,en;

ArrType_cfc,ec;

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

L->s1[i].next=i+1;

L->s1[L->length].next=0;/*

表*/

for(i=L->keynum-1;i>=2;i--)/*

对各关键字进行分配和收集*/

{

Distribute(L->s1,i,fn,en);

Collect(L->s1,fn,en);

}

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

{

Distribute_c(L->s1,i,fc,ec);

Collect_c(L->s1,fc,ec);

}

}

voidArrange(SLList*L)

{

intp,q,i;

SLNodetemp;

p=L->s1[0].next;/*p

当前位置*/

for(i=1;ilength;i++)

{

while(p

录,并用p指示其在的位子*/

p=L->s1[p].next;

将改造为静态链

按最低位优先依次

指示第一个记录的

找到第i个记

/*L为待查找的表,key[]为待查找的关键字,按二分查找的思想实现查找*/

intBinSearch(SLList*L,KeyTypekey[])

(

intlow,high,mid;

low=1;

high=L

fc1

->length-1;

while(low<=high)

(

mid=(low+high)/2;

if(strcmp(key,L->s1[mid].keys)==0)returnmid;

elseif(strcmp(key,L->s1[mid].keys)<0)high=mid-1;

elselow=mid+1;

return0;

}

voidDisplay(SLList*L,inti)

/*qq=L->s1[p].next;

尾*/

if(p!=i)

(

temp=L->s1[p];

L->s1[p]=L->s1[i];

L->s1[i]=temp;

L->s1[i].next=p;/*

*/

}

p=q;/*p

整的表尾,为下一个准备*/

}

}

指不■尚未调整的表

指向被移走的记录

指向尚未调

(

printf("航班号起点站终点站航班期起飞时间至V达

时间机型票价n");

printf("%6s,%6s,%8s,%10s,%8s,%8s,%8s,%6dn”,L->s1[i].keys,L

->s1[i].,L->s1[i].,L->s1[i].

he,L->s1[i].1,L->s1[i].2,L->s1[i].oth

,L->s1[i].);

}

voidSeqSearch(SLList*L,KeyTypekey[],inti)

(

intj,k,m=0;

for(j=1;jlength;j++)

(

switch(i)

(

case2:k=strcmp(key,L->s1[j].);

break;

case3:k=strcmp(key,L->s1[j].);

break;

case4:k=strcmp(key,L->s1[j].1);

break;

case5:k=strcmp(key,L->s1[j].2);

break;

if(k==0)

(

m=1;

Display(L,j);

}

}

if(m==0)printf("无此航班信息,可能是输入错误!n");

}

voiddelete(SLList*L,KeyTypekey[])

(

intj,k=0;

for(j=1;jlength;j++)

if(strcmp(key,L->s1[j].keys)==0)

(

k=j;

break;

}

if(k==0)printf("对不起,没有这个航班!n");

else

(

if(k==L->length-1)

(

L->length--;

}

else

(

for(j=k;jlength-1;j++)

(

L->s1[j]=L->s1[j+1];

L->length--;

}

}

}

/*对于此算法主要是注意信息长度的赋值,对于每次调用要作相应的改变。*/

voidInputData(SLList*L)

(

inti,j,n;

charkn;

charyn='y';

num++;

if(num==1)

(

i=++L->length;

}

else

(

i=L->length;

}

while(yn=='y'||yn=='Y')

(

m++;

n=0;

printf("航班号起点站终点站航班期起飞时间至V达

时间机型票价n");

scanf("%s%s%s%s%s%s%s%d”,L->s1[i].keys,L->s1[i].othe

,L->s1[i].,L->s1[i].,L->s1[i].

1,L->s1[i].2,L->s1[i].,&L

->s1[i].);

scanf("%c",&kn);

if(m!=1)

{

for(j=1;j

{

if(strcmp(L->s1[i].keys,L->s1[j].keys)==0)

{

printf("sorry,你输入的航班已经存在!n");

n=1;

break;

}

}

}

if(n==0)i++;

printf("继续输入吗?y/n:");

scanf("%c",&yn);

}

L->length=i;

if(n==0)

{

RadixSort(L);

Arrange(L);

}

}voidserachcon(SLList*L,intn){

inti=1;

while(i!=0)

charkey[keylen];

charkl[4];

intk,j;

printf("t*************************************n");

printf("t*************************************n");

if(n==1)

else

scanf("%d”,&i);

if(i==1)printf("输入要查询的航班号(区分大小写):");

scanf("%s",key);

k=BinSearch(L,key);

if(k==0)

printf("t**********

航班信息查询系统***********n");

printf("t*******1.航班号*******n");

printf("t*******2.

起点站

*******n");

printf("t*******3.

终点站

*******n");

printf("t*******4.起飞时间*******n");

printf("t*******5.到达时间*******n");

printf("t*******6.显示所有航圳*******

n");

if(n==1)

printf("t*************************************n");

printf("t*******7.

插入新的航班信息

*******n");

printf("t*******8.

删除旧的航班信息

*******n");

printf("t*******0.

退出系统

*******n");

printf("t*******

请选择(0—8)

*******n");

printf("t*******

请选择(0—6)

*******n");

printf("无此航班信息,可能是输入错误!n”);

elseDisplay(L,k);

}

elseif(i==2)

{

printf("输入要查询的航班起点站名:”);

scanf("%s",key);

SeqSearch(L,key,i);

}

elseif(i==3)

{

printf("输入要查询的航班终点站名:”);

scanf("%s",key);

SeqSearch(L,key,i);

}

elseif(i==4)

{printf("输入要查询的航班起飞时间:");

scanf("%s”,kl);

SeqSearch(L,kl,i);

}

elseif(i==5)

{

65f

printf("输入要查询的航班到达时间:”);

scanf("%s",kl);

SeqSearch(L,kl,i);

}

elseif(i==6)

(

if(L->length==1)

printf("对不起,没有航班信息!n");

else

(

printf("显示所有航班信息:n");

for(j=1;jlength;j++)

(

Display(L,j);

}

}

}

elseif(i==7&&n==1)

(

printf("输入要插入的所有相关信息!n");

InputData(L);

}

elseif(i==8&&n==1)

(

printf("输入要删除的航班号!:");

scanf("%s”,key);

delete(L,key);

}

elseif(i==0)

(

printf("t再见!n");

return;

}

elseprintf("无此操作,可能是输入错误,请再输入!n");

voidlogin(SLList*L)

(

charstr[10];

inti=1;

printf("ifyouareadministrator,pleaseLogin!orinput"exit"to

exit!n");

while(i)(

printf("Inputyouusername:");

scanf("%s”,&str);

if(strcmp(str,"fangcao")==0)

(

printf("nInputyoupassword:");

scanf("%s”,&str);

if(strcmp(str,”19870923")==0)

(

serachcon(L,i);

break;

}

else

printf("youpasswordiswrong!n");

}

elseif(strcmp(str,"exit")==0)

(

i=0;

serachcon(L,i);

}

else

printf("youusernameiswrong!n");

voidmain()

(

SLList*L;

L=(SLList*)malloc(sizeof(SLList));

L->keynum=6;

L->length=0;

InputData(L);

login(L);

}

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

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

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

上一篇:南非航空
下一篇:尼布尔
标签:怎么查航班
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 数学伊甸园369文学xp系统