亚洲AV日韩AⅤ综合手机在线观看,激情婷婷久久综合色,欧美色五月婷婷久久,久久国产精品99久久人人澡

  • <abbr id="uk6uq"><abbr id="uk6uq"></abbr></abbr>
  • <tbody id="uk6uq"></tbody>
  • 免費(fèi)vc++航空客運(yùn)訂票系統(tǒng)+論文(一)

    時(shí)間:2024-09-22 00:35:12 計(jì)算機(jī)畢業(yè)論文 我要投稿
    • 相關(guān)推薦

    免費(fèi)vc++航空客運(yùn)訂票系統(tǒng)+論文(一)

    航空客運(yùn)訂票系統(tǒng)
    1  問題描述 
      航空客運(yùn)訂票的業(yè)務(wù)活動包括:查詢航線、客票預(yù)訂和辦理退票等。試設(shè)計(jì)一個(gè)航空客運(yùn)訂票系統(tǒng),以使上述業(yè)務(wù)可以借助計(jì)算機(jī)來完成。
    1.1 每條航線所涉及的信息有:終點(diǎn)站名、航班號、飛機(jī)號、飛行周日(星期幾)、乘員定額、余票量、已訂票的客戶名單(包括姓名、訂票量、艙位等級1,2或3)以及等候替補(bǔ)的客戶名單(包括姓名、所需票量)
    1.2 作為示意系統(tǒng),全部數(shù)據(jù)可以只放在內(nèi)存中
    1.3 系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:
    1.3.1 查詢航線:根據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號、飛機(jī)號、星期幾飛行,最近一天航班的日期和余票額
    1.3.2 承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號、訂票數(shù)額)查詢該航班票額情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號;若已滿員或余票額少于訂票額,則需重新詢問客戶要求。若需要,可登記排隊(duì)候補(bǔ)
    1.3.3 承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(日期、航班),為客戶辦理退票手續(xù),然后查詢該航班是否有人排隊(duì)候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶
    2  概要設(shè)計(jì)
    2.1 存儲結(jié)構(gòu)設(shè)計(jì)
    typedef struct Al_Custom //已訂票客戶
    {
     char name[15];//姓名
     int count;//訂票量
     int level;//艙位等級
     Al_Custom *next;//下一節(jié)點(diǎn)指針
    }Al_Custom,*Al_CustomLink;

    免費(fèi)vc++航空客運(yùn)訂票系統(tǒng)+論文(一)

    typedef struct Wait_Custom//等候替補(bǔ)的客戶
    {
     char name[15];//姓名
     int count;//所需票量
     Wait_Custom *next;//下一節(jié)點(diǎn)指針
    }Wait_Custom;

    typedef struct Wait_Queue//等待隊(duì)列
    {
     Wait_Custom *front;//隊(duì)列頭指針
     Wait_Custom *rear;//尾指針
    }Wait_Queue;

    typedef struct Flight//航線
    {
     char terminus[15];//終點(diǎn)站名
     char flight_no[10];//航班號
     char plane_no[10];//飛機(jī)號
     int week;//飛行周日
     int count;//乘客定額
     int rest;//余票量
     Al_CustomLink Al_link;//指向成員名單鏈表的頭指針
     Wait_Queue wait_queue;//等待替補(bǔ)隊(duì)列
    }Flight;
    2.2 主要算法設(shè)計(jì)
    2.2.1 主程序模塊:
    void main()
    {
       初始化;
       do{
         接受命令;
         處理命令;
         }while(命令!="退出");
    }
    2.2.2  查詢航線模塊——實(shí)現(xiàn)查詢功能
    void findFlight()
    {
        提示輸入要查詢航線的終點(diǎn)站名;
        如果存在該航線,則輸出該航線信息;
        否則提示不存在該航線;
    }
    2.2.3  承辦訂票業(yè)務(wù)模塊——實(shí)現(xiàn)訂票功能
    void dingpiao()
    {
        提示輸入航班號和訂票數(shù);
        若不存在該航班號,則提示不存在該航線;
        否則{
             如果有余票,則辦理業(yè)務(wù);
             否則提示沒有足夠的余票,詢問是否候補(bǔ);
             若是,則排隊(duì)候補(bǔ);
            }
    }
    2.2.4  承辦退票業(yè)務(wù)模塊——實(shí)現(xiàn)退票功能
    void tuipiao()
    {
         提示輸入航班號和飛行周日;
         確認(rèn)航班號和飛行周日都存在,并且客戶有訂票,
         則  {執(zhí)行退票;
             為排隊(duì)候補(bǔ)的客戶辦理訂票業(yè)務(wù);
             }
         否則{
              提示有誤
      }
    }
    2.3  測試用例設(shè)計(jì)
    2.3.1  航線3條:1001    hp001   shanghai  2   50
                        1002    hp002   beijing   5   50
                        1003    hp003   guangzhou 7   50
    2.3.2  查詢航線:shanghai
     2.3.3  承辦訂票業(yè)務(wù):航班號1001  數(shù)額30  姓名chengangjie 艙位等級2
     2.3.4  承辦訂票業(yè)務(wù):航班號1001  數(shù)額23  姓名zhenxi      艙位等級3
    2.3.5  承辦退票業(yè)務(wù):姓名chengangjie 航班號1001 飛行周日2
    2.3.6  查詢航線:終點(diǎn)站名:shanghai
    3  調(diào)試分析
    3.1 本次的設(shè)計(jì)比較困難,需要實(shí)現(xiàn)較多的功能,所以在調(diào)試過程中不太順利,主要是指針的修改。經(jīng)過反復(fù)調(diào)試以后才得以解決。
    3.2 本程序航線采用數(shù)組的存儲結(jié)構(gòu),每條航線包含8個(gè)域,其中乘員名單域?yàn)橹赶虺藛T名單鏈表的頭指針,等候替補(bǔ)的客戶名單域?yàn)榉謩e指向?qū)︻^和對尾的指針。
    3.3 訂票函數(shù)是在退票業(yè)務(wù)模塊中使用
    4  經(jīng)驗(yàn)和體會
    通過這次的程序設(shè)計(jì),進(jìn)一步理解了鏈表和隊(duì)列結(jié)構(gòu)的實(shí)現(xiàn)和應(yīng)用。尤其需要注意的是:對于指針的修改要仔細(xì),否則會發(fā)生意想不到的結(jié)果。
    5  源程序清單和運(yùn)行結(jié)果
    5.1 程序清單
    #include<iostream.h>
    #include<iomanip.h>
    #include<string.h>
    #include<stdio.h>
    #include<conio.h>
    #define FLIGHT_NUM 100//航線最大數(shù)量

    typedef struct Al_Custom //已訂票客戶
    {
     char name[15];//姓名
     int count;//訂票量
     int level;//艙位等級
     Al_Custom *next;//下一節(jié)點(diǎn)指針
    }Al_Custom,*Al_CustomLink;

    typedef struct Wait_Custom//等候替補(bǔ)的客戶
    {
     char name[15];//姓名
     int count;//所需票量
     Wait_Custom *next;//下一節(jié)點(diǎn)指針
    }Wait_Custom;

    typedef struct Wait_Queue//等待隊(duì)列
    {
     Wait_Custom *front;//隊(duì)列頭指針
     Wait_Custom *rear;//尾指針
    }Wait_Queue;

    typedef struct Flight//航線
    {
     char terminus[15];//終點(diǎn)站名
     char flight_no[10];//航班號
     char plane_no[10];//飛機(jī)號
     int week;//飛行周日
     int count;//乘客定額
     int rest;//余票量
     Al_CustomLink Al_link;//指向成員名單鏈表的頭指針
     Wait_Queue wait_queue;//等待替補(bǔ)隊(duì)列
    }Flight;

    void Custom_init(Al_CustomLink &L)
    {
     L=new Al_Custom;
     L->next=0;
    }

    void Custom_insert(Al_CustomLink &L,Al_Custom& custom)
    {
     Al_Custom *p=L,*newnode=new Al_Custom;
     memcpy((void*)newnode,&custom,sizeof(Al_Custom));
     newnode->next=p->next;
     p->next=newnode;
    }

    void copyCustomLink(Al_CustomLink &dest,Al_CustomLink &source)//復(fù)制已訂票客戶鏈表
    {
     Al_CustomLink p=source;
     Al_CustomLink q;
     Al_Custom *pnew;
     Custom_init(dest);
     q=dest;
     while(p->next)
     {
      pnew=new Al_Custom;
      memcpy(pnew,p->next,sizeof(Al_Custom));
      pnew->next=0;
      q->next=pnew;
      q=pnew;
      p=p->next;
     }
     
    }

    void Waiter_init(Wait_Queue &Q)
    {
     Q.front=Q.rear=new Wait_Custom;
     Q.front->next=0;
    }

    void Waiter_En(Wait_Queue &Q,Wait_Custom& custom)
    {
     Wait_Custom *newnode=new Wait_Custom;
     memcpy(newnode,&custom,sizeof(Wait_Custom));
     newnode->next=0;
     Q.rear->next=newnode;
     Q.rear=newnode;
    }
    bool Waiter_De(Wait_Queue &Q,Wait_Custom& custom)
    {
     if(Q.rear==Q.front)
      return false;
     memcpy(&custom,Q.front,sizeof(Wait_Custom));
     Wait_Custom *p=Q.front->next;
     Q.front->next=p->next;
     if(Q.rear!=Q.front)
      Q.rear=Q.front;
     delete p;
     custom.next=0;
     return true;
    }


    void copyWait_Queue(Wait_Queue &dest,Wait_Queue& source)//復(fù)制等待隊(duì)列
    {
     Wait_Custom *p=source.front;
     Waiter_init(dest);
     while(p->next)
     {
      Waiter_En(dest,*p);
      p=p->next;
     }
    }


    int flight_no;//航線數(shù)量
    Flight flight[FLIGHT_NUM];//航線數(shù)組

    void initFlight(Flight &f)//初始化一條航線
    {
     char ch=0;
     strncpy((char*)&f,&ch,sizeof(Flight));
     Custom_init(f.Al_link);
     Waiter_init(f.wait_queue);
    }

    void initFlight()//初始化航線數(shù)組
    {
     flight_no=0;
     char ch=0;
     strncpy((char*)flight,&ch,FLIGHT_NUM*sizeof(Flight));
     for(int i=0;i<FLIGHT_NUM;i++)
     {
      Custom_init(flight[i].Al_link);
      Waiter_init(flight[i].wait_queue);
     }
    }

    void insertFlight(Flight& f)//按終點(diǎn)站名有序插入航線到航線數(shù)組
    {
     int i=-1;
     while(i+1<flight_no && strcmp(f.terminus,flight[i+1].terminus)==1)
     {
      i++;
     }
     for(int j=flight_no-1;j>=i+1;j--)
     {
      memcpy((void*)(&(flight[j+1])),(void*)(&(flight[j])),sizeof(Flight));
     }
     memcpy((void*)(&(flight[i+1])),(void*)(&f),sizeof(Flight));
     Custom_init(flight[i+1].Al_link);
     Waiter_init(flight[i+1].wait_queue);
     copyCustomLink(flight[i+1].Al_link,f.Al_link);
     copyWait_Queue(flight[i+1].wait_queue,f.wait_queue);
     flight_no++;
    }

    void init()
    {
     int m;
     cout<<"請輸入航線條數(shù):";
     cin>>m;
     for(int i=1;i<=m;i++)
     {
      Flight f;
      initFlight(f);
      cout<<"輸入第"<<i<<"條航線:"<<endl;
      cout<<"航班號:";
      cin>>f.flight_no;
      cout<<"飛機(jī)號:";
      cin>>f.plane_no;
      cout<<"終點(diǎn)站名:";
      cin>>f.terminus;
      cout<<"飛行周日:";
      cin>>f.week;
      cout<<"成員定額:";
      cin>>f.count;
      f.rest=f.count;
      insertFlight(f);
      printf("\n");
     }
    }
    int findbyname(char terminus[15])//根據(jù)終點(diǎn)站名查找
    {
     for(int i=0;i<flight_no;i++)
     {
      if(strcmp(flight[i].terminus,terminus)==0)
      {
       return i;
      }
     }
     return -1;
    }

    int findbyno(char no[10])//根據(jù)航班號查找
    {
     for(int i=0;i<flight_no;i++)
     {
      if(strcmp(flight[i].flight_no,no)==0)
      {
       return i;
      }
     }
     return -1;
    }


    void findFlight()//查詢航線子模塊
    {
     char terminus[15];
     cout<<"請輸入要查詢航線的終點(diǎn)站號:";
     cin>>terminus;
     int index=findbyname(terminus);
     if(index==-1)
     {
      printf("該航線不存在!\n");
      return ;
     }
     cout<<setw(12)<<"航班號"<<setw(12)<<"飛機(jī)號"<<setw(12)<<"飛行周日"<<setw(12)<<"余票額"<<endl;
     cout<<setw(12)<<flight[index].flight_no
      <<setw(12)<<flight[index].plane_no
      <<setw(12)<<flight[index].week
      <<setw(12)<<flight[index].rest<<endl<<endl;
    }

    void dingpiao(int index)
    {

     Wait_Custom *p=flight[index].wait_queue.front;
     while(p!=flight[index].wait_queue.rear)
     {
      if(p->next->count<=flight[index].count)
      {
       cout<<"為"<<p->next->name<<"辦理訂票手續(xù)"<<endl;
       Al_Custom *pnew=new Al_Custom;
       pnew->count=p->next->count;
       flight[index].rest-=p->next->count;
       strcpy(pnew->name,p->next->name);
       do{
        cout<<"請"<<p->next->name<<"輸入所需要的艙位等級(1-3):";
        cin>>pnew->level;
       }while(pnew->level<1 || pnew->level>3);
       pnew->next=flight[index].Al_link->next;
       flight[index].Al_link->next=pnew;
       Wait_Custom *q=p->next;
       p->next=q->next;
       
       if(flight[index].wait_queue.rear==q)
        flight[index].wait_queue.rear=p;
       delete q;
      }
     }
    }

    void dingpiao()//承辦訂票業(yè)務(wù)子模塊
    {
     char no[10];//航班號
     int count;//訂票量
     cout<<"請輸入航班號和訂票數(shù)額:";
     cin>>no>>count;
     int index=findbyno(no);
     if(index==-1)
     {
      cout<<"該航線不存在"<<endl;
      return ;
     }
     if(flight[index].rest>=count)//尚有余票
     {
      Al_Custom *pnew=new Al_Custom;
      cout<<"請輸入您的姓名:";
      cin>>pnew->name;
      cout<<"請輸入您要訂的艙位等級:";
      cin>>pnew->level;
      pnew->count=count;
      pnew->next=0;
      flight[index].rest-=count;
      pnew->next=flight[index].Al_link->next;
      flight[index].Al_link->next=pnew;
     }
     else//沒有余票
     {
      cout<<"該航班的余票額不能滿足您的要求,是否排隊(duì)候補(bǔ)(y/n):";
      cout.flush();
      char select;
      do{
       select=getch();
      }while(select!='y' && select!='n');
      if(select=='y')//排隊(duì)候補(bǔ)
      {
       Wait_Custom *pnew=new Wait_Custom;
       cout<<endl;
       cout<<"請輸入您的姓名:";
       cin>>pnew->name;
       pnew->count=count;
       pnew->next=0;
       flight[index].wait_queue.rear->next=pnew;
       flight[index].wait_queue.rear=pnew;
       cout<<flight[index].wait_queue.rear->name<<endl;
      }
      else
      {
      }
     }
    }

    void tuipiao()//承辦退票業(yè)務(wù)子模塊
    {
     cout<<"請輸入您的姓名:";
     char name[15];
     cin>>name;
     cout<<"請輸入你要退票的航班號與飛行周日:";
     int week;
     char no[10];
     cin>>no>>week;
     bool isfind=false;
     for(int index=0;index<flight_no;index++)
     {
      if(flight[index].week==week && strcmp(flight[index].flight_no,no)==0)
      {
       Al_Custom *p=flight[index].Al_link;
       while(p && p->next)
       {
        if(strcmp(p->next->name,name)==0)
        { 
         isfind=true;
         Al_Custom *q=p->next;
         p->next=q->next;
         {
          flight[index].rest+=q->count;
          cout<<flight[index].rest<<endl;
          dingpiao(index);//為第index條航線排隊(duì)等候的客戶辦理訂票手續(xù)
         }
         delete q;
        }
        p=p->next;
       }
      }
     }
     if(!isfind)
     {
      cout<<"您沒有訂該天該航班的票!"<<endl;
      return;
     }
     cout<<"退票成功!"<<endl;
    }

    void welcome()
    {
     cout<<"選擇操作:"<<endl;
     cout<<"              1.查詢航線"<<endl;
     cout<<"              2.承辦訂票業(yè)務(wù)"<<endl;
     cout<<"              3.承辦退票業(yè)務(wù)"<<endl;
     cout<<"              4.退出"<<endl;
    }

    void main()
    {
     initFlight();
     init();
     char ch;
     do{
      welcome();
      do{
       ch=getch();
      }while(ch<'1' || ch>'4');
      switch(ch)
      {
      case '1':
       findFlight();
       break;
      case '2':
       dingpiao();
       break;
      case '3':
       tuipiao();
       break;
      case '4':
       break;
      }
     }while(ch!='4');
    }
    5.2 運(yùn)行結(jié)果:
    5.2.1 輸入航線:
    5.2.2 查詢航線:
    5.2.3 承辦訂票業(yè)務(wù):
    5.2.4 承辦退票業(yè)務(wù):

    5.2.5查詢航線:

    【免費(fèi)vc++航空客運(yùn)訂票系統(tǒng)+論文(一)】相關(guān)文章:

    免費(fèi)vc++網(wǎng)上尋呼QICQ源代碼(附帶論文)(一)11-22

    視頻監(jiān)控系統(tǒng)―視頻捕獲和傳輸模塊VC++03-08

    基于USB接口的數(shù)據(jù)采集系統(tǒng)-GSM功率測量VC++03-08

    國內(nèi)航空客運(yùn)收入管理的應(yīng)用模型03-24

    免費(fèi)畢業(yè)論文--茶葉修剪機(jī)(一)02-26

    民用航空客運(yùn)服務(wù)產(chǎn)品評價(jià)11-14

    免費(fèi)畢業(yè)論文--齒輪鏈輪套件設(shè)計(jì)(一)03-08

    鐵路客運(yùn)營銷輔助決策系統(tǒng)的應(yīng)用03-10

    免費(fèi)畢業(yè)論文--普通帶式輸送機(jī)的設(shè)計(jì)論文(一)03-08