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

合集下载

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

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

学院名称《数据结构》课程设计报告题目——航班信息查询与检索班级:姓名:时间:2012/12/29---2013/1/5二○一二年十二月二十九日课程设计任务书及成绩评定航班信息查询与检索课题名称Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

2、设计题目要求:问题描述:该设计要求对飞机航班信息进行排序和查找。

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

任务要求:对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。

每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,这种航班号关键字可分成两段,即字母和数字。

其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。

Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一三年一月五日目录一、概述 (6)二、系统分析 (6)三、概要设计 (6)四、详细设计 (7)1.定义数据类型 (7)2.算法实现 (8)五、测试数据 (10)六、收获与体会 (13)七、参考文献 (13)八、附录 (14)5一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

数据结构课程设计-航班查询跟检索(跟代码、流程图、输出结果)最新文档资料

数据结构课程设计-航班查询跟检索(跟代码、流程图、输出结果)最新文档资料

算法与数据结构实验报告航班查询与检索题目:航班查询与检索指导老师:组长:成员:一:航班信息的查询与检索初始化信息进行排序主菜单显示输入查询序号判断序号是否合法按航班号查询按时间查询按地点查询按票价查询输出航班信息结束开始按时间查询:按站点查询:开始输入票价范围判断有无符合条件票价输出相应信息返回查询信息按票价范围查询输入查询时间Time=1按抵达时间查询按起飞时间查询返回查询信息开始是 否二分法查询:开始返回查询信息输入起点终点及ADAD=1?按目的站查询按起点站查询否是二:算法分析:程序主要采用结构体 链表 顺序表 队列主要算法:/*航班信息的查询与检索*/ 三:/*航班信息的查询与检索*/#include<iostream.h> #include<string.h>输入航班号开始输入航班号对应序列号High=mid+1Low<=hi ghNum=F[mid].flight_numberMid=(high+low)/2Num<F[mid]fligt _numberLow=mid+1返回是否#include<stdio.h>#define N 6 //航班数//航班信息typedef struct flight{char flight_number[10]; //航班号char start_address[10]; //起飞站char arrived_address[10]; //终点站char work_date[10]; //班期char start_time[6]; //起飞时间char arrived_time[6]; //到达时间char FlightType[4]; //机型int fare; //票价}DataType;struct flight Flight[N];//-----------按航班号进行基数排序-----------typedef char KeyType;#define D 7 // D为排序码的最大位数#define R 'a' // R为基数,这里为小于字母'a'代表的整型值struct Node; //单链表结点类型typedef struct Node RadixNode;struct Node{KeyType key[D]; //关键字DataType info; //数据信息RadixNode *next;};typedef RadixNode * RadixList;typedef struct QueueNode{RadixNode *f; //对列的头指针RadixNode *e; //对列的尾指针}Queue;Queue queue[R];//用队列表示桶void radixSort(RadixList * plist, int d, int r){int i,j,k;RadixNode *p, *head;head=(*plist)->next;for(j=d-1; j>=0; j--) //进行d次分配和收集{p=head;for(i=0; i<r; i++){queue[i].f=NULL; queue[i].e=NULL; //清队列}while(p!=NULL){k=p->key[j]; //按排序码的第j个分量进行分配if(queue[k].f==NULL) queue[k].f=p; // 若第k个堆为空,则当前记录为队头else (queue[k].e)->next=p; // 否则当前记录链接到第k队的队尾queue[k].e=p;p=p->next;}i=0;while(queue[i].f==NULL) i++; // 从r个队列中找出第一个非空的队列p=queue[i].e; head=queue[i].f; //head为收集链表的头指针for(i++; i<r; i++)if(queue[i].f!=NULL){ p->next=queue[i].f; p=queue[i].e; } // 收集非空队列p->next=NULL;}(*plist)->next=head;}//初始化航班信息struct Node element[N+1]={" "," "," "," "," "," "," "," ",0,NULL,//表头"CA1544","CA1544","合肥","北京","1245 ","10:55","12:40","733",960,NULL,"MU5341","MU5341","上海","广州","每日","14:20","16:15","M90",1280,NULL, "CZ3869","CZ3869","重庆","深圳","246 ","08:55","10:35","733",1010,NULL, "MU3682","MU3682","桂林","南京","23467","20:50","22:15","M90",1380,NULL,"HU1836","HU1836","上海","北京","每日","09:40","11:20","738",1250,NULL,"CZ3528","CZ3528","成都","厦门","13457","15:10","16:50","CRJ",1060,NULL,};//------------信息显示------------//按表的格式输出某个航班信息//显示头部信息void Cout_info1(){cout<<" ****************************************\n"<<endl;cout<<" * 欢迎您使用*\n"<<endl;cout<<" * 航班信息表*\n"<<endl;cout<<" ****************************************\n"<<endl;cout<<" 航班号起飞时间到达时间起飞站终点站班期机型票价\n"<<endl;}。

数据结构课程设实验报告

数据结构课程设实验报告

《数据结构程序设计》实验报告专业**********学号 ******* 姓名****************学院****年**月一.实验名称:航班信息的查询与检索【问题描述】排序和查找是在数据信息处理中使用频度极高的操作。

为了加快查找的速度,需要先对数据记录按关键字排序。

当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、时间、价格及机型等信息。

在这个飞机航班数据的信息模型中,航班号是关键字,而且是具有结构特点的一类关键字。

因为航班号是字母数字混编的,例如CZ3869,这种记录集合是一个适合于多关键字排序的例子。

系统总体功能程序流程图:详细设计:#include<stdio.h>#include<stdlib.h>#include<string.h>int i,j;int max=0;struct airplane{char num[10];char start[10];char final[10];char day[10];char on[10];char off[10];char mode[10];char ticket[10];}air[10]={0};struct airplane_num{int a;char b[5];int c;}air_num[10];void Input();void Search();void Print();void Menu();int Two_Devide(int x); void Menu_Choose();void main(){air_num[0].a=1544;air_num[1].a=1836;air_num[2].a=3528;air_num[3].a=3682;air_num[4].a=3869;air_num[5].a=4594;air_num[6].a=5341;air_num[7].a=7425; strcpy(air_num[0].b,"CA"); strcpy(air_num[1].b,"HU"); strcpy(air_num[2].b,"CZ"); strcpy(air_num[3].b,"MU"); strcpy(air_num[4].b,"CZ"); strcpy(air_num[5].b,"MU"); strcpy(air_num[6].b,"MU"); strcpy(air_num[7].b,"SC");air_num[0].c=0;air_num[1].c=4;air_num[2].c=5;air_num[3].c=3;air_num[4].c=2;air_num[5].c=6;air_num[6].c=1;air_num[7].c=7;Input();for(i=0;i<8;i++)printf("\n\n\n");Menu_Choose();getchar();}void Input(){strcpy(air[0].num,"CA1544"); strcpy(air[0].start,"HeFei"); strcpy(air[0].final,"BeiJing"); strcpy(air[0].day,"1-2-4-5"); strcpy(air[0].on,"1055");strcpy(air[0].off,"1240");strcpy(air[0].mode,"733"); strcpy(air[0].ticket,"960"); strcpy(air[1].num,"MU5341"); strcpy(air[1].start,"ShangHai"); strcpy(air[1].final,"GuangZhou"); strcpy(air[1].day,"full");strcpy(air[1].on,"1420");strcpy(air[1].off,"1615");strcpy(air[1].mode,"M90"); strcpy(air[1].ticket,"1280"); strcpy(air[2].num,"CZ3869"); strcpy(air[2].start,"ChongQing"); strcpy(air[2].final,"ShenZhen"); strcpy(air[2].day,"2-4-6"); strcpy(air[2].on,"1035");strcpy(air[2].off,"1035");strcpy(air[2].mode,"733");strcpy(air[2].ticket,"1010");strcpy(air[3].num,"MU3682");strcpy(air[3].start,"GuiLin");strcpy(air[3].final,"NanJing");strcpy(air[3].day,"2-3-4-6-7");strcpy(air[3].on,"2050");strcpy(air[3].off,"2215");strcpy(air[3].mode,"M90");strcpy(air[3].ticket,"1380");strcpy(air[4].num,"HU1836");strcpy(air[4].start,"ShangHai");strcpy(air[4].final,"BeiJing");strcpy(air[4].day,"full");strcpy(air[4].on,"0940");strcpy(air[4].off,"1120");strcpy(air[4].mode,"738");strcpy(air[4].ticket,"1250");strcpy(air[5].num,"CZ3528");strcpy(air[5].start,"ChenDu");strcpy(air[5].final,"ShaMeng");strcpy(air[5].day,"1-3-4-5-7");strcpy(air[5].on,"1510");strcpy(air[5].off,"1650"); strcpy(air[5].mode,"CRJ"); strcpy(air[5].ticket,"1060");strcpy(air[6].num,"MU4594");strcpy(air[6].start,"KunMing");strcpy(air[6].final,"XiAn");strcpy(air[6].day,"1-3-5-6"); strcpy(air[6].on,"1015"); strcpy(air[6].off,"1140"); strcpy(air[6].mode,"328"); strcpy(air[6].ticket,"1160");strcpy(air[7].num,"SC7425");strcpy(air[7].start,"QIngDao");strcpy(air[7].final,"HaiKou");strcpy(air[7].day,"1-3-6"); strcpy(air[7].on,"1920"); strcpy(air[7].off,"2120"); strcpy(air[7].mode,"DH4"); strcpy(air[7].ticket,"1630");}void Print(){printf("********************MENU*********** **********\n\n");printf("航班号起点站终点站班期起飞时间到达时间机型票价\n");printf("%6s%11s%11s%11s%7s%9s%10s%7s\n",air[i ].num,air[i].start,air[i].final,air[i].day,air[i].on,air[i].of f,air[i].mode,air[i].ticket);}void sort(){int i,j,flag;airplane t[10];airplane temp;for(i=0;i<10;i++){flag=0;for(j=0;j<10-1;j++)if(t[j].num>t[j+1].num){flag=1;strcpy(temp.num,t[j].num);strcpy(temp.start,t[j].start);strcpy(temp.final,t[j].final);strcpy(temp.day,t[j].day);strcpy(temp.on,t[j].on);strcpy(temp.off,t[j].off);strcpy(temp.mode,t[j].mode);strcpy(temp.ticket,t[j].ticket);strcpy(t[j].num,t[j+1].num);strcpy(t[j].start,t[j+1].start);strcpy(t[j].final,t[j+1].final);strcpy(t[j].day,t[j+1].day);strcpy(t[j].on,t[j+1].on);strcpy(t[j].off,t[j+1].off);strcpy(t[j].mode,t[j+1].mode);strcpy(t[j].ticket,t[j+1].ticket);strcpy(t[j+1].num,temp.num);strcpy(t[j+1].start,temp.start);strcpy(t[j+1].final,temp.final);strcpy(t[j+1].day,temp.day);strcpy(t[j+1].on,temp.on);strcpy(t[j+1].off,temp.off);strcpy(t[j+1].mode,temp.mode);strcpy(t[j+1].ticket,temp.ticket);}if(flag==0)break;}}void Menu(){printf("******************菜单*****************************\n");printf("1.按航班号查询:\n");printf("2.按起点站查询:\n");printf("3.按终点站查询:\n");printf("4.按起飞时间查询:\n");printf("5.按到达时间查询:\n");printf("6.按机型查询:\n");printf("7.按票价查询:\n");printf("8.按航班号排序显示:\n");printf("************************************* ***************\n");printf("输入1-8选择:\n");}int Two_Devide(int x){int low=0,high=7,mid;printf("%d\n",x);while(low<=high){mid=(low+high)/2;if(x>air_num[mid].a) low=mid+1;if(x<air_num[mid].a) high=mid-1;if(x==air_num[mid].a) return mid;}}void Search(){int a; char b[5]; int y,z;scanf("%s",b);scanf("%d",&a);y=Two_Devide(a);if(strcmp(b,air_num[y].b)==0){z=air_num[y].c; i=z; Print();}} void Menu_Choose(){int key,key2;charnum[10],start[10],final[10],on[10],off[10],mode[10],ti cket[10];do{Menu();scanf("%d",&key);switch(key){case 1:scanf("%s",num); for(i=0;i<8;i++){if(strcmp(num,air[i].num)==0)Print();} break;case 2:scanf("%s",start); for(i=0;i<8;i++){if(strcmp(start,air[i].start)==0)Print();} break;case 3:scanf("%s",final); for(i=0;i<8;i++){if(strcmp(final,air[i].final)==0) Print();} break;case 4:scanf("%s",on); for(i=0;i<8;i++){if(strcmp(on,air[i].on)==0) Print();} break;case 5:scanf("%s",off); for(i=0;i<8;i++){if(strcmp(off,air[i].off)==0) Print();} break;case 6:scanf("%s",mode); for(i=0;i<8;i++){if(strcmp(mode,air[i].mode)==0) Print();} break;case 7:scanf("%s",ticket); for(i=0;i<8;i++){if(strcmp(ticket,air[i].ticket)==0) Print();} break;case 8:sort();printf("航班号起点站终点站班期起飞时间到达时间机型票价\n");for(i=0;i<10-1;i++)printf("%6s%11s%11s%11s%7s%9s%10s%7s\n",air[i ].num,air[i].start,air[i].final,air[i].day,air[i].on,air[i].of f,air[i].mode,air[i].ticket);break;}printf("按任意数字继续:\n");scanf("%d",&key2);}while(key2!=0);}调试分析:显示功能调试:航班号查询测试选择1,然后输入航班号,例如MU4594起点站查询测试:选择2,然后输入起点站,例如KunMing终点站查询测试:选择3,然后输入终点站,例如XiAn起飞时间查询测试:选择4,然后输入起飞时间,例如1015(10点15分)到达时间查询测试:选择5,然后输入到达时间,例如1140(11点40分)机型查询测试:选择6,然后输入机型,例如328票价查询测试:选择7,然后输入票价,例如1160航班号排序显示测试:选择8课程总结:通过做这次的课程设计我自学到很多新的东西,而且对以前所学的知识有了更深的理解:1.设计图对程序的作用,至今才真正体会到。

航班查询系统实验报告

航班查询系统实验报告
printf(" ………………………………………\n");
printf("请输入您的选择:");
scanf("%d",&i);
printf("\n");
switch(i)
{
if(k==6)
printf("%对不起!无此航班信息! %\n");
else
{
printf("航班号起点站终点站航班期起飞时间到达时间机型票价\n");
i++;
getchar();
printf("需要继续输入吗?\n");
printf("y代表继续输入/n代表结束输入!\n");
printf("请输入y或n\n");
scanf("%c",&ch);}/k.ength=i-1;}
四、系统测试
(一)
图4输入数据
图5查询信息
图6查询信息
图7查询信息显示
for(i=1;i<k.length;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;
infotype others;

航班信息系统设计课设报告

航班信息系统设计课设报告

课程设计报告课程名称《数据结构》课题名称航班信息系统课程设计专业信息管理与信息系统班级学号姓名指导教师2013 年1 月8 日湖南工程学院课程设计任务书课程名称《数据结构》课题航班信息系统设计专业班级学生姓名学号指导老师审批任务书下达日期2012 年12月17 日任务完成日期2013 年 1 月8 日一、设计内容与设计要求1.设计内容:[问题描述] 每个航班记录包括八项,分别是:航班号、起点站、终点站、航班期、起飞时间、到达时间、机型以及票价。

设计该航班信息系统,实现飞机航班信息的插入、删除、查询与检索等功能。

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

在查询过程中,要求用到顺序查找、二分查找等算法。

具体要求见基本功能。

[基本功能]1).对一组具有结构特征的飞机航班号进行排序,排序方法任选。

2).利用二分查找的方法对已经排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用顺序查找方法进行,因为它们用得较少。

3).如有特殊情况,需要插入或一条新的航班信息,插入或删除后,显示更新后的所有航班信息。

2.设计要求:1).设计正确,方案合理。

2).界面友好,使用方便。

3).程序精炼,结构清晰。

4).设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。

5).实际操作过程中遇到的问题及解决方法:设计总结及心得体会。

6).上机演示。

二、进度安排第 18 周星期一 8时:00分——11时:30分星期二 14时:00分——17时:30分星期三 8时:00分——11时:30分星期四 8时:00分——11时:30分星期五 8时:00分——11时:30分第 19 周星期二 8时:00分——11时:30分目录1、系统需求分析 (1)1.1问题描述 (1)1.2功能要求 (1)2. 概要设计 (2)2.1系统总体设计 (2)2.2.各模块的功能 (2)2.3.航班信息的查询与检索 (3)2.4.航班信息查询与检索数据结构理论 (3)3. 详细设计 (4)3.1 采用C语言定义结构体类型 (4)3.2主函数 (4)3.3各模块流程图 (7)4. 系统调试及运行结果 (12)4.1显示的主菜单界面 (12)4.2 添加记录界面 (12)4.3 显示记录界面 (13)4.4 删除记录界面 (13)4.5 查询记录界面 (14)4.6 修改记录界面 (14)4.7 保存记录界面 (15)4.8 退出菜单界面 (16)5. 心得体会 (17)6. 附录 (17)6.1源代码 (17)6.2 参考文献 (33)7. 评分表 (34)1、系统需求分析1.1问题描述通过该系统实现对航班信息进行录入、显示、修改、删除、插入、排序、保存等操作的管理。

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

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

数据结构与算法课程设计报告计算机学院软件工程摘要 (3)第一章绪论 (4)1.1课程设计选题 (4)1.1.1选题描述 (4)1.1.2选题要求 (4)第二章系统需求分析 (4)2.1输入/输出形式和输出值 (4)2.2功能需求 (4)2.3数据流图 (5)2.4用户特点 (5)2.4假定和约束 (5)第三章概要设计 (5)3.1设计思想 (5)3.2基本设计概念和处理流程 (6)3.3存储结构设计 (8)第四章详细设计 (9)4.1程序设计说明 (9)4.2算法设计与分析 (9)4.2.1基数排序: (9)4.2.2二分查找 (9)4.3算法实现 (10)4.4函数说明 (10)第五章测试 (11)5.1核心算法复杂性分析 (11)5.2测试数据及结果 (11)第六章总结 (11)摘要本课程设计目的在于检验数据结构及算法设计与分析两门课程的学习成果,从而加深对所学的知识的进一步理解与巩固。

本次课程设计过程中本人主要根据课本中的理论与算法编写程序,体现以课本知识的应用为主,在学习了数据结构的基础上,以能够更加熟练的应用所学知识,并能结合一些著名算法来实现对一些实际问题的应用,从而更为深刻理解数据结构与算法的内涵。

本次课程设计利用C++语言编写程序,实现对飞机航班信息进行排序和查找。

第一章绪论随着信息产业的飞速发展,信息化管理及查询已经引入并应用到各行各业,影响着人们的价值观念与生活方式。

因此,要提升企业竞争力,就要大力推进企业信息化建设,利用先进的办公自动化系统来实现企业内部信息管理、共享及交流,从而提高企业综合实力。

1.1课程设计选题1.1.1选题描述该设计要求对飞机航班信息进行排序和查找。

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

1.1.2选题要求(1)每个航班记录包括8项,分别是:航班号、起点站、终点站、航班期、起飞时间、到达时间、机型以及票价,如下给出一个航班记录的例子:航班号起点站终点站航班期起飞时间到达时间机型票价CA1544 合肥北京 1.2.4.5 1055 1240 M90 960(2)从键盘输入各记录。

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

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

学院名称《数据结构》课程设计报告题目——航班信息查询与检索班级:姓名:时间:2012/12/29---2013/1/5二○一二年十二月二十九日课程设计任务书与成绩评定课题名称航班信息查询与检索Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

2、设计题目要求:问题描述:该设计要求对飞机航班信息进行排序和查找。

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

任务要求:对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。

每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以与票价等,假设航班信息表(8条记录)位为航班号,这种航班号关键字可分成两段,即字母和数字。

其余七项输入内容因为不涉与本设计的核心,因此除了票价为数值型外,均定义为字符串即可。

Ⅱ、设计进度与完成情况Ⅲ、主要参考文献与资料[1] 严蔚敏数据结构(C语言版)清华大学出版社1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社1999[3] 谭浩强C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一三年一月五日目录一、概述 (6)二、系统分析 (6)三、概要设计 (6)四、详细设计 (7)1.定义数据类型 (7)2.算法实现 (8)五、测试数据 (10)六、收获与体会 (13)七、参考文献 (13)八、附录 (14)5 / 24一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉与和课程相关的各个方面,是一门独立于课程之外的特殊课程。

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

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

目录一、概述 (1)二、系统分析 (1)1.航班信息的查询与检索 (1)2.航班信息查询与检索数据结构理论 (1)三、概要设计 (2)1.系统的功能 (2)2.系统模块分析及其流程图 (3)四、详细设计 (6)1.各函数说明 (6)2.定义相关数据类型 (8)3.航班信息的查询 (9)五、运行由于测试 (11)六、总结与心得 (16)参考文献 (16)附录 (16)一、概述随着信息产业的飞速发展, 信息化管理及查询已经进入并应用到各行各业, 影响着人们的价值观念和生活方式。

因此, 要提高企业信息化建设, 利用先进的办公自动化系统来实现企业内部信息管理、共享及交流, 从而提高企业综合实力。

本次设计是针对航班的查询系统, 该设计要求对飞机航班信息进行排序和查询。

可按航班的航班号、起点站、终点站等信息进行航班信息的查询。

二、系统分析1.航班信息的查询与检索进入系统后, 首先提示输入航班的信息, 包括: 航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号及票价等, 票价为整型, 其他为字符型。

当输入完一个信息后会提示是否继续输入, 重复以上步骤输入全部的信息。

进入主菜单后会给出用户操作的界面, 根据提示进行航班信息的查询。

2.航班信息查询与检索数据结构理论针对在本该类系统中的数据的处理情况, 本系统采用二分查找法、基数排序法、最高位优先法。

二分查找法也称为折半查找法, 它充分利用了元素间的次序关系, 采用分治策略, 可在最坏的情况下用O(log n)完成搜索任务。

它的基本思想是, 将n 个元素分成个数大致相同的两半, 取a[n/2]与欲查找的x作比较, 如果x=a[n/2]则找到x, 算法终止。

如果x<a[n/2], 则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。

如果x>a[n/2], 则我们只要在数组a的右半部继续搜索x。

对航班号的排序是采用的基数排序法。

基数排序法又称“桶子法”(bucket sort)或bin sort, 顾名思义, 它是透过键值的部份资讯, 将要排序的元素分配至某些“桶”中, 藉以达到排序的作用, 基数排序法是属于稳定性的排序, 其时间复杂度为O (nlog(r)m), 其中r为所采取的基数, 而m为堆数, 在某些时候, 基数排序法的效率高于其它的比较性排序法。

航班信息查询实训报告

航班信息查询实训报告

航班信息查询实训报告航班信息查询实训报告一、实训目的和意义航班信息查询系统是一种为乘客方便查询和了解航班信息的工具。

随着航空业的发展,人们对航班信息的需求越来越高,传统的咨询方式已经无法满足人们的需求。

航班信息查询系统可以提供航班的起降时间、航班状态、机票价格等信息,方便乘客选择和了解自己需要的航班信息。

本次实训的目的是学习和掌握航班信息查询系统的开发和实现过程,为今后的工作和学习提供便利。

二、实训过程和方法本次实训利用了Python编程语言和MySQL数据库进行航班信息查询系统的开发。

首先,我们使用Python编程语言搭建了系统的框架,包括用户登录界面、航班查询界面和数据库连接界面等。

然后,我们利用MySQL数据库存储了航班信息,包括航班号、起降时间、航班状态和机票价格等。

最后,我们通过Python代码实现了航班信息的查询和显示功能,乘客可以输入航班号或起降时间来查询相应的航班信息。

三、实训结果和分析经过几天的不断努力和改进,我们最终实现了一个简单、稳定和易用的航班信息查询系统。

乘客可以通过输入航班号或起降时间来查询相应的航班信息,并可以看到航班的起降时间、航班状态和机票价格等。

系统的界面简洁明了,查询结果准确可靠,用户体验良好。

四、实训心得和收获通过本次实训,我学到了很多关于航班信息查询系统的知识和技能。

我不仅学习到了Python编程语言的基本语法和用法,还学习到了MySQL数据库的使用方法和航班信息的存储和查询过程。

我深刻体会到了系统开发的重要性和复杂性,需要综合运用多种技术和工具来完成一个功能完善的系统。

此外,本次实训还培养了我的问题解决能力和团队合作精神。

在开发过程中,我遇到了很多问题和难题,但是通过和同学们的合作和讨论,最终解决了这些问题。

这不仅提高了我的解决问题的能力,还培养了我与他人合作的能力。

综上所述,本次实训使我收获颇丰。

我不仅学到了很多关于航班信息查询系统的知识和技能,还培养了我的问题解决能力和团队合作精神。

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

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

算法与数据结构实验报告航班查询与检索题目:航班查询与检索指导老师:组长:成员:一:航班信息的查询与检索按时间查询:按站点查询:二分法查询:二:算法分析:程序主要采用结构体链表顺序表队列主要算法:/*航班信息的查询与检索*/三:/*航班信息的查询与检索*/#include<iostream.h>#include<string.h>#include<stdio.h>#define N 6 //航班数//航班信息typedef struct flight{char flight_number[10]; //航班号char start_address[10]; //起飞站char arrived_address[10]; //终点站char work_date[10]; //班期char start_time[6]; //起飞时间char arrived_time[6]; //到达时间char FlightType[4]; //机型int fare; //票价}DataType;struct flight Flight[N];//-----------按航班号进行基数排序-----------typedef char KeyType;#define D 7 // D为排序码的最大位数#define R 'a' // R为基数,这里为小于字母'a'代表的整型值struct Node; //单链表结点类型typedef struct Node RadixNode;struct Node{KeyType key[D]; //关键字DataType info; //数据信息RadixNode *next;};typedef RadixNode * RadixList;typedef struct QueueNode{RadixNode *f; //对列的头指针RadixNode *e; //对列的尾指针}Queue;Queue queue[R];//用队列表示桶void radixSort(RadixList * plist, int d, int r){int i,j,k;RadixNode *p, *head;head=(*plist)->next;for(j=d-1; j>=0; j--) //进行d次分配和收集{for(i=0; i<r; i++){queue[i].f=NULL; queue[i].e=NULL; //清队列}while(p!=NULL){k=p->key[j]; //按排序码的第j个分量进行分配if(queue[k].f==NULL) queue[k].f=p; // 若第k个堆为空,则当前记录为队头else (queue[k].e)->next=p; // 否则当前记录链接到第k队的队尾queue[k].e=p;p=p->next;}i=0;while(queue[i].f==NULL) i++; // 从r个队列中找出第一个非空的队列p=queue[i].e; head=queue[i].f; //head为收集链表的头指针for(i++; i<r; i++)if(queue[i].f!=NULL){ p->next=queue[i].f; p=queue[i].e; } // 收集非空队列p->next=NULL;}(*plist)->next=head;}//初始化航班信息struct Node element[N+1]={" "," "," "," "," "," "," "," ",0,NULL,//表头"CA1544","CA1544","合肥","北京","1245 ","10:55","12:40","733",960,NULL,"MU5341","MU5341","上海","广州","每日","14:20","16:15","M90",1280,NULL,"CZ3869","CZ3869","重庆","深圳","246 ","08:55","10:35","733",1010,NULL, "MU3682","MU3682","桂林","南京","23467","20:50","22:15","M90",1380,NULL,"HU1836","HU1836","上海","北京","每日","09:40","11:20","738",1250,NULL,"CZ3528","CZ3528","成都","厦门","13457","15:10","16:50","CRJ",1060,NULL,};//------------信息显示------------//按表的格式输出某个航班信息//显示头部信息void Cout_info1(){cout<<" ****************************************\n"<<endl;cout<<" * 欢迎您使用*\n"<<endl;cout<<" * 航班信息表*\n"<<endl;cout<<" ****************************************\n"<<endl;cout<<" 航班号起飞时间到达时间起飞站终点站班期机型票价}//显示主体信息void Cout_info2_1(Node p[])//方式一{cout<<" "<<p->info.flight_number;cout<<" "<<p->info.start_time;cout<<" "<<p->info.arrived_time;cout<<" "<<p->info.start_address;cout<<" "<<p->info.arrived_address; cout<<" "<<p->info.work_date;cout<<" "<<p->info.FlightType;cout<<" "<<p->info.fare<<"元"<<endl;}void Cout_info2_2(flight F[],int i)//方式二{cout<<" "<<F[i].flight_number;cout<<" "<<F[i].start_time;cout<<" "<<F[i].arrived_time;cout<<" "<<F[i].start_address;cout<<" "<<F[i].arrived_address;cout<<" "<<F[i].work_date;cout<<" "<<F[i].FlightType;cout<<" "<<F[i].fare<<"元"<<endl;}//显示所有航班信息void output_ALL_info1(Node element[]) //方式一{RadixList p=element;Cout_info1();p=p->next;while(p!=NULL){Cout_info2_1(p);p=p->next;}cout<<endl;}void output_ALL_info2(flight F[]) //方式二{Cout_info1();for(int i=0;i<N;i++){Cout_info2_2(F,i);}cout<<endl;}//--------------信息复制----------------//将排好的序列(链表)转化成顺序表存储形式void copy(flight F[],Node element[]){RadixList p=element;p=p->next;int i;for(i=0;i<N && p!=NULL;i++){strcpy(F[i].flight_number,p->info.flight_number);strcpy(F[i].start_time,p->info.start_time);strcpy(F[i].arrived_time,p->info.arrived_time);strcpy(F[i].start_address,p->info.start_address);strcpy(F[i].arrived_address,p->info.arrived_address);strcpy(F[i].work_date,p->info.work_date);strcpy(F[i].FlightType,p->info.FlightType);F[i].fare=p->info.fare;p=p->next;}}//---------------服务菜单--------------void F_By_Time(flight F[],int);void F_By_Address(flight F[],int);void F_By_fare(flight F[]);void F_By_FN(flight F[]);//主菜单void mainmenu(){char ch;int y;cout<<" 主菜单\n"<<endl;cout<<"===========================================================\n"<<endl;cout<<" Please choose: (input the number)(输入查询/排序命令)\n"<<endl; cout<<" 0. show the mainmenu (显示主菜单)\n"<<endl;cout<<" 1. Find by flight number(按航班号查询)\n"<<endl;cout<<" 2. Find by start time(按起飞时间查询)\n"<<endl;cout<<" 3. Find by arrived time(按到达时间查询)\n"<<endl;cout<<" 4. Find by start address(按起飞地点查询)\n"<<endl;cout<<" 5. Find by arrived address(按目的地点查询)\n"<<endl;cout<<" 6. Find by the fare(按票价范围查询)\n"<<endl;cout<<" ----其他键退出"<<endl;cout<<"===========================================================\n"<<endl;while(1){cout<<"请输入服务命令:";cin>>y;switch(y){case 0: mainmenu();break;case 1:F_By_FN(Flight);break;case 2:F_By_Time(Flight,1);break;case 3:F_By_Time(Flight,2);break;case 4:F_By_Address(Flight,1);break;case 5:F_By_Address(Flight,2);break;case 6:F_By_fare(Flight);break;default :cout<<" 谢谢惠顾!"<<endl;break;}cout<<"是否退出?(Y/N):";cin>>ch;if(ch=='Y'||ch=='y') break;}}//--------------查询系统--------------//通过航班号实现二分查找法查找void F_By_FN(flight F[]){int low=0,high=N,mid;char Num[10];cout<<"请输入您要查询的航班号:";cin>>Num;Cout_info1();//显示头部信息while(low<=high){mid=(low+high)/2;if(strcmp(Num,F[mid].flight_number)==0) {Cout_info2_2(F,mid);break;}else if(strcmp(Num,F[mid].flight_number)<0) high=mid-1;else low=mid+1;}cout<<" *************对不起,没有您要查找的航班号********** "<<endl; }//通过起飞/到达时间查询void F_By_Time(flight F[],int Time){int i;char T[6];cout<<"请输入您要查询的航班的起飞/抵达时间:";cin>>T;Cout_info1();//显示头部信息for(i=0;i<N;i++){if(Time==1) //按起飞时间查询{if(strcmp(T,F[i].start_time)==0) Cout_info2_2(F,i);}if(Time==2) //按抵达时间查询{if(strcmp(T,F[i].arrived_time)==0) Cout_info2_2(F,i);}}cout<<" *******对不起,该时间没有航班******* "<<endl;}//通过站点查询void F_By_Address(flight F[],int AD){char str[10];cout<<"请输入您要查询的航班的起飞/抵达地址:";cin>>str;Cout_info1();for(int i=0;i<N;i++){if(AD==1) //按起点站查询{if(strcmp(str,F[i].start_address)==0) Cout_info2_2(F,i);}if(AD==2) //按目的站查询{if(strcmp(str,F[i].arrived_address)==0) Cout_info2_2(F,i);}}cout<<" ********对不起,该站点不存在******** "<<endl; }//通过票价范围查询void F_By_fare(flight F[]){int T1,T2,i;cout<<"请输入您要查询的航班的最低票价(单位:元):";cin>>T1;cout<<"请输入您要查询的航班的最高票价(单位:元):";cin>>T2;Cout_info1();for(i=0;i<N;i++){if(T1<=F[i].fare && T2>=F[i].fare) Cout_info2_2(F,i);}cout<<" *******对不起,没有适合您的航班,请修改您的票价范围********" <<endl; }//--------------主函数----------------int main(){RadixList p=element;for(int i=0;i<N;i++)element[i].next=&element[i+1];element[10].next=NULL;radixSort(&p, D, R); //基数排序output_ALL_info1(element); //输出排序后的有序序列(航班信息)copy(Flight,element); //另存储排序后的航班信息mainmenu(); //给出主菜单return 0;}测试数据及测试结果:、边界值处理:四:遇到的问题及解决策略:首先是要实现所要的功能需用什么数据结构的问题,比如排序问题究竟用那一种,在组员的商量下和上网搜寻资料,采用对排序最符合,其次是在时间的查询过程中,比如输入时间16:40开始只能实现输入1640,最后通过改时间的数据类型实现了时间的输入,最后是在各个模块的组合过程中由于各个成员编程所起的名字或者其他原因,程序无法运行,最后在大家的努力下一起修改错误使得程序可以正常运行。

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

数据结构-实验报告六--航班信息查询与检索系统
实验课程名称数据结构课程设计
专 业 班 级
学 生 姓 名
学 号
指 导 教 师
2012至2013学年第一学期第1至9周
一、
设计一个航班信息查询与检索系统。可事先按要求录入航班信息、删除航班信息、查看全部航班信息及按航班的航班号、起点站、终点站、起飞时间、以及到达时间等信息进行查询。
二、
输入/输出形式和输出值
printf("继续输入吗y/n:");
getchar();
scanf("%c",&yn);
getchar();
}
}
void menu()
{
printf("**********************************\n");
printf("* 航班信息查询与检索系统 *\n");
printf("**********************************\n");
= ;;
printf("删除成功!!\n");
}
}
}
if(m==0)
{
printf("无此航班信息,您可能输入错误!\n");
}
}
班 号 *\n");
printf("* 2.起 点 站 *\n");
printf("* 3.终 点 站 *\n");
printf("* 4.起飞时间 *\n");
printf("* 5.到达时间 *\n");
算法实现
1.定义数据类型
根据设计要求,所用到的数据记录只有航班信息,因此要定义相关的数据类型。本系统采用链式存储的存储结构,分别定义三个结构体。

数据结构课程设计--航班信息管理系统的设计与调试

数据结构课程设计--航班信息管理系统的设计与调试

《数据结构》课程设计实验报告二、应用题航班信息的查询与检索该设计要求对飞机航班信息进行排序和查找。

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

对于本设计,先按关键字对航班记录进行排序,然后利用二分查找法对排好序的航班记录按关键字实现快速查找,注意,满足条件的记录可能有多条。

每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价其中航班号一项的格式为:CZ3869,其中CZ是航空公司的别称,用两个大写字母表示,后4位为航班编号,这种航班号关键字可分成两段,即字母和数字。

其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串型即可。

可增加订票管理模块。

一、需求分析为达到题目的设计要求,选用文件读取方式来存储和读取航班信息。

因此可分为以下几个板块设计系统。

void add(); //函数声明增加航班信息函数void print(); //显示航班信息int search(); //查找航班信息void dingpiao(); //订票void tuipiao(); //退票void read(); //读取文件void save(); //保存文件void output(); //输出格式void chushihua(); //系统初始化void build(); //建立数据文件void paixu(int c); //按航班号从小到大排序二、环境说明计算机品牌:戴尔7520计算机系统:windows7计算机硬件配置:处理器Intel i7-3612QMCPU内存 8.00GB系统类型 64位操作系统编译软件:C-free5、Visual C++6.0三、详细设计:算法说明:子函数add()声明增加航班信息函数子函数print()显示航班信息子函数search()功能为查找航班信息,使用二分查找法查找所需航班信息,使用关键字查找方法子函数dingpiao实现订票功能子函数tuipiao()实现退票功能子函数read()可从文件中读取数据子函数save()保存数据到文件中子函数output()输出航班信息子函数initialize()判断是否已有存储航班信息的文件子函数build() 如没有航班信息则新建立数据文件子函数 paixu()用选择排序法实现排序功能,按航班号从小到大排序存储结构:本设计在程序中将航班信息用结构数组进行存储,程序结束后使用文本文件进行信息的读入存储。

数据结构课程设计航班信息查询与检索【范本模板】

数据结构课程设计航班信息查询与检索【范本模板】

学院名称《数据结构》课程设计报告题目——航班信息查询与检索班级:姓名:时间:2012/12/29—-—2013/1/5二○一二年十二月二十九日课程设计任务书及成绩评定课题名称航班信息查询与检索Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序.(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

2、设计题目要求:问题描述:该设计要求对飞机航班信息进行排序和查找。

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

任务要求:对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。

每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,假其中K0和K1的输入值是航空公司的别称,用两个大写字母标示,后4位为航班号,这种航班号关键字可分成两段,即字母和数字。

其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。

Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3]谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一三年一月五日目录一、概述 (6)二、系统分析 (6)三、概要设计 (6)四、详细设计 (7)1。

定义数据类型 (7)2.算法实现 (8)五、测试数据 (10)六、收获与体会 (13)七、参考文献 (13)八、附录 (14)5一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

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

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

算法与数据结构实验报告航班查询与检索题目:航班查询与检索指导老师:组长:成员:一:航班信息的查询与检索按时间查询:按站点查询:二分法查询:二:算法分析:程序主要采用结构体链表顺序表队列主要算法:/*航班信息的查询与检索*/三:/*航班信息的查询与检索*/#include<>#include<>#include<>#define N 6 =NULL; queue[i].e=NULL; ==NULL) queue[k].f=p; ->next=p; =p;p=p->next;}i=0;while(queue[i].f==NULL) i++; ; head=queue[i].f; !=NULL){ p->next=queue[i].f; p=queue[i].e; } light_number;cout<<" "<<F[i].start_time;cout<<" "<<F[i].arrived_time;cout<<" "<<F[i].start_address;cout<<" "<<F[i].arrived_address;cout<<" "<<F[i].work_date;cout<<" "<<F[i].FlightType;cout<<" "<<F[i].fare<<"元"<<endl;}light_number,p->;strcpy(F[i].start_time,p->;strcpy(F[i].arrived_time,p->;strcpy(F[i].start_address,p->;strcpy(F[i].arrived_address,p->;strcpy(F[i].work_date,p->;strcpy(F[i].FlightType,p->;F[i].fare=p->;p=p->next;}}show the mainmenu (显示主菜单)\n"<<endl;cout<<" 1. Find by flight number(按航班号查询)\n"<<endl;cout<<" 2. Find by start time(按起飞时间查询)\n"<<endl;cout<<" 3. Find by arrived time(按到达时间查询)\n"<<endl;cout<<" 4. Find by start address(按起飞地点查询)\n"<<endl;cout<<" 5. Find by arrived address(按目的地点查询)\n"<<endl;cout<<" 6. Find by the fare(按票价范围查询)\n"<<endl;cout<<" ----其他键退出"<<endl;cout<<"===========================================================\n"<<endl;while(1){cout<<"请输入服务命令:";cin>>y;switch(y){case 0: mainmenu();break;case 1:F_By_FN(Flight);break;case 2:F_By_Time(Flight,1);break;case 3:F_By_Time(Flight,2);break;case 4:F_By_Address(Flight,1);break;case 5:F_By_Address(Flight,2);break;case 6:F_By_fare(Flight);break;default :cout<<" 谢谢惠顾!"<<endl;break;}cout<<"是否退出(Y/N):";cin>>ch;if(ch=='Y'||ch=='y') break;}}light_number)==0) {Cout_info2_2(F,mid);break;}else if(strcmp(Num,F[mid].flight_number)<0) high=mid-1;else low=mid+1;}cout<<" *************对不起,没有您要查找的航班号********** "<<endl;}tart_time)==0) Cout_info2_2(F,i);}if(Time==2) rrived_time)==0) Cout_info2_2(F,i);}}cout<<" *******对不起,该时间没有航班******* "<<endl;}tart_address)==0) Cout_info2_2(F,i);}if(AD==2) rrived_address)==0) Cout_info2_2(F,i);}}cout<<" ********对不起,该站点不存在******** "<<endl;}are && T2>=F[i].fare) Cout_info2_2(F,i);}cout<<" *******对不起,没有适合您的航班,请修改您的票价范围********" <<endl;}ext=&element[i+1];element[10].next=NULL;radixSort(&p, D, R);我们对链表、队列、结构体的应用更娴熟,为我们更好的了解课本内容,改进不足提供了件。

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

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

学院名称《数据结构》课程设计报告题目——航班信息查询与检索班级:姓名:时间:2012/12/29---2013/1/5二○一二年十二月二十九日课程设计任务书及成绩评定课题名称航班信息查询与检索Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

2、设计题目要求:问题描述:该设计要求对飞机航班信息进行排序和查找。

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

任务要求:对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。

每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,K0 K1 K2 K3 K4 K5这种航班号关键字可分成两段,即字母和数字。

其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。

Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社1999[3] 谭浩强C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一三年一月五日目录一、概述 (6)二、系统分析 (6)三、概要设计 (6)四、详细设计 (7)1.定义数据类型 (7)2.算法实现 (8)五、测试数据 (10)六、收获与体会 (13)七、参考文献 (13)八、附录 (14)教育资料一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计航班查询系统实验
报告
目录
一、概述 (1)
二、系统分析 (1)
1.航班信息的查询与检索 (1)
2.航班信息查询与检索数据结构理论 (1)
三、概要设计 (2)
1.系统的功能 (2)
2.系统模块分析及其流程图 (3)
四、详细设计 (6)
1.各函数说明 (6)
2.定义相关数据类型 (9)
3. 航班信息的查询 (10)
五、运行由于测试 (14)
六、总结与心得 (18)
参考文献 (18)
附录 (18)
一、概述
随着信息产业的飞速发展,信息化管理及查询已经进入并应用到各行各业,影响着人们的价值观念和生活方式。

因此,要提高企业信息化建设,利用先进的办公自动化系统来实现企业内部信息管理、共享及交流,从而提高企业综合实力。

本次设计是针对航班的查询系统,该设计要求对飞机航班信息进行排序和查询。

可按航班的航班号、起点站、终点站等信息进行航班信息的查询。

二、系统分析
1.航班信息的查询与检索
进入系统后,首先提示输入航班的信息,包括:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号及票价等,票价为整型,其它为字符型。

当输入完一个信息后会提示是否继续输入,重复以上步骤输入全部的信息。

进入主菜单后会给出用户操作的界面,根据提示进行航班信息的查询。

2.航班信息查询与检索数据结构理论
针对在本该类系统中的数据的处理情况,本系统采用二分查找法、基数排序法、最高位优先法。

二分查找法也称为折半查找法,它充分利用了元素间的次序关系,采用
分治策略,可在最坏的情况下用O(log n)完成搜索任务。

它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。

如果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。

如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。

对航班号的排序是采用的基数排序法。

基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。

最高位优先(Most Significant Digit first)法,简称MSD法:先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分组,直到按最次位关键码kd对各子组排序后。

再将各组连接起来,便得到一个有序序列。

最低位优先(Least Significant Digit first)法,简称LSD法:先从kd开始排序,再对kd-1进行排序,依次重复,直到对k1排序后便得到一个有序序列。

三、概要设计
1.系统的功能
本任务要求对飞机航班信息进行排序和查找。

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

本设计主要是对排序
以及查找等概念进行综合练习。

以链式基数排序为主线,用到二分查找和顺序查找等知识,还有建立静态链表等相关概念。

2.系统模块分析及其流程图
(1)航班排序
对输入系统内的航班首先要进行排序,我们采用的基数排序,从低位到高位依次对关键字进行分配和收集,分两段实现其算法流程图。

相关文档
最新文档