版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空售票系統(tǒng)+c++課程設(shè)計
- c語言課程設(shè)計航空售票系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計航空售票管理系統(tǒng)
- c課程設(shè)計鐵路售票系統(tǒng)
- 軟件工程課程設(shè)計《航空售票系統(tǒng)》
- c語言航班售票系統(tǒng)課程設(shè)計報告----航班售票系統(tǒng)
- 民航實踐應(yīng)用課程設(shè)計--航空售票系統(tǒng)
- 航空售票信息管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計報告
- 民航售票管理系統(tǒng)課程設(shè)計
- 管理信息系統(tǒng)課程設(shè)計--航空售票管理信息系統(tǒng)
- 課程設(shè)計—火車售票系統(tǒng)課程設(shè)計
- 火車售票系統(tǒng)課程設(shè)計
- 民航售票系統(tǒng)課程設(shè)計報告
- 面向?qū)ο笳n程設(shè)計--長途客運售票管理系統(tǒng)
- 火車售票系統(tǒng)課程設(shè)計報告
- 民航售票系統(tǒng)課程設(shè)計報告
- 航空訂票管理系統(tǒng)課程設(shè)計
- 課程設(shè)計報告---- 火車售票系統(tǒng)
- 火車售票系統(tǒng)課程設(shè)計報告
- 車站售票管理系統(tǒng)—軟件工程課程設(shè)計報告
評論
0/150
提交評論