c 課程設(shè)計——航空售票管理系統(tǒng)_第1頁
已閱讀1頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  內(nèi)蒙古科技大學(xué)</b></p><p>  本科生《C++程序設(shè)計》課程設(shè)計說明書</p><p>  題 目:航空售票管理系統(tǒng)</p><p><b>  學(xué)生姓名:完美主義</b></p><p>  學(xué) 號:XXXXXXXX</p>&l

2、t;p>  專 業(yè):計算科學(xué)與技術(shù)</p><p>  班 級:計2010-1班</p><p><b>  指導(dǎo)教師:XXX</b></p><p><b>  【摘要】</b></p><p>  隨著科技的發(fā)展和人們生活水平的日益提高,人們在不斷追求更加快捷的交通方式以滿足人

3、們快節(jié)奏的生活方式,航空系統(tǒng)在交通系統(tǒng)中已扮演著一個越來越重要的角色。然而,交通的快捷離不開信息的快捷。</p><p>  隨著隨著計算機的發(fā)展和普及,人們的生活方式發(fā)生了巨大的改變,計算機在代替和延伸腦力勞動方面發(fā)揮著越來越重要的作用。在交通系統(tǒng)中,有大量的數(shù)據(jù)需要被處理,而這些工作有人來完成幾乎是不可能的,而交給計算機處理,就可以很好地滿足我們的需求。</p><p>  航空售票管

4、理系統(tǒng)可以根據(jù)乘客和管理人員的要求,進行方便快速的查詢、購票、退票和管理等工作。本文介紹了簡易航空售票管理系統(tǒng)的實現(xiàn)過程。</p><p><b>  【關(guān)鍵詞】</b></p><p>  航空售票管理系統(tǒng) 動態(tài)數(shù)組 類和對象 文件操作 運算符重載 多文件結(jié)構(gòu)</p><p><b>  成績評定標(biāo)準(zhǔn)</b>&

5、lt;/p><p>  課程設(shè)計的驗收答辯采取“講解程序+提問+即時編程”的方式。</p><p><b>  目 錄</b></p><p>  第一章 問題描述1</p><p>  第二章 問題分析2</p><p>  2.1 闡述你對問題的理解、解決問題的方案說明2</p>

6、;<p>  2.2 系統(tǒng)功能模塊的劃分2</p><p>  第三章 數(shù)據(jù)模型4</p><p>  3.1 相關(guān)數(shù)據(jù)結(jié)構(gòu)的說明4</p><p>  3.2 類的設(shè)計4</p><p>  3.3 程序結(jié)構(gòu)說明,即程序各個部分之間如何協(xié)調(diào)來完成任務(wù)5</p><p>  3.4 全局變量,重

7、要形式參數(shù)、局部變量等等,它們的命名及用途解釋6</p><p>  第四章 算法描述7</p><p>  4.1 解題算法的設(shè)計思路介紹7</p><p>  4.2 畫出程序流程圖7</p><p>  第五章 設(shè)計總結(jié)12</p><p><b>  附錄13</b></

8、p><p><b>  參考文獻32</b></p><p>  ………………………………………………………………………………………………</p><p>  ………………………………………………………………………</p><p><b>  問題描述</b></p><p>

9、  1.1該航空售票管理系統(tǒng)必須用C++語言進行設(shè)計,要能體現(xiàn)C++語言的特性。</p><p>  1.2該系統(tǒng)至少要能提供下列服務(wù):</p><p>  錄入航班信息,格式為:</p><p>  可不定時地增加航班數(shù)據(jù)。</p><p> ?。?)瀏覽航班信息,可顯示出所有航班,如果當(dāng)前系統(tǒng)時間超過了某航班的起飛時間,則顯示“此次航班已

10、發(fā)出”的提示信息。</p><p> ?。?)查詢路線:可按航班編號查詢,可按起始站,終點站查詢</p><p> ?。?)訂票和退票功能</p><p>  A:查詢航班編號或站點。當(dāng)剩余座位數(shù)大于0,并且當(dāng)前系統(tǒng)時間小于起飛時間時才能售票,售票后自動更新剩余座位數(shù)。</p><p>  B:退票時,輸入退票的班次,當(dāng)本班航班未發(fā)出時才能退

11、票,退票后自動更新剩余座位數(shù)。</p><p><b>  問題分析</b></p><p>  從對問題的描述可以知道,我們需要建立的是具有能對數(shù)據(jù)錄入,追加,瀏覽,檢索和修改功能的軟件。由于乘客的數(shù)量較大且不固定,因此選擇用動態(tài)數(shù)組來保存乘客的基本信息:航班號、起始站名、終點站名、起飛時間、經(jīng)濟參票價、余票量等等。所以我們建立一個可以動態(tài)增長的數(shù)組,在必要的時候?qū)?/p>

12、數(shù)組的內(nèi)容保存到文件中。系統(tǒng)主要實現(xiàn)的操作和功能是:錄入航班信息、瀏覽航班信息、查詢航線、訂票功能、退票功能。要實現(xiàn)這些功能,首先要使程序能實現(xiàn)查找功能,在查找出到有效信息的前提之下,通過鏈表的賦值,更新信息和刪除退票人信息,滿足客戶的要求。</p><p>  闡述你對問題的理解、解決問題的方案說明</p><p>  根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:</p>

13、<p> ?。?)分析系統(tǒng)中的各個實體之間的關(guān)系及其屬性和行為;</p><p> ?。?)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次;</p><p> ?。?)完成類層次中各個類的描述(包括屬性和方法);</p><p> ?。?)完成類中各個成.員函數(shù)的定義;</p><p> ?。?)完成系統(tǒng)的應(yīng)用模塊;</p><

14、;p><b> ?。?)功能調(diào)試;</b></p><p> ?。?)完成系統(tǒng)總結(jié)報告以及系統(tǒng)使用說明書。</p><p><b>  系統(tǒng)功能模塊的劃分</b></p><p>  該系統(tǒng)總共包含四大功能模塊:</p><p>  更新航班信息功能模塊</p><p>

15、;  該模塊為對航班信息的操作,僅向管理員開放使用,普通用戶不能使用該功能對航班信息進行操作,故進入該功能需進行身份驗證。</p><p>  該模塊又被分為五個子功能模塊——信息庫的重建、信息的插入、修改、刪除和清空數(shù)據(jù)。</p><p><b>  瀏覽航班信息</b></p><p>  完成將文件中的航班信息按照要求格式全部輸出。<

16、;/p><p><b>  查詢航班信息</b></p><p>  可以實現(xiàn)按航班號和按站點的查詢并將查詢到的信息輸出。</p><p><b>  訂票和退票系統(tǒng)</b></p><p>  該模塊根據(jù)訂票和退票操作的相似性,將這兩種操作放在一起。</p><p>  另外,

17、由于各模塊函數(shù)是直接對文件進行操作,所以各功能模塊是相互獨立的。</p><p><b>  數(shù)據(jù)模型</b></p><p><b>  相關(guān)數(shù)據(jù)結(jié)構(gòu)的說明</b></p><p>  本系統(tǒng)用到的容器主要是動態(tài)增長的vector ,使用該容器需用頭文件#include <vector>,其通過語句vecto

18、r <Flight> v_array;申請了一個可以動態(tài)增長的數(shù)組。該數(shù)組的元素類Flight的對象,通過語句Flight fly; v_array.push_back(fly);可實現(xiàn)數(shù)組v_array的增長。</p><p>  該容器用來存放航班類Flight的對象,使用該容器可以可以存放個數(shù)不確定的對象,且可以方便地進行訪問。</p><p><b>  類的

19、設(shè)計</b></p><p>  程序中一共定義了兩個類:Flight類和Traffic_system類。</p><p>  在Flight類里定義了私有數(shù)據(jù)成員m_fnum[10]表示航班號, m_ftime[2]表示起飛時間,char m_fstar[18]表示起始站, m_fdestination[18]表示終點站, m_fprice表示票價, m_fseat表示票數(shù);

20、定義了共有的成員函數(shù)bool SetInfo()用來設(shè)置航班信息,friend istream& operator>>(istream& in, Flight& cp)用來重載提取運算符>>,friend ostream& operator<<(ostream& out, Flight& cp)用來重載插入運算符<<,void Display

21、()用來輸出航班信息,bool Book()用來訂票,void Refund()用來退票,bool If_takeoff()用來判斷是否起飛,bool If_deleted()用來判斷該航班是否被刪除,bool If_match(char (*p)[18], char ta)用來判斷航班號或站點名是否相同。</p><p>  另一個類為Traffic_system類,其中定義了私有數(shù)據(jù)成員m_sum和v_arr

22、ay,v_array是數(shù)組名,用來存放航班類對象,m_sum表示數(shù)組v_array中航班類對象的個數(shù);還定義了私有的成員函數(shù)void Read_file()用來讀取文件,void Save_file()用來保存數(shù)據(jù)到文件,以及公有的數(shù)據(jù)成員函數(shù)void Manage()用來管理航班信息,void Scan()用來瀏覽航班信息,int Search(int invoke = 0)完成查詢功能,void BookRefund()用來訂票和退

23、票。</p><p>  兩個類之間是組合的關(guān)系,其中Flight類是Traffic_system類的子類。</p><p>  程序結(jié)構(gòu)說明,即程序各個部分之間如何協(xié)調(diào)來完成任務(wù)</p><p><b>  程序的結(jié)構(gòu)圖如下:</b></p><p>  如上圖,程序中各功能模塊所需的數(shù)據(jù)都直接取自文件,這樣保證了各模

24、塊的獨立性和數(shù)據(jù)的安全性。并且只有相應(yīng)的模塊進行寫的操作,并且數(shù)據(jù)的寫入不必依賴其他模塊,這樣使用戶可以僅使用其中某一項功能,而不必進行多余的操作。</p><p>  全局變量,重要形式參數(shù)、局部變量等等,它們的命名及用途解釋</p><p>  整個程序中未使用全局變量。</p><p><b>  重要形參</b></p>

25、<p>  A) 提取運算符重載函數(shù)istream& operator>>(istream& in, Flight& cp)中使用了形參in和cp,形參in為引用“ istream&”,與該函數(shù)的返回值相同,故可以將該函數(shù)的返回值傳給該形參,實現(xiàn)“>>”操作符的連續(xù)使用。形參cp為引用“Flight&”,實現(xiàn)了對Flight類對象的輸入重載。</p>

26、<p>  B) 插入運算符重載函數(shù)ostream& operator<<(ostream& out, Flight& cp)中使用了形參out和cp,其作用與上面類似。</p><p>  C) 函數(shù)bool Flight::If_match(char (*p)[18], char ta)中使用了形參p 和ta,形參p為指向字符數(shù)組的指針,它用來指向一個大小

27、為18的字符數(shù)組;形參ta為字符型,其作用是使該函數(shù)區(qū)分航班號和站點名兩種比較。</p><p>  D) 函數(shù)int Traffic_system::Search(int invoke = 0)中使用了形參invoke,該形參為int型并設(shè)置默認參數(shù)0,其作用為區(qū)分調(diào)用者,以便輸出相應(yīng)的提示信息。</p><p><b>  算法描述</b></p>

28、<p>  解題算法的設(shè)計思路介紹</p><p>  首先根據(jù)問題描述抽象出一個航班類,封裝了航班的數(shù)據(jù)信息和方法。數(shù)據(jù)里主要有航班的航班號、起飛時間、站點等信息,方法主要是對該類中數(shù)據(jù)的值的輸入、輸出對本班次機票的管理,對時間、站名等的核對,另外為了方便對文件的輸出和讀取,還以友元的形式重載了提取和插入運算符。</p><p>  由于有航班有多組,為了方便管理各個對象,所

29、以有定義了一個Traffic_system類,將Flight類的對象作為Traffic_system類的數(shù)據(jù)成員。Traffic_system類中還定義了兩個私有的成員函數(shù)完成對文件的讀寫。共有的成員函數(shù)主要是Manage(),void Scan(), Search(int invoke = 0)和BookRefund(),用來完成系統(tǒng)的幾大功能。</p><p><b>  畫出程序流程圖</b

30、></p><p>  文件“航空售票管理系統(tǒng)v-1.0.cpp”中</p><p>  主函數(shù)流程圖——main()</p><p>  文件“class/Traffic_system.cpp”中</p><p>  類中Traffic_system中</p><p>  瀏覽函數(shù)——void Sc

31、an()</p><p>  查詢函數(shù)——Search(int invoke = 0)</p><p>  訂票退票函數(shù)BookRefund()</p><p><b>  設(shè)計總結(jié)</b></p><p>  此課程設(shè)計完成了對航線查詢、訂票、退票等功能的設(shè)計操作,并且為了插入和刪除方便,運用動態(tài)數(shù)組做存儲結(jié)構(gòu)。此課程

32、設(shè)計還包含了清屏功能以及退出功能。對程序在運行時輸入錯誤操作的修改,提供了一定方便條件基本上能安全的運行,具備的功能符合題目的要求。用了文件的操作,是此程序的最大優(yōu)點。程序?qū)懙倪€算簡練,結(jié)構(gòu)清晰,各個模塊的分工和功能明確。</p><p>  經(jīng)過兩周的課程設(shè)計,我認識到把課堂上老師講的知識運用到實際操作中的重要性。我這次課程設(shè)計的題目是航空訂票系統(tǒng),在開始階段,根本無從下手,后來通過查閱一些相關(guān)資料和老師的耐心

33、講解,最終成功完成整個程序的設(shè)計。通過這次課設(shè)我對C++語言中的類的定義、運算符重載等知識有了進一步的理解,對流程圖的畫法更加熟練,對程序的開發(fā)思路有了一定的理解,我想這在以后的學(xué)習(xí)和工作中都會有幫助的,更使我意識到了學(xué)習(xí)C++語言的重要性。</p><p>  程序中運用了多文件結(jié)構(gòu),雖然程序不是太大,但多文件結(jié)構(gòu)的使用是我模仿正規(guī)軟件的結(jié)構(gòu)來寫的,我想這對我以后的提高有幫助。</p><p

34、>  另外,對程序的不斷調(diào)試,是我的查錯能力有了很大的提高。</p><p><b>  附錄</b></p><p><b>  【程序清單】</b></p><p>  文件——航空售票管理系統(tǒng)v-1.0.cpp</p><p>  #include <fstream><

35、/p><p>  #include <iostream></p><p>  using namespace std;</p><p>  #include "class/Traffic_system.h"</p><p>  int main()</p><p><b>  {&

36、lt;/b></p><p>  Traffic_system civil_aviation;</p><p>  //若文件不存在,則新建文件</p><p>  ofstream newfile( "flight information.txt", ios::app );</p><p>  if (!newfi

37、le)</p><p><b>  {</b></p><p>  cerr << "文件\"flight information.txt\"無法打開!\n";</p><p><b>  exit(2);</b></p><p><b>

38、;  }</b></p><p>  newfile.close();</p><p><b>  int tab;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  c

39、out << "\n>>>>>>>>>>>>>>>>>>>>>>>>>>歡迎進入航空售票管理系統(tǒng)<<<<<<<<<<<<<<<<<<<<<

40、;<<<<<<<<<"</p><p>  << "****** 主菜單: ***********"</p><p>  << "****** 1——更新航班信息

41、(需管理員身份驗證) 2——瀏覽航班信息 ***********"</p><p>  << "****** 3——查詢航班信息 4——訂票 和 退票 ***********"</p><p>  << "****** 5——清 屏

42、 0——退 出 系 統(tǒng) ***********"</p><p>  << "********************************************************************************"</p><p>  << "你需要做什么?(選擇0~4)

43、" << endl;</p><p>  cin >> tab;</p><p>  while(!(tab == 1 || tab == 2 || tab == 3 || tab == 4 || tab == 5 || tab == 0))</p><p><b>  {</b></p><

44、;p>  cout << "請輸入正確選擇(0~4):";</p><p>  cin >> tab;</p><p><b>  }</b></p><p>  switch(tab)</p><p><b>  {</b></p>

45、<p><b>  case 1:</b></p><p><b>  {</b></p><p>  civil_aviation.Manage();</p><p><b>  break;</b></p><p>  } //航線管理<

46、/p><p><b>  case 2:</b></p><p><b>  {</b></p><p>  civil_aviation.Scan();</p><p><b>  break;</b></p><p>  } //訂票

47、辦理</p><p><b>  case 3:</b></p><p><b>  {</b></p><p>  civil_aviation.Search();</p><p><b>  break;</b></p><p>  }

48、 //退票辦理</p><p><b>  case 4:</b></p><p><b>  {</b></p><p>  civil_aviation.BookRefund();</p><p><b>  break;</b></p><p&g

49、t;<b>  }</b></p><p>  case 5: system("cls"); break;</p><p>  case 0:return 0; //退出系統(tǒng)</p><p><b>  }</b></p><p><b>  }</b>

50、</p><p><b>  }</b></p><p>  文件——class/Traffic_system.h</p><p>  #include <vector></p><p>  using namespace std;</p><p>  #include "f

51、light.h"</p><p>  //用于對文件的操作</p><p>  class Traffic_system</p><p><b>  {</b></p><p><b>  public:</b></p><p>  Traffic_system()

52、</p><p><b>  {</b></p><p>  m_sum = 0;</p><p><b>  }</b></p><p>  void Manage();//管理航班信息</p><p>  void Scan();//瀏覽</p><p

53、>  int Search(int invoke = 0);//查詢功能</p><p>  void BookRefund();//訂票和退票</p><p><b>  private:</b></p><p>  void Read_file();//讀取文件</p><p>  void Save_file

54、();//保存文件</p><p><b>  private:</b></p><p>  int m_sum;//記錄航班數(shù)</p><p>  vector <Flight> v_array;//航班類數(shù)組</p><p><b>  };</b></p><p

55、>  文件——class/Traffic_system.cpp</p><p>  #include <fstream></p><p>  #include <iostream></p><p>  using namespace std;</p><p>  #include "Traffic_sy

56、stem.h"</p><p><b>  //讀取文件</b></p><p>  void Traffic_system::Read_file()</p><p><b>  {</b></p><p>  ifstream file( "flight information

57、.txt");</p><p>  if (!file)</p><p><b>  {</b></p><p>  cerr << "文件\"flight information.txt\"無法打開!\n";</p><p><b>  exit(

58、1);</b></p><p><b>  }</b></p><p>  m_sum = 0;</p><p>  while (!file.eof())</p><p><b>  {</b></p><p>  Flight fly;</p>

59、<p>  v_array.push_back(fly);//</p><p>  file >> v_array[m_sum++];</p><p><b>  }</b></p><p>  m_sum--;//</p><p>  file.close();</p><p&

60、gt;<b>  }</b></p><p><b>  //保存文件</b></p><p>  void Traffic_system::Save_file()</p><p><b>  {</b></p><p>  ofstream file( "fligh

61、t information.txt" , ios::trunc);</p><p>  if (!file)</p><p><b>  {</b></p><p>  cerr << "文件\"flight information.txt\"無法打開!\n";</p>

62、<p><b>  exit(2);</b></p><p><b>  }</b></p><p>  int i = -1;</p><p>  while (++i < m_sum)</p><p><b>  {</b></p><

63、p>  if (!v_array[i].If_deleted())</p><p><b>  {</b></p><p>  file << v_array[i];</p><p><b>  }</b></p><p><b>  }</b></p&

64、gt;<p>  file.close();</p><p><b>  }</b></p><p><b>  //管理航班信息</b></p><p>  void Traffic_system::Manage()</p><p><b>  {</b><

65、;/p><p>  char password[20];//用于存貯密碼</p><p>  int times = 3;</p><p>  cout << "登錄系統(tǒng)需驗證密碼!" << endl;</p><p>  //驗證密碼。三次錯誤后,就自動退出程序</p><p>

66、;<b>  do</b></p><p><b>  {</b></p><p><b>  times--;</b></p><p>  cout << "請輸入密碼:(默認000)";</p><p>  cin >> pass

67、word;</p><p>  if(strcmp(password, "000") == 0)//密碼是“000”</p><p><b>  {</b></p><p>  times = -1;</p><p><b>  break;</b></p><

68、;p><b>  }</b></p><p>  else if (times > 0)</p><p>  cout << " 密碼錯誤!\n 剩余" << times << "次機會!" << endl;</p><p>  }while(t

69、imes > 0);</p><p>  if(times != -1)</p><p><b>  {</b></p><p>  cout << "對不起!\n 您不是管理員! 不能使用此系統(tǒng)!" << endl;</p><p><b>  return;

70、</b></p><p><b>  }</b></p><p>  system("cls");</p><p><b>  while (1)</b></p><p><b>  {</b></p><p><b

71、>  int tab;</b></p><p>  cout << "\n******************************歡迎使用航班信息管理系統(tǒng)**************************\n"</p><p>  << "—————————————————————————————————————

72、———"</p><p>  << "\t**\t >>1——重新創(chuàng)建信息庫\t\t >>2——插入信息 **\n\t**\t >>3——修改信息\t\t >>4——刪除信息 **\n\t**\t >>5——刪除全部\t\t >>0——退出管理 **\n"</

73、p><p>  << "————————————————————————————————————————"</p><p>  << "你需要做什么?(選擇0~5)" << endl;</p><p>  cin >> tab;</p><p>  while

74、(!(tab == 1 || tab == 2 || tab == 3 || tab == 4 || tab == 5 || tab == 0))</p><p><b>  {</b></p><p>  cout << "請輸入正確選擇(0~5):";</p><p>  cin >> tab;&

75、lt;/p><p><b>  }</b></p><p>  switch(tab)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p><b>  {</b></p>

76、;<p>  m_sum = 0;</p><p>  Flight fly;</p><p>  cout << "請進行信息錄入。按“+”結(jié)束!\n";</p><p><b>  do</b></p><p>  v_array.push_back(fly);//<

77、;/p><p>  while (v_array[m_sum++].SetInfo());</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case 2:</b></p><p><

78、b>  {</b></p><p>  Read_file();</p><p>  Flight fly;</p><p>  cout << "請進行信息錄入。按“+”結(jié)束!\n";</p><p><b>  do</b></p><p> 

79、 v_array.push_back(fly);//</p><p>  while (v_array[m_sum++].SetInfo());</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case 3:</b

80、></p><p><b>  {</b></p><p>  char fnum[1][18];</p><p>  Read_file();</p><p>  cout << "請輸入您要修改信息的航班號:";</p><p>  cin >>

81、; fnum[0];</p><p>  int i = 0;</p><p>  for (; i < m_sum; i++)</p><p><b>  {</b></p><p>  if (v_array[i].If_match(fnum, '1'))</p><p>

82、;<b>  {</b></p><p>  cout << "該航班的原信息為:\n"</p><p>  << " ———————————————————————————————————————\n"</p><p>  << "丨 航 班 號 丨

83、 起 始 站 丨 終 點 站 丨起飛時間丨票價丨余 票丨"</p><p>  << " ———————————————————————————————————————\n";</p><p>  v_array[i].Display();</p><p>  cout << &qu

84、ot;請輸入正確信息!\n";</p><p>  v_array[i].SetInfo();</p><p>  m_sum++;//保持及總航線數(shù)不變</p><p><b>  break;</b></p><p><b>  }</b></p><p>&l

85、t;b>  }</b></p><p>  if (i == m_sum)</p><p><b>  {</b></p><p>  cout << "抱歉!您要修改的信息不存在!" << endl;</p><p><b>  return;&l

86、t;/b></p><p><b>  }</b></p><p>  m_sum++;//</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case 4:</b

87、></p><p><b>  {</b></p><p>  char fnum[1][18];</p><p>  Flight empty;//聲明"空"對象,用于刪除</p><p>  Read_file();</p><p>  cout << &

88、quot;請輸入您要刪除航班的航班號:";</p><p>  cin >> fnum[0];</p><p>  int i = 0;</p><p>  for (; i < m_sum; i++)</p><p><b>  {</b></p><p>  if

89、(v_array[i].If_match(fnum, '1'))</p><p><b>  {</b></p><p>  cout << "您要刪除的航班為:\n"</p><p>  << " ——————————————————————————————————————

90、—\n"</p><p>  << "丨 航 班 號 丨 起 始 站 丨 終 點 站 丨起飛時間丨票價丨余 票丨"</p><p>  << " ———————————————————————————————————————\n";</p><p>  v

91、_array[i].Display();</p><p>  v_array[i] = empty;</p><p>  m_sum++;//保持及總航線數(shù)不變</p><p><b>  break;</b></p><p><b>  }</b></p><p><

92、b>  }</b></p><p>  if (i == m_sum)</p><p><b>  {</b></p><p>  cout << "您要刪除的信息不存在!" << endl;</p><p><b>  return;</b&

93、gt;</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  case 5:m_sum = 1; break;</p><p>  case 0:return

94、;</p><p><b>  }</b></p><p>  cout << "《確認\\Y》 《取消\\N》\n請選擇:";</p><p><b>  char yn;</b></p><p><b>  do</b></p>

95、<p><b>  {</b></p><p>  cin >> yn;</p><p>  }while(!(yn == 'Y' || yn == 'y' || yn == 'N' || yn == 'n' ));</p><p>  if(yn ==

96、'Y' || yn == 'y')</p><p><b>  {</b></p><p>  m_sum--;//對應(yīng)m_sum++</p><p>  Save_file();</p><p>  cout << "操作成功!" << end

97、l;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //瀏覽</b></p><p>  void Traffic_system:

98、:Scan()</p><p><b>  {</b></p><p><b>  char c;</b></p><p>  Read_file();</p><p>  if (m_sum == 0)</p><p><b>  {</b></

99、p><p>  cout << "暫無信息!請等待管理人員更新!";</p><p><b>  return;</b></p><p><b>  }</b></p><p>  cout << "\t航班信息表:\n"</p>

100、;<p>  << " ———————————————————————————————————————\n"</p><p>  << "丨 航 班 號 丨 起 始 站 丨 終 點 站 丨起飛時間丨票價丨余 票丨"</p><p>  << " ————

101、———————————————————————————————————\n";</p><p>  for (int i = 0; i < m_sum; i++)</p><p>  v_array[i].Display();</p><p>  cout << "按任意鍵返回主菜單!";</p><

102、;p><b>  cin >> c;</b></p><p><b>  }</b></p><p><b>  //查詢功能</b></p><p>  int Traffic_system::Search(int invoke)</p><p><b

103、>  {</b></p><p><b>  int tab;</b></p><p>  Read_file();</p><p>  cout << "*************************************************************************\n

104、*** >>1——按航班號查詢 >>2——按站點查詢 >>0——返回 ***\n*************************************************************************\n請選擇(0~2):"</p><p><b>  << endl;</b>

105、</p><p>  cin >> tab;</p><p>  while(!(tab == 1 || tab == 2 || tab == 0))</p><p><b>  {</b></p><p>  cout << "請輸入正確選擇(0~2):";</p>

106、;<p>  cin >> tab;</p><p><b>  }</b></p><p>  char str[2][18], ta;</p><p>  if (tab == 0)</p><p>  return -1;</p><p>  else if (ta

107、b == 1)</p><p><b>  {</b></p><p>  cout << "請輸入航班號:";</p><p>  cin >> str[0];</p><p><b>  ta = '1';</b></p>

108、<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cout << "請輸入出發(fā)站:";</p><p>  cin >> str[0]

109、;</p><p>  cout << "請輸入終點站:";</p><p>  cin >> str[1];</p><p><b>  ta = '2';</b></p><p><b>  }</b></p><p

110、>  for (int i = 0; i < m_sum; i++)</p><p><b>  {</b></p><p>  if (v_array[i].If_match(str, ta))</p><p><b>  {</b></p><p>  cout << &

111、quot;您要查詢的結(jié)果如下:\n"</p><p>  << " ———————————————————————————————————————\n"</p><p>  << "丨 航 班 號 丨 起 始 站 丨 終 點 站 丨起飛時間丨票價丨余 票丨"</p>

112、<p>  << " ———————————————————————————————————————"</p><p><b>  << endl;</b></p><p>  v_array[i].Display();</p><p>  if (invoke == 0)</p&g

113、t;<p><b>  {</b></p><p>  cout << "按任意鍵返回主菜單!";</p><p><b>  char c;</b></p><p><b>  cin >> c;</b></p><p&g

114、t;<b>  }</b></p><p><b>  return i;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  cout << "抱歉!您查詢的航班不存在!&qu

115、ot; << endl;</p><p>  return -1;</p><p><b>  }</b></p><p><b>  //訂票和退票</b></p><p>  void Traffic_system::BookRefund()</p><p>

116、<b>  {</b></p><p><b>  while (1)</b></p><p><b>  {</b></p><p><b>  cout</b></p><p>  << "********************

117、******歡迎進入機票服務(wù)系統(tǒng)**********************\n\n"</p><p>  << "——————————————————————————————————\n"</p><p>  << "請選擇:\t\t\t\t\t\t\t\t ***\n***\t >>1——訂票\t>>

118、;2——退票\t>>0——返回主菜單 ***\n"</p><p>  << "——————————————————————————————————" << endl;</p><p><b>  int tab;</b></p><p>  cin >>

119、; tab;</p><p>  while(!(tab == 1 || tab == 2 || tab == 0))</p><p><b>  {</b></p><p>  cout << "請輸入正確選擇(0~2):";</p><p>  cin >> tab;<

120、;/p><p><b>  }</b></p><p><b>  char ta;</b></p><p>  switch(tab)</p><p><b>  {</b></p><p><b>  case 1:</b><

121、/p><p><b>  {</b></p><p>  cout << "請先查找該航班:" << endl;</p><p><b>  int i;</b></p><p>  i = Search(1);</p><p>  i

122、f (i != -1 && v_array[i].Book())</p><p><b>  {</b></p><p>  cout << "《確認訂票\\Y》 《取消訂票\\N》\n請選擇:";</p><p><b>  do</b></p><p

123、><b>  {</b></p><p>  cin >> ta;</p><p>  }while(!(ta == 'Y' || ta == 'y' || ta == 'N' || ta == 'n' ));</p><p>  if(ta == 'Y&

124、#39; || ta == 'y')</p><p><b>  {</b></p><p>  Save_file();</p><p>  cout << "訂票成功!" << endl;</p><p><b>  }</b><

125、/p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case 2:</b></p><p><b>  {</b&g

126、t;</p><p>  char str[1][18];</p><p>  Read_file();</p><p>  cout << "請輸入航班號:";</p><p>  cin >> str[0];</p><p>  int i = 0;</p>

127、<p>  for (; i < m_sum; i++)</p><p><b>  {</b></p><p>  if (v_array[i].If_takeoff())</p><p><b>  continue;</b></p><p>  if (v_array[i].

128、If_match(str, '1'))</p><p><b>  {</b></p><p>  v_array[i].Refund();</p><p>  cout << "《確認退票\\Y》 《取消退票\\N》\n請選擇:";</p><p><b> 

129、 do</b></p><p><b>  {</b></p><p>  cin >> ta;</p><p>  }while(!(ta == 'Y' || ta == 'y' || ta == 'N' || ta == 'n' ));</p>

130、;<p>  if(ta == 'Y' || ta == 'y')</p><p><b>  {</b></p><p>  Save_file();</p><p>  cout << "退票成功!" << endl;</p><p

131、><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (i == m_sum)</p><p>&

132、lt;b>  {</b></p><p>  cout << "不存在該航班或該航班已起飛!不能退票。" << endl;</p><p><b>  break;</b></p><p><b>  }</b></p><p><

133、b>  }</b></p><p>  case 0:return;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  文件——class/ fl

134、ight.h</p><p>  class Flight</p><p><b>  {</b></p><p><b>  public:</b></p><p><b>  Flight()</b></p><p><b>  {<

135、/b></p><p>  m_fnum[0] = '+';</p><p><b>  }</b></p><p>  bool SetInfo();//設(shè)置航班信息</p><p>  friend istream& operator>>(istream& in, F

136、light& cp);//提取運算符重載</p><p>  friend ostream& operator<<(ostream& out, Flight& cp);//插入運算符重載</p><p>  void Display();//輸出航班信息</p><p>  bool Book();//訂票</p&g

137、t;<p>  void Refund();//退票</p><p>  bool If_takeoff();//判斷是否起飛</p><p>  bool If_deleted();//判斷是否刪除</p><p>  bool If_match(char (*p)[18], char ta);//判斷航班號或站點名是否相同</p>&

138、lt;p><b>  private:</b></p><p>  char m_fnum[10];//航班號</p><p>  int m_ftime[2];//起飛時間</p><p>  char m_fstar[18];//起始站</p><p>  char m_fdestination[18];//終

139、點站</p><p>  int m_fprice;//票價</p><p>  int m_fseat;//票數(shù)</p><p><b>  };</b></p><p>  文件——class/ flight.cpp</p><p>  #include <iostream><

140、;/p><p>  #include <string></p><p>  #include <iomanip></p><p>  #include <ctime>//time.h in C</p><p>  using namespace std;</p><p>  #inclu

141、de <stdio.h></p><p>  #include "flight.h"</p><p><b>  //<<運算符重載</b></p><p>  istream& operator>>(istream& in, Flight& cp)</p&g

142、t;<p><b>  {</b></p><p>  in >> cp.m_fnum >> cp.m_fstar >> cp.m_fdestination >> cp.m_ftime[0] >> cp.m_ftime[1] >> cp.m_fprice >> cp.m_fseat;</p

143、><p>  return in;</p><p><b>  }</b></p><p>  ostream& operator<<(ostream& out, Flight& cp)</p><p><b>  {</b></p><p>

144、  out << cp.m_fnum << " " << cp.m_fstar << " " << cp.m_fdestination << " " << cp.m_ftime[0] << " " << cp.m_ftime[1] << &

145、quot; " << cp.m_fprice << " " << cp.m_fseat << "\n";</p><p>  return out;</p><p><b>  }</b></p><p><b>  //獲取系統(tǒng)時間&l

146、t;/b></p><p>  int get_systemtime()</p><p><b>  {</b></p><p>  time_t now;</p><p>  struct tm *fmt;</p><p>  time(&now);</p><

147、p>  fmt = localtime(&now);</p><p>  return (fmt->tm_hour * 60 + fmt->tm_min);</p><p><b>  }</b></p><p><b>  //判斷是否起飛</b></p><p>  b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論