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

相关文章

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的