C语言实现航班管理

2024-03-03 06:44
文章标签 语言 实现 管理 航班

本文主要是介绍C语言实现航班管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

航班管理系统,用C语言实现,可以作为课程设计,代码如下:

#include<iostream>
#include<fstream>
#include<vector>
#include<string> 
#include<stdlib.h>
using namespace std;

//信息基类 
class info{
protected:
    int flightnumber;
public:
    int Get_flightnumber(){return flightnumber;}
    virtual void Get_Message();
    virtual void Read_File(fstream &file);//从文件中读取 
    virtual void Write_File(fstream &file);//写入文件 
    virtual void Show_Message();
    virtual ~info(){};
};


//系统类 
class System{
    fstream file1,file2;
    info *myi;
    vector<info*> inv[4]; 
    vector<info*>::iterator iter;
    public:
        System();
        void menu();
        void menu1(int i);
        void menu2(int i);
        void menu3(int i);
        void Load(vector<info*> &inv,int choose);//信息录入 
        void Save(vector<info*> inv);//信息保存 
        void Add(vector<info*> &inv,int choose);//信息添加 
        void Delete(vector<info*> &inv,int choose);//信息删除 
        void Search(vector<info*> inv);//信息查找 
        void Show(vector<info*> inv);//信息显示 
        ~System(){};
};


//航班信息类
class flight:virtual public info{
protected:
string place1;
string place2;
string time;
double price;
int maxpeople;
fstream file1,file2;
public:
flight(){}; 
string Get_place1(){return place1;} 
string Get_place2(){return place2;}
string Get_time(){return time;}  
void Get_Message();
void Read_File(fstream &file);
void Write_File(fstream &file);
void Show_Message();
~flight(){};
};

//客户类 
class guest:virtual public info{
protected:
    string name;
    int id;
    string sex;
    int ticketnum;
    public:
guest(){}; 
void Get_Message();
string Get_name(){return name;}
int Get_id(){return id;}
void Read_File(fstream &file);
void Write_File(fstream &file);
void Show_Message();
~guest(){};
};

//机票类 
class ticket:virtual public info{
 protected: 
    int zticket;
    int syticket;
    fstream file1,file2;
    public:
ticket(){}; 
void Get_Message();
void Read_File(fstream &file);
void Write_File(fstream &file);
void Show_Message();
~ticket(){};
};

//客户行程信息类 
class guestflight:public flight,public guest{
public:
guestflight(){}; 
void Get_Message(){};
void Read_File(fstream &file);
void Write_File(fstream &file);
void Show_Message(){};
~guestflight(){};
};

//基类信息实现 
void info::Get_Message(){
    cout<<"请输入航班号:";
    cin>>flightnumber; 
}
void info::Show_Message(){
    cout<<"flight:"<<flightnumber<<endl;
}
void info::Write_File(fstream &file){
    file<<flightnumber;
}
void info::Read_File(fstream &file){
    file>>flightnumber;
}

//航班实现 
void flight::Get_Message(){
info::Get_Message();
cout<<endl<<"请输入出发地:";
cin>>place1;
cout<<endl<<"请输入目的地:";
cin>>place2;
cout<<endl<<"请输入出发时间:";
cin>>time;
cout<<endl<<"请输入票价:";
cin>>price;
cout<<endl<<"请输入最大载客量:";
cin>>maxpeople;
cout<<endl;
}
void flight::Show_Message(){
info::Show_Message();
cout<<"place1:"<<place1<<endl;
cout<<"place2:"<<place2<<endl;
cout<<"time:"<<time<<endl;
cout<<"price:"<<price<<endl;
cout<<"maxpeople:"<<maxpeople<<endl;
}
void flight::Write_File(fstream &file){
info::Write_File(file);
file<<place1<<" "<<place2<<" "<<time<<" "<<price<<" "<<maxpeople<<endl;
}
void flight::Read_File(fstream &file){
info::Read_File(file);
file>>place1>>place2>>time>>price>>maxpeople;
}


//客户实现 
void guest::Get_Message(){
info::Get_Message();
cout<<endl<<"请输入姓名:";
cin>>name;
cout<<endl<<"请输入证件号:";
cin>>id;
cout<<endl<<"请输入性别:";
cin>>sex;
cout<<endl<<"请输入订票票数:";
cin>>ticketnum;
cout<<endl;
}

void guest::Show_Message(){
info::Show_Message();
cout<<"name:"<<name<<endl;
cout<<"id:"<<id<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"ticketnum:"<<ticketnum<<endl;
}

void guest::Write_File(fstream &file){
info::Write_File(file);
file<<name<<" "<<id<<" "<<sex<<" "<<ticketnum<<endl;
}

void guest::Read_File(fstream &file){
info::Read_File(file);
file>>name>>id>>sex>>ticketnum;
}


//机票实现 
void ticket::Get_Message(){
info::Get_Message();
cout<<endl<<"请输入总票数:";
cin>>zticket;
cout<<endl<<"请输入剩余票数:";
cin>>syticket;
cout<<endl; 
}
void ticket::Show_Message(){
info::Show_Message();
cout<<"zticket:"<<zticket<<endl;
cout<<"syticket:"<<syticket<<endl;
}
void ticket::Write_File(fstream &file){
info::Write_File(file);
file<<zticket<<" "<<syticket<<endl;
}
void ticket::Read_File(fstream &file){
info::Read_File(file);
file>>zticket>>syticket;
}


//客户行程实现 
void guestflight::Write_File(fstream &file){
info::Write_File(file);
file<<guest::name<<" "<<guest::id<<" "<<flight::flightnumber<<" "<<flight::place1<<" "<<flight::place2<<" "<<flight::time;
}
void guestflight::Read_File(fstream &file){
info::Read_File(file);
file>>guest::name>>guest::id>>flight::flightnumber>>flight::place1>>flight::place2>>flight::time;
}

//系统类实现
System::System(){
file1.open("flight1.txt",ios::out);
    if(!file1){
        cout<<"file open error!"<<endl;
        abort();
    }
file2.open("flight2.txt",ios::in);
    if(!file2){
        cout<<"file open error!"<<endl;
        abort();
    }
}

void System::menu(){
    int choose,yn;
    while(1){
        cout<<"请选择您要管理的信息类型:"<<endl;
        cout<<"0-航班信息"<<endl;
        cout<<"1-客户信息"<<endl;
        cout<<"2-机票信息"<<endl;
        cout<<"3-显示所有客户行程信息"<<endl;
        cout<<"请输入:"<<endl; 
        cin>>choose;
        cout<<endl;
            guest g;
            flight f;
            fstream infile("guestflight2.txt",ios::in);
        switch(choose){
            case 0:
                menu1(choose);
                break;
            case 1:
                menu2(choose);
                break;
            case 2:
                menu3(choose);
                break;
            case 3: 
                while(!infile.eof()){
                infile<<g.Get_name()<<g.Get_id()<<f.Get_flightnumber()<<f.Get_place1()<<f.Get_place2()<<f.Get_time();
                cout<<g.Get_name()<<g.Get_id()<<f.Get_flightnumber()<<f.Get_place1()<<f.Get_place2()<<f.Get_time();
            }
                break;
            default:
                cout<<"输入有误!"<<endl;
                exit(0); 
            }
        cout<<"是否继续?(1/0)"<<endl;
        cin>>yn;
        if(yn!=1) 
        break;
    }
}

void System::menu1(int i){
    int choose,ny;
    while(1){
        cout<<"请选择操作:"<<endl;
        cout<<"0-航班信息录入"<<endl;
        cout<<"1-添加航班信息"<<endl;
        cout<<"2-删除航班信息"<<endl;
        cout<<"3-更改航班信息"<<endl;
        cout<<"4-查询航班信息"<<endl;
        cout<<"5-显示航班信息"<<endl;
        cout<<"6-保存航班信息"<<endl;
        cout<<"请输入:"<<endl;
        cin>>choose;
        cout<<endl;
        switch(choose){
            case 0:
            Load(inv[i],choose);
            break;
            case 1:
            Add(inv[i],choose);
            break;
            case 2:
            Delete(inv[i],choose);
            break;
            case 3:    
            break;
            case 4:
            Search(inv[i]);
            break;
            case 5:
            Show(inv[i]);
            break;
            case 6:
            Save(inv[i]);
            break;
            default:
                cout<<"输出有误"<<endl;
                exit(0);
                  }
        cout<<"是否继续?(1/0)"<<endl;
        cin>>ny;
        if(ny!=1) 
        break;
        } 
}

void System::menu2(int i){
    int choose,ny;
        while(1){
        cout<<"请选择操作:"<<endl;
        cout<<"0-客户信息录入"<<endl;
        cout<<"1-添加客户信息"<<endl;
        cout<<"2-删除客户信息"<<endl;
        cout<<"3-更改客户信息"<<endl;
        cout<<"4-查询客户信息"<<endl;
        cout<<"5-显示客户信息"<<endl;
        cout<<"6-保存客户信息"<<endl;
        cout<<"按任意键退出...."<<endl;
        cout<<"请输入:";
        cin>>choose;
        cout<<endl;
        switch(choose){
            case 0:
            Load(inv[i],choose);
            break;
            case 1:
            Add(inv[i],choose);
            break;
            case 2:
            Delete(inv[i],choose);
            break;
            case 3:
                
            case 4:
            Search(inv[i]);
            break;
            case 5:
            Show(inv[i]);
            break;
            case 7:
            Save(inv[i]);
            break;
        default:
        cout<<"输出有误"<<endl;
        exit(0);
           }
        cout<<"是否继续?(1/0)"<<endl;
        cin>>ny;
        if(ny!=1) 
        break;        
        }         
        }


void System::menu3(int i){
    int choose,ny;
        while(1){
        cout<<"请选择操作:"<<endl;
        cout<<"0-机票信息录入"<<endl;
        cout<<"1-添加机票信息"<<endl;
        cout<<"2-删除机票信息"<<endl;
        cout<<"3-更改机票信息"<<endl;
        cout<<"4-查询机票信息"<<endl;
        cout<<"5-显示机票信息"<<endl;
        cout<<"6-保存机票信息"<<endl;
        cout<<"按任意键退出...."<<endl;
        cout<<"请输入:";
        cin>>choose;
        cout<<endl;
        switch(choose){
            case 0:
            Load(inv[i],choose);
            break;
            case 1:
            Add(inv[i],choose);
            break;
            case 2:
            Delete(inv[i],choose);
            break;
            case 3:    
            break;
            case 4:
            Search(inv[i]);
            break;
            case 5:
            Show(inv[i]);
            break;
            case 6:
            Save(inv[i]);
            break;
            default:
          cout<<"输出有误"<<endl;
          exit(0);
                }
        cout<<"是否继续?(1/0)"<<endl;
        cin>>ny;
        if(ny!=1) 
        break;        
        }         
        }

void System::Load(vector<info*> &myv,int choose){
    while(!file2.eof()){
    switch(choose){
        case 1:
        myi=new flight;
        break;
        case 2:
        myi=new guest;
        break;
        case 3:    
        myi=new ticket;
        break;
        case 4:
        myi=new guestflight;
        break;
    }
    myi->Read_File(file2);
    myv.push_back(myi);
}
file2.close();
}

void System::Save(vector<info*> myv){
    for(iter=myv.begin();iter<myv.end();iter)
    (*iter)->Write_File(file1);
    file1.close();
}

void System::Add(vector<info*> &myv,int choose){
    switch(choose){
        case 1:
        myi=new flight;
        break;
        case 2:
        myi=new guest;
        break;
        case 3:    
        myi=new ticket;
        break;
        case 4:
        myi=new guestflight;
        break;
    }
    myi->Get_Message();
    myv.push_back(myi);
}

void System::Delete(vector<info*> &myv,int choose){ 
int flight1,flight2;
    switch(choose){
        case 1:
        cout<<"请输入您要删除的航班号"<<endl;
        cin>>flight1;
        for(iter=myv.begin();iter!=myv.end();iter++){
            if((*iter)->Get_flightnumber()==flight1){
                myv.erase(iter);
            }
        } 
        break;
        case 2:
    //cout<<"请输入您要删除的客户名"<<endl;
     //    string guest1;
    //    cin>>guest1;
    //    for(iter=myv.begin();iter!=myv.end();iter++){
    //            if((*iter)->Get_name()==guest1){
    //            myv.erase(iter);
    //        }
    //        } 
    //break;
        case 3:    
        cout<<"请输入您要删除的航班号"<<endl;
        cin>>flight2;
        for(iter=myv.begin();iter!=myv.end();iter++){
        if((*iter)->Get_flightnumber()==flight2){
        myv.erase(iter);
     }
     }
        break;
    }
}


void System::Search(vector<info*> myv){
        int flight1;
        cout<<"请输入您要查找的航班号"<<endl;
        cin>>flight1;
        for(iter=myv.begin();iter!=myv.end();iter++){
            if((*iter)->Get_flightnumber()==flight1){
            (*iter)->Show_Message();
            }
        } 
    }
    

void System::Show(vector<info*> myv){
    for(iter=myv.begin();iter!=myv.end();iter++){
    (*iter)->Show_Message();
    }
}

int main(){
    System s;
    s.menu();
    return 0;
}
 

这篇关于C语言实现航班管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768806

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、