航班信息查询和检索系统-数据结构课程设计

1.设计目的:

  设计一个航班管理系统,实现对双向链表的增、删、改、查操作,按照航班航号、起始点、终点、出发日期、机型、起飞时间、到达时间、票价建立系统,初始信息如下:

航号起始点终点出发日期机型起飞时间到达时间票价
南航CZ4105 呼和浩特泉州8月1日中型机73719:20次日00:05¥1290
厦航MF8138  呼和浩特泉州8月1日中型机737 经停19:20次日00:05¥1290
青岛航QW9882哈尔滨青岛8月1号  中型机 32023:25  次日00:25¥890
湖南航A67138长沙昆明8月12号中型机 32023:25次日1:30¥720
川航3U1770长沙北京8月13号  中型机 320共享8:1010:25¥865
厦航MF8234乌鲁木齐北京8月13号  大型机 78720:50次日00:35¥2710
长龙GJ8255哈尔滨杭州8月17号中型机 3216:4010:00¥1095
河北航NS8019北京杭州8月14号大型机 737  7:5510:10  720
海航Y87744 哈尔滨深圳8月17号中型机737  14:3520:45¥1610
吉祥HO1273 上海海口8月22号中型机 321  22:30次日01:30¥720

 像这种信息大家可自行上网查找,信息自选。

2.程序介绍

2.1 头文件 header.h

用于调用函数以及双向循环链表的指针声明、数据声明,函数定义声明在dclinklist.c denglu.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//登录界面
int hangkong();
//登录系统用户
int denglu();
//菜单
int menu();

//数据部分
typedef struct plane
{
    char number[128]; //航班号
    char stad[20];   //起点站
    char arrad[20];  //终点站
    char day[20];    //班期
    char type[128];   //机型
    char stime[20];  //起飞时间
    char atime[20];  //到达时间
    char value[20];   //票价
}plane_t;

//指针部分
typedef struct node
{
	void * data;
	struct node * before;
    struct node * after;
}node_t;

//双向链表操作函数
//初始化
node_t* init_list_return(node_t*head);
//创建一个双向链表
node_t* create_dclinklist();

//尾插法
int insert_tdclinklist(node_t*head,void * data , int size);

//打印链表函数
typedef void (showfun_t)(void*data);
//显示航班
void shownumber(void*data);
//显示起始点
void showstad(void*data);
//显示终点
void showarrad(void*data);
//显示出发日期
void showday(void*data);
//显示机型
void showtype(void*data);
//显示起飞时间
void showstime(void*data);
//显示到达时间
void showatime(void*data);
//显示票价
void showvalue(void*data);
//显示所有
void showall(void*data);
//链表打印函数
int dclinklistshow(node_t* head,showfun_t* showfun);

// 输出所有节点个数和输出数据节点个数
// 参数1:链表
// 参数2:所有节点个数
// 参数3:数据节点个数
int showlinklistnode(node_t*head,int* allnode,int* datanode);

//修改第index个位置数据
int updata_idclinklist(node_t* head);

//在第index个位置数据插入一个数据
int insert_idclinklist(node_t* head);

//删除第i个位置
int delete_idclinklist(node_t*head);

//根据部分信息输出全部信息
//参数1:链表数据 参数2:新数据
typedef int (cmpfun_t)(void*data1,void*data2);
//根据航班查找全部信息
int cmpnumber(void* data1 , void * data2);
//根据起点输出全部信息
int cmpstad(void* data1 , void * data2);
//根据终点点输出全部信息
int cmparrad(void* data1 , void * data2);
//根据出发日期输出全部信息
int cmpday(void* data1 , void * data2);
//根据机型输出全部信息
int cmptype(void* data1 , void * data2);
//根据起飞时间输出全部信息
int cmpstime(void* data1 , void * data2);
//根据落地时间输出全部信息
int cmpatime(void* data1 , void * data2);
//根据票价输出全部信息
int cmpvalue(void* data1 , void * data2);
//根据部分信息查找全部信息
node_t* find_vdclinklist(node_t*head,cmpfun_t* cmpfun);

//删除所有数据+销毁链表
int delete_and_destroy_dclinklist(node_t**head);

2.2 主函数 main.c

调用函数+界面排版

#include "header.h"
int main()
{
    printf("-----------欢迎进入飞猪旅游官网----------\n");
    //飞机图形
    hangkong();
    //登录界面
    denglu();
    putchar(10);
    printf("****************************************\n");
    putchar(10);
    printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
    //航班信息
    node_t*dclinklist=create_dclinklist();//建立双向链表
    //用尾插法给双向链表录入数据
    plane_t planen[10]={
                   "南航CZ4105","呼和浩特","泉州","8月1日","中型机737","19:20","次日00:05","¥1290",
                   "厦航MF8138","呼和浩特","泉州","8月1日","中型机737 经停","19:20","次日00:05","¥1290",
                   "青岛航QW9882","哈尔滨","青岛","8月1号","中型机 320","22:05","次日00:25","¥890",
                   "湖南航A67138","长沙","昆明","8月12号","中型机 320","23:25","次日1:30","¥720",
                   "川航3U1770","长沙","北京","8月13号","中型机 320共享","8:10","10:25","¥865",
                   "厦航MF8234","乌鲁木齐","北京","8月13号","大型机 787","20:50","次日00:35","¥2710",
                   "长龙GJ8255","哈尔滨","杭州","8月17号","中型机 321","6:40","10:00","¥1095",
                   "河北航NS8019","北京","杭州","8月14号","大型机 737","7:55","10:10","¥720",
                   "海航Y87744","哈尔滨","深圳","8月17号","中型机737","14:35","20:45","¥1610",     
                   "吉祥HO1273","上海","海口","8月22号","中型机 321","22:30","次日01:30","¥720"
                  };
    int y = 0;
    for(y = 0 ; y < 10 ; y++ )
    {
        insert_tdclinklist(dclinklist,planen+y,sizeof(plane_t));
    }
    node_t * head;
    int select,flag=1;
    while(flag)
    {
        menu();
        scanf("%d",&select);
        switch (select)
        {
        case 1:
        head = init_list_return(head);
            break;
        case 2:
        dclinklistshow(dclinklist,showall);
            break;
        case 3:
        insert_idclinklist(dclinklist);
            break;
        case 4:
        delete_idclinklist(dclinklist);
            break;
        case 5:
        updata_idclinklist(dclinklist);
            break;
        case 6:
        find_vdclinklist(dclinklist,cmpnumber);
            break;
        case 7:
        find_vdclinklist(dclinklist,cmpstad);
            break;
        case 8:
        find_vdclinklist(dclinklist,cmparrad);
            break;
        case 9:
        find_vdclinklist(dclinklist,cmpday);
            break;
        case 10:
        find_vdclinklist(dclinklist,cmptype);
            break;
        case 11:
        find_vdclinklist(dclinklist,cmpstime);
            break;
        case 12:
        find_vdclinklist(dclinklist,cmpatime);
            break;
        case 13:
        find_vdclinklist(dclinklist,cmpvalue);
            break;
        case 14:
        delete_and_destroy_dclinklist(&dclinklist);
            break;
        case 15:
            flag = 0;//满足while(flag)条件,退出循环
            break;
        default:
            printf("请规范输入\n");
			break;
        }
    }
    return 0;
}

2.3 登录函数定义声明 denglu.c

#include "header.h"

//登录界面飞机图行美化操作界面,此代码可自行选择图案,网上直接搜索就行
int hangkong()
{
        int space[5]={4,4,5,6};
    int i,j;
    for(i = 0; i < 4; i ++)
    {
        for(j = 0; j < space[i]; j ++)
            putchar(' ');
        for(j = 0; j <= i; j ++)
            putchar('*');
        putchar('\n');
    }
    puts("**************");
    for(i = 3; i >= 0; i --)
    {
        for(j = 0; j < space[i]; j ++)
            putchar(' ');
        for(j = 0; j <= i; j ++)
            putchar('*');
        putchar('\n');
    }
    printf("~~~~飞猪旅行欢迎您,祝您每段旅行愉快~~~~\n");
    return 0;
}


//登录系统用户
int denglu()
{
    char u[3][128] = {"a" , "" , ""};//用户账号名1:a 账户名2:b 账户名3:
    char p[3][128] = {"a0605" , "b1221" , "c0602"};//对应账户的对应密码
    char u_u[128] = {};
    char p_u[128] = {};


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

    printf("\t 请输入账号:");
    scanf("%s",u_u);

    printf("\t 请输入密码:");
    scanf("%s",p_u);

    printf("请稍等,正在进行验证!!\n\n\n");

    while (!(strcmp(u_u , u[0]) == 0) && !(strcmp(u_u , u[1]) == 0) && !(strcmp(u_u , u[2]) == 0))//判断账户名是否存在,不存在重新输入
    {
        printf("您输入的账号有误,请重新输入!!\n");

            printf("\t 请输入账号:");
            scanf("%s",u_u);

            printf("\t 请输入密码:");
            scanf("%s",p_u);

            printf("请稍等,正在进行验证!!\n\n\n");
    }
    
    
    //账户1入口,进行对应账户的密码判断操作
    if(strcmp(u_u , u[0]) == 0)
    {
        printf("尊敬的彭双雄先生你好, 账户正确!\n");
        if(strcmp(p_u , p[0]) == 0)
        {
            printf("尊敬的彭双雄先生你好, 密码正确!\n");
        } 
        else
        {
           printf("您输入的密码有误!!!\n");  
           exit(0);
        }
    }

    //账户2入口
    else if(strcmp(u_u , u[1]) == 0)
    {
        printf("尊敬的蒋佳佳女生你好, 账户正确!\n");
        if(strcmp(p_u , p[1]) == 0)
        {
            printf("尊敬的蒋佳佳女生你好, 密码正确!\n");
        }
        else
        {
           printf("您输入的密码有误!!!\n"); 
            exit(0);
        }
    }

    //账户3入口
    else if(strcmp(u_u , u[2]) == 0)
    {
        printf("尊敬的彭彬彬女生你好, 账户正确!\n");
        if(strcmp(p_u , p[2]) == 0)
        {
            printf("尊敬的彭彬彬女生你好, 密码正确!\n");
        } 
        else
        {
           printf("您输入的密码有误!!!\n");
            exit(0); 
        }
    }

    else//密码输入错误直接退出程序
    {
        printf("请输入正确的账号!!!\n");
         exit(0);
    }
    return 0;
}


//菜单,执行操作可根据自己需求添加操作,操作数对应序号运用键盘输入序号+switch case函数进行对应操作
int menu()
{
    printf("|*****************************************|\n");
    printf("| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |\n");
    printf("|-------------欢迎进入系统----------------|\n");
    printf("|      请选择您要进行的操作:             |\n");
    printf("|      1、 初始化系统                     |\n");
    printf("|      2、 查看现有航班信息               |\n");
    printf("|      3、 增加航班信息                   |\n");
    printf("|      4、 删除航班信息                   |\n");
    printf("|      5、 修改航班信息                   |\n");
    printf("|      6、 根据航班查找航班信息           |\n");
    printf("|      7、 根据起点查找航班信息           |\n");
    printf("|      8、 根据终点查找航班信息           |\n");
    printf("|      9、 根据出发日期查找航班信息       |\n");
    printf("|      10、根据机型查找航班信息           |\n");
    printf("|      11、根据起飞时间查找航班信息       |\n");
    printf("|      12、根据落地时间查找航班信息       |\n");
    printf("|      13、根据票价查找航班信息           |\n");
    printf("|      14、清空所有航班信息               |\n");
    printf("|      15、退出系统                       |\n");
    printf("| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |\n");
    printf("|*****************************************|\n");


}

2.4 双向链表函数定义声明 dclinklist.c

#include "header.h"

//初始化
node_t* init_list_return(node_t*head)
{
	head = (node_t*)malloc(sizeof(node_t));
	head->data = 0;//带头结点存储链表长度
	head->after = head->before = head;
    head = NULL ;
	return head;
}

//创建一个双向链表
node_t* create_dclinklist()
{
    node_t*head = malloc(sizeof(node_t));
    if(head == NULL)
    {
        perror("malloc error\n");
        return (node_t*)-1;
    }
    head->after=head->before=head;
    head->data = NULL;
    return head;
}

//尾插法
int insert_tdclinklist(node_t*head,void * data , int size)
{
//判断参数
if(head == NULL || data == NULL || size <= 0 )
    {
        perror("parameters error\n");
        return -1;
    }
    node_t*newnode = malloc(sizeof(node_t));
    newnode->data = malloc(size);

    memcpy(newnode->data,data,size);
    node_t*tail = head->before;

    newnode->after = head ;
    newnode->before = tail;
    tail->after = newnode;
    head->before =newnode;

    return 0;
}


 //打印链表函数
typedef void (showfun_t)(void*data);
//显示航班
void shownumber(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("航班号:%s\n",planem->number);
}
//显示起始点
void showstad(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("出发点:%s\n",planem->stad);
}//显示终点
void showarrad(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("终点:%s\n",planem->arrad);
}//显示出发日期
void showday(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("出行日期:%s\n",planem->day);
}//显示机型
void showtype(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("机型:%s\n",planem->type);
}//显示起飞时间
void showstime(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("起飞时间:%s\n",planem->stime);
}
//显示到达时间
void showatime(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("到达时间:%s\n",planem->atime);
}
//显示票价
void showvalue(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("票价:%s\n",planem->value);
}
//显示所有
void showall(void*data)
{
    plane_t*planem = (plane_t*)data;
    printf("航班:%s     起点:%s     终点:%s     出发日期:%s     机型:%s     起飞时间:%s     到达时间:%s     票价:%s\n",planem->number,planem->stad,planem->arrad,planem->day,planem->type,planem->stime,planem->atime,planem->value);
}

//链表打印函数
int dclinklistshow(node_t* head,showfun_t* showfun)
{
if(head == NULL || head->after == NULL ||showfun == NULL)
{
    perror("parameters illegal\n");
    return -1;
}
node_t* temp = head->after;
while(temp != head)
{
    showfun(temp->data);
    putchar(10);
    temp = temp->after;
}
return 0;
}


// 输出所有节点个数和输出数据节点个数
// 参数1:链表
// 参数2:所有节点个数
// 参数3:数据节点个数
// 返回值:0成功 非0:失败
int showlinklistnode(node_t*head,int* allnode,int* datanode)
{
    //1.参数判断
    if(head == NULL || allnode == NULL || datanode == NULL)
    {
        perror("parameters error\n");
        return -1;
    }
    //2.遍历
    int i = 1;
    node_t* temp = head->after;
    //temp本身不为空 还是temp->next不为空
    while(temp != head)
    {
        ++i;
        temp = temp->after;
    }
    //所有数据输出+数据节点输出
    *allnode = i ;
    *datanode = i - 1;
    //3.return
    return i;
}

//修改第index个位置数据
int updata_idclinklist(node_t* head)
{
    int index;
    printf("请输入您需要修改航班的序号:");
    scanf("%d",&index);
    if(head == NULL ||  index <= 0 )
    {
        perror("parameters error\n");
        return -1;
    }
    int  a = 0;
    int datanode = -1 ;
    showlinklistnode(head,&a,&datanode);
    index = index % a;
    if(!index)
    {
        perror("index error\n");
        return -2;
    }
    node_t*newnode = malloc(sizeof(node_t));
    newnode->data = malloc(sizeof(plane_t));
    plane_t newplane;
    printf("请输入新的航班名称:");
    scanf("%s",newplane.number);
    putchar(10);
    printf("请输入新航班的起始点:");
    scanf("%s",newplane.stad);
    putchar(10);
    printf("请输入新航班的终点:");
    scanf("%s",newplane.arrad);
    putchar(10);
    printf("请输入新航班的出发日期:");
    scanf("%s",newplane.day);
    putchar(10);
    printf("请输入新航班的飞机型号:");
    scanf("%s",newplane.type);
    putchar(10);
    printf("请输入新航班的起飞时间:");
    scanf("%s",newplane.stime);
    putchar(10);
    printf("请输入新航班的到达时间:");
    scanf("%s",newplane.atime);
    putchar(10);
    printf("请输入新航班的票价:");
    scanf("%s",newplane.value);
    memcpy(newnode->data,&newplane,sizeof(plane_t));
    node_t*temp = head;
    int i = 0 ;
    while(i<index)
    {
        ++i;
        temp = temp->after;
    }
    temp->data=newnode->data;
    return 0;
}

//在第index个位置数据插入一个数据
int insert_idclinklist(node_t* head)
{
    int index;
    printf("请输入您需要增加航班批次的序号:");
    scanf("%d",&index);
    if(head == NULL || index <= 0 )
    {
        perror("parameters error\n");
        return -1;
    }
    int a = 0 ;
    int datanode = -1 ;
    showlinklistnode(head,&a,&datanode);
    index = index % a;
    if(!index)
    {
        perror("index error\n");
        return -2;
    }
    node_t*newnode = malloc(sizeof(node_t));
    newnode->data = malloc(sizeof(plane_t));
    plane_t newplane;
    printf("请输入新的航班名称:");
    scanf("%s",newplane.number);
    putchar(10);
    printf("请输入新航班的起始点:");
    scanf("%s",newplane.stad);
    putchar(10);
    printf("请输入新航班的终点:");
    scanf("%s",newplane.arrad);
    putchar(10);
    printf("请输入新航班的出发日期:");
    scanf("%s",newplane.day);
    putchar(10);
    printf("请输入新航班的飞机型号:");
    scanf("%s",newplane.type);
    putchar(10);
    printf("请输入新航班的起飞时间:");
    scanf("%s",newplane.stime);
    putchar(10);
    printf("请输入新航班的到达时间:");
    scanf("%s",newplane.atime);
    putchar(10);
    printf("请输入新航班的票价:");
    scanf("%s",newplane.value);
    memcpy(newnode->data,&newplane,sizeof(plane_t));
    node_t*temp = head;
    int i = 0;
    while(i<index-1)
    {
        ++i;
        temp = temp->after;
    }
   newnode->after=temp->after;
   newnode->before=temp;
   temp->after->before=newnode;
   temp->after=newnode;
   return 0;

}

//删除第i个位置
int delete_idclinklist(node_t*head)
{
    int index = 0;
    printf("请输入你需要删除航班信息的序号:");
    scanf("%d",&index);
    if(head == NULL || index < 0 || head->after == head)
    {
        perror("parameters error\n");
        return -1;
    }
    int a = 0 ;
    int datanode = -1 ;
    showlinklistnode(head,&a,&datanode);
    index = index % a; 
    if(index == 0)
    {
        perror("index error\n");
        return -1;
    }

    int i = 0 ;
    node_t*temp = head ;

    while(i < index)
    {
        ++i;
        temp = temp->after;
    }

    temp->before->after=temp->after;
    temp->after->before=temp->before;

    free(temp->data);
    free(temp);
    return 0;
}

//根据部分信息输出全部信息
//参数1:链表数据 参数2:新数据
typedef int (cmpfun_t)(void*data1,void*data2);

int cmpnumber(void* data1 , void * data2)
{
    plane_t*newdata1 = (plane_t*)data1;
    plane_t*newdata2 = (plane_t*)data2;
    return strcmp(newdata1->number,newdata2->number);
}

int cmpstad(void* data1 , void * data2)
{
    plane_t*newdata1 = (plane_t*)data1;
    plane_t*newdata2 = (plane_t*)data2;
    return strcmp(newdata1->stad,newdata2->stad);
}

int cmparrad(void* data1 , void * data2)
{
    plane_t*newdata1 = (plane_t*)data1;
    plane_t*newdata2 = (plane_t*)data2;
    return strcmp(newdata1->arrad,newdata2->arrad);
}

int cmpday(void* data1 , void * data2)
{
    plane_t*newdata1 = (plane_t*)data1;
    plane_t*newdata2 = (plane_t*)data2;
    return strcmp(newdata1->day,newdata2->day);
}

int cmptype(void* data1 , void * data2)
{
    plane_t*newdata1 = (plane_t*)data1;
    plane_t*newdata2 = (plane_t*)data2;
    return strcmp(newdata1->type,newdata2->day);
}

int cmpstime(void* data1 , void * data2)
{
    plane_t*newdata1 = (plane_t*)data1;
    plane_t*newdata2 = (plane_t*)data2;
    return strcmp(newdata1->stime,newdata2->stime);
}

int cmpatime(void* data1 , void * data2)
{
    plane_t*newdata1 = (plane_t*)data1;
    plane_t*newdata2 = (plane_t*)data2;
    return strcmp(newdata1->atime,newdata2->atime);
}

int cmpvalue(void* data1 , void * data2)
{
    plane_t*newdata1 = (plane_t*)data1;
    plane_t*newdata2 = (plane_t*)data2;
    return strcmp(newdata1->value,newdata2->value);
}

//根据部分信息查找全部信息
node_t* find_vdclinklist(node_t*head,cmpfun_t* cmpfun)
{
    plane_t newdata;
    printf("请输入您的航班信息,不清楚请填写无!!!\n");
    printf("请输入您的航班名称:\n");
    scanf("%s",newdata.number);
    printf("请输入您的航班起点:\n");
    scanf("%s",newdata.stad);
    printf("请输入您的航班终点:\n");
    scanf("%s",newdata.arrad);
    printf("请输入您的航班出行日期:\n");
    scanf("%s",newdata.day);
    printf("请输入您的航班机型:\n");
    scanf("%s",newdata.type);
    printf("请输入您的航班起飞时间:\n");
    scanf("%s",newdata.stime);
    printf("请输入您的航班到达时间:\n");
    scanf("%s",newdata.atime);
    printf("请输入您的航班价格:\n");
    scanf("%s",newdata.value);
    putchar(10);
    if(head == NULL || cmpfun == NULL)
    {
        printf("parameters error\n");
        return NULL;
    }
    node_t*temp = head->after;
    while(temp != head)
    {
        if(!cmpfun(temp->data,&newdata))
        {
            printf("航班:%s   起点:%s   终点:%s   出发日期:%s   机型:%s   起飞时间:%s   到达时间:%s   票价:%s\n",((plane_t*)(temp->data))->number,((plane_t*)(temp->data))->stad,((plane_t*)(temp->data))->arrad,((plane_t*)(temp->data))->day,((plane_t*)(temp->data))->type,((plane_t*)(temp->data))->stime,((plane_t*)(temp->data))->atime,((plane_t*)(temp->data))->value);
        }
        temp=temp->after;
    }
    return  NULL;
}

//删除所有数据+销毁链表
int delete_and_destroy_dclinklist(node_t**head)
{
    if((*head) == NULL)
    {
        perror("head is illegal");
        return -1;
    }

    node_t*temp = (*head)->after,*pre;

    (*head)->after = *head;

    while(temp != *head)
    {
        pre = temp;
        temp = temp->after;
        free(pre->data);
        free(pre);
    }
    free(*head);
    *head=NULL;
    return 0;

}

3 MAKE

3.1 简介

        工程管理器,顾名思义,是指管理较多的文件

        Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作

        Make将只编译改动的代码文件,而不用完全编译。

3.2 make工具

      1.安装:sudo apt-get install make
      2.make工具主要用于解决多文件联编:

                   1)如果用gcc多文件联编,容易少文件,文件名写错,另外不方便别人使用

                   2)使用make工具可方便地进行一次编写,方便团队编译

                   3)再次编译时,只编译修改过的文件,提高编译效率,从而节省时间。

      3.使用:make    当执行make命令时,会自动寻找make工具的默认配置文件 Makefile/makefile
      4.Makefile编写的基本规则:

                    目标 : 依赖性列表 依赖性列表:表示生成目标所需要的文件

                    Tab键 利用依赖性列表中的文件生成目标的指令

                   注意:命令行前面必须是一个”TAB键”,否则编译错误为:*** missing separator.  Stop.

      例:

      power : per.c

      gcc power.c -o power -lm

      注:如果目标是第1个则是最终目标,如果不是第1个则是中间目标

      make命令的执行流程:

      make -> Makefile -> 第一个目标 ->检测依赖性文件列表中的文件是否存在 -> 执行指令编译

      5.先利用*.c文件生成*.o,再利用*.o的文件生成最终目标

          power : compute.o power.o

         gcc compute.o power.o -o power -lm #3

         rm *.o -rf #4

         compute.o : compute.c

         gcc -c compute.c #1

         power.o : power.c

         gcc -c power.c #2

      6.标准项目中的文件由头文件*.h和源文件*.c文件构成

         power : compute.o input.o main.o

         gcc compute.o input.o main.o -o power -lm #4

         rm *.o -rf #5

         compute.o : compute.c compute.h

         gcc -c compute.c #1

3.3 程序

        make工具就根据makefile中的命令进行编译和链接的。makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。

app: main.c dclinklist.c  denglu.c header.h
	gcc main.c dclinklist.c denglu.c header.h -o app

4.运行结果展示

student@student-machine:~/psx_项目$ make
gcc main.c dclinklist.c denglu.c header.h -o app
student@student-machine:~/psx_项目$ ./app
-----------欢迎进入飞猪旅游官网----------
    *
    **
     ***
      ****
**************
      ****
     ***
    **
    *
~~~~飞猪旅行欢迎您,祝您每段旅行愉快~~~~
****************************************


         请输入账号:a
         请输入密码:a0605
请稍等,正在进行验证!!


尊敬的a先生/女士你好, 账户正确!
尊敬的a先生/女士你好, 密码正确!

****************************************

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
1
|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
2
航班:南航CZ4105     起点:呼和浩特     终点:泉州     出发日期:8月1日     机型:中型机737     起飞时间:19:20     到达时间:次日00:05     票价:¥1290

航班:厦航MF8138     起点:呼和浩特     终点:泉州     出发日期:8月1日     机型:中型机737 经停     起飞时间:19:20     到达时间:次日00:05     票价:¥1290

航班:青岛航QW9882     起点:哈尔滨     终点:青岛     出发日期:8月1号     机型:中型机 320     起飞时间:22:05     到达时间:次日00:25     票价:¥890

航班:湖南航A67138     起点:长沙     终点:昆明     出发日期:8月12号     机型:中型机 320     起飞时间:23:25     到达时间:次日1:30     票价:¥720

航班:川航3U1770     起点:长沙     终点:北京     出发日期:8月13号     机型:中型机 320共享     起飞时间:8:10     到达时间:10:25     票价:¥865

航班:厦航MF8234     起点:乌鲁木齐     终点:北京     出发日期:8月13号     机型:大型机 787     起飞时间:20:50     到达时间:次日00:35     票价:¥2710

航班:长龙GJ8255     起点:哈尔滨     终点:杭州     出发日期:8月17号     机型:中型机 321     起飞时间:6:40     到达时间:10:00     票价:¥1095

航班:河北航NS8019     起点:北京     终点:杭州     出发日期:8月14号     机型:大型机 737     起飞时间:7:55     到达时间:10:10     票价:¥720

航班:海航Y87744     起点:哈尔滨     终点:深圳     出发日期:8月17号     机型:中型机737     起飞时间:14:35     到达时间:20:45     票价:¥1610

航班:吉祥HO1273     起点:上海     终点:海口     出发日期:8月22号     机型:中型机 321     起飞时间:22:30     到达时间:次日01:30     票价:¥720

|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
3
请输入您需要增加航班批次的序号:1
请输入新的航班名称:a

请输入新航班的起始点:a

请输入新航班的终点:a

请输入新航班的出发日期:a

请输入新航班的飞机型号:a

请输入新航班的起飞时间:a

请输入新航班的到达时间:a

请输入新航班的票价:a
|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
2
航班:a     起点:a     终点:a     出发日期:a     机型:a     起飞时间:a     到达时间:a     票价:a

航班:南航CZ4105     起点:呼和浩特     终点:泉州     出发日期:8月1日     机型:中型机737     起飞时间:19:20     到达时间:次日00:05     票价:¥1290

航班:厦航MF8138     起点:呼和浩特     终点:泉州     出发日期:8月1日     机型:中型机737 经停     起飞时间:19:20     到达时间:次日00:05     票价:¥1290

航班:青岛航QW9882     起点:哈尔滨     终点:青岛     出发日期:8月1号     机型:中型机 320     起飞时间:22:05     到达时间:次日00:25     票价:¥890

航班:湖南航A67138     起点:长沙     终点:昆明     出发日期:8月12号     机型:中型机 320     起飞时间:23:25     到达时间:次日1:30     票价:¥720

航班:川航3U1770     起点:长沙     终点:北京     出发日期:8月13号     机型:中型机 320共享     起飞时间:8:10     到达时间:10:25     票价:¥865

航班:厦航MF8234     起点:乌鲁木齐     终点:北京     出发日期:8月13号     机型:大型机 787     起飞时间:20:50     到达时间:次日00:35     票价:¥2710

航班:长龙GJ8255     起点:哈尔滨     终点:杭州     出发日期:8月17号     机型:中型机 321     起飞时间:6:40     到达时间:10:00     票价:¥1095

航班:河北航NS8019     起点:北京     终点:杭州     出发日期:8月14号     机型:大型机 737     起飞时间:7:55     到达时间:10:10     票价:¥720

航班:海航Y87744     起点:哈尔滨     终点:深圳     出发日期:8月17号     机型:中型机737     起飞时间:14:35     到达时间:20:45     票价:¥1610

航班:吉祥HO1273     起点:上海     终点:海口     出发日期:8月22号     机型:中型机 321     起飞时间:22:30     到达时间:次日01:30     票价:¥720

|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
4
请输入你需要删除航班信息的序号:1
|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
2
航班:南航CZ4105     起点:呼和浩特     终点:泉州     出发日期:8月1日     机型:中型机737     起飞时间:19:20     到达时间:次日00:05     票价:¥1290

航班:厦航MF8138     起点:呼和浩特     终点:泉州     出发日期:8月1日     机型:中型机737 经停     起飞时间:19:20     到达时间:次日00:05     票价:¥1290

航班:青岛航QW9882     起点:哈尔滨     终点:青岛     出发日期:8月1号     机型:中型机 320     起飞时间:22:05     到达时间:次日00:25     票价:¥890

航班:湖南航A67138     起点:长沙     终点:昆明     出发日期:8月12号     机型:中型机 320     起飞时间:23:25     到达时间:次日1:30     票价:¥720

航班:川航3U1770     起点:长沙     终点:北京     出发日期:8月13号     机型:中型机 320共享     起飞时间:8:10     到达时间:10:25     票价:¥865

航班:厦航MF8234     起点:乌鲁木齐     终点:北京     出发日期:8月13号     机型:大型机 787     起飞时间:20:50     到达时间:次日00:35     票价:¥2710

航班:长龙GJ8255     起点:哈尔滨     终点:杭州     出发日期:8月17号     机型:中型机 321     起飞时间:6:40     到达时间:10:00     票价:¥1095

航班:河北航NS8019     起点:北京     终点:杭州     出发日期:8月14号     机型:大型机 737     起飞时间:7:55     到达时间:10:10     票价:¥720

航班:海航Y87744     起点:哈尔滨     终点:深圳     出发日期:8月17号     机型:中型机737     起飞时间:14:35     到达时间:20:45     票价:¥1610

航班:吉祥HO1273     起点:上海     终点:海口     出发日期:8月22号     机型:中型机 321     起飞时间:22:30     到达时间:次日01:30     票价:¥720

|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
5
请输入您需要修改航班的序号:1
请输入新的航班名称:b

请输入新航班的起始点:b

请输入新航班的终点:b

请输入新航班的出发日期:b

请输入新航班的飞机型号:b

请输入新航班的起飞时间:b

请输入新航班的到达时间:b

请输入新航班的票价:b
|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
2
航班:b     起点:b     终点:b     出发日期:b     机型:b     起飞时间:b     到达时间:b     票价:b

航班:厦航MF8138     起点:呼和浩特     终点:泉州     出发日期:8月1日     机型:中型机737 经停     起飞时间:19:20     到达时间:次日00:05     票价:¥1290

航班:青岛航QW9882     起点:哈尔滨     终点:青岛     出发日期:8月1号     机型:中型机 320     起飞时间:22:05     到达时间:次日00:25     票价:¥890

航班:湖南航A67138     起点:长沙     终点:昆明     出发日期:8月12号     机型:中型机 320     起飞时间:23:25     到达时间:次日1:30     票价:¥720

航班:川航3U1770     起点:长沙     终点:北京     出发日期:8月13号     机型:中型机 320共享     起飞时间:8:10     到达时间:10:25     票价:¥865

航班:厦航MF8234     起点:乌鲁木齐     终点:北京     出发日期:8月13号     机型:大型机 787     起飞时间:20:50     到达时间:次日00:35     票价:¥2710

航班:长龙GJ8255     起点:哈尔滨     终点:杭州     出发日期:8月17号     机型:中型机 321     起飞时间:6:40     到达时间:10:00     票价:¥1095

航班:河北航NS8019     起点:北京     终点:杭州     出发日期:8月14号     机型:大型机 737     起飞时间:7:55     到达时间:10:10     票价:¥720

航班:海航Y87744     起点:哈尔滨     终点:深圳     出发日期:8月17号     机型:中型机737     起飞时间:14:35     到达时间:20:45     票价:¥1610

航班:吉祥HO1273     起点:上海     终点:海口     出发日期:8月22号     机型:中型机 321     起飞时间:22:30     到达时间:次日01:30     票价:¥720

|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
7
请输入您的航班信息,不清楚请填写无!!!
请输入您的航班名称:
无
请输入您的航班起点:
哈尔滨
请输入您的航班终点:
无
请输入您的航班出行日期:
无
请输入您的航班机型:
无
请输入您的航班起飞时间:
无
请输入您的航班到达时间:
无
请输入您的航班价格:
无

航班:青岛航QW9882   起点:哈尔滨   终点:青岛   出发日期:8月1号   机型:中型机 320   起飞时间:22:05   到达时间:次日00:25   票价:¥890
航班:长龙GJ8255   起点:哈尔滨   终点:杭州   出发日期:8月17号   机型:中型机 321   起飞时间:6:40   到达时间:10:00   票价:¥1095
航班:海航Y87744   起点:哈尔滨   终点:深圳   出发日期:8月17号   机型:中型机737   起飞时间:14:35   到达时间:20:45   票价:¥1610
|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
14
|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
2
parameters illegal
: Success
|*****************************************|
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|-------------欢迎进入系统----------------|
|      请选择您要进行的操作:             |
|      1、 初始化系统                     |
|      2、 查看现有航班信息               |
|      3、 增加航班信息                   |
|      4、 删除航班信息                   |
|      5、 修改航班信息                   |
|      6、 根据航班查找航班信息           |
|      7、 根据起点查找航班信息           |
|      8、 根据终点查找航班信息           |
|      9、 根据出发日期查找航班信息       |
|      10、根据机型查找航班信息           |
|      11、根据起飞时间查找航班信息       |
|      12、根据落地时间查找航班信息       |
|      13、根据票价查找航班信息           |
|      14、清空所有航班信息               |
|      15、退出系统                       |
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
|*****************************************|
15   //输入15执行case 15操作,则flag=0,满足while(flag)条件退出循环
student@student-machine:~/psx_项目$ 

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现飞机航班信息查询系统可以分为以下几个步骤: 1. 定义数据结构 首先需要定义一些数据结构来存储飞机航班信息,如航班号、起飞时间、到达时间、出发地、目的地等等。 ```c typedef struct Flight { char number[10]; char departure_time[20]; char arrival_time[20]; char departure_city[20]; char arrival_city[20]; int price; } Flight; ``` 2. 读取数据 将飞机航班信息存储在文件中,程序需要读取这些数据才能进行查询。我们可以使用`fscanf`函数从文件中读取每一行数据,并将其存储在一个数组中。 ```c Flight flights[1000]; void readData() { FILE *fp = fopen("data.txt", "r"); int i = 0; while (fscanf(fp, "%s %s %s %s %s %d", flights[i].number, flights[i].departure_time, flights[i].arrival_time, flights[i].departure_city, flights[i].arrival_city, &flights[i].price) != EOF) { i++; } fclose(fp); } ``` 3. 查询航班信息 查询航班信息需要用户输入一些条件,如出发地、目的地、起飞时间等等。程序需要遍历所有的飞机航班信息,匹配用户输入的条件,找到匹配的航班并输出。 ```c void searchFlight() { char departure_city[20]; char arrival_city[20]; char departure_time[20]; printf("请输入出发城市:"); scanf("%s", departure_city); printf("请输入到达城市:"); scanf("%s", arrival_city); printf("请输入起飞时间:"); scanf("%s", departure_time); printf("查询结果如下:\n"); for (int i = 0; i < 1000; i++) { if (strcmp(flights[i].departure_city, departure_city) == 0 && strcmp(flights[i].arrival_city, arrival_city) == 0 && strcmp(flights[i].departure_time, departure_time) >= 0) { printf("航班号:%s,起飞时间:%s,到达时间:%s,出发地:%s,目的地:%s,价格:%d\n", flights[i].number, flights[i].departure_time, flights[i].arrival_time, flights[i].departure_city, flights[i].arrival_city, flights[i].price); } } } ``` 4. 显示菜单 最后,我们需要编写一个菜单,让用户可以选择不同的功能。 ```c int main() { readData(); int choice; do { printf("请选择:\n"); printf("1. 查询航班信息\n"); printf("2. 退出系统\n"); scanf("%d", &choice); switch (choice) { case 1: searchFlight(); break; case 2: printf("谢谢使用!\n"); break; default: printf("输入有误,请重新输入!\n"); break; } } while (choice != 2); return 0; } ``` 完整代码如下:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值