对飞机航班信息进行排序和查找
航班信息的查询与检索系统
![航班信息的查询与检索系统](https://img.taocdn.com/s3/m/a5fbb956f7ec4afe04a1df5c.png)
航班信息查询与检索一、问题描述实现对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。
航班信息表的样式如下:其中航班号一项的格式为:前两个大写字母表示航空公司的名称,后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);}六、测试数据及运行结果。
数据结构课程设计航班信息查询与检索
![数据结构课程设计航班信息查询与检索](https://img.taocdn.com/s3/m/551008f9b0717fd5370cdc43.png)
学院名称《数据结构》课程设计报告题目——航班信息查询与检索班级:姓名:时间: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一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
如何查询机场的航班记录
![如何查询机场的航班记录](https://img.taocdn.com/s3/m/fd60c9326d85ec3a87c24028915f804d2b1687c0.png)
如何查询机场的航班记录随着航空业的快速发展,越来越多的人选择坐飞机出行。
在乘坐飞机之前,查询机场的航班记录变得愈发重要。
当你需要了解某个机场的停靠航班、航班时间表或者延误情况时,下面将介绍一些常见的查询方式和工具。
一、官方网站查询大多数机场都有官方网站,上面提供了航班信息查询的功能。
你可以访问相关机场的官方网站,往往可以在首页或者导航栏中找到“航班信息”或类似的标签。
进入航班信息页面后,提供了航空公司、航班号、起降时间等多个查询选项,你可以根据自己的需求进行查询。
这种方式的数据准确性相对较高,但需要自己上网查询。
二、航空公司官方网站或APP查询除了机场官方网站外,航空公司的官方网站或者APP也是查询机场航班记录的有效工具。
在航空公司的官方网站或APP中,通常提供了航班查询、延误信息、机场航班动态等多个功能,可以满足你的查询需求。
通过航空公司官方渠道查询的数据也较为准确,但仅限于该航空公司的航班信息。
三、第三方航班查询网站或APP有许多第三方航班查询网站或APP,如Flightradar24、FlightAware 等。
这些平台整合了全球范围内的航班信息,提供了更全面的查询功能。
你可以通过输入机场名称或者航班号来查询相关信息。
这些平台通常提供了实时航班状态、航线图、延误预测等功能,能够帮助你更好地了解机场的航班情况。
但需要注意,第三方平台的数据可能会有一定的延迟,因此在查询时需要留意数据的准确性和实时性。
四、航班查询电话或服务台如果你不方便上网或者使用手机APP,你也可以拨打航空公司或机场的服务电话进行查询。
这些服务电话通常会有专门的航班查询热线,你只需拨通后按照语音提示操作即可获得所需的航班记录。
另外,一些机场也会在航站楼设立查询服务台,在那里你可以直接咨询工作人员并获得有关航班的详细信息。
五、机场显示屏或公告牌当你到达机场时,机场内通常会配备多个显示屏或公告牌,上面会展示航班的起降时间、航空公司、航班号等信息。
航班信息的查询与检索讲解
![航班信息的查询与检索讲解](https://img.taocdn.com/s3/m/8bff0ef34afe04a1b071ded6.png)
课程设计设计题目:航班信息的查询与检索院系信息学院班级学生姓名学号指导教师职称讲师、讲师起止日期:2015年12月21日起——至2013年12月31日止计算机组成原理课程设计成绩评定表计算机组成原理课程设计成绩评定表计算机组成原理课程设计成绩评定表计算机组成原理课程设计成绩评定表课程设计任务书课程设计题目:航班信息的查询与检索系别信息学院班级学生姓名学号指导教师职称课程设计进行地点:实训F座任务下达时间:年月日起止日期:年月日起——至年月日止教研室主任年月日批准一、航班信息的查询与检索根据题目所要求,程序必须实现航班信息的录入和查询。
程序首先定义了一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。
在查询设计中,使用二分查找法对排好序的航班数据按航班号实现快速查找,按起点、终点站、起飞时间、到达时间查找的则采用顺序查询方法二、航班信息的查询与检索问题分析现在乘飞机旅行的人越来越多,飞机也成为人们交通工具最便捷的一种,人们需要关心了解各类航班的班次、时间、价格及机型等信息。
利用计算机建立一个航班信息的查询和检索系统,对飞机航班信息进行排序和查找。
可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。
可采用基数排序法对一组具有结构特点的飞机航班号排序,利用二分查找法对排好序的航班记录按航班号实现快速查找。
每个航班记录包括航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。
飞机航班信息查询
![飞机航班信息查询](https://img.taocdn.com/s3/m/cc1df0cfbb0d4a7302768e9951e79b896902687b.png)
飞机航班信息查询近年来,随着人们生活水平的不断提高和交通工具的不断发展,飞机已经成为现代人出行的首选交通工具之一。
随着国内外航线的不断开通和航空公司的不断增多,越来越多的人开始选择飞机出行。
但是在选择飞机出行时,飞机航班信息查询是必不可少的环节。
本文将介绍飞机航班信息查询的方法和注意事项。
一、查询方法1.官方网站查询几乎所有的航空公司,都会在其官方网站上提供飞机航班信息查询服务,只要用户在网站首页选择查询航班信息,输入出发地、目的地、出发日期和舱位信息,就可以得到相应的航班信息。
在查询到航班信息后,用户还可以选择购买机票或在线值机等服务。
2.航空公司客服查询用户也可以直接拨打航空公司的客服电话查询航班信息。
航空公司的客服人员会根据用户提供的出发地、目的地和出发日期等信息查询相应的航班信息,并且在必要时可以为用户提供相关的帮助和服务。
3.第三方机票预订网站查询除了官方网站和航空公司客服,用户还可以通过第三方机票预订网站查询航班信息。
这种网站一般会汇集多家航空公司的航班信息,用户只需要输入出发地、目的地和出发日期等基本信息,就可以查询到符合条件的航班。
但需要注意的是,第三方机票预订网站的航班信息可能不是实时更新的,因此用户需要确认所查询的航班信息的准确性。
二、注意事项1.提前预定由于航班信息可能发生变化,用户在查询航班信息之后,建议尽早预定机票。
特别是在节假日或旅游旺季,由于客流量大,机票价格将会增加,预订的难度也会增加,因此提前预定也是为了避免这个问题。
2.核对航班信息在查询到航班信息之后,用户需要仔细核对航班号、出发时间、到达时间和机场等信息,在购买机票前务必仔细核对,并且在登机时再次检查,避免因为信息错误而产生不必要的麻烦或费用。
3.注意航空公司规定在购买机票时,用户需要仔细了解航空公司的规定,例如行李规定、签证要求和退改签政策等,以免在旅途中遇到不必要的麻烦或费用。
小结:飞机航班信息查询是现代人出行不可或缺的环节。
《数据结构》课程设计题目
![《数据结构》课程设计题目](https://img.taocdn.com/s3/m/7d82320017fc700abb68a98271fe910ef12daeea.png)
《数据结构》课程设计题目《数据结构》课程设计题目课程设计题一:学生成绩管理系统设计目的:1.2.3. 掌握线性链表的建立。
掌握线性链表的基本操作。
掌握查找的基本算法。
设计内容:利用线性链表实现学生成绩管理系统,具体功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出,并能在屏幕上输出操作前后的结果。
设计要求:1.2.3.写出系统需求分析,并建模。
编程实现,界面友好。
输出操作前后的结果。
课程设计题二:停车场管理系统设计目的:1.2.3.4. 掌握栈和队列的建立。
掌握栈和队列的基本操作。
深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。
加深对栈和队列的理解和认识。
设计内容:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。
每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
设计要求:1. 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
2. 每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。
3. 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费,功能可自己添加)。
航班信息的查询与检索课程设计
![航班信息的查询与检索课程设计](https://img.taocdn.com/s3/m/20003f49852458fb770b56de.png)
数据结构与算法课程设计报告题目:航班信息的查询与检索学生姓名学号专业班级指导教师日期元培学院教务处课程设计任务书一、需求分析要解决的问题:设计民航售票处的计算机系统可以为客户提供下列各项服务: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()调用使用的。
航班信息的查询与检索
![航班信息的查询与检索](https://img.taocdn.com/s3/m/9cdb017ec8d376eeafaa3177.png)
航班信息的查询与检索航班信息的查询与检索目录 (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 课程设计内容本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。
中南民族大学(003)(课程设计报告)(10061103)(张名扬)
![中南民族大学(003)(课程设计报告)(10061103)(张名扬)](https://img.taocdn.com/s3/m/5c1a5d82680203d8cf2f240d.png)
航班信息的查询与检索一目的本系统的设计目的主要为实现:1.为客户提供航线查询功能: 根据旅客提出的终点站名输出下列信息 航班号、飞机号、星期几飞行;2.为客户提供订票功能:为客户需要,提供相应航班的售票余票信息.二需求分析1、要解决的问题1.为客户提供航线查询功能: 根据旅客提出的终点站名输出下列信息 航班号、飞机号、星期几飞行;2.为客户提供订票功能:为客户需要,提供相应航班的售票余票信息.2、问题分析1.对航班的信息进行排序和查找,可以按航班号,起点站,终点站,起飞时间和到达时间进行查询.2采用快速排序法对航班号进行排序3.采用二分查找法对排好序的航班进行查询.4.每条航班记录包含八项内容:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等5.航班信息事先存入文件,要查询的信息全部从文件中读取3、输入输出形式①输入的形式和输入值的范围:输入的形式可以以数字,字母加数字,汉字的形式输入;输入范围②输出的形式;输出的形式:以航班的具体信息形式输出。
③程序所能达到的功能;程序所能达到的功能包括:查询、订票和添加新的航班。
三概要设计抽象数据类型定义void F_By_FN(flight F[]) //通过航班号实现二分查找法查找voidF_By_Time(flight F[],int Time) //通过起飞/到达时间查询void F_By_Address(flight F[],int AD) //通过站点查询void mainmenu() //主菜单void copy(flight F[],Node element[]) //将排好的序列(链表)转化成顺序表存储形式void Cout_info1() //显示头部信息具体算法实现//----------基数排序-----------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++){sllist[i].f=NULL; sllist[i].e=NULL; //清队列}while(p!=NULL){k=p->key[j]; //按排序码的第j个分量进行分配if(sllist[k].f==NULL) sllist[k].f=p; // 若第k个堆为空,则当前记录为队头 else (sllist[k].e)->next=p; // 否则当前记录链接到第k队的队尾sllist[k].e=p;p=p->next;}i=0;while(sllist[i].f==NULL) i++; // 从r个队列中找出第一个非空的队列 p=sllist[i].e; head=sllist[i].f; //head为收集链表的头指针for(i++; i<r; i++)if(sllist[i].f!=NULL){ p->next=sllist[i].f; p=sllist[i].e; } // 收集非空队列p->next=NULL;}(*plist)->next=head;}3、总体设计流程四详细设计代码段#include<iostream.h>#include<string.h>#include<stdio.h>#include <fstream>#define N 15 //航班数#include <cstdlib>using namespace std;//航班信息typedef struct flight{char f_num[10]; //航班号char s_add[10]; //起飞站char a_add[10]; //终点站char work_date[10]; //班期int s_time; //起飞时间int a_time; //到达时间char FlightType[4]; //机型int price; //票价int yu; //余票}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 SLNode{RadixNode *f; //对列的头指针RadixNode *e; //对列的尾指针}SLList;SLList sllist[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++){sllist[i].f=NULL; sllist[i].e=NULL; //清队列}while(p!=NULL){k=p->key[j]; //按排序码的第j个分量进行分配if(sllist[k].f==NULL) sllist[k].f=p; // 若第k个堆为空,则当前记录为队头else (sllist[k].e)->next=p; // 否则当前记录链接到第k队的队尾 sllist[k].e=p;p=p->next;}i=0;while(sllist[i].f==NULL) i++; // 从r个队列中找出第一个非空的队列 p=sllist[i].e; head=sllist[i].f; //head为收集链表的头指针for(i++; i<r; i++)if(sllist[i].f!=NULL){ p->next=sllist[i].f; p=sllist[i].e; } // 收集非空队列p->next=NULL;}(*plist)->next=head;}void initfo(Node list[]) //将文件中的数据传递给变量{ifstream in_stream;in_stream.open("flyinfo.txt"); //文件读取操作if(in_stream.fail()){ //判断文件是否成功打开cout<<"fail!!!!!!!!!!!!!"<<endl;exit(1);}for(int i=1;!in_stream.eof()&&(i<16);i++){in_stream>>list[i].key>>list[i].info. f_num>>list[i].info. s_add>>list[i].info.a_add>>list[i].info.work_date>>list[i].info.s_time>>list[i].info.a_time>>list[i].info.FlightType>>list[i].info.price>>list[i].info.yu;list[i].next=NULL;}}//------------信息显示------------//按表的格式输出某个航班信息void Cout_info1() //显示头部信息{cout<<" ***************************************\n"<<endl; cout<<" *************航班信息***************\n"<<endl; cout<<" ****************************************\n"<<endl; cout<<"航班号起飞时间到达时间起飞站终点站班期机型票价余票\n"<<endl;}//显示主体信息void Cout_info2_1(Node p[])//方式一{cout<<" "<<p->info. f_num;cout<<" "<<p->info.s_time;cout<<" "<<p->info.a_time;cout<<" "<<p->info. s_add;cout<<" "<<p->info.a_add;cout<<" "<<p->info.work_date;cout<<" "<<p->info.FlightType;cout<<" "<<p->info.price<<"元"<<endl;cout<<" "<<p->info.yu;}void Cout_info2_2(flight F[],int i)//方式二{cout<<" "<<F[i]. f_num;cout<<" "<<F[i].s_time;cout<<" "<<F[i].a_time;cout<<" "<<F[i]. s_add;cout<<" "<<F[i].a_add;cout<<" "<<F[i].work_date;cout<<" "<<F[i].FlightType;cout<<" "<<F[i].price<<"元";cout<<" "<<F[i].yu<<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]. f_num,p->info. f_num);F[i].s_time=p->info.s_time;F[i].a_time=p->info.a_time;strcpy(F[i]. s_add,p->info. s_add);strcpy(F[i].a_add,p->info.a_add);strcpy(F[i].work_date,p->info.work_date);strcpy(F[i].FlightType,p->info.FlightType);F[i].price=p->info.price;F[i].yu=p->info.yu;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 show_allfly(flight F[]);void ding(flight F[]);void mainmenu() //主菜单{char ch;int y;cout<<" **********航班信息查询与检索*********\n"; cout<<"===========================================================\n"<<endl;cout<<" 请您选择要输入的编号 (输入查询/排序命令)\n";cout<<" 0. 显示主菜单 "<<endl;cout<<" 查询航线:"<<endl;cout<<" 1. 按航班号查询 "<<endl;cout<<" 2. 按起飞时间查询 "<<endl;cout<<" 3. 按到达时间查询 "<<endl;cout<<" 4. 按起飞地点查询 "<<endl;cout<<" 5. 按目的地点查询 "<<endl;cout<<" 6. 按票价范围查询 "<<endl;cout<<" 查看所有航班:"<<endl;cout<<" 7. 查看已排序所有航班 "<<endl;cout<<" 订票系统:"<<endl;cout<<" 8. 订票"<<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; //按票价查询case 7:show_allfly(Flight);break; //输出排序后的有序序列(航班信息)case 8:ding(Flight); //订票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];char c;cout<<"请输入您要订购的航班号:";cin>>Num;Cout_info1();while(low<=high){mid=(low+high)/2;if(strcmp(Num,F[mid]. f_num)==0){Cout_info2_2(F,mid);int num=1;int y=1;cout<<"你是否要订票?(y/n)";cin>>c;if(c=='y'||c=='Y'){while(y==1){cout<<"你定的票数";cin>>num;if(num>0&&num<F[mid].yu){F[mid].yu-=num;y=0;cout<<"你已经成功定票"<<endl;}elsecout<<"票数不合理,请重新输入"<<endl;}}else{cout<<"请继续其他操作"<<endl;}break;}else if(strcmp(Num,F[mid]. f_num)<0) high=mid-1;else low=mid+1;}}//.................................................void show_allfly(flight F[]) //显示所有排好序的航班信息{Cout_info1();for(int i=0;i<N;i++){Cout_info2_2(F,i);}}void F_By_Time(flight F[],int Time) //通过起飞/到达时间查询{int T,i;cout<<"请输入您要查询的航班的起飞/到达时间(eg: 16:45 show as 1645):";cin>>T;Cout_info1();for(i=0;i<N;i++){if(Time==1) //按起飞时间查询{if(T==F[i].s_time) Cout_info2_2(F,i);}if(Time==2) //按抵达时间查询{if(T==F[i].a_time) Cout_info2_2(F,i);}}}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]. s_add)==0) Cout_info2_2(F,i); }if(AD==2) //按目的站查询{if(strcmp(str,F[i].a_add)==0) Cout_info2_2(F,i); }}}void F_By_fare(flight F[]) //通过票价范围查询{int T1,T2,i;cout<<"请输入您要查询的航班的最低票价(单位:元):"; cin>>T1;cout<<"请输入您要查询的航班的最高票价(单位:元):";Cout_info1();for(i=0;i<N;i++){if(T1<=F[i].price && T2>=F[i].price) Cout_info2_2(F,i); }}void ding(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]. f_num)==0){Cout_info2_2(F,mid);int num=1;int y=1;while(y==1){cout<<"你定的票数";cin>>num;if(num>0&&num<F[mid].yu){F[mid].yu-=num;y=0;cout<<"你已经成功定票"<<endl;}elsecout<<"票数不合理,请重新输入"<<endl;}break;else if(strcmp(Num,F[mid]. f_num)<0) high=mid-1;else low=mid+1;}}//--------------主函数----------------int main(){struct Node element[N+1];initfo(element);RadixList p=element;for(int i=0;i<N;i++)element[i].next=&element[i+1];element[16].next=NULL;radixSort(&p, D, R); //基数排序copy(Flight,element); //另存储排序后的航班信息mainmenu(); //给出主菜单return 0;}五调试分析1.该程序首先要搞清楚算法,我采用的是快速排序和二分查找的算法,最初的时候经常出错,导致记录不能够按照顺序依次输出,原因是之前对算法的理解程度不够透彻,所以在编译的时候会出错,经过对程序的改进和对算法理解程度的加深,已经基本能够实现该系统的功能.2.其次是要掌握对文件的读写,文件数据的写入至关重要,起初不能将文件中保存的数据通过文件流专递给变量,所以不能实现对每条记录的排序,通过加强对文件流的学习和理解,最终解决了该问题!3.开始采用快速排序的算法,虽然功能上都能实现,但是不符合要求,所以经过修改,换成基数排序,最终能够掌握基数排序的原理和思路!六测试结果(1)运行效果1.按航班号和起始地点查询:2.按起飞时间和到达时间查询:3.订票:(2)具体分析1.查询:在查询方面,首先将文件中存储的数据通过文件流传递给定义的变量,然后通过排序函数进行排序,最后通过二分查找法,将要查询的航班信息输出给用户.2.订票:通过查找相应的信息,当用户输入存储在文件中的航班信息的航班号时,用户才能正确的预定到想要的机票,该功能通过二分查找查找到航班信息后,输出该航班的信息并提示用户是否预定,通过判断是否订票和订票数量是否超过总票数来完成用户的订票需求.七用户使用说明1.该系统可以在VC下运行2.该系统的功能主要有:查询和订票.查询功能主要有:按航班号、起飞时间、到达时间、起飞站、到达站来进行查询,分别用1、2、3、4、5几个编号来执行相应的操作;编号7来查询所有航班信息.3.订票:编号8执行订票功能.八课程设计总结1.通过对该程序的编写我首先认识到算法对程序的重要作用,优秀的算法不仅能够节省内存空间,而且能够提高程序的执行效率.2.本系统主要考察排序和查找以及对文件读写方面的掌握程度,随着对程序逐步的改进,逐渐对这些部分有了更深入的理解.3.通过对该程序的编写让我更进一步的了解到项目开发的流程,明白了各个模块之间的关系,以及怎样合理的处理数据之间的关系.。
数据结构课程设计题目
![数据结构课程设计题目](https://img.taocdn.com/s3/m/9be4e2edfab069dc502201a4.png)
数据结构课程设计题目请从下面四道题目中任选一道作为答辩题目。
答辩时会问每位同学1~2个问题,根据回答正确与否给出数据结构课程设计的成绩。
题目1:设计程序以实现构造哈夫曼树的哈夫曼算法。
要求:求解所构造的哈夫曼树的带全路径长度。
题目2:设计并实现一个航班信息查询和检索系统。
要求:对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。
航班信息表的样式如下:其中航班号一项的格式为:前两个大写字母表示航空公司的名称,后4位为航班编号,例如:CA1544,CA表示航空公司的名称,1544为航班编号。
题目3.求解迷宫问题:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍,设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
设计要求如下:(1)以链栈作为存储结构,编写一个求解迷宫的非递归程序,并将求得的通路以三元组(i,j,d)的形式输出,其中:i,j指示迷宫中的一个坐标,d表示走到下一坐标的方向;(2)编写递归形式的算法,求得迷宫中所有可能的通路;(3)以方阵形式输出迷宫及其通路。
[测试数据]左上角(1,1)为入口,右下角(9,8)为出口。
1 2 3 4 5 6 7 8[实现提示]计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。
假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。
可以二维数组存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(m,n)。
为处理方便起见,可在迷宫的四周加一圈障碍。
对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。
题目4.校园导游程序:用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
航班信息的查询与及检索
![航班信息的查询与及检索](https://img.taocdn.com/s3/m/d1b3198858f5f61fb73666ac.png)
实验报告课程名称数据结构综合设计实验实验项目航班信息的查询与检索1.1 课程设计名称航班信息的查询与检索1.2 课程设计目的通过本次实验,掌握数据结构中的几种排序算法和查找算法,了解静态链表的运用,利用上述的算法完成航班信息的查询与检索。
2 系统分析2.1 课程设计内容本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。
我们可以利用航班的这些信息,通过其中的任意一个信息,找出我们所需要的查找的航班的所有信息,所以,我们可以采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排序好的航班记录按航班号实现快速查找,并按其他关键字的查找可以采用最简单的顺序查找方法进行。
2.2 设计要求1) 提供对航班信息的排序功能2 提供对航班信息的输入输出记录功能找出我们所需要的查找的航班的所有信息3)提供按关键字(航班号)快速查询或顺序查询功能2.3 设计分析对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因为它们用得比较少。
每个航班记录包括八项,分别是:航班号,起点站,终点站,班期,起飞时间,到达时间,飞机型号以及票价等。
其中航班号一项的格式为:K0 k1 k2 k3 k4 k5航班关键字可分为两段,即字母和数字。
其中k0和k1是航空公司的别称,用两个大写字母表示,后4位为航班编号.3 概要设计3.1 系统总流程图3.2 定义数据类型根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的数据类型: typedef struct {char start[7]; //起点 char end[7]; //终点 char sche[12]; //班期 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]; //静态链表,s1[0]为头结点int keylen; //关键字长int length; //当前表长}SLList; //静态链表类型为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:typedef int ArrType_n[10]; //十进制数字指针数组typedef int ArrType_c[26]; //26个字母指针数组3.3 实现排序的各函数的说明1)一趟分配函数:void Distribute(SLNode *s1,int i,ArrType f,ArrType e);//本算法是按关键字key[i]建立RADIX个子表,使同一个子表中记录的keys[i]//相同,f[0..RADIX]和e[0..RADIX]分别指向各子表中的第一个和最后一个记录2)一趟搜集函数:void Collect(SLNode *s1,int i,ArrType f,ArrType e);//本算法是按关键字keys[i]从小到大将[0..RADIX]所指的各子表依次链接成一个链表3)链式基数排序函数:void RadixSort(SLList &L);//本算法是按关键字从低位到高位依次对各关键字进行分配和收集,分两段实现4)二分查找函数:int BinSearch(SLList L,KeyType key[]);//L为待查找的表,key[]为待查找的关键字,按二分查找的思想实现查找5)主控函数void main(){初始化;数据输入;排序处理;接受查找要求及查找关键字;查找处理;输出查找结果;}4 详细设4.1 数据类型的定义根据设计要求我们知道所用的记录中只有航班信息因此要定义相关的数据类型其源程序如下typedef struct{char start[6];//起点char end[6]; //终点char sche[10];//班期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];//静态链表sl[0]为头结点int keynum; //记录当前关键字字符个数int length; //当前表长}sllist; //静态链表类型typedef int arrtype_n[radix_n];//十进制数字指针typedef int arrtype_c[radix_c];//26个字母指针4.2 链式基数排序开始.否.是4.3 重新整理静态链表重新整理静态链表,P 指示第一个记录的当前位置,L.s1[1..i-1]已按关键字有序排列 ,第一个记录在L 中的当前位置应不小于i ,使用while 循环,找到第i 个记录,并用p 指示其在L 中的当前位置,而q 指示尚未调整的表尾,若if(p!=i) 则p 指向被移走的记录,使得以后可由while 循环找回 ,当p=q 时,p 指向尚未调整的表尾,为找到第i+个记录做准备4.4 查找算法实现4.4.1 二分查找函数否是是4.4.2 顺序查找函数void SeqSearch(SLList L,KeyType key[],int i) { int j,k,m=0;for(j=1;j<L.length;j++){ switch(i) {case 2:k=strcmp(key,L.s1[j].others.start);break;case 3:k=strcmp(key,L.s1[j].others.end);break;case 4:k=strcmp(key,L.s1[j].others.time1);break;case 5:k=strcmp(key,L.s1[j].others.time2);break;}if(k==0){ m=1;Display(L,j);}}if(m==0)printf("无此航班信息,可能是输入错误!\n");}4.5 输入输出函数serachcon(SLList L){int i=1,k,k1;while(i>=1 && i<=5) {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:\n ");scanf("%d",&i);switch(i) {case 1: printf("输入要查的航班号(字母要大写):");scanf("%s",key);k=BinSearch(L,key);Display(L,k);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",k1); SeqSearch(L,k1,i);break;case 5: printf("输入要查询的航班到达时间:");scanf("%s",k1); SeqSearch(L,k1,i);break;case 0: printf("再见!\n");return 0;}}}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.s1[i].keys,L.s1[i].others.start, L.s1[i].others.end,L.s1[i].others.sche,L.s1[i].others.time1,L.s1[i].others.time2,L.s1[i].others.model,&L.s1[i].others.price); ++i;printf("继续输入吗?y/n: \n");scanf("%c",&yn);}L.length=i-1;}5 运行与测试航班信息输入如图:按航班号查询:输入航班号错误则显示如下图:按航班起点站查询:按起飞时间查询:显示查询主菜单,退出查询系统:6 总结与心得通过本实验,我了解了基数排序是作为一种内部排序方法,当关键字位数较少而排序序列较长时,该排序算法有一定的优越性。
数据结构课程设计选题
![数据结构课程设计选题](https://img.taocdn.com/s3/m/c8af50d10d22590102020740be1e650e52eacf93.png)
数据结构课程设计选题数据结构课程设计选题题⽬选题⼀:迷宫与栈问题【问题描述】以⼀个mXn的长⽅阵表⽰迷宫,0和1分别表⽰迷宫中的通路和障碍。
设计⼀个程序,对任意设定的迷宫,求出⼀条从⼊⼝到出⼝的通路,或得出没有通路的结论。
【任务要求】1)⾸先实现⼀个以链表作存储结构的栈类型,然后编写⼀个求解迷宫的⾮递归程序。
求得的通路以三元组(i,j,d)的形式输出。
其中:(i,j)指⽰迷宫中的⼀个坐标,d表⽰⾛到下⼀坐标的⽅向。
如,对于下列数据的迷宫,输出⼀条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。
2)编写递归形式的算法,求得迷宫中所有可能的通路。
3)以⽅阵形式输出迷宫及其通路。
【测试数据】迷宫的测试数据如下:左上⾓(0,1)为⼊⼝,右下⾓(8,9)为出⼝。
出⼝出⼝选题⼆:算术表达式与⼆叉树【问题描述】⼀个表达式和⼀棵⼆叉树之间,存在着⾃然的对应关系。
写⼀个程序,实现基于⼆叉树表⽰的算术表达式的操作。
【任务要求】假设算术表达式Expression内可以含有变量(a~z)、常量(0~9)和⼆元运算符(+,-,*,/,^(乘幂))。
实现以下操作:1)ReadExpre(E)—以字符序列的形式输⼊语法正确的前缀表达式并构造表达式E。
2)WriteExpre(E)—⽤带括弧的中缀表达式输出表达式E。
3)Assign(V,c)—实现对变量V的赋值(V=c),变量的初值为0。
4)Value(E)—对算术表达式E求值。
5)CompoundExpr(P,E1,E2)--构造⼀个新的复合表达式(E1)P(E2)【测试数据】1)分别输⼊0;a;-91;+a*bc;+*5^x2*8x;+++*3^x3*2^x2x6并输出。
2)每当输⼊⼀个表达式后,对其中的变量赋值,然后对表达式求值。
选题三:银⾏业务模拟与离散事件模拟【问题描述】假设某银⾏有4个窗⼝对外接待客户,从早晨银⾏开门(开门9:00am,关门5:00pm)起不断有客户进⼊银⾏。
航班信息的查询与检索
![航班信息的查询与检索](https://img.taocdn.com/s3/m/e26ebb81680203d8ce2f2494.png)
目录1 概述 (2)1.1 问题描述 (2)1.2 设计题目 (2)1.3 基本要求 (2)2 系统分析 (2)2.1 功能需求分析 (2)2.2 设计要求 (2)3 概要设计 (3)3.1 设计思路 (3)3.2 各函数说明 (3)3.3 基本流程图 (5)4 详细设计 (5)4.1数据类型定义模块 (5)4.2实现排序的各函数模块 (6)4.2.1 一趟分配函数模块 (6)4.2.2 一趟搜集函数模块 (7)4.2.3链式基数排序函数模块 (7)4.2.4 二分查找函数模块 (8)4.2.5 主控函数模块 (8)5 运行与测试 (9)5.1 航班信息输入 (9)5.2 航班信息查询 (10)5.2.1 按航班号查询 (10)5.2.2 按起点站查询 (10)5.2.3 按终点站查询 (11)5.2.4 按起飞时间查询 (11)5.2.5 按到达时间查询 (12)5.3 退出航班信息系统 (12)6 总结与心得 (12)参考文献 (13)附录 (13)1 概述1.1 问题描述随着科技与经济的发展,当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、时间、价格及机型等信息。
在这个飞机航班数据的模型中,航班号是关键字,而且是具有结构特点的一类关键字。
通过关键字的输入,你将获得你所需要的航班的所有信息。
1.2 设计题目航班信息的查询与检索1.3 基本要求1 每个航班包括8项基本要求:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。
2 要有输入模块。
3 对航班信息进行排序与查找。
2 系统分析2.1 功能需求分析(1)输入航班信息(2)按不同类型查询航班信息:输入航班号,显示相应信息输入起点站,显示相应信息输入终点站,显示相应信息输入起飞时间,显示相应信息输入到达时间,显示相应信息2.2 设计要求该设计要求对航班信息进行排序和查询。
可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。
航班有关信息查询与检索讲解实用
![航班有关信息查询与检索讲解实用](https://img.taocdn.com/s3/m/a9c3283eb9f3f90f77c61bab.png)
课程设计设计题目:航班信息的盘问与检索院系信息学院班级学生姓名学号指导教师职称授课老师、授课老师起止日期: 2015 年 12 月 21 日起——至 2013 年 12 月 31 日止计算机组成原理课程设计成绩评定表指导教师评审意见议论内容具体要求权重评分加权分调研能独立查阅文件 ,收集资料;能拟定课程设计方5 4 3 2论证案和日程安排。
工作能力工作态度仔细,遵守纪律,出勤情况可否优异,5 4 3 2态度能够独立完成设计工作,工作量按期圆满完成规定的设计任务,工作量饱满,5 4 3 2 难度合适。
说明书的说明书立论正确,论述充分,结论慎重合理,文字畅达,技术用语正确,符号一致,编号齐 5 4 3 2 质量全,图表齐全,书写工整规范。
指导教师评审成绩分加权分合计(加权分合计乘以8)指导教师签名:年月日评阅教师评审意见议论内容具体要求权重评分加权分查阅查阅文件有必然广泛性;有综合归纳资料的能5 4 3 2文件力工作量工作量饱满,难度适中。
5 4 3 2说明书的说明书立论正确,论述充分,结论慎重合理,文字畅达,技术用语正确,符号一致,编号齐 5 4 3 2 质量全,图表齐全,书写工整规范。
评阅教师评审成绩分加权分合计(加权分合计乘以4)评阅教师签名:年月日答辩小组评审意见议论内容具体要求权重评分加权分报告准备充分,思路清楚;语言表达正确,概学生报告念清楚,论点正确,有层次,有重点,基本上 5 4 3 2 反响了所完成任务的全部内容;时间吻合要求。
答辩思路清楚;回答以下问题有理论依照,基本看法清5 4 3 2 楚;主要问题回答正确,深入,有说服力。
争辩小组评审成绩分加权分合计(加权分合计乘以8)争辩小组教师签字:年月日计算机组成原理课程设计成绩评定表指导教师评审意见议论内容具体要求权重评分加权分调研能独立查阅文件 ,收集资料;能拟定课程设计方5 4 3 2论证案和日程安排。
工作能力工作态度仔细,遵守纪律,出勤情况可否优异,5 4 3 2态度能够独立完成设计工作,工作量按期圆满完成规定的设计任务,工作量饱满,5 4 3 2 难度合适。
航班查询系统
![航班查询系统](https://img.taocdn.com/s3/m/6ee7a0c3a76e58fafab003f9.png)
scanf("%s",&p->StartingPoint);
scanf("%s",&p->Terminal);
scanf("%s",&p->DepartureTime);
scanf("%s",&p->ArrivalTime);
scanf("%s",&p->AircraftType);
char AircraftType[10];
int price;
struct flight * next;
};
void print()
{
printf("**************欢迎光临航班查询系统******************\n");
printf("|--------------------------------------------------|\n");
p=head;
printf("航班号起点站终点站起飞时间到达时间机型价格\n");
while(p!=Null)
{
printf("%-8s",p->fltNum);
printf("%-10s",p->StartingPoint);
printf("%-10s",p->Terminal);
printf("%-12s",p->DepartureTime);
printf("录入信息成功!\n");
数据结构课程设计航班信息查询与检索
![数据结构课程设计航班信息查询与检索](https://img.taocdn.com/s3/m/846a1026a1c7aa00b52acbfa.png)
数据结构课程设计航班信息查询与检索(总16页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--学院名称《数据结构》课程设计报告题目——航班信息查询与检索班级:姓名:时间: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)一、概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
航班管理系统
![航班管理系统](https://img.taocdn.com/s3/m/c276c33f83c4bb4cf7ecd1e1.png)
NO.1航班管理系统•一、题目内容的描述1.航班查询系统飞机航班信息包括:航班号、起点站、终点站、起飞时间、到达时间、机型以及票价,实例如下:设计航班查询系统要求能对飞机航班信息进行增加、删除、排序和查找。
可按航班的航班号、起点站、终点站、起飞时间以及到达时间进行查询。
•二、应用程序功能的详细说明通过建立一个链表来实现航班信息储存功能,每个结点的信息包括航班号、出发地、目的地、出发时间、到达时间、是否经停、价格,并编写功能函数使系统具有插入、查询、删除、更新、排序的功能。
•三、主要模块的算法描述菜单选项菜单选项图航班信息的建立插入信息查询航班:•四、结束语通过此程序的编写我熟悉了链表的运用,链表是本学期学习的重点,灵活性比栈好,可以通过指针实现插入删除等功能,但要注意移动指针的逻辑关系,如果不注意很容易指向了不是你要的地方。
•五、程序的源代码清单#include "stdio.h"#include "stdlib.h"#include "ctype.h"#include "process.h"#include "string.h"#include<iostream>using namespace std;struct flight //定义航班信息结构体{char flight_num[10];char flight_start[20];char flight_destination[20];char flight_takeoff_time[10];char flight_arrive_time[10];char flight_isStop[5];int flight_price;struct flight *next;};void welcome()//显示程序菜单{printf("************************欢迎使用航班管理系统**********************\n");printf("******************************************************************\n");printf("******************************************************************\n"); printf("**********************按下对应数字实现相应功能********************\n");printf("**************************1.创建航班信息**************************\n");printf("**************************2.增加航班信息**************************\n");printf("**************************3.查询航班信息**************************\n");printf("**************************4.删除航班信息**************************\n");printf("**************************0.退出管理系统**************************\n");printf("******************************************************************\n");printf("******************************************************************\n"); printf("************************CopyRight ByKobeLee**********************\n");printf("******************************************************************\n"); }struct flight * InitSystem(int n)//建立航班信息链表{int i;struct flight * head,* p,*s;for(i=1;i<=n;i++){printf("请输入第%d次航班信息:\n",i);if(i==1){p=(struct flight *)malloc(sizeof(struct flight));printf("航班号:");scanf("%s",&p->flight_num);printf("出发地:");scanf("%s",&p->flight_start);printf("目的地:");scanf("%s",&p->flight_destination);printf("起飞时间:");scanf("%s",&p->flight_takeoff_time);printf("到达时间:");scanf("%s",&p->flight_arrive_time);printf("经停:");scanf("%s",&p->flight_isStop);printf("价格:");scanf("%d",&p->flight_price);head->next=p;}else{s=(struct flight * )malloc(sizeof(struct flight));printf("航班号:");scanf("%s",&s->flight_num);printf("出发地:");scanf("%s",&s->flight_start);printf("目的地:");scanf("%s",&s->flight_destination);printf("起飞时间:");scanf("%s",&s->flight_takeoff_time);printf("到达时间:");scanf("%s",&s->flight_arrive_time);printf("经停:");scanf("%s",&s->flight_isStop);printf("价格:");scanf("%d",&s->flight_price);s->next=head->next;head->next=s;}printf("\n");}return head;}int Insert(struct flight *head)//添加航班信息,头插法;{struct flight * p,*pi;pi=(struct flight *)malloc(sizeof(struct flight));//为新添加的航班开辟空间p=head;printf("请输入新添加的航班信息:\n\n");printf("航班号:");scanf("%s",&pi->flight_num);printf("出发地:");scanf("%s",&pi->flight_start);printf("目的地:");scanf("%s",&pi->flight_destination);printf("起飞时间:");scanf("%s",&pi->flight_takeoff_time);printf("到达时间:");scanf("%s",&pi->flight_arrive_time);printf("经停:");scanf("%s",&pi->flight_isStop);printf("价格:");scanf("%d",&pi->flight_price);if(head==NULL){head->next=pi;pi->next=NULL;}else{pi->next=p->next;p->next=pi;}return 0;}void SearchByFlightNum(flight * head){char num[10];printf("请输入航班号:");scanf("%s",&num);if(head->next==NULL){printf("没有航班信息,不能查询,请先创建信息。
航班信息的查询与检索实验报告
![航班信息的查询与检索实验报告](https://img.taocdn.com/s3/m/b469a38fb9d528ea81c77928.png)
目录1 概述................................................................................................1.1 问题描述 ................................................................................1.2 基本要求 ................................................................................2 系统分析.........................................................................................2.1 功能需求分析.........................................................................2.2 设计要求 ................................................................................3 概要设计.........................................................................................3.1 各函数说明.............................................................................4 详细设计.........................................................................................4.1数据类型定义模块 ..................................................................4.2实现排序的各函数模块 ...........................................................5 运行与测试.....................................................................................5.1 航班信息输入.........................................................................5.2 航班信息查询.........................................................................5.3 退出航班信息系统..................................................................6 总结与心得 (12)参考文献1 概述1.1 问题描述随着科技与经济的发展,当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、时间、价格及机型等信息。
对飞机航班信息进行排序和查找
![对飞机航班信息进行排序和查找](https://img.taocdn.com/s3/m/d476ef396c175f0e7dd13726.png)
验报告姓名:学号:专业:信息技术班级:任课老师:辅导教师:试验编号:试验五小组成员:一、实验项目:班信息 询二、实验目的:班信息 序和 找。
三、实验内容:班信息 序和 找。
班的班号、 、 、信息 询。
四、需求分析1、 班 序;2、 的 信息 找;五、概要设计1、 要实现的功能,应该 链表来表示集合,所 需要构造的数 类型为链表和集合。
2、结构体han gbana n{char k[6]; // 班号string qd; //string zd; //终string bq; //班期int btime;//int etime;//string jx; // 型int price;//票价};//结构体han gban3、 数功能简介void initb() //创建表b() //输出void c a o() // 找信息() // 班号 找void d() //找void d() // 终 找void q() // 班期 找void t ime() //找void t ime( ) //找void x() // 型 找void r ice() // 票价 找六、详细设计e am>p ace std;a n{char k[6]; //航班号string qd; //起点站string zd; //终点站string bq; //班期int btime; //起飞时间int etime; //到达时间string jx; //机型int price; //票价};// 体hangbanint n=3;a n h[n];void initb() // 航班 息表{int l;a n 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;;cout<<" 到达时间"<<endl;;cout<<" 机型"<<endl;cin>>h[i].jx;cout<<" 票价"<<endl;;}for(int i=0;i<n-1;i++) // 航班号 序for(int j=0;j<n-i-1;j++){l=2;(l<6){if(h[j].k;}else if(h[j].k[l]==h[j+1].k[l]) l++;;}}}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].jx<<" ";<<" ";cout<<endl;}}void findk() // 航班号查询{=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;(j<6){if(h[i].k[j]==a[j]) j++;;}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].jx<<" ";cout<<h[i].pri<<" ";cout<<endl;}}if(count==0) cout<<" 要求 航班"<<endl<<endl;}void findqd() // 起点站查{=0;cout<<" 起点站查 :";g 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].et<<" ";cout<<h[i].jx<<" ";<<" ";cout<<endl;}}if(count==0) cout<<" 要求 航班"<<endl<<endl;}void findzd() // 终点站查{=0;cout<<" 终点站查 :";g 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].jx<<" ";<<" ";cout<<endl;}}if(count==0) cout<<" 要求 航班"<<endl<<endl;}void findbq() // 班期查{=0;cout<<" 班期查:";g 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].jx<<" ";<<" ";cout<<endl;}}if(count==0) cout<<" 要求 航班"<<endl<<endl;}void findbtime() // 起飞时间查{=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].btim<<" ";<<" ";cout<<h[i].jx<<" ";<<" ";cout<<endl;}}if(count==0) cout<<" 要求 航班"<<endl<<endl;}void findetime() // 到达时间查{=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].jx<<" ";<<" ";cout<<endl;}}if(count==0) cout<<" 要求 航班"<<endl<<endl;}void findjx() // 机型查{=0;cout<<" 机型查:";g 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].jx<<" ";<<" ";cout<<endl;}}if(count==0) cout<<" 要求 航班"<<endl<<endl;}void findprice() // 票价查{=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].jx<<" ";<<" ";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;(cin>>k2){();d();d();q();t ime();t ime();x();r ice();;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<<" 选择:";//菜单1(cin>>k1){();b();a o();;cout<<" 菜单1 "<<endl;cout<<"1. 航班表, 航班号 序"<<endl;cout<<"2. 航班表"<<endl;cout<<"3.查 航班"<<endl;cout<<"4.退 程序"<<endl<<" 选择:";//菜单1}}}七、 、 分析 果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、测试结果与分析;八、程序的调试过程九、实验总结在做实验航班查询的过程中,我对函数有了更深的理解,对函数的调用也熟悉了许多。