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

下載本文檔

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

文檔簡(jiǎn)介

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

2、t;p>  專(zhuān) 業(yè):計(jì)算科學(xué)與技術(shù)</p><p>  班 級(jí):計(jì)2010-1班</p><p><b>  指導(dǎo)教師:XXX</b></p><p><b>  【摘要】</b></p><p>  隨著科技的發(fā)展和人們生活水平的日益提高,人們?cè)诓粩嘧非蟾涌旖莸慕煌ǚ绞揭詽M足人

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

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

5、lt;/p><p>  課程設(shè)計(jì)的驗(yàn)收答辯采取“講解程序+提問(wèn)+即時(shí)編程”的方式。</p><p><b>  目 錄</b></p><p>  第一章 問(wèn)題描述1</p><p>  第二章 問(wèn)題分析2</p><p>  2.1 闡述你對(duì)問(wèn)題的理解、解決問(wèn)題的方案說(shuō)明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)的說(shuō)明4</p><p>  3.2 類(lèi)的設(shè)計(jì)4</p><p>  3.3 程序結(jié)構(gòu)說(shuō)明,即程序各個(gè)部分之間如何協(xié)調(diào)來(lái)完成任務(wù)5</p><p>  3.4 全局變量,重

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

8、p><p><b>  參考文獻(xiàn)32</b></p><p>  ………………………………………………………………………………………………</p><p>  ………………………………………………………………………</p><p><b>  問(wèn)題描述</b></p><p>

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

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

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

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

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

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

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

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

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

18、r <Flight> v_array;申請(qǐng)了一個(gè)可以動(dòng)態(tài)增長(zhǎng)的數(shù)組。該數(shù)組的元素類(lèi)Flight的對(duì)象,通過(guò)語(yǔ)句Flight fly; v_array.push_back(fly);可實(shí)現(xiàn)數(shù)組v_array的增長(zhǎng)。</p><p>  該容器用來(lái)存放航班類(lèi)Flight的對(duì)象,使用該容器可以可以存放個(gè)數(shù)不確定的對(duì)象,且可以方便地進(jìn)行訪問(wèn)。</p><p><b>  類(lèi)的

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34、>  另外,對(duì)程序的不斷調(diào)試,是我的查錯(cuò)能力有了很大的提高。</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\"無(wú)法打開(kāi)!\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>>>>>>>>>>>>>>>>>>>>>>>>>>歡迎進(jìn)入航空售票管理系統(tǒng)<<<<<<<<<<<<<<<<<<<<<

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

41、(需管理員身份驗(yàn)證) 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 << "請(qǐng)輸入正確選擇(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>  //用于對(duì)文件的操作</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;//航班類(lèi)數(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\"無(wú)法打開(kāi)!\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\"無(wú)法打開(kāi)!\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)需驗(yàn)證密碼!" << endl;</p><p>  //驗(yàn)證密碼。三次錯(cuò)誤后,就自動(dòng)退出程序</p><p>

66、;<b>  do</b></p><p><b>  {</b></p><p><b>  times--;</b></p><p>  cout << "請(qǐng)輸入密碼:(默認(rèn)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 << " 密碼錯(cuò)誤!\n 剩余" << times << "次機(jī)會(huì)!" << endl;</p><p>  }while(t

69、imes > 0);</p><p>  if(times != -1)</p><p><b>  {</b></p><p>  cout << "對(duì)不起!\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)建信息庫(kù)\t\t >>2——插入信息 **\n\t**\t >>3——修改信息\t\t >>4——?jiǎng)h除信息 **\n\t**\t >>5——?jiǎng)h除全部\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 << "請(qǐng)輸入正確選擇(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 << "請(qǐng)進(jìn)行信息錄入。按“+”結(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 << "請(qǐng)進(jìn)行信息錄入。按“+”結(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 << "請(qǐng)輸入您要修改信息的航班號(hào):";</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>  << "丨 航 班 號(hào) 丨

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

84、ot;請(qǐng)輸入正確信息!\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;//聲明"空"對(duì)象,用于刪除</p><p>  Read_file();</p><p>  cout << &

88、quot;請(qǐng)輸入您要?jiǎng)h除航班的航班號(hào):";</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 << "您要?jiǎng)h除的航班為:\n"</p><p>  << " ——————————————————————————————————————

90、—\n"</p><p>  << "丨 航 班 號(hào) 丨 起 始 站 丨 終 點(diǎn) 站 丨起飛時(shí)間丨票價(jià)丨余 票丨"</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 << "您要?jiǎng)h除的信息不存在!" << 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 << "《確認(rèn)\\Y》 《取消\\N》\n請(qǐng)選擇:";</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--;//對(duì)應(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 << "暫無(wú)信息!請(qǐng)等待管理人員更新!";</p><p><b>  return;</b></p><p><b>  }</b></p><p>  cout << "\t航班信息表:\n"</p>

100、;<p>  << " ———————————————————————————————————————\n"</p><p>  << "丨 航 班 號(hào) 丨 起 始 站 丨 終 點(diǎn) 站 丨起飛時(shí)間丨票價(jià)丨余 票丨"</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——按航班號(hào)查詢 >>2——按站點(diǎn)查詢 >>0——返回 ***\n*************************************************************************\n請(qǐng)選擇(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 << "請(qǐng)輸入正確選擇(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 << "請(qǐng)輸入航班號(hào):";</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 << "請(qǐng)輸入出發(fā)站:";</p><p>  cin >> str[0]

109、;</p><p>  cout << "請(qǐng)輸入終點(diǎn)站:";</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>  << "丨 航 班 號(hào) 丨 起 始 站 丨 終 點(diǎn) 站 丨起飛時(shí)間丨票價(jià)丨余 票丨"</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、******歡迎進(jìn)入機(jī)票服務(wù)系統(tǒng)**********************\n\n"</p><p>  << "——————————————————————————————————\n"</p><p>  << "請(qǐng)選擇:\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 << "請(qǐng)輸入正確選擇(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 << "請(qǐng)先查找該航班:" << 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 << "《確認(rèn)訂票\\Y》 《取消訂票\\N》\n請(qǐng)選擇:";</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 << "請(qǐng)輸入航班號(hào):";</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 << "《確認(rèn)退票\\Y》 《取消退票\\N》\n請(qǐng)選擇:";</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);//提取運(yùn)算符重載</p><p>  friend ostream& operator<<(ostream& out, Flight& cp);//插入運(yùn)算符重載</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);//判斷航班號(hào)或站點(diǎn)名是否相同</p>&

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

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

評(píng)論

0/150

提交評(píng)論