最新文章专题视频专题问答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
当前位置: 首页 - 正文

数据结构课程设计c语言版《飞机订票系统》分解

来源:动视网 责编:小OO 时间:2025-10-02 10:40:48
文档

数据结构课程设计c语言版《飞机订票系统》分解

软件工程专业14级《数据结构》课程设计报告设计题目:飞机订票系统班级:软件14姓名:指导教师:2015年11月20日一、设计任务与要求1.1总体目标与任务要求制作一个订票系统,通过此系统可以实现如下功能:1)录入可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。2)查询可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓)可以输入起飞抵达城市,查询飞机航班情况。3)订票可以订票,如果该航班已经无票,可以提供相关可选择的
推荐度:
导读软件工程专业14级《数据结构》课程设计报告设计题目:飞机订票系统班级:软件14姓名:指导教师:2015年11月20日一、设计任务与要求1.1总体目标与任务要求制作一个订票系统,通过此系统可以实现如下功能:1)录入可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。2)查询可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓)可以输入起飞抵达城市,查询飞机航班情况。3)订票可以订票,如果该航班已经无票,可以提供相关可选择的
软件工程专业14级

《数据结构》课程设计报告

设计题目:      飞机订票系统     

班    级:        软  件14      

姓    名:                      

指导教师:                       

                2015年 11月20日

一、设计任务与要求

1.1 总体目标与任务要求

制作一个订票系统,通过此系统可以实现如下功能: 

1)录入 

    可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。 

    2)查询 

    可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓)可以输入起飞抵达城市,查询飞机航班情况。

    3)订票 

    可以订票,如果该航班已经无票,可以提供相关可选择的航班(订票情况可以存在一个数据文件中,结构自己设定)。

    4)退票

可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 

    5)修改航班信息

当航班信息改变可以修改航班数据文件。 

    根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

1.2 题目选择与目的意义

选择这个题目的原因是,订票系统在现实生活中应用很广泛,通过这个系统可以使订票、退票等变得简便。与传统的人工用纸、笔来记录办理订票、退票等相比,使用这个系统也会增加工作效率。这个题目做出来的系统还是比较实用的,所以我选择了订票系统这个题目。

完成此系统,需要综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发。通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

1.3 所选题目的主要工作

这个题目的主要工作是使订票系统可以录入航班情况,查询某个航线的情况、办理订票、办理退票、修改航班信息、查询订票信息等。

二、需求分析

2.1 用户需求分析

用户使用此程序所要完成的工作主要为:查询所有航线信息、查看已订票客户信息、查询航线、办理订票业务、办理退票业务。通过此系统可以方便的进行上述工作。

每条航线所涉及的信息有:终点站名、航班号、飞行时间、票价、乘员定额、余票量。

已订票的客户名单信息包括姓名、订票量、舱位等级(1,2或3)。

等候替补的客户名单信息包括姓名、所需票量。

查询航线功能可以根据旅客提出的终点站名输出航班号、飞行时间、票价、乘员定额、余票量。

订票业务功能根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。若需要,可登记排队候补购票。

退票业务功能根据客户提供的情况(航班号、姓名)为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

2.2 功能需求分析

功能需求分析模块图如图2.1所示。

图2.1 功能模块图

2.3 系统需求分析

开发环境: Windows 7系统

使用软件:编写实验报告:Microsoft Office Word

制 作  程 序:Microsoft Visual C++ 6.0

三、概要设计

3.1 各模块的算法设计说明

1.浏览航线信息功能,调用display函数进行输出。如图3.1所示。 浏览航线信息流程图:

图3.1 浏览航线信息流程图:

 其中display函数的流程图如图3.2 display函数流程图:

图3.2 display函数流程图

2.浏览已订票客户信息功能,按顺序输出客户信息链表中的信息。流程图如图3.3 浏览已订票客户信息功能流程图:

图3.3 浏览已订票客户信息功能流程图

3.查询航线功能,根据客户提出的终点站名输出航线信息。流程图如图3.4 查询航线流程图:

图3.4 查询航线流程图

4.办理订票业务功能,根据客户提出的航线信息等进行订票。流程图如图3.5 办理订票业务功能流程图:

图3.5 办理订票业务功能流程图

5.办理退票业务功能,根据客户提出的航线信息等进行退票。流程图如图3.6 办理退票业务功能流程图:

图3.6 办理退票业务功能流程图

6.主函数流程图如图3.7 主函数流程图:

图3.7 主函数流程图

3.2 存储结构设计说明

typedef struct wat_ros     /*单链队列存储等候替补的客户信息*/    

{  

    char name[10];        /*姓名*/

    int req_amt;          /*订票量*/

    struct wat_ros *next; 

}qnode,*qptr;

typedef struct pqueue    /*等候替补的客户名单*/

{  

    qptr front;          

    qptr rear;           

}linkqueue;

上述单链队列用来存储排队等候的客户名单,这样可以通过队先进先出的特点来进行操作。先排队的客户可以先订票成功。

typedef struct ord_ros   /*乘员名单*/

{  

    char name[10];       /*客户姓名*/

    int ord_amt;              /*订票量*/        

    int grade;             /*舱位等级*/

    struct ord_ros *next;

}linklist;

上述单链表用来存储乘员的信息,包括姓名、订票量、舱位等级。

struct airline          /*航线信息*/

{   

    char ter_name[10];   /*抵达城市*/

    char air_num[10];    /*航班号*/

    char time[10];       /*飞机时间*/

    char pri[7];         /*票价*/

    int tkt_amt;         /*乘员定额*/

    int tkt_sur;         /*余票量*/

    linklist *order;    /*乘员名单域,指向乘员名单链表的头指针*/

    linkqueue wait;   /*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/

}lineinfo;

这个结构体存储了航线信息,包括抵达城市、航班号、飞行时间、票价、乘员定额、余票量等。

#define MAXSIZE 5              /*定义航线数量,可修改*/

struct airline air[MAXSIZE]=       /*初始化航线信息*/

{

    {"beijing

    {"shanghai    

    {"london

    {"harbin

    {"dalian

};

通过修改全局变量MAXSIZE的数值即可更改航线数。在struct airline air[MAXSIZE]中可以修改、增加、删除航线信息。航线信息内容依次为抵达城市、航班号、飞行时间、票价、乘员定额、余票量(飞行时间1200即12:00)。

四、详细设计

1.查看航线信息

编写void list()函数来查看全部航线信息。其中调用了void display(struct airline *info)函数,该函数的功能是打印每条航线的基本信息。这样即可按顺序打印出struct airline链表中存储的全部航线信息。

2.查看已订票客户信息

编写void prtlink()函数来查看已订票客户信息。这个函数中需要输入要查询的航线,通过find()函数来寻找这个航线然后输出该航线乘员域的乘员信息。

3.查询航线

编写void search()函数来实现查询航线的功能。用户输入抵达城市名,该函数会在航线信息链表中进行查询。如果有该城市,则会输出此航线的信息。

4. 办理订票业务

编写void order()函数来实现订票功能。首先提示用户输入航班号,然后调用find()函数来查找此航班,如果该航班存在,则会提示用户输入信息并调用linklist *insertlink(linklist *head,int amount,char name[],int grade)在订票乘员名单域中添加客户信息。如果余票不足,则会提示用户进行排队,如果排队,则会调用提示用户输入信息并调用linkqueue appendqueue(linkqueue q,char name[],int amount)在排队等候乘员名单域中添加客户信息。

5. 办理退票业务

编写void return_tkt()函数来实现退票功能。首先提示用户输入航班号,然后调用find()函数来查找此航班,如果该航班存在,则会提示用户输入信息,信息正确则会提示退票成功。此时将乘员信息中的该乘员信息删除,然后检查替补乘员链表中的信息,如果其订票量可以得到满足,则会将其插入到订票客户名单链表中,提示他订票成功。

6. 退出系统

主函数中无限循环输出菜单for(;;),用户在菜单页面下输入6回车即exit(0),即可退出系统。

五、源代码

#include

#include

#include

#include

#include

#define MAXSIZE 5         /*定义航线数量,可修改*/

typedef struct wat_ros    /*单链队列存储等候替补的客户信息*/    

{  

    char name[10];        /*姓名*/

    int req_amt;          /*订票量*/

    struct wat_ros *next; 

}qnode,*qptr;

typedef struct pqueue    /*等候替补的客户名单*/

{  

    qptr front;          /*等候替补客户名单域的队头指针*/

    qptr rear;           /*等候替补客户名单域的队尾指针*/

}linkqueue;

typedef struct ord_ros   /*乘员名单*/

{  

    char name[10];       /*客户姓名*/

    int ord_amt;           /*订票量*/        

    int grade;              /*舱位等级*/

    struct ord_ros *next;

}linklist;

struct airline

{   

    char ter_name[10];   /*抵达城市*/

    char air_num[10];    /*航班号*/

    char time[10];       /*飞机时间*/

    char pri[7];         /*票价*/

    int tkt_amt;         /*乘员定额*/

    int tkt_sur;         /*余票量*/

    linklist *order;     /*乘员名单域,指向乘员名单链表的头指针*/

    linkqueue wait;      /*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/

}lineinfo;

struct airline *start;

void display(struct airline *info)   /*打印每条航线的基本信息*/

{

    printf("%8s\%3s\%s\\%4s\%3d\%10d\\n",info->ter_name,info->air_num,info->time,info->pri,info->tkt_amt,info->tkt_sur);

}

void list()           /*打印全部航线信息*/

{  

    struct airline *info;

    int i=0;

    info=start;

    printf("终点站名\航班号\飞行时间\票价\乘员定额\余票量\\n");

    while(i    {

        display(info);   /*调用display函数来输出*/

        info++;

        i++;

    }

    printf("\\n\\n");

}

void search()            /*根据客户提出的终点站名输出航线信息*/

{  

    struct airline *info,*find();

    char name[10];       /*要抵达的城市名称*/

    int i=0;

    info=start;

    printf("请输入要抵达城市的名称:");

    scanf("%s",name);

    while(i    {

        if(!strcmp(name,info->ter_name)) /*有该站名strcmp则返回,if(!0)即break*/

        {

            break;

        }

        info++;

        i++;

    }

    if(i>=MAXSIZE) /*没有匹配的航线*/

    {

        printf("对不起,没有这条航线!\\n");

    }

    else

    {

        printf("终点站名\航班号\飞行时间\票价\乘员定额\余票量\\n");

        display(info);            /*调用display函数输出航线信息*/

    }

}

struct airline *find()         / *根据系统提出的航班号查询并以指针形式返回*/

{  

    struct airline *info;

    char number[10];          /*查询的航班号*/

    int i=0;

    info=start;

    printf("请输入航班号:");

    scanf("%s",number);

    while(i    {

        if(!strcmp(number,info->air_num))      /*有匹配航班*/

        {

            return info; 

        }

        info++;

        i++;

    }                                       /*无匹配航班*/

    printf("对不起,没有这条航线!\\n");

    return NULL;

}

void prtlink()                /*打印订票乘员名单域的客户名单信息*/

{  

    linklist *p;

    struct airline *info;

    info=find();

    p=info->order;

    if(p!=NULL)               /*按顺序输出客户信息链表*/

    {

        printf("客户姓名  订票数额  舱位等级\\n");

        while(p)                                  

        {

            printf("%s\\%d\%d\\n",p->name,p->ord_amt,p->grade);

            p=p->next;

        }

    }               

    else                        /*没有人订这个航班*/

        printf("该航线没有客户信息!\\n");

}

linklist *insertlink(linklist *head,int amount,char name[],int grade)   /*增加订票乘员名单域的客户信息*/

{  

    linklist *p1,*new1;

    p1=head;

    new1=(linklist*)malloc(sizeof(linklist));

    if(!new1)                  /*存储空间不足*/

    {         

        printf("\\nOut of memory!!\\n");

        return NULL;

    }

    strcpy(new1->name,name);

    new1->ord_amt=amount;

    new1->grade=grade;

    new1->next=NULL;

    if(head==NULL)           /*若原订票客户信息为空*/

    {

        head=new1;

        new1->next=NULL;

    }

    else                      

    {    

        head=new1;

    }

    new1->next=p1;

    return head;

}

linkqueue appendqueue(linkqueue q,char name[],int amount)   /*增加排队等候的客户名单域*/

    qptr new1;

    new1=(qptr)malloc(sizeof(qnode));

    strcpy(new1->name,name);

    new1->req_amt=amount;

    new1->next=NULL;

    if(q.front==NULL)       /*若原排队等候客户名单域为空*/

    {

        q.front=new1;

    }

    else

    {

        q.rear->next=new1;

    }

    q.rear=new1;

    return q;

}

void order()                /*办理订票业务*/

{  

    struct airline *info;

    int amount,grade;       /*订票数量,舱位等级*/

    char name[10];          /*要订的航班号*/

    info=start;

    if(!(info=find()))      /*根据客户提供的航班号进行查询,如为空,退出该模块*/

    {

        return;

    }

    printf("请输入您需要的票数:");

    scanf("%d",&amount);

    if(amount>info->tkt_amt) /*若客户订票额超过乘员定票总额,退出*/

    {  

        printf("\\n对不起,您输入票数已经超过乘员定额!");

        return;

    }

    if(amount<=info->tkt_sur) /*若客户订票额末超过余票量,订票成功并等记信息*/

    {                                    

        int i;

        printf("请输入您的姓名:");

        scanf("%s",name);

        printf("请输入您需要的舱位等级(1,2或):");

        scanf("%d",&grade);

        info->order=insertlink(info->order,amount,name,grade); /*在订票乘员名单域中添加客户信息*/

        for(i=0;i        {

            printf("%s的座位号是:%d\\n",name,info->tkt_amt-info->tkt_sur+i+1);

        }

        info->tkt_sur-=amount; /*该航线的余票量应减掉该客户的订票量*/

        printf("\\n祝您乘坐愉快!\\n");

    }

    else     /*若满员或余票额少于订票额,询问客户是否需要进行排队等候*/

    {  

        char r;

        printf("\\n没有这么多票了,您需要排队等候吗?(Y/N)");

        r=getch();

        printf("%c",r);

        if(r=='Y'||r=='y')

        {  

            printf("\\n请输入您的姓名:");

            scanf("%s",name);

            info->wait=appendqueue(info->wait,name,amount); /*在排队等候乘员名单域中添加客户信息*/

            printf("\\n注册排队成功!\\n");

        }

        else 

        {

            printf("\\n欢迎您再次订购!\\n");

        }

    }

}

void return_tkt()            /*退票模块*/

{  

    struct airline *info;

    qnode *t,*back,*f,*r;

    int grade;

    linklist *p1,*p2,*head;

    char cusname[10];

    if(!(info=find()))       /*调用查询函数,根据客户提供的航线进行搜索*/

    {

        return;

    }

    head=info->order;

    p1=head;

    printf("请输入你的姓名:");

    scanf("%s",cusname);

    while(p1!=NULL)          /*根据客户提供的姓名到订票客户名单域进行查询*/

    {

        if(!strcmp(cusname,p1->name))

        {

            break;

        }

        p2=p1;

        p1=p1->next;

    }

    if(p1==NULL)             /*若未找到,退出本模块*/

    { 

        printf("对不起,您没有订过票!\\n");

        return;

    }

    else                     /*若信息查询成功,删除订票客户名单域中的信息*/

    {

        if(p1==head) 

        {

            head=p1->next;

        }

        else

        {

            p2->next=p1->next;

        }

info->tkt_sur+=p1->ord_amt;

        grade=p1->grade;

        printf("%s退票成功!\\n",p1->name);

        free(p1);

    }

    info->order=head; /*重新将航线名单域指向订票单链表的头指针*/

    f=(info->wait).front; /*f指向排队等候名单队列的头结点*/

    r=(info->wait).rear; /*r指向排队等候名单队列的尾结点*/

    t=f;                    /*t为当前满点条件的排队候补名单域*/

    while(t)

    {

        if(info->tkt_sur>=info->wait.front->req_amt) /*若满足条件者为头结点*/

        {

            int i;

            info->wait.front=t->next;

            printf("%s订票成功!\\n",t->name);

            for(i=0;ireq_amt;i++)                      /*输出座位号*/

            {

                printf("%s的座位号是:%d\\n",t->name,(info->tkt_sur)-i);

            }

            info->tkt_sur-=t->req_amt;

            info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到订票客户名单链表中*/

            free(t);

            break;

        }

        back=t;

t=t->next;

        if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)/*若满足条件者不为头结点*/

        {  

            int i;

            back->next=t->next;

            printf("%s订票成功!\\n",t->name);

            for(i=0;ireq_amt;i++) /*输出座位号*/

            {

                printf("<%s>'s seat number is:%d\\n",t->name,(info->tkt_sur)-i);

            }

            info->tkt_sur-=t->req_amt;

            info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到订票客户名单链表中*/

            free(t);break;

        }

        if(f==r) 

        {

            break;

        }

    }

}

int menu_select()           /*菜单界面*/

{  

    int c;

    char s[20];

    printf("\订票系统\\n");

    printf("~~~~~~~~~~~~~~~~~~~~~~~~~\\n");

    printf("1.查看航线信息\\n");

    printf("2.查看已订票客户信息\\n");

    printf("3.查询航线\\n");

    printf("4.办理订票业务\\n");

    printf("5.办理退票业务\\n");

    printf("6.退出系统\\n");

    printf("~~~~~~~~~~~~~~~~~~~~~~~~~\\n");

    do

    {

        printf("请选择(1-6):");

        scanf("%s",s);

        c=atoi(s);

    }while(c<1||c>6);

    return c;

}

void main()

{  

    struct airline air[MAXSIZE]=       /*初始化航线信息*/

    {

        {"beijing

        {"shanghai    

        {"london

        {"harbin

        {"dalian

    };

    start=air;    

    for(;;)                            /*无限循环(除非用户选择.退出)*/

    {

        system("cls");                 /*清空屏幕*/

        switch(menu_select())

        {

            case 1:list();             /*打印全部航线信息*/

                break;

            case 2:prtlink();          /*浏览已订票客户信息*/

                break;

            case 3:search();           /*查询航线*/

                break;

            case 4:order();            /*订票*/

                break;

            case 5:return_tkt();       /*退票*/

                break;

            case 6:printf("\\n感谢您的使用,再见!\\n");  /*退出系统*/

                exit(0);               /*正常退出程序*/

        }

        printf("\\n任意键继续...\\n");

        getch();                       /*任意键继续*/

    }

}

六、运行结果分析

1.菜单:进入系统后,会出现如下菜单,如图6.1 菜单:

图6.1 菜单

用户根据自己需求选择输入数字(1-6)即可进入相应功能。

2.查看航线信息:在菜单页面下输入数字1,回车,即可浏览全部航线信息。如图6.2 查看航线信息:

图6.2 查看航线信息

3.查看已订票客户信息:在菜单页面下输入数字2,回车,然后输入航班号即可查看。如图6.3 查看航线信息:

图6.3 查看航线信息

该航线有客户预定则显示客户预定的信息。如图6.3 查看客户预定信息:

6.3 查看客户预定信息

如果该航线没有客户预定,则会提示该航线没有客户信息。如图6.4  无人预定航线:

图6.4 无人预定航线

4.查询航线:在菜单页面下输入数字3,回车,即可进入查询航线功能。如图6.5  查询航线页面:

图6.5 查询航线页面

根据提示输入要抵达城市的名称即可查询。如果有该航线,则会显示该航线的信息。如图6.6 航线信息:

图6.6 航线信息

如果没有该航线,则会显示对不起,没有这条航线。如图6.7 无此航线:

图6.7 无此航线

5.办理订票业务:在菜单页面下输入数字4,回车,即可进入办理订票业务功能。如图6.8 订票页面:

图6.8 订票页面

用户根据提示依次输入航班号、票数、姓名、舱位等级即可。如图6.9 订票信息:

图6.9 订票信息

如果订票成功,则会显示座位号,并提示祝您乘坐愉快。如图6.10 订票成功:

图6.10 订票成功

如果在输入订票信息时,输入的票数大于额定乘员数,则会订票失败并提示。

图6.11 订票失败

如果在输入订票信息时,输入的票数小于额定乘员数,大于余票数,则会提示没有这么多票了,询问是否进行排队等候。如图6.12 询问是否排队等候:

图6.12 询问是否排队等候

如果输入N,代表不排队,则会提示欢迎下次订购。如果输入Y,代表进行排队等候。这是会提示用户输入姓名进行排队。如图6.13 排队等候:

图6.13 排队等候

6.办理退票业务:在菜单页面下输入数字5,回车,即可进入办理退票业务功能。如图6.14 办理退票业务页面:

图6.14 办理退票业务页面

根据提示输入航线号和姓名即可进行退票。如果此时这条航线有人排队等候,余票数可以满足其需求,其订票即可成功。如图6.15 排队等候订票成功:

图6.15 排队等候订票成功

7.退出系统:在菜单页面下输入数字6,回车,即可退出系统。如图6.16 退出系统:

图6.16 退出系统

七、收获与体会

在编写的时候只使用了相对较为简单的基础语言,代替了相对较为复杂的语言,降低了运行效率。测试输入的数据也有一定的局限性,但是基本可以满足订票系统的需求。

这个程序有许多地方可以改进,例如:

1数据全部存储在内存中,可以考虑继续编写将数据保存在文件中,这样不会丢失。

2航线信息只能通过修改代码来修改,可以编写一个函数来修改航线信息并将其保存在文件中。

3使用的语言较基础,运行效率较低,可以考虑写一些较为复杂但运行效率高的语言。

4界面不够美观,菜单也只是局限在左上角,可以修改。

 

八、参考文献

[1] 严蔚敏,吴伟民,数据结构(C语言版)[M]. 清华大学出版社,1997.

[2] 夏涛. C语言程序设计,北京邮电大学出版社,2007.

[3] 谭浩强. C程序设计(第三版)[M]. 清华大学出版社,2006.

[4] 百度. 百度知道. 

文档

数据结构课程设计c语言版《飞机订票系统》分解

软件工程专业14级《数据结构》课程设计报告设计题目:飞机订票系统班级:软件14姓名:指导教师:2015年11月20日一、设计任务与要求1.1总体目标与任务要求制作一个订票系统,通过此系统可以实现如下功能:1)录入可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。2)查询可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓)可以输入起飞抵达城市,查询飞机航班情况。3)订票可以订票,如果该航班已经无票,可以提供相关可选择的
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top