文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用C++实现航空订票系统课程

2023-06-29 11:50

关注

这篇文章主要介绍如何使用C++实现航空订票系统课程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

具体内容如下

一、题目

1.录入功能

可以录入航班信息(如航班号,起飞降落时间,城市,座位数,票价)

2.查询功能

可以查询航班的各项信息(如根据航班号,起飞降落城市查找航班并显示航班信息)

3.修改删除功能

可以修改删除航班的信息

4.追加航线

在原本的航线之后可以继续添加航线方便操作

5.订票功能

可以订票并且记录下乘客的相关信息(如姓名,身份证号码)

6.退票功能

可以退票并且记录乘客的相关信息以及退票信息

二、代码

#include<iostream>#include<fstream>#include<stdlib.h>#include<string.h>using namespace std;typedef struct Node{    int hangbanhao;//航班号    char qifeichengshi[10];//起飞城市    char jiangluochengshi[10];//降落城市    char qifeishijian[10];//起飞时间    char jiangluoshijian[10];//降落时间    int zuoweishu;//座位数    int piaojia;//票价    struct Node *next;//结点的指针域}LNode,*LinkList;//定义航班信息 LinkList为指向结构体LNode的指针类型typedef struct CK{  char name[10];//乘客姓名  char id[18];//乘客身份证号  struct CK *next;//结点的指针域}ck,*cke;//乘客信息void import(int n,LinkList &L)//录入航班函数: n为所要录入航班的数量:{//建立一个带头结点的单链表L    L=(LinkList)malloc(sizeof(LNode));//申请表空间    L->next=NULL;//头结点的指针域置空    LNode * tail=L;//将尾赋给尾指针,等价LinkList tail=L;    for(int i=0; i<n; i++)//逐个赋值     {        LNode *p=(LinkList)malloc(sizeof(LNode));//创建一个p结点        cout<<"请输入第"<<i+1<<"个航班的航班号 ";        cin>>p->hangbanhao;        cout<<"请输入第"<<i+1<<"个航班的起飞城市 ";        cin>>p->qifeichengshi;        cout<<"请输入第"<<i+1<<"个航班的降落城市 ";        cin>>p->jiangluochengshi;        cout<<"请输入第"<<i+1<<"个航班的起飞时间 ";        cin>>p->qifeishijian;        cout<<"请输入第"<<i+1<<"个航班的降落时间 ";        cin>>p->jiangluoshijian;        cout<<"请输入第"<<i+1<<"个航班的座位数 ";        cin>>p->zuoweishu;        cout<<"请输入第"<<i+1<<"个航班的票价";        cin>>p->piaojia;        p->next=NULL;//头结点的指针域置空        tail->next=p;//将新结点插入尾部        tail=p;//插入的结点变为尾结点,尾插法    }}//写入本地文件,并读取输出显示void show_L(LinkList &L)//输出浏览机票信息{  ofstream out("out.txt");//实例化一个对象   if (out.is_open())   {      LinkList p=L->next;      while(p)      {        out<<"航班号:";        out<<p->hangbanhao;        out<<" 起飞城市:";        out <<p->qifeichengshi;        out<<" 降落城市:";        out <<p->jiangluochengshi;        out<<" 起飞时间:";        out <<p->qifeishijian;        out<<" 降落时间:";        out <<p->jiangluoshijian;        out<<" 座位数:";        out<<p->zuoweishu;        out<<" 票价:";        out<<p->piaojia;        out<< "\n";//用于换行,是下面in.getline的关键        p=p->next;      }  }   out.close(); //写完    char buffer[256];    ifstream in("out.txt");    if (! in.is_open())       { cout << "Error opening file"; exit (1); }       while (!in.eof() )       {           in.getline (buffer,100);           cout << buffer << endl;       }}//按航班号查找LinkList GetElem_L(LinkList &L,int e){      LinkList p=L->next;      while(p)      {        if(p->hangbanhao!=e)            p=p->next;        else return p;      }     return 0;}//按航班起降城市查找LinkList GetElem_Lc(LinkList &L,char qi[10],char ji[10]){      LinkList p=L->next;      while(p)      {        if(strcmp(p->qifeichengshi,qi)!=0||strcmp(p->jiangluochengshi,ji)!=0)            p=p->next;        else return p;      }      return 0;}//删除int ListDelete_L(LinkList &L,int e){    LinkList p=L;    while(p->next&&p->next->hangbanhao!=e){        p=p->next;//直到查找到要删除的结点    }    if(!p->next)        return 0;    LinkList q=p->next;    p->next=q->next;//p->next=p->next->next;    free(q);//本题q是需要删除的结点    return 1;}//插入int ListInsert_L(LinkList &L,int i){    LinkList p=L;//i为插入的位置    int j=0;    while(p&&j<i-1){        p=p->next;        ++j;    }    if(!p||j>i-1)        return 0;    LNode *s=(LinkList)malloc(sizeof(LNode));    cout<<"输入航班号:";    cin>>s->hangbanhao;    cout<<"输入起飞城市:";    cin>>s->qifeichengshi;    cout<<"输入降落城市:";    cin>>s->jiangluochengshi;    cout<<"输入起飞时间:";    cin>>s->qifeishijian;    cout<<"输入降落时间:";    cin>>s->jiangluoshijian;    cout<<"输入座位数:";    cin>>s->zuoweishu;    cout<<"输入票价:";    cin>>s->piaojia;    s->next=p->next;    p->next=s;//s->next=p->next;p->next=s;    return 1;}//修改LinkList xiugai(LinkList &L,int yxg){  LinkList q=L->next;      while(q)      {        if(q->hangbanhao!=yxg)            q=q->next;        else return q;      }  return 0;}//乘客信息录入void importren(int n,cke &C)//录入航班函数: n为所要录入航班的数量:{    C=(cke)malloc(sizeof(ck));    C->next=NULL;    ck*ta=C;    for(int i=0; i<n; i++)     {        ck *p=(cke)malloc(sizeof(ck));//就是创建一个p结点,关键就是写法,LNdoe *p;        cout<<"请输入第"<<i+1<<"个乘客的姓名 ";        cin>>p->name;        cout<<"请输入第"<<i+1<<"个航班的身份证ID ";        cin>>p->id;         p->next=NULL;        ta->next=p;        ta=p;//尾插法,根据循环画图可知,tail指针始终在最后    }}//订票乘客信息和航班信息写入本地和读取void show_dp(cke &C,LinkList &R){  ofstream out("dinpiao.txt");//实例化一个对象   if (out.is_open())   {      cke p=C->next;      while(p){        out<<"姓名 ";        out<<p->name;        out<<"  身份证ID ";        out<<p->id;        out<< "\n";//用于换行,是下面in.getline的关键        p=p->next;      }      if(R->zuoweishu-1>=0)      {       out<<"航班号:"<<R->hangbanhao;       out<<" 起飞城市:"<<R->qifeichengshi;       out<<" 降落城市:"<<R->jiangluochengshi;       out<<" 起飞时间:"<<R->qifeishijian;       out<<" 降落时间:"<<R->jiangluoshijian;       out<<" 座位数:"<<R->zuoweishu-1;//订票之后座位数减一       out<<" 票价:"<<R->piaojia;       out<< "\n";//用于换行,是下面in.getline的关键       out<<"订票成功";       out<< "\n";//用于换行,是下面in.getline的关键      }      else      {        out<<"航班号:"<<R->hangbanhao;        out<<" 起飞城市:"<<R->qifeichengshi;        out<<" 降落城市:"<<R->jiangluochengshi;        out<<" 起飞时间:"<<R->qifeishijian;        out<<" 降落时间:"<<R->jiangluoshijian;        out<<" 座位数:"<<R->zuoweishu;        out<<" 票价:"<<R->piaojia;        out<< "\n";//用于换行,是下面in.getline的关键        out<<"该航班暂无票,请选择其他航班";        out<< "\n";//用于换行,是下面in.getline的关键      }   }   out.close(); //写完    char buffer[256];    ifstream in("dinpiao.txt");    if (! in.is_open())       { cout << "Error opening file"; exit (1); }       while (!in.eof() )       {           in.getline (buffer,100);           cout << buffer << endl;       }}//退票乘客信息和航班信息写入本地和读取void show_tp(cke &C,LinkList &R){  ofstream out("dinpiao.txt");//实例化一个对象   if (out.is_open())   {      cke p=C->next;      while(p){        out<<"姓名 ";        out<<p->name;        out<<"身份证ID ";        out<<p->id;        out<< "\n";//用于换行,是下面in.getline的关键        p=p->next;      }      out<<"航班号 "<<R->hangbanhao;      out<<" 起飞城市:"<<R->qifeichengshi;      out<<" 降落城市:"<<R->jiangluochengshi;      out<<" 起飞时间:"<<R->qifeishijian;      out<<" 降落时间:"<<R->jiangluoshijian;      out<<" 座位数:"<<R->zuoweishu;//退票之后不需要加1,用最初的座位数;      out<<" 票价:"<<R->piaojia;      out<< "\n";//用于换行,是下面in.getline的关键      out<<"退票成功";      out<< "\n";//用于换行,是下面in.getline的关键   }   out.close(); //写完    char buffer[256];    ifstream in("dinpiao.txt");    if (! in.is_open())       { cout << "Error opening file"; exit (1); }       while (!in.eof() )       {           in.getline (buffer,100);           cout << buffer << endl;       }}void menu()//显示菜单界面{    cout<<"=================================欢迎使用航空订票系统==============================="<<endl;    cout<<"*                                1请先录入航班信息                                 *"<<endl;    cout<<"*                                2根据航班号查找航班                               *"<<endl;    cout<<"*                                3根据起降城市查找航班                             *"<<endl;    cout<<"*                                4删除航班                                         *"<<endl;    cout<<"*                                5插入航班                                         *"<<endl;    cout<<"*                                6修改航班                                         *"<<endl;    cout<<"*                                7订票录入乘客信息                                 *"<<endl;    cout<<"*                                8退票                                             *"<<endl;    cout<<"===================================================================================="<<endl;}int main(){   LinkList L;//L是指针 航班   cke C;//乘客    while(1)    {      menu();      int caozuo;      cout<<"请选择操作";      cin>>caozuo;      switch(caozuo)      {    case 1://创建      int num;      cout<<"请输入要录入的航班数:";      cin>>num;      cout<<endl;      import(num,L);//录入航班函数: n为所要录入航班的数量:      cout<<endl;      cout<<"航班信息录入成功";      cout<<endl<<endl;//写入本地文件,并读取输出显示      show_L(L);      break;    case 2://根据航班号查找      int dchbh;//根据航班号查找       printf("请输入待查航班号:");      cin>>dchbh;      LinkList p;      p=GetElem_L(L,dchbh);//查找      cout<<"待查航班为:";      cout<<"航班号:"<<p->hangbanhao;      cout<<" 起飞城市:"<<p->qifeichengshi;      cout<<" 降落城市:"<<p->jiangluochengshi;      cout<<" 起飞时间:"<<p->qifeishijian;      cout<<" 降落时间:"<<p->jiangluoshijian;      cout<<" 座位数:"<<p->zuoweishu;      cout<<" 票价:"<<p->piaojia;      cout<<endl<<endl;      break;    case 3://根据起降城市查找       char qi[10];       char ji[10];       printf("请输入待查航班起降城市:");       cout<<"输入起飞城市:";       cin>>qi;       cout<<"输入降落城市:";       cin>>ji;       LinkList J;       J=GetElem_Lc(L,qi,ji);//查找       cout<<"待查航班为:";       cout<<"航班号:"<<J->hangbanhao;       cout<<" 起飞城市:"<<J->qifeichengshi;       cout<<" 降落城市:"<<J->jiangluochengshi;       cout<<" 起飞时间:"<<J->qifeishijian;       cout<<" 降落时间:"<<J->jiangluoshijian;       cout<<" 座位数:"<<J->zuoweishu;       cout<<" 票价:"<<J->piaojia;       cout<<endl<<endl;       break;    case 4://删除      int shanchu;      printf("请输入要删除的航班号:");      scanf("%d",&shanchu);      ListDelete_L(L,shanchu);//删除      show_L(L);      cout<<endl<<endl;      break;    case 5://插入   //这里位置始终在第一行      ListInsert_L(L,1);//插入      show_L(L);      cout<<endl<<endl;      break;    case 6://修改      printf("请输入要修改的航班号:");      int yxg;      cin>>yxg;      LinkList q;      q=xiugai(L,yxg);//修改      cout<<"航班号修改为:";      cin>>q->hangbanhao;      cout<<"航班起飞城市修改为:";      cin>>q->qifeichengshi;      cout<<"航班降落城市修改为:";      cin>>q->jiangluochengshi;      cout<<"航班起飞时间修改为:";      cin>>q->qifeishijian;      cout<<"航班降落时间修改为:";      cin>>q->jiangluoshijian;      cout<<"航班座位数修改为:";      cin>>q->zuoweishu;      cout<<"航班票价修改为:";      cin>>q->piaojia;      show_L(L);      cout<<endl<<endl;      break;    case 7://订票      int renshu;      cout<<"请选择您要订票的人数:";      cin>>renshu;      cout<<endl;      importren(renshu,C);//录入乘客信息      cout<<endl;      cout<<"乘客信息录入成功";      cout<<endl;      int m;      cout<<"请输入您要订的航班号:";      cin>>m;      cout<<endl<<endl;      LinkList R;      R=GetElem_L(L,m);//查找乘客订的航班      show_dp(C,R);//写入本地文件,并读取输出显示      cout<<endl<<endl;      break;    case 8://退票     cout<<"请输入您要退票的航班号:";     int yt;     cin>>yt;     cout<<endl<<endl;     LinkList K;     K=GetElem_L(L,yt);//查找乘客订的航班     show_tp(C,K);//写入本地文件,并读取输出显示     cout<<endl<<endl;     break;      }//swith的大括号    }//while的大括号  return 0;}//主函数的大括号

三、运行结果

录入航班信息

如何使用C++实现航空订票系统课程

查找航班(根据航班号、起降城市查找航班)

如何使用C++实现航空订票系统课程

删除航班

如何使用C++实现航空订票系统课程

插入航班

如何使用C++实现航空订票系统课程

修改航班

如何使用C++实现航空订票系统课程

订票、退票

如何使用C++实现航空订票系统课程

以上是“如何使用C++实现航空订票系统课程”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯