您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 交通咨询系统(代码)
#includestdio.h#includestring.h#definemaxspace100#definekeylen7#defineradix_n10#defineradix_c26typedefcharkeytype;typedefstruct{charstart[6];charend[6];charsche[10];chartime1[5];chartime2[5];charmodel[4];intprice;}infotype;typedefstruct{keytypekeys[keylen];infotypeothers;intnext;}slnode;typedefstruct{slnodesl[maxspace];intkeynum;intlength;}sllist;typedefintarrtype_n[radix_n];typedefintarrtype_c[radix_c];voiddistribute(slnode*sl,inti,arrtype_nf,arrtype_ne){intj,p;for(j=0;jradix_n;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;elsesl[e[j]].next=p;e[j]=p;}}voidcollect(slnode*sl,inti,arrtype_nf,arrtype_ne){intj,t;for(j=0;!f[j];j++);sl[0].next=f[j];t=e[j];while(jradix_n-1){for(j=j+1;jradix_n-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}voiddistribute_c(slnode*sl,inti,arrtype_cf,arrtype_ce){intj,p;for(j=0;jradix_c;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;elsesl[e[j]].next=p;e[j]=p;}}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(jradix_c-1){for(j=j+1;jradix_c-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}voidradixsort(sllist&l)//链式{inti;arrtype_nfn,en;arrtype_cfc,ec;for(i=0;il.length;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);}}voidarrange(sllist&l)//重新整理{intp,q,i;slnodetemp;p=l.sl[0].next;for(i=1;il.length;i++){while(pi)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,keytypekey[]){intlow,high,mid;low=1;high=l.length;while(low=high){mid=(low+high)/2;if(strcmp(key,l.sl[mid].keys)==0)returnmid;elseif(strcmp(key,l.sl[mid].keys)0)high=mid-1;elselow=mid+1;}return0;}voidseqsearch(sllistl,keytypekey[],inti){intj,k,m=0;printf(*************************************************************\n);printf(*航班号起点站终点站航班期起飞时间到达时间机型票价*\n);for(j=1;j=l.length;j++){switch(i){case2:k=strcmp(key,l.sl[j].others.start);break;case3:k=strcmp(key,l.sl[j].others.end);break;case4:k=strcmp(key,l.sl[j].others.time1);break;case5: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(sllistl){keytypekey[keylen];inti=1,k;while(i=1&&i=5){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){case1: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;case2:printf(输入要查询的航班起点站名:);scanf(%s,key);seqsearch(l,key,i);break;case3:printf(输入要查询的航班终点站名:);scanf(%s,key);seqsearch(l,key,i);break;case4:printf(输入要查询的航班起飞时间:);scanf(%s,key);seqsearch(l,key,i);break;case5:printf(输入要查询的航班到达时间:);scanf(%s,key);seqsearch(l,key,i);break;case0: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;}voidmain(){sllistl;l.keynum=6;l.length=0;radixsort(l);arrange(l);inputdata(l);searchcon(l);}
本文标题:交通咨询系统(代码)
链接地址:https://www.777doc.com/doc-6071282 .html