C++实现航空订票系统课程设计

本文实例为大家分享了C++实现航空订票系统的具体代码,供大家参考,具体内容如下

一、题目

1.录入功能

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

2.查询功能

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

3.修改删除功能

可以修改删除航班的信息

4.追加航线

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

5.订票功能

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

6.退票功能

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

二、代码

#include
#include
#include
#include
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>p->hangbanhao;
        cout<<"请输入第"<>p->qifeichengshi;
        cout<<"请输入第"<>p->jiangluochengshi;
        cout<<"请输入第"<>p->qifeishijian;
        cout<<"请输入第"<>p->jiangluoshijian;
        cout<<"请输入第"<>p->zuoweishu;
        cout<<"请输入第"<>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<hangbanhao;
        out<<" 起飞城市:";
        out <qifeichengshi;
        out<<" 降落城市:";
        out <jiangluochengshi;
        out<<" 起飞时间:";
        out <qifeishijian;
        out<<" 降落时间:";
        out <jiangluoshijian;
        out<<" 座位数:";
        out<zuoweishu;
        out<<" 票价:";
        out<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&&jnext;
        ++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>p->name;
        cout<<"请输入第"<>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<name;
        out<<"  身份证ID ";
        out<id;
        out<< "\n";//用于换行,是下面in.getline的关键
        p=p->next;
      }
      if(R->zuoweishu-1>=0)
      {
       out<<"航班号:"<hangbanhao;
       out<<" 起飞城市:"<qifeichengshi;
       out<<" 降落城市:"<jiangluochengshi;
       out<<" 起飞时间:"<qifeishijian;
       out<<" 降落时间:"<jiangluoshijian;
       out<<" 座位数:"<zuoweishu-1;//订票之后座位数减一
       out<<" 票价:"<piaojia;
       out<< "\n";//用于换行,是下面in.getline的关键
       out<<"订票成功";
       out<< "\n";//用于换行,是下面in.getline的关键
      }
      else
      {
        out<<"航班号:"<hangbanhao;
        out<<" 起飞城市:"<qifeichengshi;
        out<<" 降落城市:"<jiangluochengshi;
        out<<" 起飞时间:"<qifeishijian;
        out<<" 降落时间:"<jiangluoshijian;
        out<<" 座位数:"<zuoweishu;
        out<<" 票价:"<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<name;
        out<<"身份证ID ";
        out<id;
        out<< "\n";//用于换行,是下面in.getline的关键
        p=p->next;
      }
      out<<"航班号 "<hangbanhao;
      out<<" 起飞城市:"<qifeichengshi;
      out<<" 降落城市:"<jiangluochengshi;
      out<<" 起飞时间:"<qifeishijian;
      out<<" 降落时间:"<jiangluoshijian;
      out<<" 座位数:"<zuoweishu;//退票之后不需要加1,用最初的座位数;
      out<<" 票价:"<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<<"=================================欢迎使用航空订票系统==============================="<>caozuo;
      switch(caozuo)
      {
    case 1:
//创建
      int num;
      cout<<"请输入要录入的航班数:";
      cin>>num;
      cout<>dchbh;
      LinkList p;
      p=GetElem_L(L,dchbh);//查找
      cout<<"待查航班为:";
      cout<<"航班号:"<hangbanhao;
      cout<<" 起飞城市:"<qifeichengshi;
      cout<<" 降落城市:"<jiangluochengshi;
      cout<<" 起飞时间:"<qifeishijian;
      cout<<" 降落时间:"<jiangluoshijian;
      cout<<" 座位数:"<zuoweishu;
      cout<<" 票价:"<piaojia;
      cout<>qi;
       cout<<"输入降落城市:";
       cin>>ji;
       LinkList J;
       J=GetElem_Lc(L,qi,ji);//查找
       cout<<"待查航班为:";
       cout<<"航班号:"<hangbanhao;
       cout<<" 起飞城市:"<qifeichengshi;
       cout<<" 降落城市:"<jiangluochengshi;
       cout<<" 起飞时间:"<qifeishijian;
       cout<<" 降落时间:"<jiangluoshijian;
       cout<<" 座位数:"<zuoweishu;
       cout<<" 票价:"<piaojia;
       cout<>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<>renshu;
      cout<>m;
      cout<>yt;
     cout< 
 

三、运行结果

1、录入航班信息

C++实现航空订票系统课程设计_第1张图片

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

C++实现航空订票系统课程设计_第2张图片

3、删除航班

C++实现航空订票系统课程设计_第3张图片

4、插入航班

C++实现航空订票系统课程设计_第4张图片

5、修改航班

C++实现航空订票系统课程设计_第5张图片

6、订票、退票

C++实现航空订票系统课程设计_第6张图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(C++实现航空订票系统课程设计)