C++課程設(shè)計-民航售票系統(tǒng)_第1頁
C++課程設(shè)計-民航售票系統(tǒng)_第2頁
C++課程設(shè)計-民航售票系統(tǒng)_第3頁
C++課程設(shè)計-民航售票系統(tǒng)_第4頁
C++課程設(shè)計-民航售票系統(tǒng)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++面向?qū)ο笳n程設(shè)計民航訂票系統(tǒng)院系:計算機(jī)科學(xué)技術(shù)學(xué)院班級:網(wǎng)絡(luò)工程15-2組長:組員:指導(dǎo)教師:2016年06月14日概述本文采用C++作為前臺開發(fā)工具,VC6.0作為程序代碼的實現(xiàn),旨在實現(xiàn)對現(xiàn)有飛機(jī)訂票系統(tǒng)中遇到的各種情況進(jìn)行良好的改進(jìn),是作為嵌入式系統(tǒng)應(yīng)用于機(jī)場的良好軟件。1.1研究背景及意義隨著時代的進(jìn)步,社會分工的不斷細(xì)化,各個行業(yè)的聯(lián)系不斷密切,人們出行越來越多,出行的方式也是百花齊放。作為空中的重要交通工具,飛機(jī)航空系統(tǒng)也在不斷得到優(yōu)化,其中重要的一項就是飛機(jī)航空訂票系統(tǒng)。因此好的訂票系統(tǒng)關(guān)系著人們的日常出行方便與否,設(shè)計并編制出符合人們需要的航空訂票系統(tǒng)是一項繁重而艱巨的任務(wù),需要我們認(rèn)真去完成。1.2任務(wù)概述假定民航機(jī)場有n個航班,每個航班有一個航班號、確定的航線(出發(fā)地、目的地)、確定的飛行時間和飛機(jī)票總數(shù),旅客數(shù)。該系統(tǒng)需實現(xiàn)下列服務(wù):航班信息錄入功能;航班信息瀏覽功能查詢航線(出發(fā)地、目的地查詢)承辦訂票和退票業(yè)務(wù)2需求分析2.1客戶功能1、航線查詢功能:

根據(jù)輸入的起止城市信息查詢航班,并顯示其詳細(xì)信息(起飛時間、到達(dá)時間、航班號、余票量)。2、客票預(yù)訂功能:

根據(jù)輸入的航班號和數(shù)量預(yù)訂機(jī)票,辦理手續(xù)并進(jìn)行信息核對。2.2管理員功能添加功能:

添加一個航班的信息,包括航班號、行程、起飛時間、到達(dá)時間、機(jī)型、全價、座位總數(shù)

。2、將航班信息寫入文件。2.3操作方法民航訂票系統(tǒng)的主界面如下所示:

*------中國民航歡迎您?。?

=================================--------*1、客戶*----------------*2、管理員*----------------*3、退出程序運行*--------==

===============================、選擇1進(jìn)入普通用戶菜單:

*------您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)------*=

=================================--------*1、承辦訂票業(yè)務(wù)*----------------*2、承辦退票業(yè)務(wù)*----------------*3、查詢航班*----------------*4、退出程序的運行*--------==

================================選擇1進(jìn)入訂票模塊:

請輸入您要訂購的航班號

n23dt

請輸入您要訂購的機(jī)票數(shù)量

2訂票成功!選2進(jìn)入退票模塊:請輸入日期:航班:退票成功!選擇3進(jìn)入航班查詢信息模塊:

請輸入起始地點

北京

請輸入目的地點

南京

出發(fā)地點

目的地點

起飛時間

航班號余票北京

南京

05:43

Bn23dt

100查找已完成

按任意鍵返回菜單(2)、選擇2進(jìn)入管理員菜單:*------后臺管理系統(tǒng)------*=================================--------*1、錄入航班信息*----------------*2、將數(shù)據(jù)寫入文件*----------------*3、退出程序的運行*--------==

===============================請輸入對應(yīng)操作序號進(jìn)行相應(yīng)操作:選擇1錄入航班信息請輸入您要添加的航班種數(shù):請輸入您要添加的航班信息:

出發(fā)地點:

南京

目的地點:

北京

起飛時間:

時:5

分:43航班號:

Bn23dt

星期幾:四您輸入的信息是:

種數(shù)出發(fā)地點

目的地點

起飛時間

航班號

星期幾余票3南京

北京

05:43

Bn23dt

四100選擇2將信息寫入文件.選擇3退出菜單.3總體設(shè)計3.1功能結(jié)構(gòu)圖根據(jù)需求分析,該系統(tǒng)的功能結(jié)構(gòu)圖如下所示:民航訂票系統(tǒng)民航訂票系統(tǒng)管理員模塊客戶模塊 管理員模塊客戶模塊將信息寫入文件退機(jī)票預(yù)定客票查詢航班添加航將信息寫入文件退機(jī)票預(yù)定客票查詢航班添加航班按航線查詢按航線查詢圖3-1系統(tǒng)結(jié)構(gòu)示意圖3.2模塊分析3.2.1添加航線系統(tǒng)將提示用戶輸入新添加的航班的信息,插入在鏈表中。3.2.2查詢航班

首先由用戶輸入要查找的起始地點,然后系統(tǒng)用查找函數(shù)查找,然后系統(tǒng)就調(diào)用輸出函數(shù),輸出所查找的航班資料。

3.2.3預(yù)訂訂票

由用戶輸入航班號和訂票數(shù)目,系統(tǒng)判斷能滿足用戶需求則輸出“訂票成功”信息3.2.4退機(jī)票首先由用戶輸入要退的航班,然后調(diào)用刪除函數(shù),刪除該航班的已訂狀態(tài)。3.3數(shù)據(jù)結(jié)構(gòu)設(shè)計(一)、本系統(tǒng)要用到的庫函數(shù):#include<iostream>#include<fstream>#include<string>#include<windows.h>(二)、航空類的定義classPlane{public: charstart_place[40];//起點 charname[40];//終點站名 charnumber[10];//航班號 charweek[7];//星期幾飛行 charday[40];//日期 intleft;//余票額 intn;//與數(shù)組flag一起確定客戶訂票狀態(tài)public: intflag[20];//訂票狀態(tài)數(shù)組,-1為預(yù)訂票,1為已定票,0為初始化狀態(tài) Plane()//構(gòu)造函數(shù) { name[0]='\0'; number[0]='\0'; week[0]='\0'; day[0]='\0'; left=M; n=0;//數(shù)組從0開始計數(shù) for(inti=0;i<20;i++) flag[i]=0; } voidinit()//初始化每種飛機(jī)票 { cout<<"請輸入起點:"; cin>>start_place; cout<<"請輸入終點:"; cin>>name; cout<<"請輸入航班號:"; cin>>number; cout<<"請輸入星期幾飛行:"; cin>>week; cout<<"請輸入航班的日期:"; cin>>day; }~Plane(){};//析構(gòu)函數(shù) char*get_start_place() {returnstart_place;}//起點 char*getname(){returnname;}//獲得終點站名char*getnumber(){returnnumber;}//獲得航班號char*getweek(){returnweek;}//獲得星期幾飛行char*getday(){returnday;}//獲得日期intgetleft(){returnleft;}//獲得余票額intgetn(){returnn;}//獲得旅客數(shù)目voidinleft(intn){left=left+n;}//余票額增加函數(shù)voiddeleft(intn){left=left-n;}//余票額減少函數(shù)voidpeople_in(){n++;}};//旅客數(shù)目增加函數(shù)(三)菜單類的定義菜單類父類classmenu{public: intch;//返回選擇序號 intme_nu() {}//用于打印菜單,父類的菜單空實現(xiàn)};子菜單類(繼承于父類菜單menu)classlogo_menu:publicmenu{};//主界面菜單classadmin_menu:publicmenu{};//管理員菜單classclient_menu:publicmenu{};//客戶端菜單(四)、接口設(shè)計表2.1:函數(shù)列表函數(shù)名函數(shù)格式函數(shù)功能book()Voidbook()訂票函數(shù)writetofile()Voidwritetofile()寫文件函數(shù)query()Voidquery()查詢函數(shù)input()Voidinput()訂票函數(shù)back()Voidback()退票信息Writetofile()Voidwritetofile()寫入文件menu()Intmenu()界面函數(shù)Main()Intmain()主函數(shù)4詳細(xì)設(shè)計算法設(shè)計說明

文件“航空售票管理系統(tǒng)v-1.0.cpp”中

主函數(shù)流程圖——main()開始開始輸出信息輸出信息1231管理員客戶1管理員客戶13 31訂票234 2訂票錄入信息數(shù)據(jù)寫入文件查詢退票錄入信息數(shù)據(jù)寫入文件查詢退票結(jié)束結(jié)束圖4-1主控模塊算法流程圖4.2函數(shù)實現(xiàn)模塊4.2.1主控函數(shù)main()調(diào)用控制臺,設(shè)置窗口顏色system(“color9e”);//控制臺調(diào)用接著要求用戶選擇用戶類型,按1為普通用戶,按2位管理員,3退出,進(jìn)入相應(yīng)菜單后,同樣選擇對應(yīng)序號,進(jìn)行相應(yīng)操作,進(jìn)入管理員模式要輸入密碼進(jìn)行驗證。4.2.2客戶訂票voidbook()函數(shù)調(diào)用此函數(shù)實現(xiàn)客戶訂票預(yù)訂票數(shù)功能。此函數(shù)會首先要求用戶所要訂購的航班號和預(yù)訂票數(shù)cout<<"請輸入航班號:"<<endl;cin>>number;cout<<"請輸入訂票數(shù)額:";cin>>n;之后用一個for循環(huán)實現(xiàn)信息匹配,for(inti=0;i<N;i++) if(strcmp(number,pl[i].number)==0)用num不為零標(biāo)記匹配成功的狀態(tài)當(dāng)信息匹配后再判斷票數(shù)是否足夠:if(n<=pl[i].getleft()&&n>0)票數(shù)足夠久則訂票,cout<<"此航班有足夠余票"<<endl;pl[i].deleft(n);//余票減少pl[i].people_in();//旅客增加pl[i].flag[pl[i].getn()]=1;//狀態(tài)改為已訂票不滿足則返回上級菜單,重新確定訂票信息,不滿足的狀態(tài)用num為零進(jìn)行標(biāo)記;num==0;如果用戶確實是要訂票但余票不夠,則詢問用戶是否進(jìn)行預(yù)約,確定后將所需票數(shù)改為預(yù)約狀態(tài),用-1標(biāo)記。cout<<"是否需要預(yù)約"<<endl;cout<<"是(1)否(2)"<<endl;cin>>ch;switch(ch){case1://確定預(yù)約pl[i].people_in();pl[i].flag[pl[i].getn()]=-1;//預(yù)約,用-1標(biāo)記,表示預(yù)約狀態(tài)break;case2://不預(yù)約,退出break;default://容錯處理cout<<"wronginput!"<<endl;}最后在函數(shù)結(jié)尾再調(diào)用自身實現(xiàn)返回上級菜單功能,book();//di遞歸調(diào)用4.2.3客戶退票voidback()函數(shù)首先會要求客戶輸入要退訂的票的日期和航班,cout<<"請輸入日期:";cin>>day;cout<<"請輸入航班:";cin>>number;然后程序進(jìn)行信息匹配if(strcmp(day,pl[i].getday())==0&&strcmp(number,pl[i].getnumber())==0)匹配成功則退票成功,同時系統(tǒng)票數(shù)增加pl[i].inleft(n);//該種飛機(jī)票增加,即已退票,接著查詢客戶的訂票狀態(tài),//用戶是否有預(yù)訂票,若有,則為用戶確定訂購此票。if(pl[i].flag[j]==-1)//客戶是否為預(yù)定狀態(tài){cout<<"有預(yù)約訂票,請輸入訂票數(shù)額:";cin>>nu;if(nu<=pl[i].getleft())//余票額是否滿足要求{cout<<"此航班有票"<<endl;pl[i].flag[j]=1;cout<<"訂票成功"<<endl;pl[i].deleft(nu);for(intk=0;k<nu;k++){cout<<"座位號"<<"";cin>>sitnumber;}cout<<"余票額為"<<pl[i].getleft()<<endl;}}elsecout<<"沒有預(yù)約訂票!"<<"余票額為"<<pl[i].getleft()<<endl;}若在用戶退票的過程中沒有匹配到航班,則顯示沒有此票,清屏并用遞歸調(diào)用返回到上級菜單。4.2.4客戶查詢voidquery()函數(shù)這個模塊查詢是按航線的起止點進(jìn)行查詢。首先會要求用戶輸入要查詢起止點,然后系統(tǒng)在所有的數(shù)據(jù)中進(jìn)行匹配,for(i=0;i<=N;i++)if(strcmp(name,pl[i].getname())==0&&strcmp(start_place,pl[i].get_start_place())==0)當(dāng)信息匹配時,就會輸出對應(yīng)航班信息:cout<<"航班號:"<<pl[i].getnumber()<<endl; cout<<"星期:"<<pl[i].getweek()<<"飛行"<<endl; cout<<"航班日期:"<<pl[i].getday()<<endl; cout<<"余票額:"<<pl[i].getleft()<<endl; break;4.2.5管理員航班信息錄入模塊想要進(jìn)入管理員后臺管理界面,必須輸入管理員密碼,保證信息的安全性cout<<"請輸入密碼:"<<endl;cin>>y;//讀取密碼if(strcmp(y,f)==0)//密碼匹配就允許進(jìn)入管理系統(tǒng)進(jìn)入系統(tǒng)后按1進(jìn)行信息的錄入工作,按2進(jìn)行信息寫入文件的操作,按 3退出管理系統(tǒng)。退出采用延時3秒倒計時退出方式Sleep(1000)//循環(huán)三次,即為3秒倒計時類成員voidinit()函數(shù)進(jìn)行航班信息的錄入工作 cout<<"請輸入起點:"; cin>>start_place; cout<<"請輸入終點:"; cin>>name; cout<<"請輸入航班號:"; cin>>number; cout<<"請輸入星期幾飛行:"; cin>>week; cout<<"請輸入航班的日期:"; cin>>day; voidinput()函數(shù)進(jìn)入模塊,系統(tǒng)要求管理員輸入需要錄入的機(jī)票的種類數(shù),之后調(diào)用寫入 函數(shù)進(jìn)行寫入for(inti=0;i<count;i++) { pl[i].init(); cout<<endl;}4.2.6文件寫入voidwritetofile()函數(shù)定義輸出文件流對象ofstreamofs("民航信息系統(tǒng).dat",ios_base::in);之后將各個對應(yīng)信息寫入文件4.2.7控制臺的調(diào)用system()程序中用到的控制臺命令:system(“cls”);//清屏用清屏實現(xiàn)窗口界面的切換工作system(“color9e”);//窗口顏色設(shè)置5程序調(diào)試與測試5.1顏色選擇經(jīng)過之前的調(diào)試與搭配最終選擇了使用藍(lán)底黃字。5.2利用遞歸調(diào)用實現(xiàn)返回上級菜單或者主菜單因為考慮到用戶的體驗,程序設(shè)計最終要考慮到用戶,所以設(shè)計之初就考慮到當(dāng)完成一項操作后返回上級菜單或者主菜單以便于用戶接著進(jìn)行操作5.3倒計時退出界面利用延時函數(shù)Sleep();實現(xiàn)暫停工作,最終實現(xiàn)倒計時退出5.4管理員權(quán)限限定進(jìn)入管理員需要密碼,否則沒有權(quán)限5.5后臺管理界面6總結(jié)該程序有許多模塊組成,模塊之間又存在各種包含或調(diào)用關(guān)系,如果用c語言來實現(xiàn),雖然程序并不長,后期的調(diào)試和修改恐怕也會讓人非常頭疼,而c++中類的定義和使用使得各種模塊相對更加獨立,功能分擔(dān)也更加鮮明,程序容易讀,也容易調(diào)試和修改。此外,實際動手做一做,才發(fā)現(xiàn)c++這門語言有很多細(xì)節(jié)是當(dāng)初復(fù)習(xí)筆試是沒有注意到的,對c++的掌握程度和運用能力與編程前有了很大的提高。

在編程過程中,格式出錯最多的是對類的成員函數(shù)進(jìn)行定義時,常常忘記限定作用域,導(dǎo)致函數(shù)無法調(diào)用;而內(nèi)容上出錯最多的則是與指針有關(guān)的內(nèi)容,以后編程時還應(yīng)努力改正。還有好多功能沒有完善,比如說管理員刪除航線,管理員瀏覽全部的航線,還有用戶查詢航線時可根據(jù)航線,起止點,時間等信息進(jìn)行查詢。但是值得一提的是利用了遞歸調(diào)用實現(xiàn)返回上級菜單,主菜單的功能,提升了用戶的體驗。這一點作為程序的主編寫者還是比較自豪,滿意的。當(dāng)然,程序還有好多的不足需要修正,毋庸置疑,程序還存在好多沒有發(fā)現(xiàn)的bug有待修正。

7程序清單#include<string>#include<iostream>#include<fstream>#include<windows.h>usingnamespacestd;#defineM5//每種飛機(jī)票的總數(shù)目#defineN20//飛機(jī)票的種類#defineframe_high5#defineframe_width5classPlane{public: charstart_place[40];//起點 charname[40];//終點站名 charnumber[10];//航班號 charweek[7];//星期幾飛行 charday[40];//日期 intleft;//余票額 intn;//與數(shù)組flag一起確定客戶訂票狀態(tài)public: intflag[20];//訂票狀態(tài)數(shù)組,-1為預(yù)訂票,1為已定票,0為初始化狀態(tài) Plane()//構(gòu)造函數(shù) { name[0]='\0'; number[0]='\0'; week[0]='\0'; day[0]='\0'; left=M; n=0;//數(shù)組從0開始計數(shù) for(inti=0;i<20;i++) flag[i]=0; } voidinit()//初始化每種飛機(jī)票 { cout<<"請輸入起點:"; cin>>start_place; cout<<"請輸入終點:"; cin>>name; cout<<"請輸入航班號:"; cin>>number; cout<<"請輸入星期幾飛行:"; cin>>week; cout<<"請輸入航班的日期:"; cin>>day; }~Plane(){};//析構(gòu)函數(shù) char*get_start_place() {returnstart_place;}//起點char*getname(){returnname;}//獲得終點站名char*getnumber(){returnnumber;}//獲得航班號char*getweek(){returnweek;}//獲得星期幾飛行char*getday(){returnday;}//獲得日期intgetleft(){returnleft;}//獲得余票額intgetn(){returnn;}//獲得旅客數(shù)目voidinleft(intn){left=left+n;}//余票額增加函數(shù)voiddeleft(intn){left=left-n;}//余票額減少函數(shù)voidpeople_in(){n++;}//旅客數(shù)目增加函數(shù)};classmenu{public: intch; intme_nu(){}};classlogo_menu:publicmenu{ public: intme_nu() { cout<<endl<<"*中國民航歡迎您!*"<<endl<<endl; cout<<"==============================================="<<endl; cout<<"*1.客戶*"<<endl<<endl; cout<<"*2.管理員*"<<endl<<endl;cout<<"*3:退出程序的運行*"<<endl<<endl; cout<<"==============================================="<<endl; cin>>ch; system("cls"); returnch; }};classadmin_menu:publicmenu{ public: intme_nu() { cout<<endl<<"*后臺管理系統(tǒng)*"<<endl<<endl cout<<"========================================"<<endl; cout<<"*1.錄入航班信息*"<<endl<<endl; cout<<"*2.將數(shù)據(jù)寫入文件*"<<endl<<endl; cout<<"*3:退出程序的運行*"<<endl<<endl; cout<<"========================================="<<endl; cout<<"請輸入對應(yīng)操作序號進(jìn)行相應(yīng)操作:"; cin>>ch; system("cls"); returnch; }};classclient_menu:publicmenu{ public: intme_nu() { cout<<endl<<"您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)"<<endl<<endl; cout<<"============================================"<<endl; cout<<"*1:承辦訂票業(yè)務(wù)*"<<endl<<endl; cout<<"*2:承辦退票業(yè)務(wù)*"<<endl<<endl; cout<<"*3:查詢航線*"<<endl<<endl; cout<<"*4:退出程序的運行*"<<endl<<endl; cout<<"============================================"<<endl; cout<<"請輸入對應(yīng)操作序號進(jìn)行相應(yīng)操作:"; cin>>ch; system("cls"); returnch; }};Planepl[N];voidinit();voidinput();//初始化函數(shù)voidquery();//查詢函數(shù)voidbook();//訂票函數(shù)voidback();//退票函數(shù)voidwritetofile();intmain(){ charf[]="2016sgs"; system("color9e"); logo_menul; while(1) { intchoice_logo; choice_logo=l.me_nu(); switch(choice_logo) { case1: intchoice_client; client_menuc; choice_client=c.me_nu(); switch(choice_client) { case1:cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl; cout<<"================================================"<<endl;book();break; case2: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl; cout<<"================================================"<<endl; back(); break; case3: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)"<<endl<<endl; cout<<"================================================"<<endl; query(); break; case4: { cout<<endl; for(inti=3;i>=1;i--) { cout<<i<<"秒后退出客戶訂票系統(tǒng)"<<endl<<endl; Sleep(1000); } system("cls"); cout<<endl<<"-*期待您的再次使用,謝謝,再見*"<<endl<<endl; Sleep(2000); return0; } default: cout<<endl<<"WrongInput!"<<endl<<endl; for(inti=3;i>=1;i--) { cout<<i<<"秒后返回主界面"<<endl<<endl; Sleep(1000); } system("cls"); } break; case2: chary[40]; cout<<endl<<"*進(jìn)入后臺管理系統(tǒng)*"<<endl<<endl; cout<<"=========================================="<<endl; cout<<"請輸入密碼:"<<endl; cin>>y;//讀取密碼 if(strcmp(y,f)==0) { system("cls"); intchoice_admin; admin_menua; choice_admin=a.me_nu(); switch(choice_admin) { case1: input(); break; case2: writetofile(); break; case3: { for(inti=3;i>=1;i--) { cout<<i<<"秒后退出后臺管理系統(tǒng)"<<endl<<endl; Sleep(1000); } return0; } default: cout<<"wronginput!"<<endl; } } else { cout<<"輸入密碼錯誤!您沒有操作權(quán)限!"<<endl<<endl; for(inti=3;i>=1;i--) { cout<<i<<"秒后返回主界面"<<endl<<endl; Sleep(1000); } system("cls"); } break; case3: { for(inti=3;i>=1;i--) { cout<<i<<"秒后退出系統(tǒng)"<<endl<<endl; Sleep(1000); } return0; } break; default: cout<<"wronginput!"<<endl<<endl<<"將要返回主菜單。"<<endl<<endl; for(inti=3;i>=1;i--) { cout<<i<<"秒后返回主菜單"<<endl<<endl; Sleep(1000); } Sleep(1000); system("cls"); } }return0;}voidinput(){intcount; cout<<"請輸入您要錄入的機(jī)票種數(shù):"<<endl<<endl;cin>>count; for(inti=0;i<count;i++) { pl[i].init(); cout<<endl; } cout<<endl<<"錄入完畢,將要返回上一級菜單"; Sleep(2000); system("cls");intchoice_admin; admin_menua; choice_admin=a.me_nu(); switch(choice_admin) { case1: input(); break; case2: writetofile(); break; case3: { for(inti=3;i>=1;i--) { cout<<i<<"秒后退出后臺管理系統(tǒng)"<<endl<<endl; Sleep(1000); } return; } default: cout<<"wronginput!"<<endl; }}voidquery(){ inti,num=0; charstart_place[40]; charname[40]; cout<<endl; cout<<"請輸入起點:"; cin>>start_place; cout<<"請輸入終點:"; cin>>name; for(i=0;i<=N;i++) if(strcmp(name,pl[i].getname())==0&&strcmp(start_place,pl[i].get_start_place())==0) { num=1; cout<<"航班號:"<<pl[i].getnumber()<<endl; cout<<"星期:"<<pl[i].getweek()<<"飛行"<<endl; cout<<"航班日期:"<<pl[i].getday()<<endl; cout<<"余票額:"<<pl[i].getleft()<<endl; break; } if(num==0) {cout<<endl<<"沒有此航班"<<endl<<endl<<"回車返回上級菜單"<<endl<<endl; getchar(); getchar(); system("cls"); intchoice_client; client_menuc; choice_client=c.me_nu(); switch(choice_client) { case1: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl; cout<<"================================================"<<endl; book(); break; case2: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)"<<endl<<endl; cout<<"============================================"<<endl; back(); break; case3: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)"<<endl<<endl; cout<<"============================================"<<endl; query(); break; case4: { for(inti=3;i>=1;i--) { cout<<i<<"秒后退出客戶訂票系統(tǒng)"<<endl<<endl; Sleep(1000); } cout<<endl<<"*期待您的再次使用,謝謝,再見!*"<<endl<<endl; Sleep(2000); return; } default: cout<<"wronginput!"; for(inti=3;i>=1;i--) { cout<<i<<"秒后返回主界面"<<endl<<endl; Sleep(1000); } system("cls"); } query(); }}voidbook(){ charnumber[10]; intn,sitnumber,nu,ch,num=0;cout<<"請輸入航班號:"<<endl; cin>>number; cout<<"請輸入訂票數(shù)額:"; cin>>n; for(inti=0;i<N;i++) if(strcmp(number,pl[i].number)==0) { num++; if(n<=pl[i].getleft()&&n>0) { cout<<"此航班有足夠余票"<<endl; pl[i].deleft(n); pl[i].people_in(); pl[i].flag[pl[i].getn()]=1; for(i=0;i<n;i++) { cout<<"座位號"; cin>>sitnumber; } } else {cout<<"余票額少于訂票額,請重新輸入訂票數(shù)額,"<<"訂票數(shù)額應(yīng)該少于或等于"<<pl[i].getleft(); cin>>nu; if(nu<=pl[i].getleft()) { cout<<"此航班有足夠票"<<endl; for(i=0;i<N;i++) { cout<<"座位號"; cin>>sitnumber; } pl[i].deleft(nu); pl[i].people_in(); pl[i].flag[pl[i].getn()]=1; } else { cout<<"是否需要預(yù)約"<<endl; cout<<"是(1)否(2)"<<endl; cin>>ch; switch(ch) { case1: pl[i].people_in(); pl[i].flag[pl[i].getn()]=-1; break; case2: break; default: cout<<"wronginput!"<<endl; } } } } if(num==0) { cout<<endl<<"沒有此航班"<<endl<<endl<<"回車返回上級菜單"<<endl; getchar(); getchar(); system("cls");intchoice_client; client_menuc; choice_client=c.me_nu(); switch(choice_client) { case1: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl; cout<<"================================================"<<endl; book(); break; case2: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl; cout<<"================================================"<<endl; back(); break; case3: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl; cout<<"================================================"<<endl; query(); break; case4: {for(inti=3;i>=1;i--) { cout<<i<<"秒后退出客戶訂票系統(tǒng)"<<endl<<endl; Sleep(1000); }cout<<endl<<"*期待您的再次使用,謝謝,再見!"<<endl<<endl; Sleep(2000); return;} default: cout<<"wronginput!"; for(inti=3;i>=1;i--) { cout<<i<<"秒后返回主界面"<<endl<<endl; Sleep(1000); } system("cls"); } book(); }}voidback(){intn,nu,sitnumber,num=0;//航班號,日期,退票數(shù)目,訂票數(shù)目,座位號,標(biāo)志量charnumber[10],day[40]; cout<<"請輸入日期:"; cin>>day; cout<<"請輸入航班:"; cin>>number; for(inti=0;i<N;i++)if(strcmp(day,pl[i].getday())==0&&strcmp(number,pl[i].getnumber())==0)//日期與航班是否滿足 { num++;//日期與航班滿足 cout<<"輸入退票數(shù)目"; cin>>n; cout<<"退票成功"<<endl; pl[i].inleft(n);//該種飛機(jī)票增加,即已退票 for(intj=0;j<=pl[i].getn();j++)//順序查詢客戶訂票狀態(tài) { if(pl[i].flag[j]==-1)//客戶是否為預(yù)定狀態(tài) { cout<<"有預(yù)約訂票,請輸入訂票數(shù)額:"; cin>>nu; if(nu<=pl[i].getleft())//余票額是否滿足要求 { cout<<"此航班有票"<<endl; pl[i].flag[j]=1; cout<<"訂票成功"<<endl; pl[i].deleft(nu); for(intk=0;k<nu;k++) { cout<<"座位號"<<""; cin>>sitnumber; } cout<<"余票額為"<<pl[i].getleft()<<endl; } } else cout<<"沒有預(yù)約訂票!"<<"余票額為"<<pl[i].getleft()<<endl; } } if(num==0) {cout<<endl<<"沒有此票"<<endl<<endl<<"回車返回上級菜單"<<endl<<endl; getchar(); getchar(); system("cls");intchoice_client; client_menuc; choice_client=c.me_nu(); switch(choice_client) { case1: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl; cout<<"============================================"<<endl; book(); break; case2: cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl; cout<<"======================================================="<<endl;back();break; case3:cout<<endl<<"*您好,歡迎使用本系統(tǒng)辦理訂票業(yè)務(wù)*"<<endl<<endl;cout<<"======================================================="<<endl;query();break; case4: { for(inti=3;i>=1;i--) { cout<<i<<"秒后退出客戶訂票系統(tǒng)"<<endl<<endl; Sleep(1000); } system("cls");cout<<endl<<"*期待您的再次使用,謝謝,再見!*"<<endl<<endl; return; } break; default: cout<<"wronginput!"<<endl<<endl; for(inti=3;i>=1;i--) { cout<<i<<"秒后返回主界面"<<endl<<endl; Sleep(1000); } } }back();}voidwritetofile(){ ofstreamofs("民航信息系統(tǒng).dat",ios_base::in); inti; for(i=0;i<N;i++) {ofs<<pl[i].get_start_place()<<endl; ofs<<pl[i].getname()<<endl; ofs<<pl[i].getnumber()<<endl; ofs<<pl[i].getweek()<<endl; ofs<<pl[i].getday()<<endl; } ofs.close();cout<<"數(shù)據(jù)已經(jīng)寫入文件民航信息系統(tǒng).dat中"<<endl<<endl<<"將要返回上級菜單"<<endl<<endl; for(i=3;i>=1;i--) { cout<<i<<"秒后返回上級菜單"<<endl<<endl; Sleep(1000); } system("cls");}基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機(jī)的TCP/IP協(xié)議棧的實現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗臺控制器的研制基于單片機(jī)的軟起動器的研究和設(shè)計基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點滴速度自動檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號檢測儀基于單片機(jī)的電機(jī)運動控制系統(tǒng)設(shè)計Pico專用單片機(jī)核的可測性設(shè)計研究基于MCS-51單片機(jī)的熱量計基于雙單片機(jī)的智能遙測微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實踐研究基于單片機(jī)的輪軌力檢測基于單片機(jī)的GPS定位儀的研究與實現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測量儀的研制基于單片機(jī)的紅外測油儀的研究96系列單片機(jī)仿真器研究與設(shè)計基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計與實現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機(jī)的膛壁溫度報警系統(tǒng)設(shè)計基于AVR單片機(jī)的低壓無功補償控制器的設(shè)計基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動信號的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)基于單片機(jī)的多道脈沖幅度分析儀研究機(jī)器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機(jī)控制系統(tǒng)基于單片機(jī)的控制系統(tǒng)在PLC虛擬教學(xué)實驗中的應(yīng)用研究基于單片機(jī)系統(tǒng)的網(wǎng)

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論