




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 /學(xué) 號 成都理工大學(xué)計算機(jī)科學(xué)與技術(shù)系數(shù)據(jù)結(jié)構(gòu)課程設(shè)計設(shè)計說明書題目訂票系統(tǒng)學(xué) 生 姓 名班 級成 績指導(dǎo)教師(簽字) 計算機(jī)科學(xué)與技術(shù)系 2016 年 9 月 20 日目錄第1章 問題描述1(1)錄入:1(2)查詢:1(3)訂票:1(4)退票:11、開發(fā)環(huán)境22、組成框圖23、流程圖3第3章 詳細(xì)設(shè)計41.根據(jù)飛機(jī)訂票系統(tǒng)的可設(shè)要求,要實現(xiàn)以下功能:42.具體的方法及函數(shù)調(diào)用的思想:4struct:/它相當(dāng)于一種記錄43.方法的實現(xiàn):51)input( ); /錄入52)find( ); /查詢,按終點站來查詢63)string time(short begin_hou
2、r,char begin_minute); /調(diào)用系統(tǒng)時間64)order( ); /辦理訂票函數(shù)65)refund( ); /辦理退票函數(shù)6第4章 測試結(jié)果及分析7執(zhí)行結(jié)果:7參考文獻(xiàn)10附錄:源代碼101第1章 問題描述通過此系統(tǒng)可以實現(xiàn)如下功能:(1)錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)(2)查詢: 可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達(dá)城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;(3)訂票:可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;(4)退票:訂票數(shù)量及航班情況。第2
3、章 概要設(shè)計1、 開發(fā)環(huán)境系統(tǒng)環(huán)境:Microsoft Windows®10 專業(yè)版開發(fā)環(huán)境:Microsoft Visual Studio 2015開發(fā)平臺:Win64開發(fā)語言:C+硬件環(huán)境:(1) CPU:Intel Core i5(2) 內(nèi)存:4GB(3) 顯示卡:NVIDIA GeForce GTX950M飛機(jī)訂票系統(tǒng)2、組成框圖退票訂票錄入信息查詢信息3、 流程圖點擊查詢機(jī)票進(jìn)入訂票機(jī)票機(jī)票信息頁面進(jìn)入退票頁面按條件查詢開始飛機(jī)起飛?購票失敗允許購買YNn飛機(jī)起飛?退票失敗允許退票YN返回第3章 詳細(xì)設(shè)計 1.根據(jù)飛機(jī)訂票系統(tǒng)的可設(shè)要求,要實現(xiàn)以下功能:(1)錄入:錄入航班
4、情況(2)查詢: 可以查詢某個航線的情況 可以輸入抵達(dá)城市,查詢飛機(jī)航班情況;(3)訂票: 1)先判斷飛機(jī)是否起飛,如果發(fā)出航班則訂票失敗,否則可以訂機(jī)票。2)當(dāng)有余票時顯示剩余票數(shù),則可以訂票成功,如果沒有余票,則訂票失敗。(4)退票:1)先判斷飛機(jī)是否起飛,如果發(fā)出航班則訂票失敗,否則可以訂機(jī)票。 2)當(dāng)有余票時顯示剩余票數(shù),則可以退票成功,如果沒有余票,則退票失敗。2.具體的方法及函數(shù)調(diào)用的思想:struct:/它相當(dāng)于一種記錄定義要存儲的變量:可以通過以下的聲明來建立如圖的數(shù)據(jù)類型int air_num; /班次號 short begin_hour; /起飛時間小時 short beg
5、in_minute; /起飛時間分鐘 char begin_name10; /起始站點 char end_name10; /終點站名 float fly_time; /飛行時間 int total; /乘員總定額 int total_already; /已訂票人數(shù) bool exist; /航班狀態(tài) int fare; /飛機(jī)票價 定義一個結(jié)構(gòu)體來存儲四個航班信息: 里的變量依次表示為:航班號,起飛時間(小時),起飛時間(分鐘),起始站點,終點站名,飛行時間,成員定額,已訂票人數(shù),航班狀態(tài);1,12,0,"天津","廣州",2,145,130,true,
6、1000, 2,6,30,"北京","成都",0.5,140,140,true,2000, 3,22,0,"廣州","南京",2.5,140,120,true,2500, 4,15,0,"天津","長沙",2,140,120,true,3000 1120天津廣州2145130true10002630北京成都0.5140140true20003220廣州南京2.5120120true25004150天津長沙2120120true30003.方法的實現(xiàn):1)input( ); /
7、錄入input()方法的功能就是錄入航班號 i,起飛時間(小時)begin_hour,起飛時間(分鐘)begin_minute,起始地點名稱 begin_name,種植地點名稱 end_name,飛行時間 fly_time,總載客量 total,已訂票人數(shù) total_already,飛機(jī)票價 fare,航班狀態(tài) exist。變量int i=4,因為事先已經(jīng)錄入4個編號為14的航班號,因此當(dāng)輸入14的航班號時會提醒此航班號已存在,因而在控制臺輸入的航班號必須大于4而小于50。變量int j=0;則j+1表示錄入第(j+1)個航班班次的信息2)find( ); /查詢,按終點站來查詢根據(jù)已有的飛
8、機(jī)信息來依據(jù)終點信息來查詢航班。首先要調(diào)用讀取機(jī)票信息函數(shù),讀取要查詢的機(jī)票信息,既read()方法。并且在方法中有一個計數(shù)器 k,當(dāng)k=-1時輸出無此航班的飛機(jī),反之根據(jù)終點站名字來查詢航班信息。3)string time(short begin_hour,char begin_minute); /調(diào)用系統(tǒng)時間當(dāng)輸入起飛時間與該電腦里的時間作比較,當(dāng)電腦現(xiàn)在的時間比輸入起飛時間大的話,則說明飛機(jī)已經(jīng)起飛。通過線面的語句來實現(xiàn):(begin_hour<sys.wHour)|(begin_hour=sys.wHour&&begin_minute<sys.wMinute
9、)4)order( ); /辦理訂票函數(shù)當(dāng)訂票的時候,首先要輸入要訂票的航班號,因此在這之后應(yīng)讀入在系統(tǒng)中的航班信息,當(dāng)輸入航班編號后如無此航班號,則失敗,反之先判斷次航班是否已經(jīng)起飛if(bi.begin_hour>sys.wHour)|(bi.begin_hour=sys.wHour&&bi.begin_minute>sys.wMinute),如果沒起飛,在判斷是否還有余票if(bi.total=bi.total_already),如果有,計算剩余的多少張票bi.total-bi.total_already,進(jìn)而訂在剩余票數(shù)的范圍內(nèi)購票,如果與之相反,則證明飛機(jī)
10、已經(jīng)起飛也就是說已經(jīng)訂不到票了。5)refund( ); /辦理退票函數(shù)思路類似于訂票,首先要數(shù)如要退票的航班號,并且在這之后讀入系統(tǒng)中的航班信息,當(dāng)輸入航班編號后如無此航班號,則失敗,反之先判斷次航班是否已經(jīng)起飛if(bi.begin_hour>sys.wHour)|(bi.begin_hour=sys.wHour&&bi.begin_minute>sys.wMinute),如果沒起飛,確定退票數(shù)完成退票操作。如果與之相反,則證明飛機(jī)已經(jīng)起飛了,無法進(jìn)行退票業(yè)務(wù)了。第4章 測試結(jié)果及分析 執(zhí)行結(jié)果: 參考文獻(xiàn)附錄:源代碼#include<iostream&g
11、t;#include<string> /strcmp()是用來比較大小的,它是C+中頭文件<string>(字符串函數(shù))#include<windows.h> /系統(tǒng)窗口時間using namespace std; const int N= 50;struct airlineint air_num; /班次號short begin_hour; /起飛時間小時short begin_minute; /起飛時間分鐘char begin_name10; /起始站點 char end_name10; /終點站名 float fly_time; /飛行時間 int t
12、otal; /乘員總定額int total_already; /已訂票人數(shù)bool exist; /航班狀態(tài)int fare; /飛機(jī)票價;struct airline bN=/航班號,起飛時間(小時),起飛時間(分鐘),起始站點,終點站名,飛行時間,成員定額,已訂票人數(shù),航班狀態(tài)1,12,0,"天津","廣州",2,145,130,true,1000, 2,6,30,"北京","成都",0.5,140,140,true,2000, 3,22,0,"廣州","南京",2.5,
13、140,120,true,2500,4,15,0,"天津","長沙",2,140,120,true,3000 ;/聲明全局變量int n=0; /航班數(shù)量 /函數(shù)聲明void input(); /錄入void find(); /查詢,按終點站來查詢string time(short begin_hour,char begin_minute); /調(diào)用系統(tǒng)時間void order(); /辦理訂票函數(shù)void refund(); /辦理退票函數(shù)void input() /錄入班次信息函數(shù)if(n<=0)cout<<"請輸入錄入班
14、次的數(shù)量:"<<endl;cin>>n; for(int i=4,j=0;i<n+4,j<n;i+,j+)cout<<"正在錄入第"<<j+1<<"個班次的信息!n"cout<<"-n"cout<<"請輸入班次的編號(1-50):"cin>>bi.air_num;if(bi.air_num>50|bi.air_num<1)cout<<"輸入編號錯誤!"&l
15、t;<endl;break;for(int j=0;j<i;j+)if(bi.air_num!=bj.air_num) continue; else cout<<"錄入失敗,此編號的班次已經(jīng)存在!"<<endl;break;if(j>=i) cout<<"請輸入班次的起飛時間:"<<endl<<"小時為:"cin>>bi.begin_hour;cout<<"分鐘為:"cin>>bi.begin_minu
16、te;cout<<"請輸入班次的起始地點:"cin>>bi.begin_name;cout<<"請輸入班次的終到地點:"cin>>bi.end_name; if(strcmp(bi.end_name,bi.begin_name)=0)cout<<"輸入錯誤!起始地點和終到地點不應(yīng)該相同!"<<endl;break;cout<<"請輸入班次的飛行時間(hour):"cin>>bi.fly_time;cout<<
17、"請輸入固定的載客量:"cin>>bi.total;cout<<"請輸入已訂票人數(shù):"cin>>bi.total_already; cout<<"請輸入飛機(jī)票價:"cin>>bi.fare; bi.exist=true; cout<<"-已成功錄入!-n"string time(short begin_hour,short begin_minute) /調(diào)用系統(tǒng)時間函數(shù)SYSTEMTIME sys; /系統(tǒng)時間 sysGetLocalTime(
18、&sys); /獲得本地電腦時間string str;if(begin_hour<sys.wHour)|(begin_hour=sys.wHour&&begin_minute<sys.wMinute)str="已發(fā)出!"else str="未發(fā)出!"return str;void output(int i)cout<<"-n"cout<<"班次號"<<" "<<"起飛時間"<<&q
19、uot; "<<"起始站"<<" "<<"終點站"<<" "<<"飛行時間"<<" "<<"固定載客量"<<" "<<"已訂票人數(shù)"<<" "<<"飛機(jī)票價"<<" "<<"飛機(jī)狀態(tài)&
20、quot;<<endl;cout<<" "<<bi.air_num<<" "<<bi.begin_hour<<":"<<bi.begin_minute<<" "<<bi.begin_name<<" "<<bi.end_name<<" "<<bi.fly_time<<" "<<bi
21、.total<<" "<<bi.total_already<<" "<<bi.fare<<" "<<bi.exist;void find() /查詢班次信息函數(shù)int k=-1;/計數(shù)器 char end10;cout<<"請輸入要查詢的終點站:n"cin>>end;for(int i=0;i<n+4;i+)if(strcmp(bi.end_name,end)=0) /strcmp()是用來比較大小的,它是C+中頭
22、文件<string>(字符串函數(shù)) /中定義的一個用于對兩組字符串進(jìn)行比較的函數(shù),它的返回值是int類型。output(i);k=i;if(k=-1)cout<<"不存在至此的航班"<<endl; void check() /瀏覽班次函數(shù)cout<<"已有的航班班次為:"<<n+4<<endl;for(int i=0;i<n+4;i+) output(i);cout<<time(bi.begin_hour,bi.begin_minute)<<endl;
23、/顯示是否發(fā)出航班 void order() /訂票函數(shù)int num1,num2,k=-1;char ch;cout<<"請輸入要購買機(jī)票的班次編號:"<<endl;cin>>num1;for(int i=0;i<n+4;i+)if(bi.air_num=num1) k=i;cout<<"存在此班次!"if(bi.total=bi.total_already)cout<<"對不起,此班次的機(jī)票已售完!"else cout<<"仍有機(jī)票"
24、<<bi.total-bi.total_already<<"張!"<<endl;cout<<"請輸入要購買的機(jī)票數(shù):"cin>>num2;if(bi.total-bi.total_already<num2)cout<<"對不起,您所要購買的機(jī)票數(shù)已超過剩余票數(shù),無法辦理!"<<endl;break;else cout<<"確定要購買?(y/n)"<<endl;cin>>ch;if(ch=
25、39;y'|ch='Y')SYSTEMTIME sys;GetLocalTime(&sys);if(bi.begin_hour>sys.wHour)|(bi.begin_hour=sys.wHour&&bi.begin_minute>sys.wMinute)bi.total_already+=num2;cout<<"訂票成功,祝您旅途愉快!"<<endl;else cout<<"此航班已經(jīng)發(fā)出,無法辦理訂票!"<<endl;else return;
26、 if(k=-1)cout<<"不存在編號為"<<num1<<"的班次!"<<endl;void refund() /退票函數(shù)int num1,num2,k=-1;char ch;cout<<"請輸入要退機(jī)票的班次編號:"<<endl;cin>>num1;for(int i=0;i<n+4;i+)if(bi.air_num=num1) k=i;cout<<"存在此班次!"SYSTEMTIME sys;GetLoca
27、lTime(&sys);if(bi.begin_hour<sys.wHour)|(bi.begin_hour=sys.wHour&&bi.begin_minute<sys.wMinute)cout<<"對不起,此航班已經(jīng)起飛,無法辦理退票!"<<endl;else cout<<"請輸入要退的機(jī)票數(shù):" cin>>num2;if(bi.total_already<num2)cout<<"只售出"<<bi.total_alre
28、ady<<"張票!"<<endl; break;else cout<<"確定要退票?(y/n)"<<endl;cin>>ch;if(ch='y'|ch='Y')bi.total_already-=num2;cout<<"退票成功,歡迎您下次光臨!"<<endl;else return; if(k=-1)cout<<"不存在編號為"<<num1<<"的班次!"<<endl;void main() /主函數(shù)char e='1'while(e!='0')cout<<"-n"cout<<"*飛機(jī)訂票系統(tǒ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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度風(fēng)力發(fā)電項目風(fēng)機(jī)設(shè)備采購與投資分析合同
- 2025年度智能制造對賭協(xié)議約定倍收益合作協(xié)議
- 二零二五年度林地使用權(quán)變更及補(bǔ)償合同
- 2025年度藥店藥店藥品知識產(chǎn)權(quán)保護(hù)聘用勞動合同
- 股權(quán)代持協(xié)議書標(biāo)準(zhǔn)模板:2025年度股權(quán)激勵適用
- 2025年度森林土地承包與林木撫育合作協(xié)議
- 二零二五年度企業(yè)內(nèi)部員工外出安全免責(zé)合同
- 二零二五年度汽車零部件貨物運(yùn)輸保險協(xié)議
- 二零二五年度歷史文化街區(qū)拆除搬遷保護(hù)協(xié)議
- 2025年度服裝廠職工勞動合同模板書(智能化工廠)
- 2024解析:第九章液體壓強(qiáng)-基礎(chǔ)練(解析版)
- 2024解析:第十章 浮力、阿基米德原理及其應(yīng)用-講核心(解析版)
- 隱睪手術(shù)配合
- 華東師范大學(xué)《社會學(xué)概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 建筑工程財務(wù)流程制度(6篇)
- 閥門培訓(xùn)課件
- 2024年四川省公務(wù)員錄用考試《行測》真題及答案解析
- 2024全新醫(yī)務(wù)人員手衛(wèi)生課件
- 高考英語一輪復(fù)習(xí)知識清單(全國版)專題01++定語從句十大考點歸納(清單)+含答案及解析
- 培訓(xùn)機(jī)構(gòu)收費退費管理規(guī)定
- 愛學(xué)習(xí)平臺登錄入口
評論
0/150
提交評論