基于Linux的航班管理系统

该系统用了三个文件来写,main.c文件Flight_system.h头文件Flight_system.c文件。

mian.c文件主要调用Fligth_system.c文件的各个函数功能;

Flight_system.h文件主要编写航班管理系统的功能的定义;

Flight_system.c文件主要编写航班系统的各个功能的实现以及初始化;

该系统分为管理员和用户模式。需要管理员添加航班信息用户才能购买。

管理员是提前定义好的管理员账户:TJC,密码是123,登录时不验证密码,如需验证可在登录模块中自行添加判断语句。管理员登录后有1.添加航班;2、删除航班。3、修改航班。4、查询航班。4个功能。

 

 

需要先添加航班信息,该系统才能激活各个模块。当然,也对应着各个模块的错误反馈。用户模式:用户在管理员添加航班后,有4个功能。1、查询航班。2、购票。3、退票。4、改签。

代码:

main.c文件

#include"Flight_system.c"
int main(){
    Customer *pArr = NULL;
    Customer *p = NULL;
    pArr = (Customer *)malloc(9*sizeof(Customer));//注册的用户较多就改变9的值
    p = pArr;

    Plane *qArr = NULL;
    Plane *q    = NULL;
    qArr = (Plane *)malloc(9*sizeof(Plane));//注册的航班较多就改变9的值
    q = qArr;
    int mk=Wellcome();
    while(1){
    switch(mk){
        case 1 :Estimate(p,User_num,q,Plane_num);break;
        case 2 :Input(p,User_num); break;
        case 3 : exit(0); break;
        default : printf("输入有误!\n");
    }
    
    printf("1.登录 2.注册 3 退出\n");
    int op;
    scanf("%d",&op);
    mk=op;
    }
    return 0;
}

Flight_system.h文件

#include<stdio.h>

static char Admin_id[10]="TJC";
static char Admin_psw[10] = "123tjc";

static int User_num = 1;//记录用户数
static int Plane_num =1;//记录航班数
static    int Ticket_number[10]={0};//记录航班票数
static char User_number[10][10]={{000}};

static int Ticket_change =1;//记录改签情况

typedef struct Fight{           
        char Flight_number[10];
        char Fly_space[10];
        char Fall_space[10];
        char Fly_time[10];
        char Fall_time[10];
        float Fares;
}Plane;

typedef struct User{
    char User_id[10];
    char User_psw[10];
    char serial[10];//装票的航班号
}Customer;

int Wellcome();

char *Log();

void Input(Customer *pArr,int len);

void Estimate(Customer *pArr,int len,Plane *qArr, int len1);

//管理员登录
void fun1(Plane *qArr, int len);
void Add_flight(Plane *qArr, int len);//增加航班
void Delete_flight(Plane *qArr, int len);//删除航班
void Change_flight(Plane *qArr, int len);//修改航班
void Search_flight(Plane *qArr, int len);//查找航班

//普通用户
void fun2(Customer *pArr,int len,Plane *qArr, int len1);
void Check_flight(Plane *qArr, int len);//查看航班
void Buy_ticket(Plane *qArr, int len,Customer *pArr ,int len1);//购票
void Back_ticket(Plane *qArr, int len,Customer *pArr ,int len1);//退票
void Change_ticket(Plane *qArr, int len,Customer *pArr ,int len1);//改签

Flight_system.c文件

 

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

#pragma warning(disable:4996)


int Wellcome(){
    printf("\t\t\t欢迎来到航班管理系统!(按任意建进入)\n");
    getchar();
    system("clear");
    printf("--------------------- 请选择要操作的命令--------------------------------\n\n");
    printf("-------------------------- 1 登录---------------------------------------\n\n");
    printf("-------------------------- 2 注册---------------------------------------\n\n");
    printf("-------------------------- 3 退出---------------------------------------\n\n");
    int n;
    printf("请输入命令\n");
    scanf("%d",&n);
    return n;
}

char *Log(){
    printf("请输入您的用户名:");
    static char user_id1[10];
    scanf("%s",user_id1);
    char user_psw[10];
    printf("请输入您的密码:");
    scanf("%s",user_psw);
    return user_id1;
}

void Input(Customer *pArr,int len){
    char x[10];
    char y[10];
    int m =1;
    while(m){
    printf("请输入用户名:");
    scanf("%s",x);
    printf("请输入密码:");
    scanf("%s",y);
    for (int i = 0; i < len; ++i)
        {
            if (0==strcmp(x,pArr[i].User_id))
            {
                printf("该用户名已被使用!\n");
                break;
            }
            else if(i==(len-1)){
                 system("clear");
                 printf("注册成功!\n");
                 strcpy(pArr[len-1].User_id,x);
                 strcpy(pArr[len-1].User_psw,y);
                 User_num++;
                 m=0;    
                 break;
            }
        }    
    }
    
}
 void Estimate(Customer *pArr,int len,Plane *qArr, int len1){
    char * p1 = Log();
    int i;
    if(!strcmp(Admin_id,p1)){
        system("clear");
        printf("您好管理员\n请输入您的选项!\n");  
        fun1(qArr,len1);
    }
    else {
        for ( i = 0; i < len; ++i)
        {
            if(!strcmp(p1,pArr[i].User_id)){
                if(0==strlen(qArr[0].Flight_number)){
                    system("clear");
            printf("顾客您好,当前暂无航班,请联系管理员登录增加航班!\n");
            break;
            }
            system("clear");
            printf("顾客您好!请输入您的选项!\n");
            fun2(pArr,len,qArr,len1);
            }
            else if(i==(len-1)){
                system("clear");
                printf("没有该用户!请重新输入!\n");
            }
        }
    }
}

void fun1(Plane *qArr, int len){
    int m=1;
         while(m){
        printf("1.增加航班\n2.删除航班\n3.修改航班\n4.查询航班\n5.退出系统\n6.返回上一层\n");
        int temp;
        scanf("%d",&temp);
        switch(temp){
            case 1 :Add_flight(qArr,Plane_num);break;
            case 2 :Delete_flight(qArr,Plane_num);break;
            case 3 :Change_flight(qArr,Plane_num); break;
            case 4 :Search_flight(qArr,Plane_num); break;
            case 5 :exit(0); break;
            case 6 :m=0; break;
            default:printf("输入有误!\n");
                    }
                 }
}

void fun2(Customer *pArr,int len,Plane *qArr, int len1){
             while(1){
        printf("1.查看航班\n2.购票\n3.退票\n4.改签\n5.退出系统\n");
        int temp;
        scanf("%d",&temp);
        switch(temp){
            case 1 :Search_flight(qArr,Plane_num); break;
            case 2 :Buy_ticket(qArr,Plane_num,pArr,User_num); break;
            case 3 :Back_ticket(qArr,Plane_num,pArr,User_num); break;
            case 4 :Change_ticket(qArr,Plane_num,pArr,User_num); break;
            case 5 :exit(0); break;
            default:printf("输入有误!\n");
                    }
                 }
}

void Add_flight(Plane *qArr, int len){
    printf("请输入航班号:");
    char name[10];
    int temp=0;
    scanf("%s",name);
    for (int i = 0; i < len; ++i)
    {
        if(0==strcmp(name,qArr[i].Flight_number))
        temp = 1;
    }
    if(temp){
        system("clear");
        printf("已有该航班,请重新输入!\n");
    }
    else {
    strcpy(qArr[len-1].Flight_number,name);
    printf("请输入航班起飞地点:");
    scanf("%s",qArr[len-1].Fly_space);
    printf("请输入航班落地地点:");
    scanf("%s",qArr[len-1].Fall_space);
    printf("请输入航班起飞时间:");
    scanf("%s",qArr[len-1].Fly_time);
    printf("请输入航班落地时间:");
    scanf("%s",qArr[len-1].Fall_time);
    printf("请输入航班票价:");
    scanf("%f",&qArr[len-1].Fares);
    printf("请输入航班票数:");
    scanf("%d",&Ticket_number[len-1]);
    Plane_num++;
    system("clear");
    printf("增加成功\n");
    }
}

void Search_flight(Plane *qArr, int len){
    printf("1.查询所有航班\n2.查询单个航班\n");
    int m=1;
    while(m){
    int s;
    scanf("%d",&s);
    if(s==1){
        system("clear");
        printf("航班号\t起飞地点\t落地地点\t起飞时间\t落地时间\t票数\n");
        for (int i = 0; i < len-1; ++i)
        {
      printf("%s\t%s\t\t%s\t\t%s\t\t%s\t\t%d\n",qArr[i].Flight_number,qArr[i].Fly_space,qArr[i].Fall_space,qArr[i].Fly_time,qArr[i].Fall_time,Ticket_number[i]);
        }
        m=0;
    }
    else if(s==2){
        system("clear");
            Check_flight(qArr,len);
            m=0;
    }
    else{
        system("clear");
        printf("输入有误!\n");
        m=0;
    }
}
}

void Check_flight(Plane *qArr, int len){
    printf("请输入你要查询的航班号:");
    char s[10];
    int l;
    int n;
    scanf("%s",s);
            for ( l = 0; l < len-1; ++l)
            {
                if (0==strcmp(s,qArr[l].Flight_number))
                {
                n=l;
                system("clear");
                printf("航班号\t起飞地点\t落地地点\t起飞时间\t落地时间\t票数\n");
                printf("%s\t%s\t\t%s\t\t%s\t\t%s\t\t%d\n",qArr[n].Flight_number,qArr[n].Fly_space,qArr[n].Fall_space,qArr[n].Fly_time,qArr[n].Fall_time,Ticket_number[n]);
                break;
                }
                else if(l==(len-2)){
                    system("clear");
                    printf("没有此航班!\n");
                }
            }
}

void Delete_flight(Plane *qArr, int len){
    printf("请输入您要删除的航班号:");
    char name[10];
    scanf("%s",name);
    int i;
    int n;
    for(i=0;i<len;i++){
        if(0==strcmp(name,qArr[i].Flight_number)){
            n = i;
        for(i = n+1 ;i<len;i++){

        qArr[i - 1] = qArr[i];

            }
                Plane_num--;
                system("clear");
                printf("删除成功!\n");
            break;
        }
        else if(i==(len-1)){
            system("clear");
            printf("没有该航班!\n");
        }
    }
}

void Change_flight(Plane *qArr, int len){
    printf("请输入您要修改的航班号:");
    char name[10];
    scanf("%s",name);
    int i;
    int n;
    for(i=0;i<len;i++){
        if(0==strcmp(name,qArr[i].Flight_number)){
            n = i;
    printf("请输入航班号:");
    scanf("%s",qArr[n].Flight_number);
    printf("请输入航班起飞地点:");
    scanf("%s",qArr[n].Fly_space);
    printf("请输入航班落地地点:");
    scanf("%s",qArr[n].Fall_space);
    printf("请输入航班起飞时间:");
    scanf("%s",qArr[n].Fly_time);
    printf("请输入航班落地时间:");
    scanf("%s",qArr[n].Fall_time);
    printf("请输入航班票价:");
    scanf("%f",&qArr[n].Fares);
    printf("请输入航班票数:");
    scanf("%d",&Ticket_number[n]);
    system("clear");
    printf("修改成功!\n");
            break;
        }
        else if(i==(len-1)){
            system("clear");
            printf("没有该航班!\n");
        }
    }
}

void Buy_ticket(Plane *qArr, int len,Customer *pArr ,int len1){
    printf("请输入姓名:");
    int j;
    int i,n,m=-1;
    char user_name[10];
    scanf("%s",user_name);
    for (j = 0; j < len1; ++j)
    {
        if(0==strcmp(user_name,pArr[j].User_id)){
            m = j;
        }
    }
    if(m==(-1))
    {
        system("clear");
        printf("没有此用户,请重新输入!\n");
    }
    else{
    printf("请输入您要购买的航班号:");
    char name[10];
    scanf("%s",name);
    
    for (i = 0; i < len; ++i)
    {
        if(0==strcmp(name,qArr[i].Flight_number)){
            n = i;
            Ticket_number[n]--;
            strcpy(pArr[m].serial,qArr[i].Flight_number);
            system("clear");
            printf("购买成功!\n");
            break;
        }
        else if(i==(len-1)){
            system("clear");
            printf("没有该航班!\n");
        }
    }
}

}

void Back_ticket(Plane *qArr, int len,Customer *pArr ,int len1){
    printf("请输入姓名:");
    int j;
    int i,n,m=-1;
    char user_name[10];
    scanf("%s",user_name);
    for (j = 0; j < len1; ++j)
    {
        if(0==strcmp(user_name,pArr[j].User_id)){
            m = j;
        }
    }
    if(m==(-1))
    {
        system("clear");
        printf("没有此用户,请重新输入!\n");
    }
    else{
    printf("请输入您要退的航班号:");
    char name[10];
    scanf("%s",name);
    for (i = 0; i < len; ++i)
    {
        if(0==strcmp(name,qArr[i].Flight_number)){
            n = i;
            Ticket_number[n]++;
            strcpy(pArr[m].serial,"000");
            system("clear");
            printf("退票成功!\n");
            break;
        }
        else if(i==(len-1)){
            system("clear");
            printf("没有该航班!\n");
        }
    }
    }
}

void Change_ticket(Plane *qArr, int len,Customer *pArr ,int len1){
    if(Ticket_change){
        printf("只能改签一次,不能重复改签!\n");
    printf("请输入姓名:");
    int j;
    int i,n,m=-1;
    int mn;
    char user_name[10];
    scanf("%s",user_name);
    for (j = 0; j < len1; ++j)
    {
        if(0==strcmp(user_name,pArr[j].User_id)){
            m = j;
        }
    }
    if(m==(-1))
    {
        system("clear");
        printf("没有此用户,请重新输入!\n");
    }
    else {
    for ( mn = 0; mn < len; ++mn)
    {
        if(0==strcmp(pArr[m].serial,qArr[mn].Flight_number)){
        Ticket_number[mn]++;    
        break;
        }
        
    }

    printf("请输入您要改签的航班号:");
    char name[10];
    scanf("%s",name);
    for (i = 0; i < len; ++i)
    {
        if(0==strcmp(name,qArr[i].Flight_number)){
            n = i;
            Ticket_number[n]--;
            strcpy(pArr[mn-1].serial,qArr[i].Flight_number);
            system("clear");
            printf("改签成功!\n");
            break;
        }
        else if(i==(len-1)){
            system("clear");
            printf("没有该航班!\n");
        }
    }
    }
    Ticket_change=0;
}
else {
    printf("不能重复改签!\n");
}
}

 

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值