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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

航班信息查询与检索.docx

1、航班信息查询与检索航班信息的查询与检索f94#include#include#include#define MaxSpace 100#define keylen 6#define RADIX_n 10#define RADIX_c 26typedef char KeyType;typedef struct char start8; /起点 char end8; /终点 char sche8; /班期 char time16; /起飞时间 char time26; /到达时间 char model6; /机型 int price; /票价InfoType; /航班记录类型typedef stru

2、ct KeyType keyskeylen; /关键字 InfoType others; int next;SLNode; /表节点typedef struct SLNode s1MaxSpace; /静态链表,是s10为头结点 int keynum; /关键字长 int length; /当前表长SLList; /静态联表类型typedef int ArrType_nRADIX_n;typedef int ArrType_cRADIX_c;int m=0,num=0;/*本算法时按关键字keysi建立radix个子表,使同一个子表中记录的keysi相同,f0radix和e0.radix分别指

3、向各子表,使同一个子表中的第一个和最后一个记录*/void Distribute(SLNode *s1,int i,ArrType_n f,ArrType_n e) int j,p; for(j=0;jRADIX_n;j+) /*各子表初始化*/ fj=0; ej=0; for(p=s10.next;p;p=s1p.next) j=s1p.keysi%48; /*将数字字符转换成对应的数值性数字*/ if(!fj) fj=p; else s1ej.next=p; ej=p; /*将p指向的结点插入到第j个结点*/ /*本算法是按关键字keysi从小到大将0radix所指的各子表依次链接成一个链

4、表*/void Collect(SLNode *s1,ArrType_n f,ArrType_n e) int j,t; for(j=0;!fj;j+); /*找到第一个非空子表*/ s10.next=fj; /*sl0.next指向第一个非空子表中的一个结点*/ t=ej; while(jRADIX_n-1) for(j=j+1;jRADIX_n-1 & !fj;j+); /*找下一个非空子表*/ if(fj) /*连接两个非空字表*/ s1t.next=fj; t=ej; s1t.next=0; /*t指向最后一个非空子表*/void Distribute_c(SLNode *s1,int

5、 i,ArrType_c f,ArrType_c e) int j,p; for(j=0;jRADIX_c;j+) fj=0; ej=0; for(p=s10.next;p!=0;p=s1p.next) j=s1p.keysi%65; if(!fj) fj=p; else s1ej.next=p; ej=p; void Collect_c(SLNode *s1,ArrType_c f,ArrType_c e) int j,t; for(j=0;!fj;j+); s10.next=fj; t=ej; while(jRADIX_c-1) for(j=j+1;jRADIX_c-1 & !fj;j+)

6、; if(fj) s1t.next=fj; t=ej; s1t.next=0;/*本算法是按关键字从低位到高位依次对个关键字进行分配和收集,分两段实现:其中RadixSort方法通过调用前面的分配函数和收集函数来从最后一个关键字开始进行整理。*/void RadixSort(SLList *L) int i; ArrType_n fn,en; ArrType_c fc,ec; for(i=0;ilength;i+) L-s1i.next=i+1; L-s1L-length.next=0; /*将改造为静态链表*/ for(i=L-keynum-1;i=2;i-) /*按最低位优先依次对各关键字

7、进行分配和收集*/ 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); void Arrange(SLList *L) int p,q,i; SLNode temp; p=L-s10.next; /*p指示第一个记录的当前位置*/ for(i=1;ilength;i+) while(ps1p.next; q=L-s1p.next; /*q指示尚未调整的表尾*/ if(p!=i) temp=L-s1p; L-s1p=L-s

8、1i; L-s1i=temp; L-s1i.next=p; /*指向被移走的记录*/ p=q; / *p指向尚未调整的表尾,为下一个准备*/ /*L为待查找的表,key为待查找的关键字,按二分查找的思想实现查找*/int BinSearch(SLList *L,KeyType key) int low,high,mid; low=1; high=Lfc1-length-1; while(lows1mid.keys)=0) return mid; else if(strcmp(key,L-s1mid.keys)s1i.keys,L-s1i.others.start,L-s1i.others.en

9、d,L-s1i.others.sche,L-s1i.others.time1,L-s1i.others.time2,L-s1i.others.model,L-s1i.others.price);void SeqSearch(SLList *L,KeyType key,int i) int j,k,m=0; for(j=1;jlength;j+) switch(i) case 2:k=strcmp(key,L-s1j.others.start); break; case 3:k=strcmp(key,L-s1j.others.end); break; case 4:k=strcmp(key,L-

10、s1j.others.time1); break; case 5:k=strcmp(key,L-s1j.others.time2); break; if(k=0) m=1; Display(L,j); if(m=0) printf(无此航班信息,可能是输入错误!n);void delete(SLList *L,KeyType key) int j,k=0; for(j=1;jlength;j+) if(strcmp(key,L-s1j.keys)=0) k=j; break; if(k=0) printf(对不起,没有这个航班!n); else if(k=L-length-1) L-lengt

11、h-; else for(j=k;jlength-1;j+) L-s1j=L-s1j+1; L-length-; /*对于此算法主要是注意信息长度的赋值,对于每次调用要作相应的改变。*/void InputData(SLList *L) int i,j,n; char kn; char yn=y; num+; if(num=1) i=+L-length; else i=L-length; while(yn=y | yn=Y) m+; n=0; printf(航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价n); scanf(%s %s %s %s %s %s %s %d,L-s1

12、i.keys,L-s1i.others.start,L-s1i.others.end,L-s1i.others.sche,L-s1i.others.time1,L-s1i.others.time2,L-s1i.others.model,&L-s1i.others.price); scanf(%c,&kn); if(m!=1) for(j=1;js1i.keys,L-s1j.keys)=0) printf(sorry,你输入的航班已经存在!n); n=1; break; if(n=0) i+; printf(继续输入吗?y/n:); scanf(%c,&yn); L-length=i; if(n

13、=0) RadixSort(L); Arrange(L); void serachcon(SLList *L,int n) int i=1; while(i!=0) char keykeylen; char kl4; int k,j; printf(t*n); printf(t*航班信息查询系统*n); 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. 显示所

14、有航班信息 *n); if(n=1) printf(t* 7. 插入新的航班信息 *n); printf(t* 8. 删除旧的航班信息 *n); printf(t* 0. 退出系统 *n); printf(t*n); if(n=1) printf(t* 请选择(08) *n); else printf(t* 请选择(06) *n); scanf(%d,&i); if(i=1) printf(输入要查询的航班号(区分大小写):); scanf(%s,key); k=BinSearch(L,key); if(k=0) printf(无此航班信息,可能是输入错误!n); else Display(L

15、,k); else if(i=2) printf(输入要查询的航班起点站名:); scanf(%s,key); SeqSearch(L,key,i); else if(i=3) printf(输入要查询的航班终点站名:); scanf(%s,key); SeqSearch(L,key,i); else if(i=4) printf(输入要查询的航班起飞时间:); scanf(%s,kl); SeqSearch(L,kl,i); else if(i=5) 65f printf(输入要查询的航班到达时间:); scanf(%s,kl); SeqSearch(L,kl,i); else if(i=6

16、) if(L-length=1) printf(对不起,没有航班信息!n); else printf(显示所有航班信息:n); for(j=1;jlength;j+) Display(L,j); else if(i=7 & n=1) printf(输入要插入的所有相关信息!n); InputData(L); else if(i=8 & n=1) printf(输入要删除的航班号!:); scanf(%s,key); delete(L,key); else if(i=0) printf(t再见!n); return ; else printf(无此操作,可能是输入错误,请再输入!n); void

17、 login(SLList *L) char str10; int i=1; printf(if you are administrator,please Login! or input exit to exit !n); while(i) printf(Input you username:); scanf(%s,&str); if(strcmp(str,fangcao)=0) printf(nInput you password:); scanf(%s,&str); if(strcmp(str,19870923)=0) serachcon(L,i); break; else printf(you password is wrong!n); else if(strcmp(str,exit)=0) i=0; serachcon(L,i); else printf(you username is wrong!n); void main() SLList *L; L=(SLList *)malloc(sizeof(SLList); L-keynum=6; L-length=0; InputData(L); login(L);0

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

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