版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
年4月19日C課程設(shè)計(jì)航空售票管理系統(tǒng)文檔僅供參考內(nèi)蒙古科技大學(xué)本科生《C++程序設(shè)計(jì)》課程設(shè)計(jì)說(shuō)明書題目:航空售票管理系統(tǒng)學(xué)生姓名:完美主義學(xué)號(hào):XXXXXXXX專業(yè):計(jì)算科學(xué)與技術(shù)班級(jí):計(jì)-1班指導(dǎo)教師:XXX【摘要】隨著科技的發(fā)展和人們生活水平的日益提高,人們?cè)诓粩嘧非蟾涌旖莸慕煌ǚ绞揭詽M足人們快節(jié)奏的生活方式,航空系統(tǒng)在交通系統(tǒng)中已扮演著一個(gè)越來(lái)越重要的角色。然而,交通的快捷離不開信息的快捷。隨著隨著計(jì)算機(jī)的發(fā)展和普及,人們的生活方式發(fā)生了巨大的改變,計(jì)算機(jī)在代替和延伸腦力勞動(dòng)方面發(fā)揮著越來(lái)越重要的作用。在交通系統(tǒng)中,有大量的數(shù)據(jù)需要被處理,而這些工作有人來(lái)完成幾乎是不可能的,而交給計(jì)算機(jī)處理,就能夠很好地滿足我們的需求。航空售票管理系統(tǒng)能夠根據(jù)乘客和管理人員的要求,進(jìn)行方便快速的查詢、購(gòu)票、退票和管理等工作。本文介紹了簡(jiǎn)易航空售票管理系統(tǒng)的實(shí)現(xiàn)過(guò)程?!娟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)收答辯采取“講解程序+提問(wèn)+即時(shí)編程”的方式??己隧?xiàng)目評(píng)價(jià)質(zhì)量成績(jī)程序功能完全實(shí)現(xiàn),并能經(jīng)過(guò)答辯。(60%)A能完全正確回答提問(wèn);B問(wèn)題回答的基本意思正確;C不能回答或回答錯(cuò)誤,抽取程序小的功能即時(shí)編程,能完成;D不能回答或回答錯(cuò)誤,即時(shí)編程無(wú)法完成;程序設(shè)計(jì)符合面向?qū)ο蟮乃枷牒驮瓌t,結(jié)構(gòu)合理(15)A程序結(jié)構(gòu)層次分明,提取出各個(gè)實(shí)體類,類的設(shè)計(jì)合理;B程序結(jié)構(gòu)層次分明,具有客戶類和服務(wù)類;C類的設(shè)計(jì)基本正確;D幾乎在一個(gè)類或者方法中實(shí)現(xiàn)了大部分的邏輯,結(jié)構(gòu)不夠清晰;程序的風(fēng)格(10%)A遵守編碼規(guī)范,有良好的風(fēng)格;以下問(wèn)題每出現(xiàn)一項(xiàng)成績(jī)降一個(gè)等級(jí):1.類、方法和變量命名不符合規(guī)范;2.方法和屬性前缺少注釋;3.程序沒有適當(dāng)縮進(jìn);設(shè)計(jì)說(shuō)明書(15%)從以下幾方面考核:1.結(jié)構(gòu)完整2.圖表正確3.文字通順4.版面工整
目錄第一章問(wèn)題描述 1第二章問(wèn)題分析 22.1闡述你對(duì)問(wèn)題的理解、解決問(wèn)題的方案說(shuō)明 22.2系統(tǒng)功能模塊的劃分 2第三章數(shù)據(jù)模型 43.1相關(guān)數(shù)據(jù)結(jié)構(gòu)的說(shuō)明 43.2類的設(shè)計(jì) 43.3程序結(jié)構(gòu)說(shuō)明,即程序各個(gè)部分之間如何協(xié)調(diào)來(lái)完成任務(wù) 53.4全局變量,重要形式參數(shù)、局部變量等等,它們的命名及用途解釋 6第四章算法描述 74.1解題算法的設(shè)計(jì)思路介紹 74.2畫出程序流程圖 7第五章設(shè)計(jì)總結(jié) 12附錄 13參考文獻(xiàn) 32………………………問(wèn)題描述1.1該航空售票管理系統(tǒng)必須用C++語(yǔ)言進(jìn)行設(shè)計(jì),要能體現(xiàn)C++語(yǔ)言的特性。1.2該系統(tǒng)至少要能提供下列服務(wù):錄入航班信息,格式為:航班號(hào)起始終點(diǎn)起飛時(shí)間經(jīng)濟(jì)艙票價(jià)剩余座位mu2164包頭北京20:3061087可不定時(shí)地增加航班數(shù)據(jù)。(2)瀏覽航班信息,可顯示出所有航班,如果當(dāng)前系統(tǒng)時(shí)間超過(guò)了某航班的起飛時(shí)間,則顯示“此次航班已發(fā)出”的提示信息。(3)查詢路線:可按航班編號(hào)查詢,可按起始站,終點(diǎn)站查詢(4)訂票和退票功能A:查詢航班編號(hào)或站點(diǎn)。當(dāng)剩余座位數(shù)大于0,而且當(dāng)前系統(tǒng)時(shí)間小于起飛時(shí)間時(shí)才能售票,售票后自動(dòng)更新剩余座位數(shù)。B:退票時(shí),輸入退票的班次,當(dāng)本班航班未發(fā)出時(shí)才能退票,退票后自動(dòng)更新剩余座位數(shù)。問(wèn)題分析從對(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ū)?shù)組的內(nèi)容保存到文件中。系統(tǒng)主要實(shí)現(xiàn)的操作和功能是:錄入航班信息、瀏覽航班信息、查詢航線、訂票功能、退票功能。要實(shí)現(xiàn)這些功能,首先要使程序能實(shí)現(xiàn)查找功能,在查找出到有效信息的前提之下,經(jīng)過(guò)鏈表的賦值,更新信息和刪除退票人信息,滿足客戶的要求。闡述你對(duì)問(wèn)題的理解、解決問(wèn)題的方案說(shuō)明根據(jù)系統(tǒng)功能要求,能夠?qū)?wèn)題解決分為以下步驟:(1)分析系統(tǒng)中的各個(gè)實(shí)體之間的關(guān)系及其屬性和行為;(2)根據(jù)問(wèn)題描述,設(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)使用說(shuō)明書。系統(tǒng)功能模塊的劃分該系統(tǒng)總共包含四大功能模塊:更新航班信息功能模塊該模塊為對(duì)航班信息的操作,僅向管理員開放使用,普通用戶不能使用該功能對(duì)航班信息進(jìn)行操作,故進(jìn)入該功能需進(jìn)行身份驗(yàn)證。該模塊又被分為五個(gè)子功能模塊——信息庫(kù)的重建、信息的插入、修改、刪除和清空數(shù)據(jù)。瀏覽航班信息完成將文件中的航班信息按照要求格式全部輸出。查詢航班信息能夠?qū)崿F(xiàn)按航班號(hào)和按站點(diǎn)的查詢并將查詢到的信息輸出。訂票和退票系統(tǒng)該模塊根據(jù)訂票和退票操作的相似性,將這兩種操作放在一起。另外,由于各模塊函數(shù)是直接對(duì)文件進(jìn)行操作,因此各功能模塊是相互獨(dú)立的。數(shù)據(jù)模型相關(guān)數(shù)據(jù)結(jié)構(gòu)的說(shuō)明本系統(tǒng)用到的容器主要是動(dòng)態(tài)增長(zhǎng)的vector,使用該容器需用頭文件#include<vector>,其經(jīng)過(guò)語(yǔ)句vector<Flight>v_array;申請(qǐng)了一個(gè)能夠動(dòng)態(tài)增長(zhǎng)的數(shù)組。該數(shù)組的元素類Flight的對(duì)象,經(jīng)過(guò)語(yǔ)句Flightfly;v_array.push_back(fly);可實(shí)現(xiàn)數(shù)組v_array的增長(zhǎng)。該容器用來(lái)存放航班類Flight的對(duì)象,使用該容器能夠能夠存放個(gè)數(shù)不確定的對(duì)象,且能夠方便地進(jìn)行訪問(wèn)。類的設(shè)計(jì)程序中一共定義了兩個(gè)類:Flight類和Traffic_system類。在Flight類里定義了私有數(shù)據(jù)成員m_fnum[10]表示航班號(hào),m_ftime[2]表示起飛時(shí)間,charm_fstar[18]表示起始站,m_fdestination[18]表示終點(diǎn)站,m_fprice表示票價(jià),m_fseat表示票數(shù);定義了共有的成員函數(shù)boolSetInfo()用來(lái)設(shè)置航班信息,friendistream&operator>>(istream&in,Flight&cp)用來(lái)重載提取運(yùn)算符>>,friendostream&operator<<(ostream&out,Flight&cp)用來(lái)重載插入運(yùn)算符<<,voidDisplay()用來(lái)輸出航班信息,boolBook()用來(lái)訂票,voidRefund()用來(lái)退票,boolIf_takeoff()用來(lái)判斷是否起飛,boolIf_deleted()用來(lái)判斷該航班是否被刪除,boolIf_match(char(*p)[18],charta)用來(lái)判斷航班號(hào)或站點(diǎn)名是否相同。另一個(gè)類為Traffic_system類,其中定義了私有數(shù)據(jù)成員m_sum和v_array,v_array是數(shù)組名,用來(lái)存放航班類對(duì)象,m_sum表示數(shù)組v_array中航班類對(duì)象的個(gè)數(shù);還定義了私有的成員函數(shù)voidRead_file()用來(lái)讀取文件,voidSave_file()用來(lái)保存數(shù)據(jù)到文件,以及公有的數(shù)據(jù)成員函數(shù)voidManage()用來(lái)管理航班信息,voidScan()用來(lái)瀏覽航班信息,intSearch(intinvoke=0)完成查詢功能,voidBookRefund()用來(lái)訂票和退票。兩個(gè)類之間是組合的關(guān)系,其中Flight類是Traffic_system類的子類。程序結(jié)構(gòu)說(shuō)明,即程序各個(gè)部分之間如何協(xié)調(diào)來(lái)完成任務(wù)程序的結(jié)構(gòu)圖如下:主函數(shù)主函數(shù)訂票和退票瀏覽航班信息查詢航班信息更新航班信息訂票和退票瀏覽航班信息查詢航班信息更新航班信息插入信息刪除全部刪除信息修改信息重新創(chuàng)立信息庫(kù)插入信息刪除全部刪除信息修改信息重新創(chuàng)立信息庫(kù)保存文件保存文件讀取文件讀取文件如上圖,程序中各功能模塊所需的數(shù)據(jù)都直接取自文件,這樣保證了各模塊的獨(dú)立性和數(shù)據(jù)的安全性。而且只有相應(yīng)的模塊進(jìn)行寫的操作,而且數(shù)據(jù)的寫入不必依賴其它模塊,這樣使用戶能夠僅使用其中某一項(xiàng)功能,而不必進(jìn)行多余的操作。全局變量,重要形式參數(shù)、局部變量等等,它們的命名及用途解釋整個(gè)程序中未使用全局變量。重要形參A)提取運(yùn)算符重載函數(shù)istream&operator>>(istream&in,Flight&cp)中使用了形參in和cp,形參in為引用“istream&”,與該函數(shù)的返回值相同,故能夠?qū)⒃摵瘮?shù)的返回值傳給該形參,實(shí)現(xiàn)“>>”操作符的連續(xù)使用。形參cp為引用“Flight&”,實(shí)現(xiàn)了對(duì)Flight類對(duì)象的輸入重載。B)插入運(yùn)算符重載函數(shù)ostream&operator<<(ostream&out,Flight&cp)中使用了形參out和cp,其作用與上面類似。C)函數(shù)boolFlight::If_match(char(*p)[18],charta)中使用了形參p和ta,形參p為指向字符數(shù)組的指針,它用來(lái)指向一個(gè)大小為18的字符數(shù)組;形參ta為字符型,其作用是使該函數(shù)區(qū)分航班號(hào)和站點(diǎn)名兩種比較。D)函數(shù)intTraffic_system::Search(intinvoke=0)中使用了形參invoke,該形參為int型并設(shè)置默認(rèn)參數(shù)0,其作用為區(qū)分調(diào)用者,以便輸出相應(yīng)的提示信息。算法描述解題算法的設(shè)計(jì)思路介紹首先根據(jù)問(wèn)題描述抽象出一個(gè)航班類,封裝了航班的數(shù)據(jù)信息和方法。數(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(),voidScan(),Search(intinvoke=0)和BookRefund(),用來(lái)完成系統(tǒng)的幾大功能。畫出程序流程圖文件“航空售票管理系統(tǒng)v-1.0.cpp”中主函數(shù)流程圖——main()tab=0tab=0tab=5tab=4清屏訂票和退票break;break;tab=3tab=2tab=1開始輸入tab輸出菜單瀏覽管理查詢break;break;break;YNYYYYYNNNN結(jié)束文件“class/Traffic_system.cpp”中類中Traffic_system中瀏覽函數(shù)——voidScan()開始開始重建i<m_sum刪除全部刪除全部返回m_su=0讀文件i<=0輸出表頭YNNY
查詢函數(shù)——Search(intinvoke=0)開始開始讀文件輸出提示信息輸入tabtab=0返回-1tab=1輸入str[0],str[1]輸入str[0]i<m_sumNYta<=’1’ta<=’2’v_array[i].If_match(str,ta)返回iYNi++YYNNi<=0
訂票退票函數(shù)BookRefund()tab=0tab=0tab=2tab=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)行,具備的功能符合題目的要求。用了文件的操作,是此程序的最大優(yōu)點(diǎn)。程序?qū)懙倪€算簡(jiǎn)練,結(jié)構(gòu)清晰,各個(gè)模塊的分工和功能明確。經(jīng)過(guò)兩周的課程設(shè)計(jì),我認(rèn)識(shí)到把課堂上老師講的知識(shí)運(yùn)用到實(shí)際操作中的重要性。我這次課程設(shè)計(jì)的題目是航空訂票系統(tǒng),在開始階段,根本無(wú)從下手,后來(lái)經(jīng)過(guò)查閱一些相關(guān)資料和老師的耐心講解,最終成功完成整個(gè)程序的設(shè)計(jì)。經(jīng)過(guò)這次課設(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)來(lái)寫的,我想這對(duì)我以后的提高有幫助。另外,對(duì)程序的不斷調(diào)試,是我的查錯(cuò)能力有了很大的提高。附錄【程序清單】文件——航空售票管理系統(tǒng)v-1.0.cpp#include<fstream>#include<iostream>usingnamespacestd;#include"class/Traffic_system.h"intmain(){ Traffic_systemcivil_aviation; //若文件不存在,則新建文件 ofstreamnewfile("flightinformation.txt",ios::app); if(!newfile) { cerr<<"文件\"flightinformation.txt\"無(wú)法打開!\n"; exit(2); } newfile.close(); inttab; while(1) { cout<<"\n>>>>>>>>>>>>>>>>>>>>>>>>>>歡迎進(jìn)入航空售票管理系統(tǒng)<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" <<"******主菜單:***********" <<"******1——更新航班信息(需管理員身份驗(yàn)證)2——瀏覽航班信息***********" <<"******3——查詢航班信息4——訂票和退票***********" <<"******5——清屏0——退出系統(tǒng)***********" <<"********************************************************************************" <<"你需要做什么?(選擇0~4)"<<endl; cin>>tab; while(!(tab==1||tab==2||tab==3||tab==4||tab==5||tab==0)) { cout<<"請(qǐng)輸入正確選擇(0~4):"; cin>>tab; } switch(tab) { case1: { civil_aviation.Manage(); break; }//航線管理 case2: { civil_aviation.Scan(); break; }//訂票辦理 case3: { civil_aviation.Search(); break; }//退票辦理 case4: { civil_aviation.BookRefund(); break; } case5:system("cls");break; case0:return0;//退出系統(tǒng) } }}文件——class/Traffic_system.h#include<vector>usingnamespacestd;#include"flight.h"http://用于對(duì)文件的操作classTraffic_system{public:Traffic_system(){ m_sum=0;}voidManage();//管理航班信息 voidScan();//瀏覽 intSearch(intinvoke=0);//查詢功能 voidBookRefund();//訂票和退票private: voidRead_file();//讀取文件 voidSave_file();//保存文件private: intm_sum;//記錄航班數(shù) vector<Flight>v_array;//航班類數(shù)組};文件——class/Traffic_system.cpp#include<fstream>#include<iostream>usingnamespacestd;#include"Traffic_system.h"http://讀取文件voidTraffic_system::Read_file(){ ifstreamfile("flightinformation.txt"); if(!file) { cerr<<"文件\"flightinformation.txt\"無(wú)法打開!\n"; exit(1); } m_sum=0; while(!file.eof()) { Flightfly; v_array.push_back(fly);// file>>v_array[m_sum++]; } m_sum--;// file.close();}//保存文件voidTraffic_system::Save_file(){ ofstreamfile("flightinformation.txt",ios::trunc); if(!file) { cerr<<"文件\"flightinformation.txt\"無(wú)法打開!\n"; exit(2); } inti=-1; while(++i<m_sum) { if(!v_array[i].If_deleted()) { file<<v_array[i]; } } file.close();}//管理航班信息voidTraffic_system::Manage(){ charpassword[20];//用于存貯密碼 inttimes=3; cout<<"登錄系統(tǒng)需驗(yàn)證密碼!"<<endl;//驗(yàn)證密碼。三次錯(cuò)誤后,就自動(dòng)退出程序 do { times--; cout<<"請(qǐng)輸入密碼:(默認(rèn)000)"; cin>>password; if(strcmp(password,"000")==0)//密碼是“000” { times=-1; break; } elseif(times>0) cout<<"密碼錯(cuò)誤!\n剩余"<<times<<"次機(jī)會(huì)!"<<endl; }while(times>0); if(times!=-1) { cout<<"對(duì)不起!\n您不是管理員!不能使用此系統(tǒng)!"<<endl; return; } system("cls"); while(1) { inttab; cout<<"\n******************************歡迎使用航班信息管理系統(tǒng)**************************\n" <<"————————————————————————————————————————" <<"\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" <<"————————————————————————————————————————" <<"你需要做什么?(選擇0~5)"<<endl; cin>>tab; while(!(tab==1||tab==2||tab==3||tab==4||tab==5||tab==0)) { cout<<"請(qǐng)輸入正確選擇(0~5):"; cin>>tab; } switch(tab) { case1: { m_sum=0; Flightfly; cout<<"請(qǐng)進(jìn)行信息錄入。按“+”結(jié)束!\n"; do v_array.push_back(fly);// while(v_array[m_sum++].SetInfo()); break; } case2: { Read_file(); Flightfly; cout<<"請(qǐng)進(jìn)行信息錄入。按“+”結(jié)束!\n"; do v_array.push_back(fly);// while(v_array[m_sum++].SetInfo()); break; } case3: { charfnum[1][18]; Read_file(); cout<<"請(qǐng)輸入您要修改信息的航班號(hào):"; cin>>fnum[0]; inti=0; for(;i<m_sum;i++) { if(v_array[i].If_match(fnum,'1')) { cout<<"該航班的原信息為:\n" <<"———————————————————————————————————————\n" <<"丨航班號(hào)丨起始站丨終點(diǎn)站丨起飛時(shí)間丨票價(jià)丨余票丨" <<"———————————————————————————————————————\n"; v_array[i].Display(); cout<<"請(qǐng)輸入正確信息!\n"; v_array[i].SetInfo(); m_sum++;//保持及總航線數(shù)不變 break; } } if(i==m_sum) { cout<<"抱歉!您要修改的信息不存在!"<<endl; return; } m_sum++;// break; } case4: { charfnum[1][18]; Flightempty;//聲明"空"對(duì)象,用于刪除 Read_file(); cout<<"請(qǐng)輸入您要?jiǎng)h除航班的航班號(hào):"; cin>>fnum[0]; inti=0; for(;i<m_sum;i++) { if(v_array[i].If_match(fnum,'1')) { cout<<"您要?jiǎng)h除的航班為:\n" <<"———————————————————————————————————————\n" <<"丨航班號(hào)丨起始站丨終點(diǎn)站丨起飛時(shí)間丨票價(jià)丨余票丨" <<"———————————————————————————————————————\n"; v_array[i].Display(); v_array[i]=empty; m_sum++;//保持及總航線數(shù)不變 break; } } if(i==m_sum) { cout<<"您要?jiǎng)h除的信息不存在!"<<endl; return; } break; } case5:m_sum=1;break; case0:return; } cout<<"《確認(rèn)\\Y》《取消\\N》\n請(qǐng)選擇:"; charyn; do { cin>>yn; }while(!(yn=='Y'||yn=='y'||yn=='N'||yn=='n')); if(yn=='Y'||yn=='y') { m_sum--;//對(duì)應(yīng)m_sum++ Save_file(); cout<<"操作成功!"<<endl; } }}//瀏覽voidTraffic_system::Scan(){ charc; Read_file(); if(m_sum==0) { cout<<"暫無(wú)信息!請(qǐng)等待管理人員更新!"; return; } cout<<"\t航班信息表:\n" <<"———————————————————————————————————————\n" <<"丨航班號(hào)丨起始站丨終點(diǎn)站丨起飛時(shí)間丨票價(jià)丨余票丨" <<"———————————————————————————————————————\n"; for(inti=0;i<m_sum;i++) v_array[i].Display(); cout<<"按任意鍵返回主菜單!"; cin>>c;}//查詢功能intTraffic_system::Search(intinvoke){ inttab; Read_file(); cout<<"*************************************************************************\n***>>1——按航班號(hào)查詢>>2——按站點(diǎn)查詢>>0——返回***\n*************************************************************************\n請(qǐng)選擇(0~2):" <<endl; cin>>tab; while(!(tab==1||tab==2||tab==0)) { cout<<"請(qǐng)輸入正確選擇(0~2):"; cin>>tab; } charstr[2][18],ta; if(tab==0) return-1; elseif(tab==1) { cout<<"請(qǐng)輸入航班號(hào):"; cin>>str[0]; ta='1'; } else { cout<<"請(qǐng)輸入出發(fā)站:"; cin>>str[0]; cout<<"請(qǐng)輸入終點(diǎn)站:"; cin>>str[1]; ta='2'; } for(inti=0;i<m_sum;i++) { if(v_array[i].If_match(str,ta)) { cout<<"您要查詢的結(jié)果如下:\n" <<"———————————————————————————————————————\n" <<"丨航班號(hào)丨起始站丨終點(diǎn)站丨起飛時(shí)間丨票價(jià)丨余票丨" <<"———————————————————————————————————————" <<endl; v_array[i].Display(); if(invoke==0) { cout<<"按任意鍵返回主菜單!"; charc; cin>>c; } returni; } } cout<<"抱歉!您查詢的航班不存在!"<<endl; return-1;}//訂票和退票voidTraffic_system::BookRefund(){ while(1) { cout <<"**************************歡迎進(jìn)入機(jī)票服務(wù)系統(tǒng)**********************\n\n" <<"——————————————————————————————————\n" <<"請(qǐng)選擇:\t\t\t\t\t\t\t\t***\n***\t>>1——訂票\t>>2——退票\t>>0——返回主菜單***\n" <<"——————————————————————————————————"<<endl; inttab; cin>>tab; while(!(tab==1||tab==2||tab==0)) { cout<<"請(qǐng)輸入正確選擇(0~2):"; cin>>tab; } charta; switch(tab) { case1: { cout<<"請(qǐng)先查找該航班:"<<endl; inti; i=Search(1); if(i!=-1&&v_array[i].Book()) { cout<<"《確認(rèn)訂票\\Y》《取消訂票\\N》\n請(qǐng)選擇:"; do { cin>>ta; }while(!(ta=='Y'||ta=='y'||ta=='N'||ta=='n')); if(ta=='Y'||ta=='y') { Save_file(); cout<<"訂票成功!"<<endl; } } break; } case2: { charstr[1][18]; Read_file(); cout<<"請(qǐng)輸入航班號(hào):"; cin>>str[0]; inti=0; for(;i<m_sum;i++) { if(v_array[i].If_takeoff()) continue; if(v_array[i].If_match(str,'1')) { v_array[i].Refund(); cout<<"《確認(rèn)退票\\Y》《取消退票\\N》\n請(qǐng)選擇:"; do { cin>>ta; }while(!(ta=='Y'||ta=='y'||ta=='N'||ta=='n')); if(ta=='Y'||ta=='y') { Save_file(); cout<<"退票成功!"<<endl; } break; } } if(i==m_sum) { cout<<"不存在該航班或該航班已起飛!不能退票。"<<endl; break; } } case0:return; } }}文件——class/flight.hclassFlight{public: Flight() { m_fnum[0]='+'; } boolSetInfo();//設(shè)置航班信息 friendistream&operator>>(istream&in,Flight&cp);//提取運(yùn)算符重載 friendostream&operator<<(ostream&out,Flight&cp);//插入運(yùn)算符重載 voidDisplay();//輸出航班信息 boolBook();//訂票 voidRefund();//退票 boolIf_takeoff();//判斷是否起飛 boolIf_deleted();//判斷是否刪除 boolIf_match(char(*p)[18],charta);//判斷航班號(hào)或站點(diǎn)名是否相同private: charm_fnum[10];//航班號(hào) intm_ftime[2];//起飛時(shí)間 charm_fstar[18];//起始站 charm_fdestination[18];//終點(diǎn)站 intm_fprice;//票價(jià) intm_fseat;//票數(shù)};文件——class/flight.cpp#include<iostream>#include<string>#include<iomanip>#include<ctime>//time.hinCusingnamespacestd;#include<stdio.h>#include"flight.h"http://<<運(yùn)算符重載istream&operator>>(istream&in,Flight&cp){ in>>cp.m_fnum>>cp.m_fstar>>cp.m_fdestination>>cp.m_ftime[0]>>cp.m_ftime[1]>>cp.m_fprice>>cp.m_fseat; returnin;}ostream&operator<<(ostream&out,Flight&cp){ out<<cp.m_fnum<<""<<cp.m_fstar<<""<<cp.m_fdestination<<""<<cp.m_ftime[0]<<""<<cp.m_ftime[1]<<""<<cp.m_fprice<<""<<cp.m_fseat<<"\n"; returnout;}//獲取系統(tǒng)時(shí)間intget_systemtime(){ time_tnow; structtm*fmt; time(&now); fmt=localtime(&now); return(fmt->tm_hour*60+fmt->tm_min);}//判斷是否起飛boolFlight::If_takeoff(){ return(m_ftime[0]*60+m_ftime[1]<=get_systemtime());}//判斷是否作廢boolFlight::If_deleted(){ returnm_fnum[0]=='-';}//判斷航班號(hào)或站點(diǎn)名是否相同boolFlight::If_match(char(*p)[18],charta){ if(ta=='1') return(!strcmp(m_fnum,p[0])); else return(!strcmp(m_fstar,p[0])&&!strcmp(m_fdestination,p[1]));}//設(shè)置航班信息boolFlight::SetInfo(){ cout<<"輸入航班號(hào):"; cin>>
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025提前終止房屋租賃(出租)合同書
- 野生動(dòng)物園土地租賃合同
- 攝影棚采暖系統(tǒng)施工合同
- 建筑物消防改造合同模板
- 文化創(chuàng)意產(chǎn)業(yè)二手房買賣合同
- 廣告公司策劃人員聘用合同樣本
- 2025演藝租賃合同
- 2025監(jiān)控系統(tǒng)維護(hù)合同參考
- 2025車輛掛靠經(jīng)營(yíng)服務(wù)合同
- 2025廠房土地買賣合同
- 經(jīng)濟(jì)思想史課后習(xí)題答案
- 橋梁1-橋梁組成與分類
- 大學(xué)生就業(yè)與創(chuàng)業(yè)指導(dǎo)課件
- 如何理解歐盟MDR臨床評(píng)價(jià)要求
- (新平臺(tái))國(guó)家開放大學(xué)《政治學(xué)原理》形考任務(wù)1-4參考答案
- 被動(dòng)用法學(xué)習(xí)課件 高中日語(yǔ)人教版第三冊(cè)
- 清華大學(xué)電力系統(tǒng)分析課件孫宏斌
- 高考地理一輪復(fù)習(xí)-人類活動(dòng)與地表形態(tài)(共25張)課件
- 德能勤績(jī)廉量化考核表格范例
- 互聯(lián)網(wǎng)+大賽創(chuàng)新創(chuàng)業(yè)路演PPT課件(帶內(nèi)容)
- 綠色雅致清明節(jié)模板
評(píng)論
0/150
提交評(píng)論