⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fiy.cpp

📁 目 录 第一章 设计课题 …… …… …… 1 第二章 需求分析……………………………………………………1 第三章 概要设计……………………………………………………1 第四章 详细设计
💻 CPP
字号:
//fly.cpp
//////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
#include "fiy.h"
using namespace std;


//初始化航班信息:if,for的嵌套完成信息的输入
void Addplane()
{//初始化航班信息
    if(!csh)
    {
        cout<<"请输入航班数:";cin>>k;  
        for(int j=0;j<k;j++)
        {
            cout<<"请输入航班号:";cin>>fly[j].plane;
            if(fly[j].plane==fly[j-1].plane) //判断若重复输入航班,再重新输入
            {cout<<"重复输入!请重新输入!"<<endl;
            Addplane();
            }
            fly[j].seat=plane_seat;
            cout<<"终点站: ";cin>>fly[j].endfly;
            cout<<"时间:";cin>>fly[j].date;
            cout<<endl;
            csh=1;
        } 
        
    }
}

//功能的连接:操作的管理,用switch实现的。
void choose()
{ 
    int flag;
    cout<<"请选择操作: ";
    cin>>flag;
    switch(flag)
    {
    case 1:Addplane();choose();
    case 2:findfly();choose();
    case 3:dingpiao();choose();
    case 4:Show_wait();choose();
    case 5:show_lvke();choose();
    case 6:tuipiao();choose();
    case 7:list_menu();choose();
	case 8:banben();choose();
    case 0:exit(1);
    default: cout<<endl<<"输入错误!"<<endl<<endl;choose();
    }
}

//界面菜单的设计。
void list_menu()
{   
    cout<<"        ***********************************************************"<<endl;
    cout<<"        &&                  航空售票系统                         &&"<<endl;
    cout<<"        ***********************************************************"<<endl;
    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<<"        &&                          0. 退出系统                  && "<<endl;
    cout<<"        &&           此系统为罗君改编完美版  谢谢您的使用        && "<<endl;  
    cout<<"        *********************************************************** "<<endl;
    cout<<endl;
}

//查询航班信息的实现:通过循环比较找出航班信息和判断是否又该班次。
void find()
{//查询航班信息函数
int c; bool bl=0;
string end;int num;//查询的终点站/航班号
cout<<"======================"<<endl;
cout<<"按航班查询请输入1     "<<endl;   
cout<<"按终点站查询请输入2   "<<endl;
cout<<"======================"<<endl;
cout<<"请按画面提示选择查询方式:"<<endl;
cin>>c;
if(c==1)
{cout<<"请输入您要查询的航班:";
cin>>num;}
else 
if(c==2)
{
             cout<<"请输入要查询的终点站:"<<endl;
             cin>>end;
}
else 
{cout<<endl<<"输入错误!"<<endl;
bl=1;
find();
}
for(int f=0;f<k;f++)
{
    if(fly[f].plane==num || fly[f].date==end)
    {   bl=1;
    cout<<"航班号:"<<fly[f].plane<<"  ";
    cout<<"终点站:"<<fly[f].endfly<<"  ";
    cout<<"余票:"<<fly[f].seat-n<<endl;  
    }
    
}    
if(!bl)
{cout<<endl<<"没有这个航班!"<<endl<<endl;
find();}
}


void Createlistlvke()
{//建立一个空链表       
head = new listlvke;
pl = new listlvke;
head->next=NULL;
pl->next=NULL;

}

//定购机票。
void dingpiao()
{  
//订票函数
    int pla,left; //定义一个变量left来存放剩余票数
    char yd; 
    find(); 
    cout<<"=============================="<<endl;
    cout<<"您要订票按“y”,其他键退出!! "<<endl;
    cout<<"=============================="<<endl;
    cin>>yd;
    if(yd=='y')
    {     cout<<"您要预定的航班: "; 
    cin>>pla;
    for(int j=0;j<k;j++)
    {
        if(fly[j].plane==pla)        
        {left=fly[j].seat-n;   //剩余票数=固定票数-已售出的票数
        break;}
        else 
        {cout<<'\n'<<"没有这个航班!"<<endl<<endl;
        choose();}
    }
    cout<<"你要订几张票?请输入票数:";
    cin>>m;
    if(left<m)
    {cout<<"余票不足!"<<endl;
    waitplane=pla;     //把输入的航班号附值给候票人所需航班
    ifwait();         //调用等待函数入列
    }
    else 
    {     n+=m;
    for (int j=0;j<m;j++)
    {  b=1;      
    listlvke *p2= new listlvke;
    p2->data.plane=pla;
    cout<<"请输入您的姓名: ";cin>>p2->data.name;
    cout<<"请输入日期: ";cin>>p2->data.date;
    p2->next = pl->next;  //把顾客信息包括姓名和日期的结点插入链表中
    pl->next =p2;
    cout<<"                       预定成功!"<<endl;
    } 
    
    }
    
    }
    
}

//浏览指定航班的所有旅客信息
void show_lvke()
{ //显示航班信息
int pla;
if (!b)
{cout<<"该航班尚未有人订票"<<endl<<endl;
choose();
}
cout<<"请输入您要查询的航班:";
cin>>pla;
cout<<endl<<"航班"<<pla<<"旅客信息如下:"<<endl;
listlvke *itr= pl;    //定义一个新指针,把pl指针赋给它,并用itr来指向链表
bool flag=false;
while (itr->next!=NULL)
{
    if(itr->next->data.plane==pla)
          {
        cout<<"姓名:"<<itr->next->data.name<<"   日期:"<<itr->next->data.date<<endl;  
        flag=true;
          }
    itr = itr->next;
}
if(!flag)
cout<<endl<<"没有这个航班!"<<endl;         
}

//退票的实现
void tuipiao()
{//退票函数  
    string str,strname;
    int backpla;
    cout<<"请输姓名:";
    cin>>strname;
    cout<<"请输入航班:";
    cin>>backpla;
    bool flag=false;
    listlvke *q,*itr;  
    q=itr= pl;
    while (itr->next != NULL)
    { 
        if(itr->next->data.plane==backpla  &&  itr->next->data.name==strname )
        {
            flag=true;            
            q=itr->next; //删除链表中的结点
            itr->next=q->next;
            free(q);    //从内存中释放该结点
            cout<<endl<<"退票成功!"<<endl<<endl;
            for(int j=0;j<k;j++)
            {
                if(fly[j].plane==backpla)
                    n-=1;
            }  
            askwait();     //调用该函数,问排队的顾客是否需要补票
            break;
        }
        itr = itr->next;
    }
    
    if(!flag)
        cout<<endl<<"没有这张票!"<<endl<<endl;
}

//已经有票提示质询候票人
void askwait()
{   
char yn;
if(front==rear)
cout<<'\n'<<"尚未有人候票!"<<endl<<endl;
else
{   
    Qwait *q=front;
    Qwait *pf=front;
    do
    {  
        for(int j=0;j<k;j++)
        {   
            if(q->next->data.plane==fly[j].plane)
                break;
        }
        
        if(fly[j].seat-n >= q->next->data.piao)
        {//如果出现
            cout<<"航班"<<q->next->data.plane<<"余票额满足候票人:"<<q->next->data.name<<"需求!"<<endl;
            cout<<"联系电话:"<<q->next->data.phone<<endl;
            cout<<"请询问"<<q->next->data.name<<"是否现在订票?(Y/N)";
            cin>>yn;
            if(yn=='y')
            {    listlvke *p2= new listlvke; 
                        p2->data.plane=q->next->data.phone;
                        p2->data.name=q->next->data.name;
                        p2->data.date=q->next->data.date;
                        p2->next = pl->next;
                        pl->next =p2;
                        cout<<endl<<"预定成功!"<<endl;
                        pf=q->next;                
                        q->next=pf->next ;   //修改头指针始终指向队首元素
                        free (pf);  //释放队首结点                        
                        break;
            }          
        }
        q=q->next;
    }while(q!=rear);
}
choose();
}

void CreateQwait()
{//建立队列
front=rear=new Qwait;
if (!front) exit (1);  //存储分配失败
front->next =rear->next=NULL;
}
//暂时没票是否候票的实现
void ifwait()
{ //需要排队等待就调用此函数
    char g;
    cout<<"=============================="<<endl;
    cout<<"       您要等待订票请按“y”?"<<endl;
    cout<<"=============================="<<endl;
    cin>>g;
    if(g=='y')
    { 
        p = new  Qwait;
        if (!p)  exit (1);   //存储分配失败        
        cout<<"请输入姓名:";cin>>p->data.name;cout<<endl;   
        p->data.plane=waitplane;
        p->data.piao=m;
        cout<<"请留下您的电话:";cin>>p->data.phone;cout<<endl;  
        cout<<"请输入日期:";cin>>p->data.date;cout<<endl;          
        p->next =NULL;                       //生成新结点
        rear->next =p;                        //插入队尾
        rear=p; 
        cout<<"谢谢,有人退票我们将会通知您!"<<endl<<endl;   
        choose();
    }
    else 
    {cout<<"谢谢,再见!"<<endl;
    choose();}
}

//浏览候票者的信息的实现。
void Show_wait()
{//显示等待排队的顾客信息
    if(front==rear)
        cout<<"尚未有人候票!"<<endl<<endl;
    else
    {   
        Qwait *q=front->next;//从队头找到队尾
        do
        {
            cout<<"姓名:"<<q->data.name<<" ";
            cout<<"电话:"<<q->data.phone<<" ";
            cout<<"票数:"<<q->data.piao<<"  ";
            cout<<"日期:"<<q->data.date<<" ";
            cout<<"航班号:"<<q->data.plane<<endl;
            if(q->next!=NULL)
                q=q->next;
        }while(q!=rear);
    }
}

//航班信息及该航班定票人信息浏览的实现。
void findfly()
{ //浏览航班信息
int findpla; 
bool flag;
cout<<"请输入您要浏览的航班:";cin>>findpla;cout<<endl;
for(int f=0;f<k;f++)
{
    if(fly[f].plane==findpla)
    {   
    flag=1;
    cout<<"航班号:"<<fly[f].plane<<"  ";
    cout<<"终点站:"<<fly[f].endfly<<"  ";
    cout<<"余票:"<<fly[f].seat-n<<endl;  
    }
    
}
if(!b) 
{cout<<"尚未有人定票!"<<endl;
choose();}
listlvke *itr= pl;
while (itr->next!=NULL)  //遍历链表输入链表中的信息
{
    if(itr->next->data.plane==findpla)
          {cout<<"该航班的乘客信息如下:"<<endl;
           cout<<"姓名:"<<itr->next->data.name<<"   日期:"<<itr->next->data.date<<endl;  
          }
    itr = itr->next;
}
if(front==rear)
cout<<"没有该航班!"<<endl<<endl;
else
{   
    Qwait *q=front->next;
    do
    {  
        if(q->data.plane==findpla)  //输入侯票顾客的信息
        {cout<<"该航班的候票旅客如下:"<<endl;
        cout<<"姓名:"<<q->data.name<<" "<<endl;
        cout<<"电话:"<<q->data.phone<<" "<<endl;
        cout<<"票数:"<<q->data.piao<<"  "<<endl;
        cout<<"日期:"<<q->data.date<<" "<<endl;
        cout<<"航班号:"<<q->data.plane<<endl;
        }
        if(q->next!=NULL)
            q=q->next;
    }while(q!=rear);   //从队头指到队尾
}
}
void banben()
{
	cout<<"        ***********************************************************"<<endl;
    cout<<"        &&                  航空售票系统版本信息                 &&"<<endl;
    cout<<"        ***********************************************************"<<endl;
    cout<<"        &&               制作时间  :                            && "<<endl;
    cout<<"        &&                          2007年7月8日                 && "<<endl;
    cout<<"        &&               制作人    :                            && "<<endl;
    cout<<"        &&                          罗君                         && "<<endl;
    cout<<"        &&               制作人博客:                            && "<<endl;  
    cout<<"        &&                          menglidefeng.51.com          && "<<endl;
    cout<<"        &&               修改时间  :                            && "<<endl;
    cout<<"        &&                          2007年7月11日                && "<<endl;
    cout<<"        &&               qq        :                            && "<<endl;
    cout<<"        &&                          153564724                    && "<<endl;
    cout<<"        &&           此系统为罗君改编完美版  谢谢您的使用        && "<<endl;  
    cout<<"        *********************************************************** "<<endl;
    cout<<endl;
}
//主函数
int main()
{   
    CreateQwait();
    Createlistlvke();
    list_menu();
    choose();
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -