当前位置:首页 >> 其它课程 >> 数据结构课程设计航班信息的查询与检索实验参考代码

数据结构课程设计航班信息的查询与检索实验参考代码


#include <stdio.h>
#include <string.h>
#define Maxspace 100
#define keylen 6
#define RADIX_n 10
#define RADIX_c 26
typedef char keytype;

typedef struct
{
char start[6]; //起点
char end[6]; //终点
char sche[6]; //班期
char time1[5]; //起飞时间
char time2[5]; //到达时间
char model[4]; //机型
int price; //票价
}infotype; //航班记录类型
typedef struct
{
keytype keys[keylen]; //关键字(航班号)
infotype others;
int next;
}slnode;
typedef struct
{
slnode sl[Maxspace];
int keynum; //记录当前关键字字符个数
int length; //当前表长
}sllist; //静态链表类型
typedef int arrtype_n[RADIX_n];//十进制数字指针数组
typedef int arrtype_c[RADIX_c];//26个字母指针数组

/*链式基数排序 */
void Distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)
{//一趟数字字符分配函数
int j,p;
for(j=0;j<RADIX_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;
else
sl[e[j]].next=p;
e[j]=p; //将P指向的结点插入到第J个子表中
}
}

void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)
{//一趟数字字符的收集函数
int j,t;
for(j=0;!f[j];j++);//找出第一非空子表
sl[0].next=f[j];//指向第一个非空子表中的一个结点
t=e[j];
while(j<RADIX_n-1)
{
for(j=j+1;j<RADIX_n-1 && !f[j];j++); //找出下一个非空子表
if(f[j])
{
sl[t].next=f[j];//链接两个非空子表
t=e[j];
}
}
sl[t].next=0;//t指向最后一个非空子表中的最后一个结点
}

void Distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e)
{//一趟字母字符分配函数
int j,p;
for(j=0;j<RADIX_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;
else
sl[e[j]].next=p;
e[j]=p;
}
}

void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e)
{//一趟字母字符收集函数
int j,t;
for(j=0;!f[j];j++);
sl[0].next=f[j];
t=e[j];
while(j<RADIX_c-1)
{
for(j=j+1;j<RADIX_c-1&&!f[j];j++);
if(f[j])
{
sl[t].next=f[j];
t=e[j];
}
}
sl[t].next=0;
}

void Radixsort(sllist &l)//链式基数排序
{
int i;
arrtype_n fn,en;
arrtype_c fc,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;i>=0;i--)
{
Distribute_c(l.sl,i,fc,ec);
collect_c(l.sl,i,fc,ec);
}
}

void Arrange(sllist &l)
{//按指针链重新整理静态链表
int p,q,i;
slnode temp;
p=l.sl[0].next;
for(i=1;i<l.length;i++)
{
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;
}
}
/*查找算法实现*/
int Binsearch(sllist l,keytype key[])
{//二分查找函数
int low,high,mid;
low=1;
high=l.length;
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(key,l.sl[mid].keys)==0)
return mid;
else if(strcmp(key,l.sl[mid].keys)<0)
high=mid-1;
else
low=mid+1;
}
return 0;
}

void Seqsearch(sllist l,keytype key[],int i)
{//顺序查找函数
int j,k,m=0;

printf("* 航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价 *\n");
for(j=1;j<=l.length;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("%6s,%6s,%6s,%6s,%8s,%6s,%6s,%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");

}


void searchcon(sllist l)
{//查询检索菜单控制程序
keytype key[keylen];
int i=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)
{
case 1:printf("输入要查询的航班号:");
scanf("%s",key);
k=Binsearch(l,key);
if(k==0)
printf("* 无此航班信息,可能是输入错误! *\n");
else
{
printf("* 航班号 起点站 终点站 航班期 起飞时间 到达时间 机型 票价 *\n");
printf("*%6s,%6s,%6s,%6s,%8s,%6s,%6s,%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;
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");
}
}
}

void Inputdata(sllist &l)
{ //输入航班记录函数
int i=++l.length;
char yn='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);//调用查询函数
return;
}

更多相关文档:

数据结构课程设计航班信息查询与检索

航班信息查询与检索 Ⅰ、题目的目的和要求: 1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解, 最终使学生能够熟练应用数据结构...

数据结构课程设计--航班信息查询与检索系统

数据结构课程设计--航班信息查询与检索系统_工学_高等教育_教育专区。《数据结构...7 航班信息查询 六、收获与体会……….8 收获与体会 2 一、设计题目设计一...

航班信息的查询与检索数据结构程序设计实验报告4

实 验 报 告 课程名称 实验项目 数据结构综合设计实验航班信息的查询与检索 系专 别___ 业___ _计算机学院 _ ___ 网络工程 ___ 班级/学号_网工 1202/...

《数据结构 课程设计》航班查询系统实验报告

数据结构 课程设计航班查询系统实验报告_电脑基础...2.航班信息查询与检索数据结构理论 针对在本该类...站、起飞时间、到达时间来进行查询,其源代码如下。...

数据结构课程设计-航班查询与检索(含代码、流程图、输出结果)

数据结构课程设计-航班查询与检索(含代码、流程图、输出结果) 隐藏>> 算法与数据结构实验报告 航班查询与检索 题目:航班查询与检索指导老师: 组长: 成员: 一:航班...

数据结构 实验报告六 航班信息查询与检索系统

数据结构 实验报告六 航班信息查询与检索系统_院校资料_高等教育_教育专区。实验课程名称 专学学指业班级生姓名号导教师 数据结构课程设计 2012 至 2013 学年第 ...

航班信息的查询与检索课程设计

航班信息的查询与检索课程设计_工学_高等教育_教育专区。数据结构与算法 课程...主程序的流程 三、 详细设计 1.主要代码: friend istream&operator>>(istream&...

数据结构与算法课程设计报告——航班信息查询系统(C++)

航班信息的查询与检索的... 32页 4下载券数​据​结​构​与​算​...11 摘要本课程设计目的在于检验数据结构及算法设计与分析两门课程的学习成果, ...

数据结构课程设计--城市交通咨询系统、航班信息的查询与检索

数据结构课程设计--城市交通咨询系统、航班信息的查询与检索_IT/计算机_专业资料...的实验原理图、数据通路图、微程序流程图、实验 接线图、微指令代码表等图表...

航班信息的查询与检索的程序设计模版

附录 程序源代码………页码 -2- 《数据结构课程设计报告 航班信息的查询与检索问题描述:上学期,我们在刘理老师的带领下, 1. 问题描述:上学期,我们在刘理老师...
更多相关标签:
被引参考文献检索 | 检索参考号 | 信息检索参考文献 | 信息检索的参考文献 | 文献检索参考文献 | pos机检索参考号 | 文献检索论文参考文献 | 小票检索参考号 |
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com