航班管理系统

航班信息查询系统

1、 导言 用所学过的 C 语言,以及链表相关知识,实现一个航班信息的录入、查询、显示、 排序等功能。航班信息 节点设计,请参见附录。

2、 基本功能: 使用链表,实现以下功能:

1) 录入(可以直接从键盘录入,也可通过文件存储)

2) 显示所有航班信息

3) 按照查询要求(比如日期、地点等),列出相关的航班信息。

4) 完善该项目功能。

5) 对录入的信息进行排序(比如按起飞时间排序、按起飞地址排序等)

6)账号和密码的注册和登录

3、扩展

1)管理员用户和普通用户 管理员用户拥有增删查改排序 普通用户 可以查询、排序显示

2:简单实现航班的查询系统。

#include <stdio.h>

#include <string.h>   //memcpy()

#include <stdlib.h>

#include <stdbool.h>


 

typedef struct flight //航班信息数据节点(其成员可适当增删)

{

   

   char number[100]; //航班号

   char staddress[100]; //起点站

   char arraddress[100]; //终点站char date[10]; //班期

   char type[100]; //机型

   char stime[100]; //起飞时间

   char atime[100]; //到达时间

   float price; //票价

}Fode,*Fink;

typedef struct  Link

{

    struct Link *next;

    struct flight data;

}Lode,*LNink;

typedef struct head

{

    struct Link *next;

    int size;

}HNode,*HLink;



 

typedef struct head1

{

    struct  zhanghao *next;

    int size;

}HNode1,*HLink1;

typedef struct  zhanghao

{

    struct zhanghao  *next;

    int data;

    int key;

}*zhang;

bool tou(HLink L);

bool zhuce(HLink1 L);

bool denglu( HLink1 L );

 bool display(HLink L);

 bool search(HLink L);

 bool delete(HLink L);

 bool paixu(HLink L);

 bool change(HLink L);




 

/*

    select 用户通过输入数字选择功能块

*/

void chose(HLink  lis,HLink1 lis1 )

{

    int num;

    printf("\033[32m*********************************************************\n");

    printf("*                \033[1m    航班信息查询系统                      *\n\033[0m");

    printf("*        \033[32m*           1:注册账号                            *\n");

    printf("*                    2:登录账号                             *\n");

    printf("*                    3:录入航班信息                         *\n");

    printf("*                    4:显示航班信息                         *\n");

    printf("*                    5:依据航班号查询航班信息                *\n");

    printf("*                    6:依据航班号删除航班信息                *\n");

     printf("*                   7:根据航班价格排序                *\n");

    printf("*                    8:输入航班编号修改航班信息              *\n");

    // printf("*                    6:购买商品                         *\n");

    // printf("*                    9:依据价格对航班号排序                  *\n");

      printf("*                    0:退出系统                           *\n");

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

    printf("请输入功能块:");

    scanf("%d",&num);

    switch (num)

    {

    case 1:

        zhuce(lis1);

       chose(lis,lis1);

        break;

    case 2:

        denglu(lis1);      

        chose(lis,lis1);

       

        break;

    case 3:

        tou(lis);

        chose(lis,lis1);

        break;

    case 4:

        display(lis);

        chose(lis,lis1);

        break;

    case 5:

        search(lis);

        chose(lis,lis1);

        break;

    case 6:

        delete(lis);

        chose(lis,lis1);

        break;

    case 7:

        paixu(lis);

        chose(lis,lis1);

        break;

    case 8:

        change(lis);

        chose(lis,lis1);

        break;

    case 0:

        exit(0);

    default:

        printf("\033[31m请输入正确的功能块!\033[0m\n");

        chose(lis,lis1);

        break;

    }

    printf("\033[32m请输入功能块:\n");

   

}

bool CreatLink(HLink L){//初始化头节点

    if(L==NULL){

        return false;

    }

    L->next=NULL;

    L->size=0;

}

bool CreatLink1(HLink1 L){//初始化头节点

    if(L==NULL){

        return false;

    }

    L->next=NULL;

    L->size=0;

}

bool tou(HLink L){

    if(L==NULL){

        return false;

    }

    LNink p =(LNink)malloc(sizeof(Lode));

    p->next=L->next;

    L->next=p;

   

    printf("请依次按照航班号,起始站,终点站,机型,起飞时间,到达时间,票价输入");

   scanf("%s",p->data.number);

   scanf("%s",p->data.staddress);

   scanf("%s",p->data.arraddress);

   scanf("%s",p->data.type);

   scanf("%s",p->data.stime);

   scanf("%s",p->data.atime);

   scanf("%f",&(p->data.price));

}


 

//注册页面

bool zhuce( HLink1 L){

    if(L==NULL){

        return false;

    }

    zhang p =(zhang) malloc(sizeof (struct zhanghao));

    L->next=p;

    p->next=L->next;

    printf("请输入账号和密码");

    scanf("%d",&(p->data));

    scanf("%d",&(p->key));

    printf("注册完毕");

}

//登录页面

bool denglu(HLink1 L ){

    if(L==NULL){

        return false;

    }

    zhang Node=L->next;

    printf("请登录账号和密码");

    int data;

    int key;

    scanf("%d",&(data));

    scanf("%d",&(key));

   

         while(Node!=NULL){

        if(data==Node->data){

            if(key!=Node->key){

                printf("密码错误");

                exit(0);

            }

            if(key==Node->key){

               

                printf("登录成功");

                break;

               

            }

        }

        if(data!=Node->data){

            printf("未注册该账号");

            break;

        }

        Node=Node->next;

    }

    //while(Node!=NULL){

   // }

        // printf("并为注册账号,请重新注册");

        // exit(0);

        // return false;

    }





 

    bool display(HLink L){

        if(L==NULL){

            return false;

        }

        LNink p=L->next;

        while (p!=NULL)

        {

            printf("%s ,",&(p->data.number));

            printf("%s-->",p->data.staddress);

             printf("%s",p->data.arraddress);

              printf(",%s",p->data.type);

               printf(",%s",p->data.stime);

                printf(",%s",p->data.atime);

                 printf(",%f,",p->data.price);

                 printf("\n");

                 p=p->next;

                 

        }

        printf("\n");

       


 

    }

bool search(HLink L){

    if(L==NULL){

        return false;

    }

    LNink p=(LNink)malloc(sizeof(Lode));

    p=L->next;

    char a[100];

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

    scanf("%s",a);

    while (p!=NULL)

    {

        if(!strcmp(a,p->data.number)){

            printf("%s ,",p->data.number);

            printf("%s-->",p->data.staddress);

             printf("%s",p->data.arraddress);

              printf(",%s",p->data.type);

               printf(",%s",p->data.stime);

                printf(",%s",p->data.atime);

                 printf(",%f,",p->data.price);

        }

        p=p->next;

    }

}

bool delete(HLink L){

    if(L==NULL){

        return false;

    }

    LNink p=(LNink)malloc(sizeof(Lode));

    p=L->next;

    char a[100];

    printf("请输入要删除的航班编号");

    scanf("%s",a);

    while (p!=NULL)

    {  

       

        if(!strcmp(a,p->data.number)){

            //p->data=p->next->data;

            strcpy(&(p->data.arraddress),&(p->next->data.arraddress));

             strcpy(&(p->data.atime),&(p->next->data.atime));

              strcpy(&(p->data.number),&(p->next->data.number));

            //    strcpy(&(p->data.price),&(p->next->data.price));

                strcpy(&(p->data.staddress),&(p->next->data.staddress));

                 strcpy(&(p->data.stime),&(p->next->data.stime));

                  strcpy(&(p->data.type),&(p->next->data.type));

                  p->data.price=p->next->data.price;

            p->next=p->next->next;

        }

        // if(p->next->next==NULL){

        //     p->next=NULL;

        // }

        p=p->next;

    }

}



 

bool change(HLink L){

    if(L==NULL){

        return false;

    }

    LNink p=(LNink)malloc(sizeof(Lode));

    p=L->next;

    char a[100];

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

    scanf("%s",a);

    while (p!=NULL)

    {

        if(!strcmp(a,p->data.number)){

   printf("请输入修改后的信息按照航班号,起始站,终点站,机型,起飞时间,到达时间,票价输入");

   scanf("%s",p->data.number);

   scanf("%s",p->data.staddress);

   scanf("%s",p->data.arraddress);

   scanf("%s",p->data.type);

   scanf("%s",p->data.stime);

   scanf("%s",p->data.atime);

   scanf("%f",&(p->data.price));

        }

        p=p->next;

    }

}



 

bool paixu(HLink L){//按照票价来排序   1:冒泡排序修改值,试过但是修改值不成功,可能是结构体赋值不能直接赋值  2:修改方法利用断开表

       if(L==NULL){

        return false;

    }

    LNink p1;

    LNink p2;

   

   

   

   

    // while (p1!=NULL)

    // {    

    //     for(;p2->next!=NULL;p2=p2->next){

    //         if(p2->data.price>p2->next->data.price){

    //             temp=p2->data.price;

    //             p2->data.price=p2->next->data.price;

    //             p2->next->data.price=temp;

    //         }

    //     }

    //     p1=p1->next;

       

    // }

    for(p1=L->next;p1->next!=NULL;p1=p1->next){

        for(p2=p1->next;p2!=NULL;p2=p2->next){

            if(p1->data.price>p2->data.price){



 

                float temp=0;

                temp=p1->data.price;

                p1->data.price=p2->data.price;

                p2->data.price= temp;

                char a[20];

                strcpy(a,p1->data.number);

                strcpy(p1->data.number,p2->data.number);

                strcpy(p2->data.number,a);

                char b[20];

                strcpy(b,p1->data.staddress);

                strcpy(p1->data.staddress,p2->data.staddress);

                strcpy(p2->data.staddress,b);

                char c[20];

                strcpy(c,p1->data.arraddress);

                strcpy(p1->data.arraddress,p2->data.arraddress);

                strcpy(p2->data.arraddress,c);

                char d[20];

                strcpy(d,p1->data.type);

                strcpy(p1->data.type,p2->data.type);

                strcpy(p2->data.type,d);

                char e[20];

                strcpy(e,p1->data.stime);

                strcpy(p1->data.stime,p2->data.stime);

                strcpy(p2->data.stime,e);

                char f[20];

                strcpy(f,p1->data.atime);

                strcpy(p1->data.atime,p2->data.atime);

                strcpy(p2->data.atime,f);

               

             }

        }

    }

}

int main(){

    //先创建一个头节点作为所有数据的开头

    HLink lis = (HLink)malloc(sizeof(HNode));

     HLink1 lis1 = (HLink1)malloc(sizeof(HNode1));

    CreatLink(lis);

    CreatLink1(lis1);

    chose( lis,lis1);

     //select(lis);

   

    //select(lis);

}

功能模块:



 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值