航空售票系统

来源:互联网 发布:java打印空心菱形图案 编辑:程序博客网 时间:2024/05/16 18:11

代码:

/*****************************************************  * 版权所有(C)2016 *文件名称:航空售票系统  *文件标识:无  *内容摘要:航空售票系统  *其他说明:无  *当前版本:V1.0  *作者:房斐  *完成日期:2015.12.30  *****************************************************/ 
a.h

#ifndef BTREE_H_INCLUDED      #define BTREE_H_INCLUDED    #include<iostream>    #include <windows.h>  #include<fstream> //文件下的类和函数   using namespace std;    #include<stdlib.h>    #include<string.h>  void sleep1();  void sleep2();  /*****************************************************  *功能描述:定义客户信息  *输入参数:name,id,line_num,time1,time2,seat_num  *输出参数:client ******************************************************/    typedef struct client    {        char name[20];//顾客名        char id[10];//顾客证件号        char line_num[10];//航班号        char time1[10];//起飞时间        char time2[10];//降落时间        int seat_num;//座位号        struct client *next;//下一个结点    } client;    //头结点    typedef struct clienthead    {        int count;        client *next;    } clienthead;    /*****************************************************  *功能描述:定义航班信息  *输入参数:line_num,time1,time2,start_place,end_place,total,money.  *输出参数:airline  ******************************************************/    typedef struct airline    {        char line_num[10];//航班号        char start_place[20];//起飞地        char end_place[20];//目的地        char time1[10];//起飞时间        char time2[10];//降落时间        int total;//座位总数        int left;//剩余座位      int money;//票价      struct airline *next;//下一个结点    } airline;    //头结点    typedef struct airlinehead    {        int count;        airline *next;    } airlinehead;    airlinehead* import(int n,airlinehead *pheadline);//录入航班函数: n为所要录入航班的数量:    airline* query(airlinehead *phead );//查询航班情况    void display_line(airline *node);//输出一个航班结点的所有信息到屏幕  void display_all_line(airlinehead *headline); 输出所有航班结点的所有信息到屏幕  void display_client(client *node);//输出一个客户节点的信息到屏幕。  void display_all_client(clienthead *headclient);//输出所有客户信息到屏幕。。    int bookticket(airlinehead * headline,clienthead *headclient);//订票    int returnticket(airlinehead * headline,clienthead *headclient);//退票。   #endif //BTREE_H_INCLUDED      
a.cpp

#include "a.h"  #include <stdio.h>    /*****************************************************  *功能描述:录入航班函数  *输入参数:line_num,start_place,end_place,time1,time2,total,left,money.  *输出参数:第i+1个航班录入  ******************************************************/    airlinehead* import(int n,airlinehead *pheadline)//录入航班函数: n为所要录入航班的数量:    {        airline *temp = new airline;        temp->next=NULL;  //尾链表插入      pheadline->next=temp;        pheadline->count = n;  //航班数      for(int i=0; i<n; i++)        {            cout<<"请输入第"<<i+1<<"个航班的航班号 ";            cin>>temp->line_num;            cout<<"请输入第"<<i+1<<"个航班的起飞地 ";            cin>>temp->start_place;            cout<<"请输入第"<<i+1<<"个航班的目的地 ";            cin>>temp->end_place;            cout<<"请输入第"<<i+1<<"个航班的起飞时间";            cin>>temp->time1;            cout<<"请输入第"<<i+1<<"个航班的降落时间";            cin>>temp->time2;            cout<<"请输入第"<<i+1<<"个航班的座位总数 ";            cin>>temp->total;            cout<<"请输入第"<<i+1<<"个航班的票价 ";            cin>>temp->money;                   temp->left=temp->total;  //剩余数初定义          cout<<"第"<<i+1<<"个航班成功录入。"<<endl;            if(i<n-1)            {                temp->next = new airline;                if(temp->next == NULL)                {                    cout<<"分配内存失败"<<endl;                    exit(1);                }                temp->next->next=NULL;                temp = temp->next;            }        }        return pheadline;    }    /*****************************************************  *功能描述:查询航班功能  *输入参数:select1,select2  *输出参数:航班号,起飞地,抵达地,起飞时间,降落时间,座位数,剩余座数 ,票价 *返回值:temp-成功,NULL-失败  ******************************************************/    airline* query(airlinehead *phead )//查询航班情况    {        airline *find=NULL;        airline *temp;        cout<<"**********************************"<<endl;        cout<<"* 1,按航班号查询航班情况。       *"<<endl;        cout<<"* 2,按起飞抵达城市查询航班情况。 *"<<endl;        cout<<"**********************************"<<endl;        cout<<"请选择:";        int select;        cin>>select;        cout<<endl;        switch(select)        {        case 1:        {            cout<<"请输入航班号:";            char line_num[10];            cin>>line_num;            temp = phead->next;            while(temp )            {                if(strcmp(temp->line_num,line_num) == 0)//输出航班信息                {                    find= temp;                    return temp;                    break;                }                else  //向下继续搜索              {                    temp = temp->next;                }            }            if(!temp)            {                cout<<"没有找到该航班的信息。"<<endl;                return NULL;            }            break;        }        case 2:        {            char start_place[20];//起飞地            char end_place[20];//目的地            cout<<"请输入起飞地址:";            cin>>start_place;            cout<<"请输入目的地:";            cin>>end_place;            temp=phead->next;            while(temp)            {                if(strcmp(temp->start_place,start_place)==0 &&                        strcmp(temp->end_place,end_place)==0)                {                    find=temp;                     break;                }                temp = temp->next;            }            if(!temp)            {                cout<<"没有找到该航班的信息。"<<endl;                return NULL;            }            break;        }        default:            cout<<"输入错误。"<<endl;            break;        }        return find;    }    /*****************************************************  *功能描述:输出航班信息功能  *输入参数:select1,select2  *输出参数:航班号,起飞地,抵达地,起飞时间,降落时间,座位数,剩余座数 ,票价 ******************************************************/    void display_line(airline *node)//输出一个航班结点的所有信息到屏幕    {        if(node==NULL)        {            cout<<"参数为空!输出失败."<<endl;            return;        }        cout<<endl;       cout<<"航班号:"<<node->line_num<<endl;     cout<<"起飞地:"<<node->start_place<<endl;     cout<<"目的地:"<<node->end_place<<endl;     cout<<"起飞时间:"<<node->time1<<endl;     cout<<"降落时间:"<<node->time2<<endl;     cout<<"座位数:"<<node->total<<endl;     cout<<"剩余座位:"<<node->left<<endl;     cout<<"票价:"<<node->money<<endl;  }    /******************************************************  *功能描述:输出所有的航班信息到屏幕  *输入参数:无  *输出参数:headline  *******************************************************/    void display_all_line(airlinehead *headline)    {        cout<<endl;        airline *node;  //初定义node      node = headline->next;        if(!node)        {            cout<<"当前没有航班信息"<<endl;            return ;        }        cout<<"航班数目: "<<headline->count<<endl;        while(node)        {            display_line(node); //调用单个航班信息输出函数           node=node->next;        }    }      /*****************************************************  *功能描述:输出一个客户信息到屏幕  *输入参数:无  *输出参数:姓名,证件号码,座号,航班号。 ******************************************************/    void display_client(client *node)//输出一个客户节点的信息到屏幕。    {           if(node==NULL)        {            cout<<"参数为空!输出失败。"<<endl;            return;        }        cout<<endl;        cout<<"姓名:"<<node->name<<endl;      cout<<"证件号码:"<<node->id<<endl;      cout<<"座号:"<<node->seat_num<<endl;      cout<<"航班号:"<<node->line_num<<endl;    }    /*****************************************************  *功能描述:输出全部客户信息到屏幕  *输入参数:无  *输出参数:姓名,证件号码,座号,航班号。 ******************************************************/    void display_all_client(clienthead *headclient)//打印所有客户信息到屏幕。。    {        client *node=headclient->next;        if(!node)        {            cout<<"当前没有客户信息。"<<endl;            return ;        }        while(node)        {            display_client(node);  //调用单个客户信息输出          node=node->next;        }    }      /*****************************************************  *功能描述:订票  *输入参数:line_num,id  *输出参数:  *返回值:1-正确,0-错误  ******************************************************/    int bookticket(airlinehead * headline,clienthead *headclient)//订票    {        cout<<"请输入航班号: ";//检测目标航班是否有余票        char line_num[10] ;        cin>>line_num;        int num;      airline *temp;        temp=headline->next;       while(temp)        {            if(strcmp(temp->line_num,line_num)==0)            {                  break;            }            temp=temp->next;        }        if(!temp)        {            cout<<"未找到该航班"<<endl;            return 0;        }        if(temp->left==0)        {            cout<<"对不起,该航班票已经售完。"<<endl;            cout<<"请选择其他合适的航班."<<endl;        }     if(temp!=NULL && temp->left!=0)   {        client *custom=new client;        cout<<"请输入你的证件号码: ";        cin>>custom->id;        cout<<"请输入你的姓名:";        cin>>custom->name;        cout<<endl;      for(int i=1;i<=temp->total;i++)//每个人从第一个位置开始寻找,找到位置没人输出      {           client *client1;            client1=headclient->next;           if(headclient->count==0)   //第一次执行,航班没人时执行,输出第一个位置。               {              num=i;              break;          }          while(client1) //          {              if(client1->seat_num==i)//位置有人              break;//跳出for循环                      client1=client1->next;//没人时指向下一个客户          }                 if(!client1)  //没有冲突,没有人占位,输出位置。                                     {                         num=i;  //位置赋值                                                   break;                 }                                               //     冲突时执行下一个i                 //     没冲突时执行下一个client(该次的i直至执行到最后一个client时没冲突 num=i  直接退出  )                                                                         //最后一个之前有冲突 从头开始 执行下一个i            }            custom->seat_num=num; //座位号按购票顺序排序      strcpy(custom->line_num,line_num);  //保存客户航班号      custom->next=NULL;       temp->left--;//余票-1        headclient->count++;  //客户+1      custom->next = headclient->next;//头插法增加客户        headclient->next = custom;        cout<<"订票成功!祝您旅途愉快~~";        cout<<endl;      return 1;  }  }    /*****************************************************  *功能描述:退票  *输入参数:id  *输出参数:  *返回值:1-正确,0-错误  ******************************************************/    int returnticket(airlinehead * headline,clienthead *headclient)//退票。    {        cout<<"请输入顾客的证件号码:id: ";        char id[10];        cin>>id;        airline *airlinetemp= headline->next;        client *clienttemp= headclient->next;        if(NULL==airlinetemp)        {            cout<<"当前没有客户信息。"<<endl;            return 0;        }        char line_num[10];        client *delnext ;        if(strcmp(clienttemp->id,id)==0)//要删除的节点为第一个时。。。        {            strcpy(line_num,clienttemp->line_num);            headclient->next=clienttemp->next;//删除节点的下一个连上headclient下一位            delete clienttemp;            while(airlinetemp)//修改对票客户所对应的航班的售票信息。            {                if(strcmp(line_num,airlinetemp->line_num)== 0 )                {                    airlinetemp->left++;                    break;                }                airlinetemp = airlinetemp->next;            }            cout<<"退票成功!希望有机会与您继续合作。";            cout<<endl;          return 1;        }        while(clienttemp->next)//要删除 的节点不是第一个时。。。        {            if(strcmp(clienttemp->next->id,id)==0)            {                strcpy(line_num,clienttemp->next->line_num);                delnext = clienttemp->next->next;//定义为删除节点的下一个                delete clienttemp->next;  //删除              clienttemp->next=delnext;  //链接              while(airlinetemp)//修改对票客户所对应的航班的售票信息。                {                    if(strcmp(line_num,airlinetemp->line_num)== 0 )                    {                        airlinetemp->left++;                        break;                    }                    airlinetemp = airlinetemp->next;                }                cout<<"退票成功!有机会继续合作。"<<endl<<endl;                return 1;                break;            }            clienttemp = clienttemp->next;        }        cout<<"未找到该客户的信息。"<<endl;        return 0;    }

main.cpp

#include "a.h"  #include <stdio.h>  //主函数    void main_menu()    {   system("color 0B");      cout<<"******************** 欢迎使用飞机售票系统************************"<<endl<<endl;        cout<<"** 1---- 录入航班信息。"<<endl<<endl;        cout<<"** 2---- 查询航线信息。"<<endl<<endl;        cout<<"** 3---- 客户订票。"<<endl<<endl;        cout<<"** 4---- 客户退票。"<<endl<<endl;        cout<<"** 5---- 输出所有航班信息。"<<endl<<endl;        cout<<"** 6---- 输出所有顾客信息。"<<endl<<endl;        cout<<"** 0---- 退出系统 。"<<endl<<endl;        cout<<"****************************************************************"<<endl<<endl;    }      void main()    {        printf("                               *************                      \n");      printf("                              *   *     *   *                     \n");      printf("                             *    *     *    *                    \n");      printf("                            *  ************** *                   \n");      printf("                            *     *     *     *                   \n");      printf("                            *     *******     *                   \n");      printf("                             *    *     *    *                    \n");      printf("                              *   *******   *                     \n");      printf("                               *************                      \n");          printf("         \n\n\n                              正在加载  ING~~~           \n\n\n");      sleep1();      airlinehead *headline=new airlinehead;        headline->count=0;  //航班数初始化      headline->next=NULL;        clienthead *headclient=new clienthead;        headclient->count=0;  //客户数初始化      headclient->next=NULL;        while(1)        {            main_menu();            int n;            cout<<"请选择您要进行的操作: ";            cin>>n;            cout<<endl;            switch(n)            {            case 1:                int num;                cout<<"请选择您要录入的航班的数目: ";                cin>>num;                cout<<endl;                import(num,headline);                cout<<endl;                cout<<"航班信息成功录入。。";                cout<<endl<<endl;              sleep1();              break;              case 2:                airline *find;                find=query(headline);                if(find)                {                    display_line(find);                }                sleep2();   break;            case 3:                bookticket( headline,headclient);                sleep1();              break;            case 4:                returnticket(headline,headclient);                sleep1();              break;            case 5:                display_all_line(headline);                sleep2();              break;            case 6:                display_all_client(headclient);                sleep2();              break;            case 0:                exit(1);                break;            }        }    }    void sleep1()  {  for(int j=0;j<70;j++)      {          Sleep(20);          printf(">");      }   system("cls");  }  void sleep2()  {  for(int j=0;j<70;j++)      {          Sleep(40);          printf(">");      }   system("cls");  }

操作页面

录入信息

安航班号查询航班信息

按起始地目的地查询航班信息

订票



查询航班信息

查询客户信息

退票



0 0
原创粉丝点击