航班信息查询与检索系统优选稿
航班信息查询系统

《数据结构》课程设计书---飞机订票系统班级:完成人:指导老师:开始时间:完成时间:一、任务内容制作一个简单的飞机订票系统二、功能要求1.录入.可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2.查询.(1)可以查询某个航线的情况(如,输入航班号,查询抵达城市,航班票数信息,是否满仓);(2)可以输入起飞抵达城市,查询飞机航班情况;(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)(4)退票:可退票,退票后修改相关数据文件;(5)修改航班信息:当航班信息改变可以修改航班数据文件四、源程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>#define FLIGHTAMOUNT 200//最大航班数#define SEATAMOUNT 500//最大座位数struct flightstruct{char flightnumber[20];//航班号char finishingline[20];//终点站char date[20]; //日期unsigned maxamount;//总票数unsigned remainders;//剩余票数unsigned seatstate[SEATAMOUNT];//座位数组,贮存座位信息}flight[FLIGHTAMOUNT];void main(){char flag;//提供选择菜单的变量void open(FILE *fp);//打开文件函数void save(FILE *fp);//保存信息函数void built(FILE *fp);//建立文件函数void manage();//输入、管理信息函数void insert(FILE *fp);//插入信息函数void remend(FILE *fp);//修改信息函数void delet(FILE *fp);//删除信息函数void delet_all(FILE *fp);//删除所有信息函数void scan();//浏览信息函数void select();//查询信息函数void booktickets();//订票函数void print_info(unsigned);//输出打印信息函数void sendbacktickets();//退票函数do{printf("\n\t************************飞机订票系统****************************\n");printf("\n\t----------------------------主菜单-------------------------------\n");printf("\t**************-1--信息管理信息浏览--2-****************\n");printf("\t**************-3--信息查询订票系统--4-****************\n");printf("\t**************-5--退票系统退出系统--0-****************\n");p rintf("\n\t-----------------------------------------------------------------\n");do{scanf("%c",&flag);}while(flag!='1'&&flag!='2'&&flag!='3'&&flag!='4'&&flag!='5'&&flag!='0');switch(flag){case '1':manage();break;case '2':scan();break;case '3':select();break;case '4':booktickets();break;case '5':sendbacktickets();break;case '0':;break;}}while(flag!='0');}/**********打开文件 "flightinfomaition.dat"***********/void open(FILE *fp){unsigned i;if((fp=fopen("flightinfomaition.dat","r"))==NULL)//以只读方式打开{printf(" 打开文件失败!\n");exit(0);}for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++) if(fread(&flight[i],sizeof(struct flightstruct),1,fp)!=1){printf(" 文件读取错误!\n");exit(0);}fclose(fp);}/***********************保存设置*******************/void save(FILE *fp){unsigned i;char incept;printf("是否保存?(Y/N):");do{incept=getchar();}while(!(incept=='Y'||incept=='y'||incept=='N'||incept=='n'));if(incept=='Y'||incept=='y'){if((fp=fopen("flightinfomaition.dat","r+"))==NULL)//以读写方式打开{printf(" 打开文件失败!\n");exit(0);}for(i=0;i<FLIGHTAMOUNT;i++)if(fwrite(&flight[i],sizeof(struct flightstruct),1,fp)!=1){printf(" 保存失败!\n");exit(0);}printf(" 保存成功!\n");}fclose(fp);}/*********************管理信息*********************/void manage(){FILE* fp=NULL;char incept;printf("**************************欢迎进入信息管理系统*********************\n");do{p rintf("\n--------------------------------------------------------------------\n");printf("请选择:\n\t 1--建立新文件\n\t 2--插入信息\n\t 3--修改信息\n\t 4--删除信息\n\t 5--删除全部\n\t 0--退出\n");p rintf("--------------------------------------------------------------------\n");do{incept=getchar();}while(incept!='1'&&incept!='2'&&incept!='3'&&incept!='4'&&incept!='5'&&incept!='0');switch(incept){case '1':built(fp);break;case '2':insert(fp);break;case '3':remend(fp);break;case '4':delet(fp);break;case '5':delet_all(fp);break;case '0':return;}printf("继续进行管理?(Y/N)");do{incept=getchar();}while(!(incept=='Y'||incept=='y'||incept=='N'||incept=='n'));}while(incept=='Y'||incept=='y');}/**********建立一个名为"flightinfomaition.dat"的文件************/void built(FILE*fp){unsigned i,j;//建立一个名为"flightinfomaition.dat"文件,用于存贮航班信息if((fp=fopen("flightinfomaition.dat","w"))==NULL){printf(" 文件建立失败!\n");exit(0);}elseprintf("文件建立成功!\n");//文件信息初始化for(i=0;i<FLIGHTAMOUNT;i++){ //将所有信息内容置为0strcpy(flight[i].flightnumber,"0");strcpy(flight[i].finishingline,"0");strcpy(flight[i].date,"0");flight[i].maxamount=0;for(j=0;j<flight[i].maxamount;j++)flight[i].seatstate[j]=0;}save(fp);//保存所改变的信息insert(fp);//插入航班信息}/***********************插入信息************************/ void insert(FILE *fp){unsigned i;char flightnumber[20];open(fp);//在系统可容纳的数据范围之内循环for(i=0;i<FLIGHTAMOUNT;i++)//当所循环到的位置为空时写入新信息if(strcmp(flight[i].flightnumber,"0")==0){printf("请输入航班号(输入“0”结束):");scanf("%s",flightnumber);if(strcmp(flightnumber,"0")==0)break;else{strcpy(flight[i].flightnumber,flightnumber);printf("请输入终点站 :");scanf("%s",flight[i].finishingline);printf("请输入日期 :");scanf("%s",flight[i].date);printf("请输入总票数 :");do{scanf("%d",&flight[i].maxamount);if(flight[i].maxamount<0||flight[i].maxamount>SEATAMOUNT)printf(" 输入错误!\n 请输入正确的数字:");}while(flight[i].maxamount<0||flight[i].maxamount>SEATAMOUNT);flight[i].remainders=flight[i].maxamount;}}save(fp);}/*******************************修改信息*****************************/void remend(FILE *fp){unsigned i,j,maxamount;char flag;char flightnumber[20],finishingline[20],date[20];open(fp);do{printf("查询航班号?(Y/N):");do{scanf("%c",&flag);}while(!(flag=='y'||flag=='Y'||flag=='N'||flag=='n'));if(flag=='y'||flag=='Y')select(fp);printf("请输入航班号:");scanf("%s",flightnumber);f or(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0")&&strcmp(flight[i].flightnumber, flightnumber);i++);if(!strcmp(flight[i].flightnumber,flightnumber)){printf("输入“0”将不做修改\n");printf("请输入新的航班号:");scanf("%s",flightnumber);if(strcmp(flightnumber,"0"))strcpy(flight[i].flightnumber,flightnumber);printf("请输入新的终点站:");scanf("%s",finishingline);if(strcmp(finishingline,"0"))strcpy(flight[i].finishingline,finishingline);printf("请输入新的时间:");scanf("%s",date);if(strcmp(date,"0"))strcpy(flight[i].date,date);printf("请输入新的票数:");do{scanf("%d",&maxamount);if(maxamount<0||maxamount>SEATAMOUNT){printf("输入错误!请重新输入票数:");}}while(maxamount<0||maxamount>SEATAMOUNT);if(maxamount!=0)flight[i].maxamount=maxamount;flight[i].remainders=flight[i].maxamount;for(j=0;j<flight[i].maxamount;j++)flight[i].seatstate[j]=0;save(fp);}elseprintf("没有找到“%s”次航班!",flightnumber); printf("是否继续?(Y/N):");do{scanf("%c",&flag);}while(!(flag=='y'||flag=='Y'||flag=='N'||flag=='n'));}while(flag=='y'||flag=='Y');}/************************************删除信息***********************************/ void delet(FILE *fp){unsigned i;char flag;char flightnumber[20];open(fp);do{printf("查询航班号?(Y/N):");do{scanf("%c",&flag);}while(!(flag=='y'||flag=='Y'||flag=='N'||flag=='n'));if(flag=='y'||flag=='Y')select(fp);printf("请输入航班号:");scanf("%s",flightnumber);f or(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0")&&strcmp(flight[i].flightnumber, flightnumber);i++);if(!strcmp(flight[i].flightnumber,flightnumber)){for(;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++){strcpy(flight[i].flightnumber,flight[i+1].flightnumber);strcpy(flight[i].finishingline,flight[i+1].finishingline);strcpy(flight[i].date,flight[i+1].date);flight[i].maxamount=flight[i+1].maxamount;flight[i].remainders=flight[i+1].remainders;}printf("删除成功!\n");save(fp);}elseprintf("删除是败!没有找到“%s”航班!",flightnumber);printf("是否继续?(Y/N):");do{scanf("%c",&flag);}while(!(flag=='y'||flag=='Y'||flag=='N'||flag=='n'));}while(flag=='y'||flag=='Y');}/*****************删除所有信息**********************/void delet_all(FILE *fp){char incept;unsigned i,j;printf(" 这个操作将删除所有信息!\n");printf("是否继续?(Y/N)");do{incept=getchar();}while(!(incept=='Y'||incept=='y'||incept=='N'||incept=='n'));if(incept=='Y'||incept=='y'){open(fp);for(i=0;i<FLIGHTAMOUNT;i++){strcpy(flight[i].flightnumber,"0");strcpy(flight[i].finishingline,"0");strcpy(flight[i].date,"0");flight[i].maxamount=0;for(j=0;j<flight[i].maxamount;j++)flight[i].seatstate[j]=0;}save(fp);}}/***************************浏览信息*****************************/void scan(){FILE *fp=NULL;unsigned i;open(fp);printf("***********************欢迎进入信息浏览系统************************************\n\n");printf("序号| 航班号 | 终点站 | 时间 |票数|剩余|\n");for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++){p uts("------------------------------------------------------------------------------");p rintf("%4d|%-20s|%-20s|%-20s|%-4d|%-4d|\n",i+1,flight[i].flightnumber,flight[i].finishing line,flight[i].date,flight[i].maxamount,flight[i].remainders);}puts("------------------------------------------------------------------------------\n");}/*********************查询信息************************************/void select(){FILE *fp=NULL;unsigned i;int j;char incept;char flightnumber[20],finishingline[20],date[20];open(fp);printf("\n*************************欢迎进入信息查询系统*************************\n");do{j=0;p uts("----------------------------------------------------------------------\n");printf("请选择一种查询方式:\n");printf("\t 1--航班号\n\t 2--终点站\n\t 3--时间\n\t 4--浏览全部\n\t 0--退出\n");p uts("----------------------------------------------------------------------\n");do{incept=getchar();}while(!(incept=='1'||incept=='2'||incept=='3'||incept=='4'||incept=='0'));switch(incept){case '1':{printf("请输入航班号:");scanf("%s",flightnumber);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0")!=0;i++)if(strcmp(flight[i].flightnumber,flightnumber)==0){print_info(i);j=1;}if(j==0)printf("对不起!没有找到“%s”航班.\n",flightnumber);}break;case '2':{printf("请输入终点站:");scanf("%s",finishingline);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++) if(!strcmp(flight[i].finishingline,finishingline)){print_info(i);j=1;}if(j==0)printf("对不起!飞往“%s”的航班没有找到.\n",finishingline);}break;case '3':{printf("请输入日期:");scanf("%s",date);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++) if(!strcmp(flight[i].date,date)){print_info(i);j=1;}if(j==0)printf("对不起!“%s”的航班没有找到.\n",date);};break;case '4':scan();break;case '0':return;}printf("是否继续查询?(Y/N)");do{incept=getchar();}while(!(incept=='Y'||incept=='y'||incept=='N'||incept=='n'));}while(incept=='Y'||incept=='y');}/*****************用于select函数输出打印提示信息*********************/void print_info(unsigned i){puts("------------------------------------------------------------------------------");printf("序号| 航班号 | 终点站 | 时间 |票数|剩余|\n");puts("------------------------------------------------------------------------------");printf("%4d|%-20s|%-20s|%-20s|%-4d|%-4d|\n",i+1,flight[i].flightnumber,flight[i].finishingline,flight[i].date,flight[i].maxamount,flig ht[i].remainders);puts("------------------------------------------------------------------------------");}/****************************订票函数****************************/void booktickets(){FILE *fp=NULL;unsigned amount,i,j;char flag,flightnumber[20];printf("****************************欢迎进入订票系统******************************\n");do{open(fp);printf("输入“s”查询(任意键跳过):");getchar();//接收上面语句的回车scanf("%c",&flag);if(flag=='s')select(fp);printf("输入“y”退出订票(任意键继续):");getchar();scanf("%c",&flag);if(flag=='y')break;printf("请输入航班号:");scanf("%s",flightnumber);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,flightnumber);i++);if(!strcmp(flight[i].flightnumber,flightnumber)){if(flight[i].remainders==0)printf("对不起!没有票.\n");else{printf("请输入订票数量:");do{scanf("%d",&amount);if(amount<0||amount>flight[i].remainders)printf(" 输入错误!\n 请输入正确的数据:");}while(amount<0||amount>flight[i].remainders);for(j=0;j<flight[i].maxamount&&(amount--)>0;j++)if(flight[i].seatstate[j]==0){flight[i].seatstate[j]=1;flight[i].remainders--;}save(fp);}}elseprintf("没有找到“%s”航班!\n",flightnumber);printf("是否继续订票?(Y/N):");do{flag=getchar();}while(!(flag=='Y'||flag=='y'||flag=='N'||flag=='n'));}while(flag=='y'||flag=='Y');}/****************************退票函数******************************/void sendbacktickets(){FILE *fp=NULL;unsigned i,j,seatnumber;char flag,flightnumber[20];printf("****************************欢迎进入退票系统***********************\n");do{open(fp);printf("请输入航班号:");scanf("%s",flightnumber);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,flightnumber);i++);if(!strcmp(flight[i].flightnumber,flightnumber)){printf("请输入座位号:");do{scanf("%d",&seatnumber);if(seatnumber<0||seatnumber>flight[i].maxamount)printf("输入错误!\n请重新输入座位号:");}while(seatnumber<0||seatnumber>flight[i].maxamount);for(j=0;j<flight[i].maxamount&&seatnumber!=j+1;j++);if((seatnumber==j+1)&&(flight[i].seatstate[j]==1)){flight[i].seatstate[j]=0;flight[i].remainders++;save(fp);}elseprintf(" 输入错误!\n");}elseprintf(" 没有找到“%s”航班!\n",flightnumber);printf("是否继续退票?(Y/N):");do{flag=getchar();}while(!(flag=='Y'||flag=='y'||flag=='N'||flag=='n'));}while(flag=='y'||flag=='Y');}五、效果图1.主菜单以及信息管理界面2.信息浏览界面3订票系统界面.4.退票系统界面六、总结和体会通过本次实践我们收获颇多。
数据库课程设计-民航航班编排与查询系统

数据库课程设计-民航航班编排与查询系统数据库系统概论---民航航班编排与查询系统学生学院_____民航,飞行,学院_学号___________学生姓名_______ _____指导老师_______ _____2010 年 12月 5日1目录1.1需求分析概述---------------------11.2功能需求分析-----------------21.2.1飞机与机组运力管理----------31.2.2航班业务管理----------------41.3信息需求及数据流程----------------51.3.1数据字典-------------------41.3.2数据流图-------------------8 1.4系统概念模型设计-------------------91.4.1基本原则--------------------91.4.2航班编排与查询系统E-R图----101(5数据库逻辑模型设计---------------131.5.1 一般逻辑模型设计原则-------131.5.2具体逻辑模型设计-----------141.5.3源代码--------------------1621.1概述航空公司科学合理的编排航班计划是航班正常的重要保障之一,航班时刻编制是一项细致而复杂的工作,要综合考虑各方面的因素又要权衡利弊,从而制定出既符合旅客符合市场需求,又能充分发挥企业能力的航班运行计划。
航班计划是航空公司经营规划的核心,是航空公司的战略决策,是提高航空公司经济效益的关键。
本系统就是面向航空公司航班编排与查询管理系统,是一种比较智能化的管理系统,能够实现旅客和航空公司用户对航班信息的查询,还可以根据需求安排出科学合理的航班。
本系统采用SQL server 2005网络数据库,语言简单易懂,使得本系统可以方便的和其他子系统进行数据交换,也可以和其他编译程序嵌套使用。
航班信息查询系统 功能模块 - 副本

航班信息查询系统功能模块:●航线信息的输入,包括航线编号、出发城市、到达城市、飞行距离。
●航信信息的修改、删除,包括出发城市、到达城市、飞行距离。
●航班信息的输入,包括航班编号、出发时间、到达时间、经济舱价格、公务舱价格、头等舱价格。
●航班信息的修改和删除,包括出发时间、到达时间、经济舱价格、公务舱价格、头等舱价格。
●飞机信息的输入,包括客机编号、客机型号、经济舱数量、公务舱数量、头等舱数量。
●飞机信息的修改和删除,包括客机型号、经济舱数量、公务舱数量、头等舱数量。
●客户信息的输入,包括用户名、用户姓名、性别、联系电话、密码等。
●客户信息的修改和删除,包括用户权限、折扣比例。
●航线信息包括的数据项有:航线编号、出发城市、到达城市、飞行距离。
●航班信息包括的数据项有:航班编号、航线编号、客机编号、头等舱价格、公务舱价格、经济舱价格、出发时间、到达时间。
●飞机信息包括的数据项有:客机编号、客机类型、头等舱数量、公务舱数量、经济舱数量。
●客户信息包括的数据项有:用户名、用户姓名、性别、联系电话等。
●机票信息包括的数据项有:机票编号、航班编号、出发日期、用户名等参考文献:1.航班信息查询系统的设计与实现_赵洪峰2.航空-公司信息管理系统-毕业论文-毕业设计3.航空信息管理系统毕业设计20144.基于VB航空公司管理信息系统毕业设计论文(含源文件)5.兰州工程大学航班信息管理系统说明书20146.南京信息工程大学航空公司信息管理系统7.数据结构课程设计-航班查询与检索(含代码、流程图、输出结果)8.武汉理工大学飞机航班信息管理系统9.广东工业大学航班信息管理系统10.航班管理系统。
IAS系统介绍

Contains keyword … 包含关键字
Text Menu Item
按照关键字查找当前列中包含关键字的数据行:
过滤完毕之后,会在该列表头显示如下过滤结果: 鼠标移至表头,会出现如下过滤提示信息:
21
IAS使用说明-基本操作
IAS功能介绍-显示弹出菜单(续过滤功能)
Exclude this value 不包含当前值 Text Menu Item 在某个单元格中点击该菜单将会显示所有在当前列中不等 于该值的数据行,之前的过滤结果会丢失。过滤完毕之 后,会在该列表头显示如下过滤结果: 鼠标移至表头,会出现如下过滤提示信息:
启动并登陆IAS系统-登陆IAS 以下是登陆失败后的界面
提示:由于IAS系统用 户的认证与授权是在 AMOSS中进行的, IAS系统本身不会给出 关于登陆失败的详细 信息,如果发生异常 情况,请及时联系信 息技术管理部协助解 决
9
IAS使用说明-基本操作
启动并登陆IAS系统-登陆IAS 以下是登陆成功后进入IAS系统的主界面:
Exclude this value also 追加过滤值
Text Menu Item
该子菜单项只有在当前列执行过“不包含当前值”功能后才 会出现,提供追加排除过滤值再进行过滤的功能
23
IAS使用说明-基本操作
IAS功能介绍-隐藏或者显示数据列 IAS系统在菜单项中提供了隐藏或者显示数据列的功能
Hide: 隐藏 Text Menu Item 用户可以在某列点击该菜单项来隐藏该列,同时该列数据 也被隐藏
提示:可以将网址保存在浏览器收藏夹内 供下次访问
6
IAS使用说明-基本操作
启动并登陆IAS系统-登陆IAS 以下是IAS系统登陆界面,输入用户名和密码即 可进入:
航班信息查询信息分析

航班信息查询系统分析航班信息查询系统当今乘飞机的人越来越多,人们需要关心了解各类航班的班次、时间、价格、机型等信息,设计一个航班信息查询系统,可供人们查询航班信息,该查询系统可按一个或者多个条件查询,航班信息表的部分内容如下:航班号起点站终点站起飞时间机型票价CA1544 合肥北京10:55 733 960 MU5341 上海重庆14:20 M90 1280 CZ3869 广州南京08:55 733 1010 MU3682 深圳桂林20:50 M90 1060 HUI1863 昆明西安10:15 738 1250 一、需求分析(余子轩、包灵美)制作一个航班信息查询系统,能够完整显示航班信息可以通过航班号、机型、起点站、到达站、起飞时间中的一个或多个条件查询并显示航班动态。
要求进入查询系统后,可以按要求选择需要更新的操作,并按提速输入要更新的航班数据,更新操作完成后返回初始界面。
在选择查询时,能显示输入查询条件的界面并提示输入信息(航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号及票价),若输入的信息符合要求则显示相对应的航班信息,否则显示“没有相关航班”并返回输入界面。
如果主要想实现查询功能,就可以采用顺序的存储结构;想实现更新操作,采用链式存储结构;相比之下,这次主要想实现的功能是查询功能,因此采用顺序存储结构。
考虑到此航班信息查询系统查询功能用到的比较多而更新操作使用的比较少,为了使操作简便,程序利用效率高,使用顺序表来存储航班信息。
本系统采用二分查找法、基数排序法、最高位优先法。
二分查找法也称为折半查找法:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。
如果x<a[n/2],则我们只要在数组a的左半部继续搜索x (这里假设数组元素呈升序排列)。
如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。
基数排序法:其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排序法。
航班信息的查询与检索课程设计

数据结构与算法课程设计报告题目:航班信息的查询与检索学生姓名学号专业班级指导教师日期元培学院教务处课程设计任务书一、需求分析要解决的问题:设计民航售票处的计算机系统可以为客户提供下列各项服务: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 课程设计内容本课程设计主要是对排序及查找等进行练习,以链式基数排序为主线,利用二分查找和顺序查找等知识,并建立静态链表,完成对航班信息的查询与检索。
航班管理系统

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("没有航班信息,不能查询,请先创建信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
航班信息查询与检索系统集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)课程设计报告课程设计名称:数据结构课程设计题目:设计并实现一个航班信息查询与检索系统院系:计算机学院专业:班级:学号:姓名:指导教师:学术诚信声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名: 日期:年月日课程设计名称数据结构课程设计专业学生姓名班级学号题目名称设计并实现一个航班信息查询与检索系统目录1、题目介绍设计一个航班信息查询与检索系统。
可按航班的航班号、起点站、终点站、起飞时间以及到达时间等信息进行查询。
2、课程设计要求1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。
如下表所示:2、对航班信息进行排序与查找。
3、概要设计3.1、设计思路根据题目所要求,程序必须实现航班信息的录入和查询。
程序首先定义了一个储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。
在查询设计中,使用折半查找法对排好序的航班号数据实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。
3.2、流程图44.1 . 定义数据类型根据设计要求,设计中所用到的数据记录只有航班信息,因此要定义相关的数据类型:typedef struct {char start[6]; //起点站char end[6]; //终点站char sche[10]; //班期char time1[5]; //起飞时间char time2[5]; //到达时间char model[4]; //机型int price; //票价}info; //航班记录类型typedef struct{char keys[keylen]; //关键字info others;int next;}slnode; //表结点typedef struct{slnode sl[maxspace];int keynum; //关键字长int length; //当前表长}sllist; //静态链表类型为了进行基数排序,需要定义在分配和收集操作时用到的指针数组:typedef int arrtype_n[10]; //十进制数字指针数组typedef int arrtype_c[26]; //26个字母指针数组4.2 . 函数描述void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e){int j,p;for(j=0;j<10;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%48; //将数字字符转化为对应的数值型数字if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p; //将p指向的结点插入到第j个结点}}void collect(slnode *sl,int i,arrtype_n f,arrtype_n e){int j,t;for(j=0;!f[j];j++); //找第一个非空子表sl[0].next=f[j];t=e[j];while(j<10-1){for(j=j+1;j<10-1&&!f[j];j++); //找下一个非空子表if(f[j]){sl[t].next=f[j];t=e[j];} //链接两个非空子表}sl[t].next=0;}链式基数排序算法void radixsort(sllist &l){int i;arrtype_n fn,en;arrtype_c fc,ec;for(i=0;i<l.length;i++)l.sl[i].next=i+1;l.sl[l.length].next=0; //将普通的线性表改为静态链表for(i=l.keynum-1;i>=2;i--) //按最低位优先依次对各关键字进行分配和收集{distribute(l.sl,i,fn,en);collect(l.sl,i,fn,en);}for(i=1;i>=0;i--){distribute_c(l.sl,i,fc,ec);collect_c(l.sl,i,fc,ec);}}void arrange(sllist &l) //按指针链表整理静态链表{int p,q,i;slnode temp;p=l.sl[0].next;for(i=1;i<l.length;i++){while(p<i)p=l.sl[p].next;q=l.sl[p].next;if(p!=i){temp=l.sl[p];l.sl[p]=l.sl[i];l.sl[i]=temp; //交换记录l.sl[i].next=p;}p=q;}}折半查找函数定义int binsearch(sllist l,char key[]){int low,high,mid;low=1;high=l.length;while(low<=high){mid=(low+high)/2;if(strcmp(key,l.sl[mid].keys)==0)return mid;else if(strcmp(key,l.sl[mid].keys)<0)high=mid-1;elselow=mid+1;}return 0;}5、测试数据编译后运行,显示:录入信息^_^航班号起点站终点站班期起飞时间到达时间机型票价录入:CA1544合肥北京1055 1240 733 960显示:是否继续?y/n:录入:y显示:航班号起点站终点站班期起飞时间到达时间机型票价录入:MU5341 上海广州每日1420 1615 M90 1280显示:是否继续?y/n:录入:y显示:航班号起点站终点站班期起飞时间到达时间机型票价录入:CZ3869 重庆深圳 2.4.6 0855 1035 733 1010显示:是否继续?y/n:录入:n录入航班信息后,屏幕显示:-------------------------------* 航班信息查询系统 *-------------------------------* 1.航班号 ** 2.起点站 ** 3.终点站 ** 4.起飞时间 ** 5.到达时间 ** 0.退出 *-----------------------------(0-5)号服务项目:录入:1显示:输入要查询的航班号(字母要大写):录入:CA1544显示:航班号起点站终点站班期起飞时间到达时间机型票价CA1544合肥北京 1055 1240 733 960录入:2显示:输入要查询的航班起点站:录入:合肥显示:航班号起点站终点站班期起飞时间到达时间机型票价显示:CA1544合肥北京1055 1240 733 960录入:2显示:输入要查询的航班起点站:录入:广州显示:附录源程序:#include <stdio.h>#include <string.h>#define max 100#define keylen 7typedef struct{char start[6];char end[6];char sche[10];char time1[5];char time2[5];char model[4];int price;}info;typedef struct{char keys[keylen];info others;int next;}slnode;typedef struct{slnode sl[max];int keynum;int length;}sllist;typedef int arrtype_n[10];typedef int arrtype_c[26];void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) {int j,p;for(j=0;j<10;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%48;if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p;}}void collect(slnode *sl,int i,arrtype_n f,arrtype_n e){int j,t;for(j=0;!f[j];j++);sl[0].next=f[j];t=e[j];while(j<10-1){for(j=j+1;j<10-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e) {int j,p;for(j=0;j<26;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%65;if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p;}}void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e) {int j,t;for(j=0;!f[j];j++);sl[0].next=f[j];t=e[j];while(j<26-1){for(j=j+1;j<26-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}void radixsort(sllist &l){int i;arrtype_n fn,en;arrtype_c fc,ec;for(i=0;i<l.length;i++)l.sl[i].next=i+1;l.sl[l.length].next=0;for(i=l.keynum-1;i>=2;i--){distribute(l.sl,i,fn,en);collect(l.sl,i,fn,en);}for(i=1;i>=0;i--){distribute_c(l.sl,i,fc,ec);collect_c(l.sl,i,fc,ec);}}void arrange(sllist &l){int p,q,i;slnode temp;p=l.sl[0].next;for(i=1;i<l.length;i++){while(p<i)p=l.sl[p].next;q=l.sl[p].next;if(p!=i){temp=l.sl[p];l.sl[p]=l.sl[i];l.sl[i]=temp;l.sl[i].next=p;}p=q;}}int binsearch(sllist l,char key[]){int low,high,mid;low=1;high=l.length;while(low<=high){mid=(low+high)/2;if(strcmp(key,l.sl[mid].keys)==0)return mid;else if(strcmp(key,l.sl[mid].keys)<0)high=mid-1;elselow=mid+1;}return 0;}void seqsearch(sllist l,char key[],int i){int j,k,m=0;printf("------------------------------------------------------------\n");printf(" 航班号起点站终点站班期起飞时间到达时间机型票价 \n");for(j=1;j<=l.length;j++){switch(i){case 2:k=strcmp(key,l.sl[j].others.start);break;case 3:k=strcmp(key,l.sl[j].others.end);break;case 4:k=strcmp(key,l.sl[j].others.time1);break;case 5:k=strcmp(key,l.sl[j].others.time2);break;}if(k==0){m=1;printf(" %-8s%-7s%-7s%-11s%-6s%-6s%5s%4d\n",l.sl[j].keys,l.sl[j].others.start,l.sl[j].others.end,l.sl[j ].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl[j] .others.model,l.sl[j].others.price);}}if(m==0)printf(" 无此航班信息,可能是输入错误! \n");printf("-------------------------------------------------------\n");}void searchcon(sllist l){char key[keylen];int i=1,k;while(i>=1&&i<=5){printf("----------------------\n");printf(" * 航班信息查询系统 *\n");printf("----------------------\n");printf(" * 1.航班号 *\n");printf(" * 2.起点站 *\n");printf(" * 3.终点站 *\n");printf(" * 4.起飞时间 *\n");printf(" * 5.到达时间 *\n");printf(" * 0.退出 *\n");printf(" ----------------------\n");printf(" (0-5)号服务项目:");scanf("%d",&i);printf("\n");switch(i){case 1:printf("输入要查询的航班号(字母要大写):");scanf("%s",key);k=binsearch(l,key);printf("--------------------------------------------------------------\n");if(k==0)printf(" 无此航班信息,可能是输入错误! \n");else{printf(" 航班号起点站终点站班期起飞时间到达时间机型票价 \n");printf(" %-8s%-7s%-7s%-11s%-6s%-6s%-5s%4d\n",l.sl[k].keys,l.sl[k].others.start,l.sl[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l.sl[k] .others.model,l.sl[k].others.price);}printf("--------------------------------------------------------------\n");break;case 2:printf("输入要查询的航班起点站:");scanf("%s",key);seqsearch(l,key,i);break;case 3:printf("输入要查询的航班终点站:");scanf("%s",key);seqsearch(l,key,i);break;case 4:printf("输入要查询的航班起飞时间:");scanf("%s",key);seqsearch(l,key,i);break;case 5:printf("输入要查询的航班到达时间:");scanf("%s",key);seqsearch(l,key,i);break;case 0:printf("\n\n宝宝走了\n\n");}}}void inputdata(sllist &l){int i=++l.length;char yn='y';while(yn=='y'||yn=='Y'){printf("信息录入^_^\n\n");printf("航班号起点站终点站班期起飞时间到达时间机型票价\n");scanf("%s %s %s %s %s %s %s %d",l.sl[i].keys,l.sl[i ].others.start,l.sl[i].others.end,l.sl[i].others.sche,l.sl[i].o thers.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl[i]. others.price);++i;getchar();radixsort(l);arrange(l);printf("是否继续\ny/n:");scanf("%c",&yn);}l.length=i-1;}void main(){sllist l;l.keynum=6;l.length=0;inputdata(l);searchcon(l);}。