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

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配