最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

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

来源:动视网 责编:小OO 时间:2025-09-25 17:04:33
文档

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

算法与数据结构实验报告航班查询与检索题目:航班查询与检索指导老师:组长:成员:一:航班信息的查询与检索按时间查询:按站点查询:二分法查询:二:算法分析:程序主要采用结构体链表顺序表队列主要算法:/*航班信息的查询与检索*/三:/*航班信息的查询与检索*/#include#include#include#defineN6//航班数//航班信息typedefstructflight{charflight_number[10];//航班号charstart_address[10];//起飞站char
推荐度:
导读算法与数据结构实验报告航班查询与检索题目:航班查询与检索指导老师:组长:成员:一:航班信息的查询与检索按时间查询:按站点查询:二分法查询:二:算法分析:程序主要采用结构体链表顺序表队列主要算法:/*航班信息的查询与检索*/三:/*航班信息的查询与检索*/#include#include#include#defineN6//航班数//航班信息typedefstructflight{charflight_number[10];//航班号charstart_address[10];//起飞站char
 算法与数据结构实验报告

         航班查询与检索

 

题目:航班查询与检索

指导老师:

组长:

      成员:

                          

一:航班信息的查询与检索

按时间查询:

按站点查询:

二分法查询:

                        

二:

算法分析:程序主要采用结构体 链表 顺序表 队列

主要算法:/*航班信息的查询与检索*/

三:/*航班信息的查询与检索*/

#include

#include

#include

#define N 6  //航班数

//航班信息

typedef struct flight

{

 char flight_number[10];  //航班号

 char start_address[10];   //起飞站

 char arrived_address[10];   //终点站

 char work_date[10];   //班期

 char start_time[6];     //起飞时间

 char arrived_time[6];   //到达时间

 char FlightType[4]; //机型

 int fare;           //票价 

}DataType;

struct flight Flight[N];

//-----------按航班号进行基数排序-----------

typedef char KeyType;

#define D 7              // D为排序码的最大位数 

#define R 'a'             // R为基数,这里为小于字母'a'代表的整型值 

struct Node;             //单链表结点类型 

typedef struct Node RadixNode;

struct Node

{    

 KeyType key[D];   //关键字

 DataType info;    //数据信息

 RadixNode *next;

};

typedef RadixNode * RadixList;

typedef struct QueueNode

{    

 RadixNode *f;           //对列的头指针 

 RadixNode *e;           //对列的尾指针 

}Queue;

Queue queue[R];//用队列表示桶

void radixSort(RadixList * plist, int d, int r)

{

 int i,j,k; 

 RadixNode *p, *head; 

head=(*plist)->next;

for(j=d-1; j>=0; j--) //进行d次分配和收集

 {

  p=head;

for(i=0; i  { 

   queue[i].f=NULL;  queue[i].e=NULL;    //清队列

  }

  while(p!=NULL)

  { 

k=p->key[j]; //按排序码的第j个分量进行分配

   if(queue[k].f==NULL)     queue[k].f=p; // 若第k个堆为空,则当前记录为队头

else (queue[k].e)->next=p; // 否则当前记录链接到第k队的队尾

   queue[k].e=p;

p=p->next;

  }

  i=0;

  while(queue[i].f==NULL)  i++;        // 从r个队列中找出第一个非空的队列

  p=queue[i].e;  head=queue[i].f;      //head为收集链表的头指针

for(i++; i        if(queue[i].f!=NULL)

{ p->next=queue[i].f; p=queue[i].e; } // 收集非空队列 

p->next=NULL;

 }

(*plist)->next=head;

}

//初始化航班信息

struct Node element[N+1]={

     "      表头

         "CA1544合肥北京

         "MU5341上海广州每日 

        "CZ3869重庆深圳

     "MU3682桂林南京

     "HU1836上海北京每日 

     "CZ3528成都厦门

};

 

//------------信 息 显 示------------

//按表的格式输出某个航班信息

//显示头部信息

void Cout_info1()

{

cout<<" ****************************************\\n"< cout<<" * 欢 迎 您 使 用 *\\n"< cout<<" * 航 班 信 息 表 *\\n"< cout<<" ****************************************\\n"< cout<<" 航班号   起飞时间   到达时间   起飞站   终点站   班期     机型    票价\\n"<}

//显示主体信息

void Cout_info2_1(Node p[])//方式一

{

cout<<" "<info.flight_number;

cout<<" "<info.start_time;

cout<<" "<info.arrived_time;

cout<<" "<info.start_address;

cout<<" "<info.arrived_address;

cout<<" "<info.work_date;

cout<<" "<info.FlightType;

cout<<" "<info.fare<<"元"<}

void Cout_info2_2(flight F[],int i)//方式二

{

cout<<" "< cout<<" "< cout<<" "< cout<<" "< cout<<" "< cout<<" "< cout<<" "< cout<<" "<}

//显示所有航班信息

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<}

void output_ALL_info2(flight F[]) //方式二

{    

  Cout_info1();

for(int i=0;i  {

         Cout_info2_2(F,i);

  }

cout<}

//--------------信 息 复 制----------------

//将排好的序列(链表)转化成顺序表存储形式

void copy(flight F[],Node element[])

{

 RadixList p=element;

p=p->next;

 int i;

for(i=0;i {

strcpy(F[i].flight_number,p->info.flight_number);

strcpy(F[i].start_time,p->info.start_time);

strcpy(F[i].arrived_time,p->info.arrived_time);

strcpy(F[i].start_address,p->info.start_address);

strcpy(F[i].arrived_address,p->info.arrived_address);

strcpy(F[i].work_date,p->info.work_date);

strcpy(F[i].FlightType,p->info.FlightType);

F[i].fare=p->info.fare;

p=p->next;

 }

}

//---------------服 务 菜 单--------------

void F_By_Time(flight F[],int);

void F_By_Address(flight F[],int);

void F_By_fare(flight F[]);

void F_By_FN(flight F[]); 

//主菜单

void mainmenu()     

{

 char ch;

    int y;

cout<<" 主菜单\\n"< cout<<" ===========================================================\\n"< cout<<" Please choose: (input the number)(输入查询/排序命令)\\n"< cout<<" 0. show the mainmenu (显示主菜单)\\n"< cout<<" 1. Find by flight number(按航班号查询)\\n"< cout<<" 2. Find by start time(按起飞时间查询)\\n"< cout<<" 3. Find by arrived time(按到达时间查询)\\n"< cout<<" 4. Find by start address(按起飞地点查询)\\n"< cout<<" 5. Find by arrived address(按目的地点查询)\\n"< cout<<" 6. Find by the fare(按票价范围查询)\\n"< cout<<" ----其他键退出"< cout<<" ===========================================================\\n"< while(1)

 {

cout<<"请输入服务命令:";

cin>>y;

  switch(y)

  {

  case 0: mainmenu();break;

  case 1:F_By_FN(Flight);break;

        case 2:F_By_Time(Flight,1);break;

        case 3:F_By_Time(Flight,2);break;

        case 4:F_By_Address(Flight,1);break;

        case 5:F_By_Address(Flight,2);break;

        case 6:F_By_fare(Flight);break;

default :cout<<" 谢谢惠顾! "<  }

cout<<"是否退出?(Y/N):";

cin>>ch;

  if(ch=='Y'||ch=='y') break;

 }

}

//--------------查 询 系 统--------------

//通过航班号实现二分查找法查找

void F_By_FN(flight F[])    

{

 int low=0,high=N,mid;

 char Num[10];

cout<<"请输入您要查询的航班号:";

cin>>Num;

 Cout_info1();//显示头部信息

while(low<=high)

 {

  mid=(low+high)/2;

  if(strcmp(Num,F[mid].flight_number)==0) {Cout_info2_2(F,mid);break;}

else if(strcmp(Num,F[mid].flight_number)<0) high=mid-1;

  else low=mid+1;

 }

cout<<" *************对不起,没有您要查找的航班号********** "<}

//通过起飞/到达时间查询

void F_By_Time(flight F[],int Time)      

{

 int i;

 char T[6];

cout<<"请输入您要查询的航班的起飞/抵达时间:";

cin>>T;

 Cout_info1();//显示头部信息                                     

for(i=0;i {

  if(Time==1)  //按起飞时间查询

  {

   if(strcmp(T,F[i].start_time)==0) Cout_info2_2(F,i);

  

  }

  if(Time==2)  //按抵达时间查询

  {

   if(strcmp(T,F[i].arrived_time)==0) Cout_info2_2(F,i);

  }

   } 

cout<<" *******对不起,该时间没有航班******* "<}

//通过站点查询

void F_By_Address(flight F[],int AD)    

{

    char str[10]; 

cout<<"请输入您要查询的航班的起飞/抵达地址:";

cin>>str;

 Cout_info1();

for(int i=0;i     {

      if(AD==1) //按起点站查询

          {

              if(strcmp(str,F[i].start_address)==0)  Cout_info2_2(F,i);

          }

      if(AD==2) //按目的站查询

          {

              if(strcmp(str,F[i].arrived_address)==0)  Cout_info2_2(F,i);

          }

     }

cout<<" ********对不起,该站点不存在******** "<}

//通过票价范围查询

void F_By_fare(flight F[])      

{

 int T1,T2,i;

cout<<"请输入您要查询的航班的最低票价(单位:元):";

cin>>T1;

cout<<"请输入您要查询的航班的最高票价(单位:元):";

cin>>T2;

 Cout_info1();                                     

for(i=0;i {

if(T1<=F[i].fare && T2>=F[i].fare) Cout_info2_2(F,i);

   } 

cout<<" *******对不起,没有适合您的航班,请修改您的票价范围********" <}

//--------------主 函 数----------------

int main()

{

 RadixList p=element;

for(int i=0;i  element[i].next=&element[i+1];

 element[10].next=NULL;

 radixSort(&p, D, R);  //基数排序

 output_ALL_info1(element); //输出排序后的有序序列(航班信息)

 copy(Flight,element); //另存储排序后的航班信息

 mainmenu();  //给出主菜单

 return 0;

}

测试数据及测试结果:

边界值处理:

四:

遇到的问题及解决策略:首先是要实现所要的功能需用什么数据结构的问题,比如排序问题究竟用那一种,在组员的商量下和上网搜寻资料,采用对排序最符合,其次是在时间的查询过程中,比如输入时间16:40开始只能实现输入10,最后通过改时间的数据类型实现了时间的输入,最后是在各个模块的组合过程中由于各个成员编程所起的名字或者其他原因,程序无法运行 ,最后在大家的努力下一起修改错误使得程序可以正常运行。

还未解决的问题:插入的订票的函数无法正常运行。

五:实验收获和心得:

通过这次次实验我们收获了很多,对数据结构这门课有了更深的了解.让我们对链表、队列、结构体的应用更娴熟,为我们更好的了解课本内容,改进不足提供了件。在这次课程设计的过程中充分说明了团队合作的重要性,组内成员共同讨论,即充分而认真的完成自己负责的模块又对组内其他成员的工作提供建议,使得这次课程设计能够按时完成。我们一定会更加努力,争取在以后的学习中能够学以致用,最后要感谢胡老师在设计过程中给我们的指导,有了胡老师的帮助,我们的流程图更加的规范、正确。再一次谢谢胡老师。

六:

人员分工:组内成员一起构思了流程图。并完成最后的整理工作

    

文档

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

算法与数据结构实验报告航班查询与检索题目:航班查询与检索指导老师:组长:成员:一:航班信息的查询与检索按时间查询:按站点查询:二分法查询:二:算法分析:程序主要采用结构体链表顺序表队列主要算法:/*航班信息的查询与检索*/三:/*航班信息的查询与检索*/#include#include#include#defineN6//航班数//航班信息typedefstructflight{charflight_number[10];//航班号charstart_address[10];//起飞站char
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top