对飞机航班信息进行排序和查找
航班信息的查询与检索系统

航班信息查询与检索一、问题描述实现对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。
航班信息表的样式如下:其中航班号一项的格式为:前两个大写字母表示航空公司的名称,后4位为航班编号。
基本要求:(1)对飞机航班信息进行排序;(2)采用折半查找思想完成查找。
可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。
测试数据要求:测试的数据不得少于10个,不得有重复的航班。
二、设计思想根据题目所要求,程序必须实现航班信息的录入和查询。
程序首先定义了一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。
在查询设计中,使用二分查找法对排好序的航班数据按航班号实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。
三、数据描述typedef struct node{char number[MAXN]; //航班号time start; //起飞时间time end; //到达时间char start_station[MAXN]; //起点站char end_station[MAXN]; //终点站char type[MAXN]; //飞机型号char price[MAXN]; //票价struct node*link;四、算法描述1、二分查找int binSearch(NODE* n,char *strinput,int low, int high){// 二分查找 int i;int middle = (high+low)/2;if (high < low)return 0;if ((i=strcmp(strinput, n->number)) <0)high= middle;else if (i > 0)low = middle;else{i = middle;return i;}binSearch(getindex(n,middle),strinput,low,high);}int bisect(char a[],int n,char s[MAXN]){//二分查找int i,j,m;i=0;j=n-1;while(i <=j){m=(i+j)/2;}return(-1);}2、计算链表长度unsigned int countit(NODE* n){unsigned int counti = 0;while(n!=NULL)counti++,n=n->link;return counti;}五、源代码#include <stdio.h>#include <malloc.h>#include <string.h>#define MAXN 100typedef struct{char hour[MAXN];char minute[MAXN];typedef struct node{char number[MAXN]; //航班号time start; //起飞时间time end; //到达时间char start_station[MAXN]; //起点站char end_station[MAXN]; //终点站char type[MAXN]; //飞机型号char price[MAXN]; //票价struct node*link;}NODE;NODE *create_link_list(int n){int i;NODE *head,*p,*q;if(n==0)return(NULL);head=(NODE*)malloc(sizeof(NODE));for(i=0;i <MAXN;i++){head->number[i]='\0';head->start.hour[i]='\0';head->start.minute[i]='\0';head->end.hour[i]='\0';head->end.minute[i]='\0';head->start_station[i]='\0';head->end_station[i]='\0';head->type[i]='\0';head->price[i]='\0';}p=head;for(i=1;i <n;i++){printf("请输入航班号:");scanf("%s",&(p->number));printf("请输入起飞时间(时分):");scanf("%s %s",&(p->start.hour),&(p->start.minute)); printf("请输入达到时间(时分):");scanf("%s %s",&(p->end.hour),&(p->end.minute));printf("请输入起点站终点站:");scanf("%s %s",&(p->start_station),&(p->end_station)); printf("请输入飞机型号:");scanf("%s",&(p->type));printf("请输入票价:");scanf("%s",&(p->price));printf("\n");q=(NODE*)malloc(sizeof(NODE));p->link=q;p=q;}printf("请输入航班号:");scanf("%s",&(p->number));printf("请输入起飞时间(时分):");scanf("%s %s",&(p->start.hour),&(p->start.minute));printf("请输入达到时间(时分):");scanf("%s %s",&(p->end.hour),&(p->end.minute));printf("请输入起点站终点站:");scanf("%s %s",&(p->start_station),&(p->end_station));printf("请输入飞机型号:");scanf("%s",&(p->type));printf("请输入票价:");scanf("%s",&(p->price));printf("\n");getchar();p->link=NULL;return(head);}void insert(NODE **p_head,NODE *q){NODE *p;if(*p_head==NULL)*p_head=q;else{p=*p_head;while(p!=NULL&&p->link!=NULL)p=p->link;p->link=q;}}unsigned int countit(NODE* n){//计算链表长度unsigned int counti = 0;while(n!=NULL)counti++,n=n->link;return counti;}NODE* getindex(NODE* head, int num);NODE* getindex(NODE* head, int num){//取得index为num 的节点! if(num<0 || num>countit(head))return NULL;NODE* rn = head;while(--num>0)rn = rn->link;return rn;}int binSearch(NODE* n,char *strinput,int low, int high){// 二分查找int i;int middle = (high+low)/2;if (high < low)return 0;if ((i=strcmp(strinput, n->number)) <0)high= middle;else if (i > 0)low = middle;else{i = middle;return i;}binSearch(getindex(n,middle),strinput,low,high);}int bisect(char a[],int n,char s[MAXN]){//二分查找int i,j,m;i=0;j=n-1;while(i <=j){m=(i+j)/2;}return(-1);}NODE *search1(NODE *head,char v[MAXN]){//起点站顺序查找for(;head!=NULL&&strcmp(head->start_station,&v[0]);head=head->link);return(head);}NODE *search2(NODE *head,char w[MAXN]){//到达站顺序查找for(;head!=NULL&&strcmp(head->end_station,&w[0]);head=head->link);return(head);}NODE *search3(NODE *head,char x[MAXN],char y[MAXN]){//起飞时间顺序查找for(;head!=NULL&&(strcmp(head->start.hour,&x[0]) || strcmp(head->start.minute,&y[0]));head=head->link);return(head);}NODE *search4(NODE *head,char t[MAXN],char u[MAXN]){//到达时间顺序查找for(;head!=NULL&&(strcmp(head->end.hour,&t[0]) || strcmp(head->end.minute,&u[0]));head=head->link);return(head);}void output(NODE *p){while(p!=NULL){printf("航班信息:\n");printf("航班号:%s\n",p->number);printf("起飞时间:%s点%s分,",p->start.hour,p->start.minute); printf("到达时间:%s点%s分\n",p->end.hour,p->end.minute);printf("起点站:%s,",p->start_station);printf("到达站:%s\n",p->end_station);printf("飞机型号:%s ",p->type);printf("票价:%s元\n\n",p->price);p=p->link;}}NODE *rank( NODE *head){NODE *q=0,*p=0,*t,*h1;h1=head->link;head->link=NULL;while(h1!=NULL){t=h1;h1=h1->link;p=head;q=head;while( p!=NULL && strcmp(t->number, p->number)>0 ){q=p;p=p->link;}if(q == p){t->link=p;head=t;}else{t->link=p;q->link=t;}}return head;}int main(int argc, char* argv[]){NODE *p,*q,*r;int a,b,i,j,n;int count=0;char o[MAXN];char s[MAXN];char v[MAXN];char w[MAXN];char x[MAXN];char y[MAXN];char t[MAXN];char u[MAXN];for(i=0;i <MAXN;i++){o[i]='\0';s[i]='\0';v[i]='\0';w[i]='\0';x[i]='\0';y[i]='\0';t[i]='\0';u[i]='\0';}while(true){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("请输入你的选择:");scanf("%d",&a);getchar();switch(a){case 1:printf("请输入你所要建立的航班信息个数:"); scanf("%d",&n);p=create_link_list(n);break;case 2:q=create_link_list(1);insert(&p,q);break;case 3:p = rank(p);break;case 4:printf("\n1、按照航班号查询.\n");printf("2、按照起点站查询.\n");printf("3、按照到达站查询.\n");printf("4、按照起飞时间查询.\n");printf("5、按照到达时间查询.\n");scanf("%d",&b);getchar();switch(b){case 1:p=rank(p);printf("请输入您所要找的航班号:");scanf("%s",s);if( binSearch(p,s,1, countit(p)) )printf("scuess!\n");break;case 2:printf("请输入起点站");scanf("%s",&v[MAXN]);if(search1(p,&v[MAXN])!=NULL){printf("查询成功!\n");r=search1(p,&v[MAXN]);output(r);}elseprintf("查询失败,该信息录中没有该起点站!\n"); break;case 3:printf("请输入到达站");scanf("%s",&w[MAXN]);if(search2(p,&w[MAXN])!=NULL){printf("查询成功!\n");r=search2(p,&w[MAXN]);output(r);}elseprintf("查询失败,该信息录中没有该到达站!\n"); break;case 4:printf("请输入起飞时间(时分)");scanf("%s %s",&x[MAXN],&y[MAXN]);if(search3(p,&x[MAXN],&y[MAXN])!=NULL){printf("查询成功!\n");r=search3(p,&x[MAXN],&y[MAXN]);output(r);}elseprintf("查询失败,该信息录中没有该到达站!\n");break;case 5:printf("请输入到达时间");scanf("%s %s",&t[MAXN],&u[MAXN]);if(search4(p,&t[MAXN],&u[MAXN])!=NULL){printf("查询成功!\n");r=search4(p,&t[MAXN],&u[MAXN]);output(r);}elseprintf("查询失败,该信息录中没有该到达站!\n"); break;}break;case 5:output(p);printf("\n");break;case 0:return(0);}}return(0);}六、测试数据及运行结果。
数据结构课程设计航班信息查询与检索

学院名称《数据结构》课程设计报告题目——航班信息查询与检索班级:姓名:时间: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一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
如何查询机场的航班记录

如何查询机场的航班记录随着航空业的快速发展,越来越多的人选择坐飞机出行。
在乘坐飞机之前,查询机场的航班记录变得愈发重要。
当你需要了解某个机场的停靠航班、航班时间表或者延误情况时,下面将介绍一些常见的查询方式和工具。
一、官方网站查询大多数机场都有官方网站,上面提供了航班信息查询的功能。
你可以访问相关机场的官方网站,往往可以在首页或者导航栏中找到“航班信息”或类似的标签。
进入航班信息页面后,提供了航空公司、航班号、起降时间等多个查询选项,你可以根据自己的需求进行查询。
这种方式的数据准确性相对较高,但需要自己上网查询。
二、航空公司官方网站或APP查询除了机场官方网站外,航空公司的官方网站或者APP也是查询机场航班记录的有效工具。
在航空公司的官方网站或APP中,通常提供了航班查询、延误信息、机场航班动态等多个功能,可以满足你的查询需求。
通过航空公司官方渠道查询的数据也较为准确,但仅限于该航空公司的航班信息。
三、第三方航班查询网站或APP有许多第三方航班查询网站或APP,如Flightradar24、FlightAware 等。
这些平台整合了全球范围内的航班信息,提供了更全面的查询功能。
你可以通过输入机场名称或者航班号来查询相关信息。
这些平台通常提供了实时航班状态、航线图、延误预测等功能,能够帮助你更好地了解机场的航班情况。
但需要注意,第三方平台的数据可能会有一定的延迟,因此在查询时需要留意数据的准确性和实时性。
四、航班查询电话或服务台如果你不方便上网或者使用手机APP,你也可以拨打航空公司或机场的服务电话进行查询。
这些服务电话通常会有专门的航班查询热线,你只需拨通后按照语音提示操作即可获得所需的航班记录。
另外,一些机场也会在航站楼设立查询服务台,在那里你可以直接咨询工作人员并获得有关航班的详细信息。
五、机场显示屏或公告牌当你到达机场时,机场内通常会配备多个显示屏或公告牌,上面会展示航班的起降时间、航空公司、航班号等信息。
航班信息的查询与检索讲解

课程设计设计题目:航班信息的查询与检索院系信息学院班级学生姓名学号指导教师职称讲师、讲师起止日期:2015年12月21日起——至2013年12月31日止计算机组成原理课程设计成绩评定表计算机组成原理课程设计成绩评定表计算机组成原理课程设计成绩评定表计算机组成原理课程设计成绩评定表课程设计任务书课程设计题目:航班信息的查询与检索系别信息学院班级学生姓名学号指导教师职称课程设计进行地点:实训F座任务下达时间:年月日起止日期:年月日起——至年月日止教研室主任年月日批准一、航班信息的查询与检索根据题目所要求,程序必须实现航班信息的录入和查询。
程序首先定义了一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。
在查询设计中,使用二分查找法对排好序的航班数据按航班号实现快速查找,按起点、终点站、起飞时间、到达时间查找的则采用顺序查询方法二、航班信息的查询与检索问题分析现在乘飞机旅行的人越来越多,飞机也成为人们交通工具最便捷的一种,人们需要关心了解各类航班的班次、时间、价格及机型等信息。
利用计算机建立一个航班信息的查询和检索系统,对飞机航班信息进行排序和查找。
可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。
可采用基数排序法对一组具有结构特点的飞机航班号排序,利用二分查找法对排好序的航班记录按航班号实现快速查找。
每个航班记录包括航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。
飞机航班信息查询

飞机航班信息查询近年来,随着人们生活水平的不断提高和交通工具的不断发展,飞机已经成为现代人出行的首选交通工具之一。
随着国内外航线的不断开通和航空公司的不断增多,越来越多的人开始选择飞机出行。
但是在选择飞机出行时,飞机航班信息查询是必不可少的环节。
本文将介绍飞机航班信息查询的方法和注意事项。
一、查询方法1.官方网站查询几乎所有的航空公司,都会在其官方网站上提供飞机航班信息查询服务,只要用户在网站首页选择查询航班信息,输入出发地、目的地、出发日期和舱位信息,就可以得到相应的航班信息。
在查询到航班信息后,用户还可以选择购买机票或在线值机等服务。
2.航空公司客服查询用户也可以直接拨打航空公司的客服电话查询航班信息。
航空公司的客服人员会根据用户提供的出发地、目的地和出发日期等信息查询相应的航班信息,并且在必要时可以为用户提供相关的帮助和服务。
3.第三方机票预订网站查询除了官方网站和航空公司客服,用户还可以通过第三方机票预订网站查询航班信息。
这种网站一般会汇集多家航空公司的航班信息,用户只需要输入出发地、目的地和出发日期等基本信息,就可以查询到符合条件的航班。
但需要注意的是,第三方机票预订网站的航班信息可能不是实时更新的,因此用户需要确认所查询的航班信息的准确性。
二、注意事项1.提前预定由于航班信息可能发生变化,用户在查询航班信息之后,建议尽早预定机票。
特别是在节假日或旅游旺季,由于客流量大,机票价格将会增加,预订的难度也会增加,因此提前预定也是为了避免这个问题。
2.核对航班信息在查询到航班信息之后,用户需要仔细核对航班号、出发时间、到达时间和机场等信息,在购买机票前务必仔细核对,并且在登机时再次检查,避免因为信息错误而产生不必要的麻烦或费用。
3.注意航空公司规定在购买机票时,用户需要仔细了解航空公司的规定,例如行李规定、签证要求和退改签政策等,以免在旅途中遇到不必要的麻烦或费用。
小结:飞机航班信息查询是现代人出行不可或缺的环节。
《数据结构》课程设计题目

《数据结构》课程设计题目《数据结构》课程设计题目课程设计题一:学生成绩管理系统设计目的:1.2.3. 掌握线性链表的建立。
掌握线性链表的基本操作。
掌握查找的基本算法。
设计内容:利用线性链表实现学生成绩管理系统,具体功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出,并能在屏幕上输出操作前后的结果。
设计要求:1.2.3.写出系统需求分析,并建模。
编程实现,界面友好。
输出操作前后的结果。
课程设计题二:停车场管理系统设计目的:1.2.3.4. 掌握栈和队列的建立。
掌握栈和队列的基本操作。
深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。
加深对栈和队列的理解和认识。
设计内容:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。
每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
设计要求:1. 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
2. 每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。
3. 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费,功能可自己添加)。
航班信息的查询与检索课程设计

数据结构与算法课程设计报告题目:航班信息的查询与检索学生姓名学号专业班级指导教师日期元培学院教务处课程设计任务书一、需求分析要解决的问题:设计民航售票处的计算机系统可以为客户提供下列各项服务:1. 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、;2. 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况。
具体要求:1.对飞机航班信息进行排序和查找,可按航班的航班号,起点站,终点站,班期,起飞时间,到达时间,飞机型号以及票价等。
2. 采用快速排序法对的飞机航班号进行排序。
3.利用二分查找法对排好序的航班记录按航班号查询。
4.每个航班记录包括八项,分别为:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等二、概要设计数据类型的声明:/*头文件以及存储结构*/#include<iostream>#include<fstream>#include<string>int n;using namespace std;class Employee2,表达式的抽象数据类型定义static void twosearch(Employee a[]);//二分查找static void f_by_address(Employee a[],int m);//按起点站/终点站查询static void f_by_time(Employee a[],int m);//按起飞时间/到达时间查询friend void insert(Employee a[]);//添加航班void show()//输出信息void book(Employee a[])//订票系统void quicksort(Employee a[],int low,int high)//-快速排序3. 主程序的流程三、详细设计1.主要代码:friend istream&operator>>(istream&in,Employee&e)//文件输出流{returnin>>e.flight_num>>e.start>>e.end>>e.fly_date>>e.start_time>>e.end_time>>e.flight_type>>e.price>>e.tickets;}friend ostream&operator<<(ostream&out,Employee&e)//文件输入流{returnout<<e.flight_num<<e.start<<e.end<<e.fly_date<<e.start_time<<e.end_time<<e.flight_type<<e.price<<e.tickets ;}void show()//输出信息{cout<<" 航班号起飞站终点站班期起飞时间到达时间机型票价"<<endl;cout<<" "<<flight_num<<" "<<start<<" "<<end<<" "<<fly_date<<""<<start_time<<" "<<end_time<<" "<<flight_type<<" "<<price<<endl;}};//----------快速排序-----------void quicksort(Employee a[],int low,int high){int z,y;Employee key;//定义一个key的类对象,key为关键字if(low<high){z=low;y=high;key=a[low];//把第一个数据复制给key,为关键字while(z!=y){while((z<y)&&(strcmp(key.flight_num,a[y].flight_num)<=0))//当low<high且a[y].flight_num 大于等于关键字y--;//high向前移一位a[z]=a[y];//此时a[y]的值为关键字while((z<y)&&(strcmp(key.flight_num,a[z].flight_num)>=0))//当low<high且a[y].flight_num 小于等于关键字z++;//low向后移一位a[y]=a[z];//此时a[z]的值为关键字}a[z]=key;quicksort(a,low,z-1);//对一边递归调用quicksort()排序quicksort(a,z+1,high);//对另一半递归调用quicksort()排序}}//通过航班号实现二分查找法查找void Employee::twosearch(Employee a[])//二分查找{char num[6];int key=0;cout<<"请输入您要查询的航班号:";cin>>num;int low=0,high=n-1,mid;while(low<=high){mid=(low+high)/2;if(!strcmp(num,a[mid].flight_num))//找到该航班,并输出{a[mid].show();key=1;return;}else if(strcmp(num,a[mid].flight_num)<0)high=mid-1;elselow=mid+1;}if(!key)cout<<" *************对不起,没有您要查找的航班号********** "<<endl; }void insert(Employee a[])//添加航班{char secret[6];int i=3;cout<<"请输入管理员密码:";cin>>secret;if(!strcmp(secret,"12345")){cout<<"请依次录入航班信息数据(航班号由2位大写字母和4位数字组成):"<<endl;ofstream f;//定义文件对象f.open("初始化航班.txt",ios::app);if(f.fail())//打开文件失败{cout<<"打开文件失败!"<<endl;exit(2);}int i=n;while(!f.eof())//直到文件结尾{//int i=sizeof(a)/sizeof(a[0]);cout<<" 航班号起飞站终点站班期起飞时间到达时间机型票价票数"<<endl;cin>>a[i].flight_num>>a[i].start_time>>a[i].end_time>>a[i].start>>a[i].end>>a[i].fly_date>>a[i].flight_ty pe>>a[i].price>>a[i].tickets;f<<a[i];n++;break;//通过文件输入流导入文件} f.close();}elsecout<<"密码错误,请重新登入!"<<endl;}2、函数的调用关系除了主函数main()外,其他各个函数相对于其它函数来说是独立的,函数的使用都由主函数main()调用使用的。
航班信息的查询与检索

航班信息的查询与检索航班信息的查询与检索目录 (4)1 概述 (4)1.1 课程设计名称 (4)1.2 课程设计目的 (4)1.3 课程设计内容 (4)2 系统分析 (4)2.1 设计要求 (4)2.2 设计分析 (5)3 概要设计 (5)3.1 系统总流程图 (5)3.2 定义数据类型 (6)3.3 实现排序的各函数的说明....................... 错误!未定义书签。
4 详细设计............................................................. 错误!未定义书签。
4.1 数据类型的定义 ..................................... 错误!未定义书签。
4.2 链式基数排序 (10)4.2.1 一趟数字字符分配函数 ............. 错误!未定义书签。
4.2.2 一趟数字字符的收集函数.......... 错误!未定义书签。
4.2.3 一趟字母字符分配函数 ............. 错误!未定义书签。
4.2.4 一趟字母字符收集 .................... 错误!未定义书签。
4.2.6 链式基数排序函数 .................... 错误!未定义书签。
4.3 重新整理静态链表 (11)4.4 查找算法实现 (12)4.4.1 二分查找函数 (12)4.4.2 顺序查找函数 (13)4.5 输入输出函数 (14)5 运行与测试 (17)6 总结与心得 (20)7 参考文献 (21)8 附录(程序源代码) (21)目录1 概述1.1 课程设计名称航班信息的查询与检索1.2 课程设计目的通过本次实验,掌握数据结构中的几种排序算法和查找算法,了解静态链表的运用,利用上述的算法完成航班信息的查询与检索。
2 系统分析2.1 课程设计内容本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告姓名:学号:专业:信息技术班级:任课老师:辅导教师:试验编号:试验五小组成员:一、实验项目:航班信息查询二、实验目的:对飞机航班信息进行排序和查找。
三、实验内容:对飞机航班信息进行排序和查找。
可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。
四、需求分析1、先对飞机航班进行排序;2、根据飞机的各个信息进行查找;五、概要设计1、根据要实现的功能,应该以链表来表示集合,所以需要构造的数据类型为链表和集合。
2、结构体hangbanstruct hangban{char k[6]; //航班号string qd; //起点站string zd; //终点站string bq; //班期int btime; //起飞时间int etime; //到达时间string jx; //机型int price; //票价};//结构体hangban3、部分函数功能简介void initb() //创建表void printb() //输出void chazhao() //查找信息void findk() //按航班号查找void findqd() //按起点站查找void findzd() //按终点站查找void findbq() //按班期查找void findbtime() //按起飞时间查找void findetime( ) //按到达时间查找void findjx() //按机型查找void findprice() //按票价查找六、详细设计#include<iostream>using namespace std;struct hangban{char k[6]; //航班号string qd; //起点站string zd; //终点站string bq; //班期int btime; //起飞时间int etime; //到达时间string jx; //机型int price; //票价};//结构体hangbanconst int n=3;hangban h[n];void initb() //创建航班信息表{int l;hangban h1;for(int i=0;i<n;i++){ //输入航班信息cout<<"输入第"<<i+1<<"个航班的信息"<<endl;cout<<"输入航班号"<<endl;for(int j=0;j<6;j++) cin>>h[i].k[j];cout<<"输入起点站"<<endl;cin>>h[i].qd;cout<<"输入终点站"<<endl;cin>>h[i].zd;cout<<"输入班期"<<endl;cin>>h[i].bq;cout<<"输入起飞时间"<<endl;cin>>h[i].btime;cout<<"输入到达时间"<<endl;cin>>h[i].etime;cout<<"输入机型"<<endl;cin>>h[i].jx;cout<<"输入票价"<<endl;cin>>h[i].price;}for(int i=0;i<n-1;i++) //按航班号排序 for(int j=0;j<n-i-1;j++){l=2;while(l<6){if(h[j].k[l]>h[j+1].k[l]){h1=h[j];h[j]=h[j+1];h[j+1]=h1;break;}else if(h[j].k[l]==h[j+1].k[l]) l++;else if(h[j].k[l]<h[j+1].k[l]) break;}}}void printb() //显示航班信息表{for(int i=0;i<n;i++){cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期"<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl; for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}void findk() //通过航班号查询{int count=0;cout<<"通过航班号查询"<<endl;char a[6];cout<<"输入要查询的航班号:";for(int i=2;i<6;i++) cin>>a[i];int j;for(int i=0;i<n;i++){j=2;while(j<6){if(h[i].k[j]==a[j]) j++;else break;}if(j==6) {cout<<"第"<<i+1<<"个航班是要查找的航班"<<endl;count++;cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期"<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl; for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}if(count==0) cout<<"没有符合要求的航班"<<endl<<endl;}void findqd() //通过起点站查找{int count=0;cout<<"通过起点站查找:";string k;cin>>k;for(int i=0;i<n;i++){if(k==h[i].qd){cout<<"第"<<i+1<<"个航班是要查找的航班"<<endl;count++;cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期 "<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl;for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}if(count==0) cout<<"没有符合要求的航班"<<endl<<endl;}void findzd() //通过终点站查找{int count=0;cout<<"通过终点站查找:";string k;cin>>k;for(int i=0;i<n;i++){if(k==h[i].zd){cout<<"第"<<i+1<<"个航班是要查找的航班"<<endl;count++;cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期"<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl; for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}if(count==0) cout<<"没有符合要求的航班"<<endl<<endl;}void findbq() //通过班期查找{int count=0;cout<<"通过班期查找:";string k;cin>>k;for(int i=0;i<n;i++){if(k==h[i].bq) {cout<<"第"<<i+1<<"个航班是要查找的航班"<<endl;count++;cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期"<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl; for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}if(count==0) cout<<"没有符合要求的航班"<<endl<<endl;}void findbtime() //通过起飞时间查找{int count=0;cout<<"通过起飞时间查找:";int k;cin>>k;for(int i=0;i<n;i++){if(k==h[i].btime) {cout<<"第"<<i+1<<"个航班是要查找的航班"<<endl;count++;cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期"<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl; for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}if(count==0) cout<<"没有符合要求的航班"<<endl<<endl;}void findetime() //通过到达时间查找{int count=0;cout<<"通过到达时间查找:";int k;cin>>k;for(int i=0;i<n;i++){if(k==h[i].etime) {cout<<"第"<<i+1<<"个航班是要查找的航班"<<endl;count++;cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期"<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl; for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}if(count==0) cout<<"没有符合要求的航班"<<endl<<endl;}void findjx() //通过机型查找{int count=0;cout<<"通过机型查找:";string k;cin>>k;for(int i=0;i<n;i++){if(k==h[i].jx) {cout<<"第"<<i+1<<"个航班是要查找的航班"<<endl;count++;cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期"<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl; for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}if(count==0) cout<<"没有符合要求的航班"<<endl<<endl;}void findprice() //通过票价查找{int count=0;cout<<"通过票价查找:";int k;cin>>k;for(int i=0;i<n;i++){if(k==h[i].price) {cout<<"第"<<i+1<<"个航班是要查找的航班"<<endl;count++;cout<<"第"<<i+1<<"个航班的信息"<<endl;cout<<"航班号 "<<" "<<"起点站 "<<" "<<"终点站 "<<"班期"<<"起飞时间"<<" "<<"到达时间"<<" "<<"机型 "<<" "<<"票价 "<<endl; for(int j=0;j<6;j++) cout<<h[i].k[j];cout<<" ";cout<<h[i].qd<<" ";cout<<h[i].zd<<" ";cout<<h[i].bq<<" ";cout<<h[i].btime<<" ";cout<<h[i].etime<<" ";cout<<h[i].jx<<" ";cout<<h[i].price<<" ";cout<<endl;}}if(count==0) cout<<"没有符合要求的航班"<<endl<<endl;}void chazhao() //查找信息{cout<<" 菜单2 "<<endl;cout<<"1.按航班号查找"<<endl;cout<<"2.按起点站查找"<<endl;cout<<"3.按终点站查找"<<endl;cout<<"4.按班期查找"<<endl;cout<<"5.按起飞时间查找"<<endl;cout<<"6.按到达时间查找"<<endl;cout<<"7.按机型查找"<<endl;cout<<"8.按票价查找"<<endl;cout<<"9.回到菜单1"<<endl;cout<<"输入选择:"<<endl;//菜单2int k2;while(cin>>k2){if(k2==1) findk();if(k2==2) findqd();if(k2==3) findzd();if(k2==4) findbq();if(k2==5) findbtime();if(k2==6) findetime();if(k2==7) findjx();if(k2==8) findprice();if(k2==9) break;cout<<" 菜单2 "<<endl;cout<<"1.按航班号查找"<<endl;cout<<"2.按起点站查找"<<endl;cout<<"3.按终点站查找"<<endl;cout<<"4.按班期查找"<<endl;cout<<"5.按起飞时间查找"<<endl;cout<<"6.按到达时间查找"<<endl;cout<<"7.按机型查找"<<endl;cout<<"8.按票价查找"<<endl;cout<<"9.回到菜单1"<<endl;cout<<"输入选择:"<<endl;//菜单2}}int main(){int k1;cout<<"************航班信息查询**************"<<endl<<endl; cout<<"菜单1 "<<endl;cout<<"1.创建一个航班表,并按航班号排序"<<endl;cout<<"2.输出航班表"<<endl;cout<<"3.查找航班"<<endl;cout<<"4.退出程序"<<endl<<"输入选择:";//菜单1while(cin>>k1){if(k1==1) initb();if(k1==2) printb();if(k1==3) chazhao();if(k1==4) break;cout<<" 菜单1 "<<endl;cout<<"1.创建一个航班表,并按航班号排序"<<endl;cout<<"2.输出航班表"<<endl;cout<<"3.查找航班"<<endl;cout<<"4.退出程序"<<endl<<"输入选择:";//菜单1}}}七、使用说明、测试分析及结果1、测试结果与分析;八、程序的调试过程九、实验总结在做实验航班查询的过程中,我对函数有了更深的理解,对函数的调用也熟悉了许多。