文档库 最新最全的文档下载
当前位置:文档库 › 航班查询系统实验报告汇总

航班查询系统实验报告汇总

航班查询系统实验报告汇总
航班查询系统实验报告汇总

目录

一、系统开发的背景 (1)

二、系统分析与设计 (1)

(一)系统功能要求 (1)

(二)系统模块结构设计 (1)

三、系统的设计与实现 (2)

(一)查询函数: (2)

(二)输入函数 (6)

四、系统测试 (7)

(一)测试MAIN()函数 (7)

(二)测试查询函数 (11)

(三)测试输入函数 (13)

五、总结 (14)

六、附件(代码、部分图表) (15)

航班查询系统

一、系统开发的背景

随着信息产业的飞速发展,信息化管理及查询已经引入并应用到各行各业,影响着人们的价值观念与生活方式。因此,要提升企业竞争力,就要大力推进企业信息化建设,利用先进的办公自动化系统来实现企业内部信息管理、共享及交流,从而提高企业综合实力。该课程设计要求对飞机航班信息进行排序和查找。可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。

二、系统分析与设计

(一)系统功能要求

可以输入航班信息系,可采用基数排序法对飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行。

1.航班记录包括:航班号、起点站、终点站、班期、起飞时间、到达

时间、飞机型号以及票价。

2.查询航班信息。

(二)系统模块结构设计

通过对系统功能的分析,航班查询系统功能如图X所示。

图1 航班查询系统功能图

通过上图的功能分析,把整个系统划分为5个模块:

1、航班号查询,该模块主要实现通过输入航班号实现对该趟航班的查询。

2、班期查询,该模块主要实现通过输入班期实现对该趟航班的查询。

3、起飞站查询,该模块主要实现通过输入起飞地点实现对该趟航班的查询。

4、到达站查询,该模块主要实现通过输入到站地点实现对该趟航班的查询。

5、起飞时间查询,该模块主要实现通过输入起飞时间实现对该趟航班的查询。

三、系统的设计与实现

(一)查询函数:

分析:输入要查询的方式,例如:航班号、起点站、终点站、起飞时间、到达时间。该函数的流程图如下图2所示。

图2:查询函数流程图该模块的具体代码如下所示。

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 1:k=strcmp(key,l.sl[j].keys);break;

case 2:k=strcmp(key,l.sl[j].others.qdz);break;

case 3:k=strcmp(key,l.sl[j].others.zdz);break;

case 4:k=strcmp(key,l.sl[j].others.qftime);break;

case 5:k=strcmp(key,l.sl[j].others.artime);break;

}

if(k==0)

{m=1;

printf("%s\t",l.sl[j].keys);

printf("%s\t",l.sl[j].others.qdz);

printf("%s\t",l.sl[j].others.zdz);

printf("%s\t",l.sl[j].others.bq);

printf("%s\t",l.sl[j].others.qftime);

printf("%s\t",l.sl[j].others.artime);

printf("%s\t",l.sl[j].others.jixing);

printf("%d\t",l.sl[j].others.price);

}

}

if(m==0)

printf(" 对不起!无此航班信息! \n");

//return k;

}

void search(sllist l)

{ //查询菜单控制程序

keytype key[keylen];

int i=1,k;

while(i>=1&&i<=5)

{

putchar('\n');

printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");

printf(" $ 航班信息查询系统$\n");

printf(" ………………………………………\n");

printf(" $ 1.航班号$\n");

printf(" $ 2.起点站$\n");

printf(" $ 3.终点站$\n");

printf(" $ 4.起飞时间$\n");

printf(" $ 5.到达时间$\n");

printf(" $ 6.退出系统$\n");

printf(" ………………………………………\n");

printf(" 请输入您的选择:");

scanf("%d",&i);

printf("\n");

switch(i)

{

if(k==6)

printf("% 对不起!无此航班信息! %\n");

else

{

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

printf("%s\t\t",l.sl[k].keys);

printf("%s\t\t",l.sl[k].others.qdz);

printf("%s\t\t",l.sl[k].others.zdz);

printf("%s\t\t",l.sl[k].others.bq);

printf("%s\t\t",l.sl[k].others.qftime);

printf("%s\t\t",l.sl[k].others.artime);

printf("%s\t\t",l.sl[k].others.jixing);

printf("%d\t\t",l.sl[k].others.price);

printf("\n");

}break;

case 1:printf("输入要查询的航班号:");

scanf("%s",key);

Seqsearch(l,key,i);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");

}

}

(二)输入函数

输入您所要输入的数据,该函数的流程图如下图3所示。

图3 输入函数流程图

该模块的具体代码如下所示:

void shuru(sllist &k)

{ int i=1; //输入航班记录函数

char ch='y';

printf("请输入航班信息!\n");

while(ch=='y'||ch=='Y')

{

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

scanf("%s%s%s%s%s%s%s%d",k.sl[i].keys,k.sl[i].others.qdz,k.sl[i].others.zdz,k.sl[i].others.bq,k .sl[i].others.qftime,k.sl[i].others.artime,k.sl[i].others.jixing,&k.sl[i].others.price);

i++;

getchar();

printf("需要继续输入吗?\n");

printf("y代表继续输入/n代表结束输入!\n");

printf("请输入y或n\n");

scanf("%c",&ch);

}

/k.length=i-1;

}

四、系统测试

(一)测试main()函数

图4 输入数据

图5 查询信息

图6 查询信息

图7 查询信息显示

(二)测试查询函数

图8 查询信息

图9 查询信息

图10 查询信息(三)测试输入函数

测试数据:

图11 输入信息

五、总结

该课程设计实现了根据航班号,起飞地点,到达地点,起飞时间,到达时间对该趟航班进行查询的功能。在编写过程中,运用了对航班数据的排序和查找,冒泡排序和顺序查找等知识,还有建立静态链表等。

系统在此次运行过程中,刚开始没有办法输入,之后输入可以实现但又无法正确查询,查询出来的都是错的,而且现实的结果和我编写的不相符。对冒泡排序的运用,理解不熟,无法书写出满足实验需求的程序代码。对冒泡排序在不同情况下的区别没有掌握。

本次的课程设计没有实现对班期,价格,航班号这三项对该趟航班的

查询。也没有运用二分查找,基数排序等操作。

通过这次课程设计,使我对C语言编程有了新的认识。以前编程只是注重如何编写函数能够完成所需要的功能,只是根据书上的算法敲打出一段程序。但是在做课程设计的过程中,对链表,指针的使用有了一定的提高。但是就指针的输入和输出还是存在比较大的问题。对什么时候要用地址符,什么时候不用不太清楚,再就是函数调用不太会。因此我觉得的,了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。

六、附件(代码、部分图表)

# include

# include

# define Maxspace 100

# define keylen 6

typedef char keytype;

typedef struct

{

char qdz[6]; //起点

char zdz[6]; //终点

char bq[6]; //班期

char qftime[5]; //起飞时间

char artime[5]; //到达时间

char jixing[4]; //机型

int price; //票价

}infotype; //航班记录类型

typedef struct

{

keytype keys[keylen]; //关键字(航班号)

infotype others;

int next;

}slnode;

typedef struct

{

slnode sl[Maxspace];

int num; //记录当前关键字字符个数

int length; //当前表长

}sllist; //静态链表类型

void Bubble_Sort(sllist k)

//冒泡排序法(从第一个记录到第n个记录,对n-1对相邻的两个记录关键字进行比较,一趟之后,//最大数沉底R[n],第二趟,次大数沉到R[n-1],...重复n-1次,在R[n]中,n个记录有序。

//排序按价格排序

{

int i,j;

int swap;

int tmp;

char tmp2[6];

//putchar('b');

for(i=1;i

{

//putchar('b');

swap=0;

for(j=1;j<=k.length-i;j++)

if(k.sl[j].others.price>k.sl[j+1].others.price)

{

tmp=k.sl[j].others.price;

k.sl[j].others.price=k.sl[j+1].others.price;

k.sl[j+1].others.price=tmp;

strcpy(tmp2,k.sl[j].others.artime);

strcpy(k.sl[j].others.artime,k.sl[j+1].others.artime);

strcpy(k.sl[j+1].others.artime,tmp2);

strcpy(tmp2,k.sl[j].others.bq);

strcpy(k.sl[j].others.bq,k.sl[j+1].others.bq);

strcpy(k.sl[j+1].others.bq,tmp2);

strcpy(tmp2,k.sl[j].others.jixing);

strcpy(k.sl[j].others.jixing,k.sl[j+1].others.jixing);

strcpy(k.sl[j+1].others.jixing,tmp2);

strcpy(tmp2,k.sl[j].others.qdz);

strcpy(k.sl[j].others.qdz,k.sl[j+1].others.qdz);

strcpy(k.sl[j+1].others.qdz,tmp2);

strcpy(tmp2,k.sl[j].others.qftime);

strcpy(k.sl[j].others.qftime,k.sl[j+1].others.qftime);

strcpy(k.sl[j+1].others.qftime,tmp2);

strcpy(tmp2,k.sl[j].others.zdz);

strcpy(k.sl[j].others.zdz,k.sl[j+1].others.zdz);

strcpy(k.sl[j+1].others.zdz,tmp2);

strcpy(tmp2,k.sl[j].keys);

strcpy(k.sl[j].keys,k.sl[j+1].keys);

strcpy(k.sl[j+1].keys,tmp2);

swap=1;

}

if(swap==0)

break;

}

for(i=1;i<=k.length;i++)

printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n",k.sl[i].keys,k.sl[i].others.qdz,k.sl[i].others.zdz,k.sl[i].othe rs.qftime,k.sl[i].others.artime,k.sl[i].others.jixing,k.sl[i].others.bq,k.sl[i].others.price);

}

/*查找算法实现*/

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 1:k=strcmp(key,l.sl[j].keys);break;

case 2:k=strcmp(key,l.sl[j].others.qdz);break;

case 3:k=strcmp(key,l.sl[j].others.zdz);break;

case 4:k=strcmp(key,l.sl[j].others.qftime);break;

case 5:k=strcmp(key,l.sl[j].others.artime);break;

}

if(k==0)

{m=1;

printf("%s\t",l.sl[j].keys);

printf("%s\t",l.sl[j].others.qdz);

printf("%s\t",l.sl[j].others.zdz);

printf("%s\t",l.sl[j].others.bq);

printf("%s\t",l.sl[j].others.qftime);

printf("%s\t",l.sl[j].others.artime);

printf("%s\t",l.sl[j].others.jixing);

printf("%d\t",l.sl[j].others.price);

}

}

if(m==0)

printf(" 对不起!无此航班信息! \n");

//return k;

}

void search(sllist l)

{ //查询菜单控制程序

keytype key[keylen];

int i=1,k;

while(i>=1&&i<=5)

{

putchar('\n');

printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");

printf(" $ 航班信息查询系统$\n");

printf(" ………………………………………\n");

printf(" $ 1.航班号$\n");

printf(" $ 2.起点站$\n");

printf(" $ 3.终点站$\n");

printf(" $ 4.起飞时间$\n");

printf(" $ 5.到达时间$\n");

printf(" $ 6.退出系统$\n");

printf(" ………………………………………\n");

printf(" 请输入您的选择:");

scanf("%d",&i);

printf("\n");

switch(i)

{

if(k==6)

printf("% 对不起!无此航班信息! %\n");

else

{

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

printf("%s\t\t",l.sl[k].keys);

printf("%s\t\t",l.sl[k].others.qdz);

printf("%s\t\t",l.sl[k].others.zdz);

printf("%s\t\t",l.sl[k].others.bq);

printf("%s\t\t",l.sl[k].others.qftime);

printf("%s\t\t",l.sl[k].others.artime);

printf("%s\t\t",l.sl[k].others.jixing);

printf("%d\t\t",l.sl[k].others.price);

printf("\n");

}break;

case 1:printf("输入要查询的航班号:");

scanf("%s",key);

Seqsearch(l,key,i);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 shuru(sllist &k)

{ //输入航班记录函数

k.length+=1;

int i=k.length ;

char ch='y';

printf("请输入航班信息!\n");

while(ch=='y'||ch=='Y')

{

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

scanf("%s%s%s%s%s%s%s%d",k.sl[i].keys,k.sl[i].others.qdz,k.sl[i].others.zdz,k.sl[i].others.bq,k.sl[i] .others.qftime,k.sl[i].others.artime,k.sl[i].others.jixing,&k.sl[i].others.price);

i++;

getchar();

printf("需要继续输入吗?\n");

printf("y代表继续输入/n代表结束输入!\n");

printf("请输入y或n\n");

scanf("%c",&ch);

}

k.length=i-1;

// printf("%d\n",k.length);

相关文档