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

Opal ·
更新时间:2024-11-10
· 431 次阅读

本文实例为大家分享了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; }//主函数的大括号 三、运行结果

1、录入航班信息

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

3、删除航班

4、插入航班

5、修改航班

6、订票、退票



课程设计 c+ 航空 系统 课程 C++

需要 登录 后方可回复, 如果你还没有账号请 注册新账号