版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、內(nèi)蒙古科技大學(xué)本科生C+程序設(shè)計(jì)課程設(shè)計(jì)說明書題 目:航空售票管理系統(tǒng)學(xué)生:完美主義學(xué) 號(hào):專 業(yè):計(jì)算科學(xué)與技術(shù)班 級(jí):計(jì)2010-1班指導(dǎo)教師:學(xué)習(xí)文檔 僅供參考【摘要】隨著科技的發(fā)展和人們生活水平的日益提高,人們?cè)诓粩嘧非蟾涌旖莸慕煌ǚ绞揭詽M足人們快節(jié)奏的生活方式,航空系統(tǒng)在交通系統(tǒng)中已扮演著一個(gè)越來越重要的角色。然而,交通的快捷離不開信息的快捷。隨著隨著電腦的發(fā)展和普及,人們的生活方式發(fā)生了巨大的改變,電腦在代替和延伸腦力勞動(dòng)方面發(fā)揮著越來越重要的作用。在交通系統(tǒng)中,有大量的數(shù)據(jù)需要被處理,而這些工作有人來完成幾乎是不可能的,而交給電腦處理,就可以很好地滿足我們的需求。航空售票管理系
2、統(tǒng)可以根據(jù)乘客和管理人員的要求,進(jìn)行方便快速的查詢、購(gòu)票、退票和管理等工作。本文介紹了簡(jiǎn)易航空售票管理系統(tǒng)的實(shí)現(xiàn)過程?!娟P(guān)鍵詞】航空售票管理系統(tǒng) 動(dòng)態(tài)數(shù)組 類和對(duì)象 文件操作 運(yùn)算符重載 多文件結(jié)構(gòu)成績(jī)?cè)u(píng)定標(biāo)準(zhǔn)課程設(shè)計(jì)的驗(yàn)收答辯采取“講解程序+提問+即時(shí)編程”的方式??己隧?xiàng)目評(píng)價(jià)質(zhì)量成績(jī)程序功能完全實(shí)現(xiàn),并能通過答辯。60%A能完全正確答復(fù)提問;B問題答復(fù)的基本意思正確;C不能答復(fù)或答復(fù)錯(cuò)誤,抽取程序小的功能即時(shí)編程,能完成;D不能答復(fù)或答復(fù)錯(cuò)誤,即時(shí)編程無法完成;程序設(shè)計(jì)符合面向?qū)ο蟮乃枷牒驮瓌t,結(jié)構(gòu)合理15A程序結(jié)構(gòu)層次分明,提取出各個(gè)實(shí)體類,類的設(shè)計(jì)合理;B程序結(jié)構(gòu)層次分明,具有客戶類和
3、服務(wù)類;C類的設(shè)計(jì)基本正確;D幾乎在一個(gè)類或者方法中實(shí)現(xiàn)了大部分的邏輯,結(jié)構(gòu)不夠清晰;程序的風(fēng)格10%A遵守編碼標(biāo)準(zhǔn),有良好的風(fēng)格; 以下問題每出現(xiàn)一項(xiàng)成績(jī)降一個(gè)等級(jí): 1類、方法和變量命名不符合標(biāo)準(zhǔn); 2方法和屬性前缺少注釋; 3程序沒有適當(dāng)縮進(jìn);設(shè)計(jì)說明書15%從以下幾方面考核: 1結(jié)構(gòu)完整 2圖表正確 3文字通順 4版面工整目 錄第一章 問題描述1第二章 問題分析2 闡述你對(duì)問題的理解、解決問題的方案說明2 系統(tǒng)功能模塊的劃分2第三章 數(shù)據(jù)模型4 相關(guān)數(shù)據(jù)結(jié)構(gòu)的說明4 類的設(shè)計(jì)4 程序結(jié)構(gòu)說明,即程序各個(gè)部分之間如何協(xié)調(diào)來完成任務(wù)5 全局變量,重要形式參數(shù)、局部變量等等,它們的命名及用途
4、解釋6第四章 算法描述7 解題算法的設(shè)計(jì)思路介紹7 畫出程序流程圖7第五章 設(shè)計(jì)總結(jié)12附錄13參考文獻(xiàn)32 學(xué)習(xí)文檔 僅供參考第一章 問題描述1.1該航空售票管理系統(tǒng)必須用C+語(yǔ)言進(jìn)行設(shè)計(jì),要能表達(dá)C+語(yǔ)言的特性。1.2該系統(tǒng)至少要能提供以下服務(wù):(1) 錄入航班信息,格式為:航班號(hào)起始終點(diǎn)起飛時(shí)間經(jīng)濟(jì)艙票價(jià)剩余座位mu2164包頭北京20:3061087可不定時(shí)地增加航班數(shù)據(jù)。2瀏覽航班信息,可顯示出所有航班,如果當(dāng)前系統(tǒng)時(shí)間超過了某航班的起飛時(shí)間,則顯示“此次航班已發(fā)出”的提示信息。3查詢路線:可按航班編號(hào)查詢,可按起始站,終點(diǎn)站查詢4訂票和退票功能A:查詢航班編號(hào)或站點(diǎn)。當(dāng)剩余座位數(shù)大
5、于0,并且當(dāng)前系統(tǒng)時(shí)間小于起飛時(shí)間時(shí)才能售票,售票后自動(dòng)更新剩余座位數(shù)。B:退票時(shí),輸入退票的班次,當(dāng)本班航班未發(fā)出時(shí)才能退票,退票后自動(dòng)更新剩余座位數(shù)。第二章 問題分析從對(duì)問題的描述可以知道,我們需要建立的是具有能對(duì)數(shù)據(jù)錄入,追加,瀏覽,檢索和修改功能的軟件。由于乘客的數(shù)量較大且不固定,因此選擇用動(dòng)態(tài)數(shù)組來保存乘客的基本信息:航班號(hào)、起始站名、終點(diǎn)站名、起飛時(shí)間、經(jīng)濟(jì)參票價(jià)、余票量等等。所以我們建立一個(gè)可以動(dòng)態(tài)增長(zhǎng)的數(shù)組,在必要的時(shí)候?qū)?shù)組的內(nèi)容保存到文件中。系統(tǒng)主要實(shí)現(xiàn)的操作和功能是:錄入航班信息、瀏覽航班信息、查詢航線、訂票功能、退票功能。要實(shí)現(xiàn)這些功能,首先要使程序能實(shí)現(xiàn)查找功能,在查
6、找出到有效信息的前提之下,通過鏈表的賦值,更新信息和刪除退票人信息,滿足客戶的要求。2.1 闡述你對(duì)問題的理解、解決問題的方案說明根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:1分析系統(tǒng)中的各個(gè)實(shí)體之間的關(guān)系及其屬性和行為;2根據(jù)問題描述,設(shè)計(jì)系統(tǒng)的類層次;3完成類層次中各個(gè)類的描述(包括屬性和方法);4完成類中各個(gè)成.員函數(shù)的定義;5完成系統(tǒng)的應(yīng)用模塊;6功能調(diào)試;7完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說明書。2.2 系統(tǒng)功能模塊的劃分該系統(tǒng)總共包含四大功能模塊:一、 更新航班信息功能模塊該模塊為對(duì)航班信息的操作,僅向管理員開放使用,普通用戶不能使用該功能對(duì)航班信息進(jìn)行操作,故進(jìn)入該功能需進(jìn)行身份驗(yàn)
7、證。該模塊又被分為五個(gè)子功能模塊信息庫(kù)的重建、信息的插入、修改、刪除和清空數(shù)據(jù)。二、 瀏覽航班信息完成將文件中的航班信息按照要求格式全部輸出。三、 查詢航班信息可以實(shí)現(xiàn)按航班號(hào)和按站點(diǎn)的查詢并將查詢到的信息輸出。四、 訂票和退票系統(tǒng)該模塊根據(jù)訂票和退票操作的相似性,將這兩種操作放在一起。另外,由于各模塊函數(shù)是直接對(duì)文件進(jìn)行操作,所以各功能模塊是相互獨(dú)立的。第三章 數(shù)據(jù)模型3.1 相關(guān)數(shù)據(jù)結(jié)構(gòu)的說明本系統(tǒng)用到的容器主要是動(dòng)態(tài)增長(zhǎng)的vector ,使用該容器需用頭文件#include <vector>,其通過語(yǔ)句vector <Flight> v_array;申請(qǐng)了一個(gè)可以
8、動(dòng)態(tài)增長(zhǎng)的數(shù)組。該數(shù)組的元素類Flight的對(duì)象,通過語(yǔ)句Flight fly; v_array.push_back(fly);可實(shí)現(xiàn)數(shù)組v_array的增長(zhǎng)。該容器用來存放航班類Flight的對(duì)象,使用該容器可以可以存放個(gè)數(shù)不確定的對(duì)象,且可以方便地進(jìn)行訪問。3.2 類的設(shè)計(jì)程序中一共定義了兩個(gè)類:Flight類和Traffic_system類。在Flight類里定義了私有數(shù)據(jù)成員m_fnum10表示航班號(hào), m_ftime2表示起飛時(shí)間,char m_fstar18表示起始站, m_fdestination18表示終點(diǎn)站, m_fprice表示票價(jià), m_fseat表示票數(shù);定義了共有的成
9、員函數(shù)bool SetInfo()用來設(shè)置航班信息,friend istream& operator>>(istream& in, Flight& cp)用來重載提取運(yùn)算符>>,friend ostream& operator<<(ostream& out, Flight& cp)用來重載插入運(yùn)算符<<,void Display()用來輸出航班信息,bool Book()用來訂票,void Refund()用來退票,bool If_takeoff()用來判斷是否起飛,bool If_deleted(
10、)用來判斷該航班是否被刪除,bool If_match(char (*p)18, char ta)用來判斷航班號(hào)或站點(diǎn)名是否相同。另一個(gè)類為Traffic_system類,其中定義了私有數(shù)據(jù)成員m_sum和v_array,v_array是數(shù)組名,用來存放航班類對(duì)象,m_sum表示數(shù)組v_array中航班類對(duì)象的個(gè)數(shù);還定義了私有的成員函數(shù)void Read_file()用來讀取文件,void Save_file()用來保存數(shù)據(jù)到文件,以及公有的數(shù)據(jù)成員函數(shù)void Manage()用來管理航班信息,void Scan()用來瀏覽航班信息,int Search(int invoke = 0)完成
11、查詢功能,void BookRefund()用來訂票和退票。兩個(gè)類之間是組合的關(guān)系,其中Flight類是Traffic_system類的子類。3.3 程序結(jié)構(gòu)說明,即程序各個(gè)部分之間如何協(xié)調(diào)來完成任務(wù)程序的結(jié)構(gòu)圖如下:主函數(shù)訂票 和 退票瀏覽航班信息查詢航班信息更新航班信息插入信息刪除全部刪除信息修改信息重新創(chuàng)建信息庫(kù)保存文件讀取文件如上圖,程序中各功能模塊所需的數(shù)據(jù)都直接取自文件,這樣保證了各模塊的獨(dú)立性和數(shù)據(jù)的安全性。并且只有相應(yīng)的模塊進(jìn)行寫的操作,并且數(shù)據(jù)的寫入不必依賴其他模塊,這樣使用戶可以僅使用其中某一項(xiàng)功能,而不必進(jìn)行多余的操作。3.4 全局變量,重要形式參數(shù)、局部變量等等,它們的
12、命名及用途解釋(1) 整個(gè)程序中未使用全局變量。(2) 重要形參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類對(duì)象的輸入重載。B) 插入運(yùn)算符重載函數(shù)ostream& operator<<(ostream& out, Flight&
13、; cp)中使用了形參out和cp,其作用與上面類似。C) 函數(shù)bool Flight:If_match(char (*p)18, char ta)中使用了形參p 和ta,形參p為指向字符數(shù)組的指針,它用來指向一個(gè)大小為18的字符數(shù)組;形參ta為字符型,其作用是使該函數(shù)區(qū)分航班號(hào)和站點(diǎn)名兩種比較。D) 函數(shù)int Traffic_system:Search(int invoke = 0)中使用了形參invoke,該形參為int型并設(shè)置默認(rèn)參數(shù)0,其作用為區(qū)分調(diào)用者,以便輸出相應(yīng)的提示信息。第四章 算法描述4.1 解題算法的設(shè)計(jì)思路介紹首先根據(jù)問題描述抽象出一個(gè)航班類,封裝了航班的數(shù)據(jù)信息和方法
14、。數(shù)據(jù)里主要有航班的航班號(hào)、起飛時(shí)間、站點(diǎn)等信息,方法主要是對(duì)該類中數(shù)據(jù)的值的輸入、輸出對(duì)本班次機(jī)票的管理,對(duì)時(shí)間、站名等的核對(duì),另外為了方便對(duì)文件的輸出和讀取,還以友元的形式重載了提取和插入運(yùn)算符。由于有航班有多組,為了方便管理各個(gè)對(duì)象,所以有定義了一個(gè)Traffic_system類,將Flight類的對(duì)象作為Traffic_system類的數(shù)據(jù)成員。Traffic_system類中還定義了兩個(gè)私有的成員函數(shù)完成對(duì)文件的讀寫。共有的成員函數(shù)主要是Manage(),void Scan(), Search(int invoke = 0)和BookRefund(),用來完成系統(tǒng)的幾大功能。4.2
15、畫出程序流程圖文件“”中主函數(shù)流程圖main()tab=0 tab=5 tab=4清屏訂票和退票break;break; tab=3 tab=2 tab=1 開始輸入tab輸出菜單瀏覽管理查詢break;break;break;YNYYYYYNNNN結(jié)束文件“class/Traffic_system.cpp”中類中Traffic_system中瀏覽函數(shù)void Scan()開始重建i < m_sum 刪除全部刪除全部返回m_su =0 讀文件i <= 0輸出表頭YNNY查詢函數(shù)Search(int invoke = 0)開始讀文件輸出提示信息輸入tabtab=0 返回 -1tab=
16、1 輸入str0, str1輸入 str0i < m_sum NYta<=1ta<=2v_arrayi.If_match(str, ta) 返回 iYNi+YYNNi<=0訂票退票函數(shù)BookRefund()tab=0 tab=2 tab=1 開始輸入tab輸出菜單查詢break;YYYNN結(jié)束訂票保存查詢break;退票保存第五章 設(shè)計(jì)總結(jié)此課程設(shè)計(jì)完成了對(duì)航線查詢、訂票、退票等功能的設(shè)計(jì)操作,并且為了插入和刪除方便,運(yùn)用動(dòng)態(tài)數(shù)組做存儲(chǔ)結(jié)構(gòu)。此課程設(shè)計(jì)還包含了清屏功能以及退出功能。對(duì)程序在運(yùn)行時(shí)輸入錯(cuò)誤操作的修改,提供了一定方便條件基本上能安全的運(yùn)行,具備的功能符合題
17、目的要求。用了文件的操作,是此程序的最大優(yōu)點(diǎn)。程序?qū)懙倪€算簡(jiǎn)練,結(jié)構(gòu)清晰,各個(gè)模塊的分工和功能明確。經(jīng)過兩周的課程設(shè)計(jì),我認(rèn)識(shí)到把課堂上老師講的知識(shí)運(yùn)用到實(shí)際操作中的重要性。我這次課程設(shè)計(jì)的題目是航空訂票系統(tǒng),在開始階段,根本無從下手,后來通過查閱一些相關(guān)資料和老師的耐心講解,最終成功完成整個(gè)程序的設(shè)計(jì)。通過這次課設(shè)我對(duì)C+語(yǔ)言中的類的定義、運(yùn)算符重載等知識(shí)有了進(jìn)一步的理解,對(duì)流程圖的畫法更加熟練,對(duì)程序的開發(fā)思路有了一定的理解,我想這在以后的學(xué)習(xí)和工作中都會(huì)有幫助的,更使我意識(shí)到了學(xué)習(xí)C+語(yǔ)言的重要性。程序中運(yùn)用了多文件結(jié)構(gòu),雖然程序不是太大,但多文件結(jié)構(gòu)的使用是我模仿正規(guī)軟件的結(jié)構(gòu)來寫的,
18、我想這對(duì)我以后的提高有幫助。另外,對(duì)程序的不斷調(diào)試,是我的查錯(cuò)能力有了很大的提高。附錄【程序清單】文件#include <fstream>#include <iostream>using namespace std;#include "class/Traffic_system.h"int main()Traffic_system civil_aviation;/假設(shè)文件不存在,則新建文件ofstream newfile( "flight information.txt", ios:app );if (!newfile)cerr &
19、lt;< "文件"flight information.txt"無法打開!n"exit(2);newfile.close();int tab;while(1)cout << "n>>>>>>>>>>>>>>>>>>>>>>>>>>歡送進(jìn)入航空售票管理系統(tǒng)<<<<<<<<<<<<<<<&
20、lt;<<<<<<<<<<<<<<" << "* 主菜單: *" << "* 1更新航班信息需管理員身份驗(yàn)證 2瀏覽航班信息 *" << "* 3查詢航班信息 4訂票 和 退票 *" << "* 5清 屏 0退 出 系 統(tǒng) *" << "*" << "你需要做什么?選擇04" << endl;cin
21、>> tab;while(!(tab = 1 | tab = 2 | tab = 3 | tab = 4 | tab = 5 | tab = 0)cout << "請(qǐng)輸入正確選擇04:"cin >> tab;switch(tab)case 1:civil_aviation.Manage();break; /航線管理case 2:civil_aviation.Scan();break; /訂票辦理case 3:civil_aviation.Search();break; /退票辦理case 4:civil_aviation.BookRefu
22、nd();break;case 5: system("cls"); break;case 0:return 0; /退出系統(tǒng)文件class/Traffic_system.h#include <vector>using namespace std;#include "flight.h"/用于對(duì)文件的操作class Traffic_systempublic: Traffic_system() m_sum = 0; void Manage();/管理航班信息void Scan();/瀏覽int Search(int invoke = 0);/查詢功
23、能void BookRefund();/訂票和退票private:void Read_file();/讀取文件void Save_file();/保存文件private:int m_sum;/記錄航班數(shù)vector <Flight> v_array;/航班類數(shù)組;文件class/Traffic_system.cpp#include <fstream>#include <iostream>using namespace std;#include "Traffic_system.h"/讀取文件void Traffic_system:Read_
24、file()ifstream file( "flight information.txt");if (!file)cerr << "文件"flight information.txt"無法打開!n"exit(1);m_sum = 0;while (!file.eof()Flight fly;v_array.push_back(fly);/file >> v_arraym_sum+;m_sum-;/file.close();/保存文件void Traffic_system:Save_file()ofstream
25、file( "flight information.txt" , ios:trunc);if (!file)cerr << "文件"flight information.txt"無法打開!n"exit(2);int i = -1;while (+i < m_sum)if (!v_arrayi.If_deleted()file << v_arrayi;file.close();/管理航班信息void Traffic_system:Manage()char password20;/用于存貯密碼int time
26、s = 3;cout << "登錄系統(tǒng)需驗(yàn)證密碼!" << endl;/驗(yàn)證密碼。三次錯(cuò)誤后,就自動(dòng)退出程序dotimes-;cout << "請(qǐng)輸入密碼:默認(rèn)000"cin >> password;if(strcmp(password, "000") = 0)/密碼是“000”times = -1;break;else if (times > 0)cout << " 密碼錯(cuò)誤!n 剩余" << times << "
27、次時(shí)機(jī)!" << endl;while(times > 0);if(times != -1)cout << "對(duì)不起!n 您不是管理員! 不能使用此系統(tǒng)!" << endl;return;system("cls");while (1)int tab;cout << "n*歡送使用航班信息管理系統(tǒng)*n" << "" << "t*t >>1重新創(chuàng)建信息庫(kù)tt >>2插入信息 *nt*t >&g
28、t;3修改信息tt >>4刪除信息 *nt*t >>5刪除全部tt >>0退出管理 *n" << "" << "你需要做什么?選擇05" << endl;cin >> tab;while(!(tab = 1 | tab = 2 | tab = 3 | tab = 4 | tab = 5 | tab = 0)cout << "請(qǐng)輸入正確選擇05:"cin >> tab;switch(tab)case 1:m_sum =
29、0;Flight fly;cout << "請(qǐng)進(jìn)行信息錄入。按“+”結(jié)束!n"do v_array.push_back(fly);/while (v_arraym_sum+.SetInfo(); break;case 2:Read_file();Flight fly;cout << "請(qǐng)進(jìn)行信息錄入。按“+”結(jié)束!n"do v_array.push_back(fly);/while (v_arraym_sum+.SetInfo(); break; case 3: char fnum118; Read_file(); cout &l
30、t;< "請(qǐng)輸入您要修改信息的航班號(hào):" cin >> fnum0; int i = 0; for (; i < m_sum; i+) if (v_arrayi.If_match(fnum, '1') cout << "該航班的原信息為:n" << " n" << "丨 航 班 號(hào) 丨 起 始 站 丨 終 點(diǎn) 站 丨起飛時(shí)間丨票價(jià)丨余 票丨" << " n" v_arrayi.Display(); cout
31、<< "請(qǐng)輸入正確信息!n" v_arrayi.SetInfo(); m_sum+;/保持及總航線數(shù)不變 break; if (i = m_sum) cout << "抱歉!您要修改的信息不存在!" << endl; return; m_sum+;/ break; case 4: char fnum118; Flight empty;/聲明"空"對(duì)象,用于刪除 Read_file(); cout << "請(qǐng)輸入您要?jiǎng)h除航班的航班號(hào):" cin >> fnu
32、m0; int i = 0; for (; i < m_sum; i+) if (v_arrayi.If_match(fnum, '1') cout << "您要?jiǎng)h除的航班為:n" << " n" << "丨 航 班 號(hào) 丨 起 始 站 丨 終 點(diǎn) 站 丨起飛時(shí)間丨票價(jià)丨余 票丨" << " n" v_arrayi.Display(); v_arrayi = empty; m_sum+;/保持及總航線數(shù)不變 break; if (i = m_su
33、m) cout << "您要?jiǎng)h除的信息不存在!" << endl; return; break; case 5:m_sum = 1; break; case 0:return;cout << "確認(rèn)Y 取消Nn請(qǐng)選擇:"char yn;docin >> yn;while(!(yn = 'Y' | yn = 'y' | yn = 'N' | yn = 'n' );if(yn = 'Y' | yn = 'y')m_s
34、um-;/對(duì)應(yīng)m_sum+Save_file();cout << "操作成功!" << endl;/瀏覽void Traffic_system:Scan()char c;Read_file();if (m_sum = 0)cout << "暫無信息!請(qǐng)等待管理人員更新!"return;cout << "t航班信息表:n" << " n" << "丨 航 班 號(hào) 丨 起 始 站 丨 終 點(diǎn) 站 丨起飛時(shí)間丨票價(jià)丨余 票丨" &
35、lt;< " n"for (int i = 0; i < m_sum; i+)v_arrayi.Display();cout << "按任意鍵返回主菜單!"cin >> c;/查詢功能int Traffic_system:Search(int invoke)int tab;Read_file();cout << "*n* >>1按航班號(hào)查詢 >>2按站點(diǎn)查詢 >>0返回 *n*n請(qǐng)選擇02:" << endl;cin >> ta
36、b;while(!(tab = 1 | tab = 2 | tab = 0)cout << "請(qǐng)輸入正確選擇02:"cin >> tab;char str218, ta;if (tab = 0) return -1;else if (tab = 1)cout << "請(qǐng)輸入航班號(hào):"cin >> str0;ta = '1'elsecout << "請(qǐng)輸入出發(fā)站:"cin >> str0;cout << "請(qǐng)輸入終點(diǎn)站:&quo
37、t;cin >> str1;ta = '2'for (int i = 0; i < m_sum; i+)if (v_arrayi.If_match(str, ta)cout << "您要查詢的結(jié)果如下:n" << " n" << "丨 航 班 號(hào) 丨 起 始 站 丨 終 點(diǎn) 站 丨起飛時(shí)間丨票價(jià)丨余 票丨" << " " << endl;v_arrayi.Display();if (invoke = 0)cout <
38、< "按任意鍵返回主菜單!"char c;cin >> c;return i;cout << "抱歉!您查詢的航班不存在!" << endl;return -1;/訂票和退票void Traffic_system:BookRefund()while (1)cout<< "*歡送進(jìn)入機(jī)票服務(wù)系統(tǒng)*nn"<< "n"<< "請(qǐng)選擇:tttttttt *n*t >>1訂票t>>2退票t>>0返回主菜
39、單 *n"<< "" << endl;int tab;cin >> tab;while(!(tab = 1 | tab = 2 | tab = 0)cout << "請(qǐng)輸入正確選擇02:"cin >> tab;char ta;switch(tab)case 1:cout << "請(qǐng)先查找該航班:" << endl;int i;i = Search(1);if (i != -1 && v_arrayi.Book()cout &l
40、t;< "確認(rèn)訂票Y 取消訂票Nn請(qǐng)選擇:"docin >> ta;while(!(ta = 'Y' | ta = 'y' | ta = 'N' | ta = 'n' );if(ta = 'Y' | ta = 'y')Save_file();cout << "訂票成功!" << endl;break;case 2:char str118;Read_file();cout << "請(qǐng)輸入航班號(hào):&q
41、uot;cin >> str0;int i = 0;for (; i < m_sum; i+)if (v_arrayi.If_takeoff()continue;if (v_arrayi.If_match(str, '1')v_arrayi.Refund();cout << "確認(rèn)退票Y 取消退票Nn請(qǐng)選擇:"docin >> ta;while(!(ta = 'Y' | ta = 'y' | ta = 'N' | ta = 'n' );if(ta = &
42、#39;Y' | ta = 'y')Save_file();cout << "退票成功!" << endl;break;if (i = m_sum)cout << "不存在該航班或該航班已起飛!不能退票。" << endl;break; case 0:return;文件class Flightpublic:Flight()m_fnum0 = '+'bool SetInfo();/設(shè)置航班信息friend istream& operator>>(is
43、tream& in, Flight& cp);/提取運(yùn)算符重載friend ostream& operator<<(ostream& out, Flight& cp);/插入運(yùn)算符重載void Display();/輸出航班信息bool Book();/訂票void Refund();/退票bool If_takeoff();/判斷是否起飛bool If_deleted();/判斷是否刪除bool If_match(char (*p)18, char ta);/判斷航班號(hào)或站點(diǎn)名是否相同private:char m_fnum10;/航班號(hào)in
44、t m_ftime2;/起飛時(shí)間char m_fstar18;/起始站char m_fdestination18;/終點(diǎn)站int m_fprice;/票價(jià)int m_fseat;/票數(shù);文件class/ flight.cpp#include <iostream>#include <string>#include <iomanip>#include <ctime>/time.h in Cusing namespace std;#include <stdio.h>#include "flight.h"/<<
45、運(yùn)算符重載istream& operator>>(istream& in, Flight& cp)in >> cp.m_fnum >> cp.m_fstar >> cp.m_fdestination >> cp.m_ftime0 >> cp.m_ftime1 >> cp.m_fprice >> cp.m_fseat;return in;ostream& operator<<(ostream& out, Flight& cp)out <
46、< cp.m_fnum << " " << cp.m_fstar << " " << cp.m_fdestination << " " << cp.m_ftime0 << " " << cp.m_ftime1 << " " << cp.m_fprice << " " << cp.m_fseat << "n&
47、quot;return out;/獲取系統(tǒng)時(shí)間int get_systemtime()time_t now;struct tm *fmt;time(&now);fmt = localtime(&now);return (fmt->tm_hour * 60 + fmt->tm_min);/判斷是否起飛bool Flight:If_takeoff()return (m_ftime0 * 60 + m_ftime1 <= get_systemtime();/判斷是否作廢bool Flight:If_deleted()return m_fnum0 = '-
48、39;/判斷航班號(hào)或站點(diǎn)名是否相同bool Flight:If_match(char (*p)18, char ta)if (ta = '1') return (!strcmp(m_fnum, p0);else return (!strcmp(m_fstar, p0) && !strcmp(m_fdestination, p1);/設(shè)置航班信息bool Flight:SetInfo()cout << "輸入航班號(hào):"cin >> m_fnum;if (m_fnum0 = '+') return fals
49、e;cout << "起始站:"cin >> m_fstar;cout << "終點(diǎn)站:"cin >> m_fdestination;cout << "請(qǐng)輸入起飛時(shí)間:格式:03:05"scanf("%d:%d",m_ftime, m_ftime + 1);cout << "票價(jià):"cin >> m_fprice;cout << "余票:"cin >> m_fseat;return true;/輸出航班信息void Flight:Display()if (If_takeoff()cout << "丨 " << setiosflags(ios:left) << setw(10) << m_fnum << "丨 " << setw(18) << m_fstar << "丨 " << setw(18) <&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人才租賃行業(yè)相關(guān)項(xiàng)目經(jīng)營(yíng)管理報(bào)告
- 手機(jī)指環(huán)扣產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 破碎錘項(xiàng)目營(yíng)銷計(jì)劃書
- 5G智能旅游行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 色帶卷軸細(xì)分市場(chǎng)深度研究報(bào)告
- 玻璃球瓶容器市場(chǎng)分析及投資價(jià)值研究報(bào)告
- 錄像帶出租行業(yè)經(jīng)營(yíng)分析報(bào)告
- 圓號(hào)產(chǎn)品供應(yīng)鏈分析
- 手持式真空吸塵器產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 繡花紡織品制手鐲首飾項(xiàng)目營(yíng)銷計(jì)劃書
- 如何處理進(jìn)度與工程質(zhì)量及成本之間的關(guān)系
- “小動(dòng)物外形的描寫”寫作指導(dǎo)課件
- 生豬進(jìn)場(chǎng)消毒流程培訓(xùn)課件
- 養(yǎng)老產(chǎn)業(yè)前期規(guī)劃方案
- 乒乓球運(yùn)動(dòng)損傷的預(yù)防與處理
- 《衛(wèi)星導(dǎo)航概述》課件
- 芳綸紙行業(yè)分析
- 骨科器械的清洗與消毒操作
- 幼兒輪滑課件
- 信息安全風(fēng)險(xiǎn)評(píng)估指南
- 鼓膜穿孔的手術(shù)恢復(fù)和術(shù)后護(hù)理建議
評(píng)論
0/150
提交評(píng)論