航班信息查询与检索系统Word文件下载.docx

上传人:b****4 文档编号:7811464 上传时间:2023-05-09 格式:DOCX 页数:23 大小:113.98KB
下载 相关 举报
航班信息查询与检索系统Word文件下载.docx_第1页
第1页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第2页
第2页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第3页
第3页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第4页
第4页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第5页
第5页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第6页
第6页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第7页
第7页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第8页
第8页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第9页
第9页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第10页
第10页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第11页
第11页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第12页
第12页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第13页
第13页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第14页
第14页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第15页
第15页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第16页
第16页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第17页
第17页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第18页
第18页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第19页
第19页 / 共23页
航班信息查询与检索系统Word文件下载.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

航班信息查询与检索系统Word文件下载.docx

《航班信息查询与检索系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《航班信息查询与检索系统Word文件下载.docx(23页珍藏版)》请在冰点文库上搜索。

航班信息查询与检索系统Word文件下载.docx

4.采用模块化编程

5.给出现实方法和算法

6.按课程设计规范撰写课程设计报告

参考资料:

[1]严蔚敏、陈文博,数据结构及应用算法教程[M].北京:

清华大学出版社,2011.5

[2]张小莉、王苗、罗文劼,数据结构与算法[M].北京:

机械工业出版社,2014.4

教研室审核意见:

教研室主任签字:

指导教师(签名)

学生(签名)

课程设计总结:

本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为主线,用到了二分查找和顺序查找等知识,还有建立静态链表等。

通过这次课程设计,使我对C语言编程有了新的认识。

以前编程只是注重如何编写函数能够完成所需要的功能,只是凭单纯的意识和简单的语句来堆砌出一段程序。

但现在编程感觉完全不同了。

在编写一个程序之前,自己能够综合考虑各种因素,选取自己需要的数据结构,在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当前状况的算法。

这样,即使在完整的程序还没有写出来之前,自己心中已经有了明确的原图了。

这样无形中就提高了自己编写的程序的质量。

另外,我还体会到深刻理解数据结构的重要性。

只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。

了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。

1题目介绍5

2.1课程设计内容5

2.2课程设计目标5

3概要设计5

3.1设计思路5

3.2流程图5

4算法概述6

4.1定义数据类型6

4.2函数描述7

5测试数据10

附录(关键部分程序清单)12

1、题目介绍

设计一个航班信息查询与检索系统。

可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。

2、课程设计要求

1、每个航班记录包括八项:

航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。

如下表所示:

航班号

起点站

终点站

班期

起飞时间

到达时间

机型

票价

CA1544

合肥

北京

1055

1240

733

960

MU5341

上海

广州

每日

1420

1615

M90

1280

CZ3869

重庆

深圳

2.4.6

0855

1035

1010

2、对航班信息进行排序与查找。

3、概要设计

3.1、设计思路

根据题目所要求,程序必须实现航班信息的录入和查询。

程序首先定义了一个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。

在查询设计中,使用折半查找法对排好序的航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。

3.2、流程图

4、算法实现

4.1.定义数据类型

根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的数据类型:

typedefstruct{

charstart[6];

//起点站

charend[6];

//终点站

charsche[10];

//班期

chartime1[5];

//起飞时间

chartime2[5];

//到达时间

charmodel[4];

//机型

intprice;

//票价

}info;

//航班记录类型

typedefstruct{

charkeys[keylen];

//关键字

infoothers;

intnext;

}slnode;

//表结点

slnodesl[maxspace];

intkeynum;

//关键字长

intlength;

//当前表长

}sllist;

//静态链表类型

为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:

typedefintarrtype_n[10];

//十进制数字指针数组

typedefintarrtype_c[26];

//26个字母指针数组

4.2.函数描述

voiddistribute(slnode*sl,inti,arrtype_nf,arrtype_ne)

{

intj,p;

for(j=0;

j<

10;

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;

//将p指向的结点插入到第j个结点

voidcollect(slnode*sl,inti,arrtype_nf,arrtype_ne)

intj,t;

!

f[j];

j++);

//找第一个非空子表

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

t=e[j];

while(j<

10-1)

for(j=j+1;

10-1&

&

//找下一个非空子表

if(f[j])

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

}//链接两个非空子表

sl[t].next=0;

链式基数排序算法

voidradixsort(sllist&

l)

inti;

arrtype_nfn,en;

arrtype_cfc,ec;

for(i=0;

i<

l.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;

=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;

while(p<

i)

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,charkey[])

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;

low=mid+1;

return0;

5、测试数据

编译后运行,显示:

录入信息^_^

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

录入:

CA1544合肥北京 1055 1240 733 960

显示:

是否继续?

y/n:

y

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

MU5341 上海广州每日 1420 1615 M90 1280

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

CZ3869重庆深圳2.4.6085510357331010

n

录入航班信息后,屏幕显示:

-------------------------------

*航班信息查询系统*

*1.航班号*

*2.起点站*

*3.终点站*

*4.起飞时间*

*5.到达时间*

*0.退出*

-----------------------------

(0-5)号服务项目:

输入要查询的航班号(字母要大写):

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

CA1544合肥北京 1055 1240 733 960

2

输入要查询的航班起点站:

附录

源程序:

#include<

stdio.h>

string.h>

#definemax100

#definekeylen7

typedefstruct

charstart[6];

charend[6];

charsche[10];

chartime1[5];

chartime2[5];

charmodel[4];

intprice;

typedefstruct

charkeys[keylen];

infoothers;

intnext;

slnodesl[max];

intkeynum;

intlength;

voiddistribute(slnode*sl,inti,arrtype_nf,arrtype_ne)

intj,p;

for(j=0;

{

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

}

for(p=sl[0].next;

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

if(!

f[j]=p;

else

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

e[j]=p;

intj,t;

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

t=e[j];

while(j<

for(j=j+1;

if(f[j])

{

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

t=e[j];

}

sl[t].next=0;

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

26;

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

else

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

26-1)

26-1&

voidradixsort(sllist&

inti;

arrtype_nfn,en;

arrtype_cfc,ec;

for(i=0;

l.sl[i].next=i+1;

l.sl[l.length].next=0;

for(i=l.keynum-1;

distribute(l.sl,i,fn,en);

collect(l.sl,i,fn,en);

for(i=1;

distribute_c(l.sl,i,fc,ec);

collect_c(l.sl,i,fc,ec);

l)

intp,q,i;

slnodetemp;

p=l.sl[0].next;

while(p<

p=l.sl[p].next;

q=l.sl[p].next;

if(p!

{

temp=l.sl[p];

l.sl[p]=l.sl[i];

l.sl[i]=temp;

l.sl[i].next=p;

p=q;

intlow,high,mid;

low=1;

high=l.length;

while(low<

mid=(low+high)/2;

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

returnmid;

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

high=mid-1;

low=mid+1;

return0;

voidseqsearch(sllistl,charkey[],inti)

intj,k,m=0;

printf("

------------------------------------------------------------\n"

);

航班号起点站终点站班期起飞时间到达时间机型票价\n"

for(j=1;

=l.length;

switch(i)

case2:

k=strcmp(key,l.sl[j].others.start);

break;

case3:

k=strcmp(key,l.sl[j].others.end);

case4:

k=strcmp(key,l.sl[j].others.time1);

case5:

k=strcmp(key,l.sl[j].others.time2);

}

if(k==0)

m=1;

printf("

%-8s%-7s%-7s%-11s%-6s%-6s%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)

无此航班信息,可能是输入错误!

\n"

-------------------------------------------------------\n"

voidsearchcon(sllistl)

charkey[keylen];

inti=1,k;

while(i>

=1&

=5)

printf("

----------------------\n"

*航班信息查询系统*\n"

*1.航班号*\n"

*2.起点站*\n"

*3.终点站*\n"

*4.起飞时间*\n"

*5.到达时间*\n"

*0.退出*\n"

----------------------\n"

(0-5)号服务项目:

"

scanf("

%d"

&

i);

\n"

case1:

printf("

scanf("

%s"

key);

k=binsearch(l,key);

printf("

--------------------------------------------------------------\n"

if(k==0)

printf("

else

{

printf("

%-8s%-7s%-7s%-11s%-6s%-6s%-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);

}

break;

case2:

scanf("

seqsearch(l,key,i);

break;

case3:

输入要查询的航班终点站:

case4:

输入要查询的航班起飞时间:

case5:

输入要查询的航班到达时间:

case0:

\n\n宝宝走了\n\n"

voidinputdata(sllist&

inti=++l.length;

charyn='

y'

;

while(yn=='

||yn=='

Y'

信息录入^_^\n\n"

航班号起点站终点站班期起飞时间到达时间机型票价\n"

%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);

是否继续\ny/n:

%c"

yn);

l.length=i-1;

voidmain()

sllistl;

l.keynum=6;

l.length=0;

inputdata(l);

searchcon(l);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2