数据结构航班管理系统
#include
#include
#include
#define maxspace 100
#define keylen 7
#define radix_n 10
#define radix_c 26
typedef char keytype;
typedefstruct
{
char start[6];
char end[6];
charsche[10];
char time1[5];
char time2[5];
char model[4];
int price;
}infotype;
typedefstruct
{
keytype keys[keylen];
infotype others;
int next;
}slnode;
typedefstruct
{
slnodesl[maxspace];
intkeynum;
int length;
}sllist;
typedefintarrtype_n[radix_n];
typedefintarrtype_c[radix_c];
void distribute(slnode *sl,inti,arrtype_nf,arrtype_n e)
{
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]%48;
if(!f[j])
f[j]=p;
else
sl[e[j]].next=p;
e[j]=p;
}
}
void collect(slnode *sl,inti,arrtype_nf,arrtype_n e)
{
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;
}
void radixsort(sllist&l)//链式
{
inti;
arrtype_nfn,en;
arrtype_cfc,ec;
for(i=0;i
l.sl[i].next=i+1;
l.sl[l.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>=0;i--)
{
distribute_c(l.sl,i,fc,ec);
collect_c(l.sl,i,fc,ec);
}
}
void arrange(sllist&l)
//重新整理
{
intp,q,i;
slnode temp;
p=l.sl[0].next;
for(i=1;i
{
while(p
p=l.sl[p].next;
q=l.sl[p].next;
if(p!=i)
{
temp=l.sl[p];
l.sl[p]=l.sl[i];
l.sl[i]=temp;
l.sl[i].next=p;
}
p=q;
}
}
intbinsearch(sllistl,keytype key[])
{
intlow,high,mid;
low=1;
high=l.length;
while(low
{
mid=(low+high)/2;
if(strcmp(key,l.sl[mid].keys)==0)
return mid;
else if(strcmp(key,l.sl[mid].keys)
high=mid-1;
else
low=mid+1;
}
return 0;
}
voidseqsearch(sllistl,keytype key[],inti)
{
intj,k,m=0;
printf("*************************************************************\n");
printf("*航班号起点站终点站航班期起飞时间到达时间机型票价*\n");
for(j=1;j
{
switch(i)
{
case 2:k=strcmp(key,l.sl[j].others.start);break;
case 3:k=strcmp(key,l.sl[j].others.end);break;
case 4:k=strcmp(key,l.sl[j].others.time1);break;
case 5:k=strcmp(key,l.sl[j].others.time2);break;
}
if(k==0)
{
m=1;
printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[j].keys,l.sl[j].others.start,l.sl
[j].others.end,l.sl[j].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl
[j].others.model,l.sl[j].others.price);
}
}
if(m==0)
printf("* 无此航班信息,可能输入错误!*\n");
printf("*************************************************************\n");
}
voidsearchcon(sllist l)
{
keytype key[keylen];
inti=1,k;
while(i>=1&&i
{
printf("\********************\n");
printf(" * 航班信息查询系统\n");
printf(" ********************\n");
printf(" * 1.航班号 *\n");
printf(" * 2.起点站 *\n");
printf(" * 3.终点站 *\n");
printf(" * 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);
printf("*************************************************************\n");
if(k==0)
printf("*无此航班信息,可能输入错误!*\n");
else {
printf("* 航班号起点站终点站航班期起飞时间到达时间机型票价*\n");
printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[k].keys,l.sl[k].others.start,l.sl
[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l.sl
[k].others.model,l.sl[k].others.price);
}
printf("*************************************************************\n");
break;
case 2:printf("输入要查询的航班起点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 3:printf("输入要查询的航班终点站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 4:printf("输入要查询的航班起飞时间:"); scanf("%s",key);
seqsearch(l,key,i);
break;
case 5:printf("输入要查询的航班到达时间:"); scanf("%s",key);
seqsearch(l,key,i);
break;
case 0:printf("\n\n\n再见\n\n\n"); }
}
}
voidinputdata(sllist&l)
{
inti=++l.length;
charyn='y';
while(yn=='y'||yn=='Y')
{
printf("航班号起点站终点站航班期起飞时间到达时间机型票价\n");
scanf("%s%s%s%s%s%s%s%d",l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.end,l.sl
[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl [i].others.price);
++i; getchar();
radixsort(l);
arrange(l);
printf("继续输入吗?y/n:");
scanf("%c",&yn);
}
l.length=i-1;
}
void main()
{
sllist l;
l.keynum=6;
l.length=0;
inputdata(l);
searchcon(l);
}
//数据结构编写航班信息查询系统
//航班信息查询系统数据结构课程设计_梦里水乡_百度空间