




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 /學(xué) 號 成都理工大學(xué)計算機科學(xué)與技術(shù)系數(shù)據(jù)結(jié)構(gòu)課程設(shè)計設(shè)計說明書題目訂票系統(tǒng)學(xué) 生 姓 名班 級成 績指導(dǎo)教師(簽字) 計算機科學(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ù)飛機訂票系統(tǒng)的可設(shè)要求,要實現(xiàn)以下功能:42.具體的方法及函數(shù)調(diào)用的思想:4struct:/它相當(dāng)于一種記錄43.方法的實現(xiàn):51)input( ); /錄入52)find( ); /查詢,按終點站來查詢63)string time(short begin_hour,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á)城市,查詢飛機航班情況;(3)訂票:可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;(4)退票:訂票數(shù)量及航班情況。第2章 概要設(shè)計1、 開發(fā)環(huán)境系統(tǒng)環(huán)境:Microsoft Windows10 專業(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飛機訂票系統(tǒng)2、組成框圖退票訂票錄入信息查詢信息3、 流程圖點擊查詢機票進(jìn)入訂票機票機票信息頁面進(jìn)入退票頁面按條件查詢開始飛機起飛?購票失敗允許購買YNn飛機起飛?退票失敗允許退票YN返回第3章 詳細(xì)設(shè)計 1.根據(jù)飛機訂票系統(tǒng)的可設(shè)要求,要實現(xiàn)以下功能:(1)錄入:錄入航班情況(2)查詢: 可以查詢某個航線的情況 可以輸入抵達(dá)城市,查詢飛機航班情況;(3)訂票: 1)先判斷飛機是否起飛,如果發(fā)出航班則訂票失敗,否則可以訂機票。2)當(dāng)有余票時顯示剩余票數(shù),則可以訂票成功,如果沒有余票,則訂票失敗。(4)退票:1)先判斷飛機是否起飛,如果發(fā)出航班則訂票失敗,否則可以訂機票。 2)當(dāng)有余票時顯示剩余票數(shù),則可以退票成功,如果沒有余票,則退票失敗。2.具體的方法及函數(shù)調(diào)用的思想:struct:/它相當(dāng)于一種記錄定義要存儲的變量:可以通過以下的聲明來建立如圖的數(shù)據(jù)類型int air_num; /班次號 short begin_hour; /起飛時間小時 short begin_minute; /起飛時間分鐘 char begin_name10; /起始站點 char end_name10; /終點站名 float fly_time; /飛行時間 int total; /乘員總定額 int total_already; /已訂票人數(shù) bool exist; /航班狀態(tài) int fare; /飛機票價 定義一個結(jié)構(gòu)體來存儲四個航班信息: 里的變量依次表示為:航班號,起飛時間(小時),起飛時間(分鐘),起始站點,終點站名,飛行時間,成員定額,已訂票人數(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,140,120,true,2500, 4,15,0,天津,長沙,2,140,120,true,3000 1120天津廣州2145130true10002630北京成都0.5140140true20003220廣州南京2.5120120true25004150天津長沙2120120true30003.方法的實現(xiàn):1)input( ); /錄入input()方法的功能就是錄入航班號 i,起飛時間(小時)begin_hour,起飛時間(分鐘)begin_minute,起始地點名稱 begin_name,種植地點名稱 end_name,飛行時間 fly_time,總載客量 total,已訂票人數(shù) total_already,飛機票價 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ù)已有的飛機信息來依據(jù)終點信息來查詢航班。首先要調(diào)用讀取機票信息函數(shù),讀取要查詢的機票信息,既read()方法。并且在方法中有一個計數(shù)器 k,當(dāng)k=-1時輸出無此航班的飛機,反之根據(jù)終點站名字來查詢航班信息。3)string time(short begin_hour,char begin_minute); /調(diào)用系統(tǒng)時間當(dāng)輸入起飛時間與該電腦里的時間作比較,當(dāng)電腦現(xiàn)在的時間比輸入起飛時間大的話,則說明飛機已經(jīng)起飛。通過線面的語句來實現(xiàn):(begin_hoursys.wHour)|(begin_hour=sys.wHour&begin_minutesys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute),如果沒起飛,在判斷是否還有余票if(bi.total=bi.total_already),如果有,計算剩余的多少張票bi.total-bi.total_already,進(jìn)而訂在剩余票數(shù)的范圍內(nèi)購票,如果與之相反,則證明飛機已經(jīng)起飛也就是說已經(jīng)訂不到票了。5)refund( ); /辦理退票函數(shù)思路類似于訂票,首先要數(shù)如要退票的航班號,并且在這之后讀入系統(tǒng)中的航班信息,當(dāng)輸入航班編號后如無此航班號,則失敗,反之先判斷次航班是否已經(jīng)起飛if(bi.begin_hoursys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute),如果沒起飛,確定退票數(shù)完成退票操作。如果與之相反,則證明飛機已經(jīng)起飛了,無法進(jìn)行退票業(yè)務(wù)了。第4章 測試結(jié)果及分析 執(zhí)行結(jié)果: 參考文獻(xiàn)附錄:源代碼#include#include /strcmp()是用來比較大小的,它是C+中頭文件(字符串函數(shù))#include /系統(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 total; /乘員總定額int total_already; /已訂票人數(shù)bool exist; /航班狀態(tài)int fare; /飛機票價;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,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請輸入錄入班次的數(shù)量:n; for(int i=4,j=0;in+4,jn;i+,j+)cout正在錄入第j+1個班次的信息!n;cout-n;coutbi.air_num;if(bi.air_num50|bi.air_num1)cout輸入編號錯誤!endl;break;for(int j=0;ji;j+)if(bi.air_num!=bj.air_num) continue; else cout錄入失敗,此編號的班次已經(jīng)存在!=i) cout請輸入班次的起飛時間:endlbi.begin_hour;coutbi.begin_minute;coutbi.begin_name;coutbi.end_name; if(strcmp(bi.end_name,bi.begin_name)=0)cout輸入錯誤!起始地點和終到地點不應(yīng)該相同!endl;break;coutbi.fly_time;coutbi.total;coutbi.total_already; coutbi.fare; bi.exist=true; cout-已成功錄入!-n;string time(short begin_hour,short begin_minute) /調(diào)用系統(tǒng)時間函數(shù)SYSTEMTIME sys; /系統(tǒng)時間 sysGetLocalTime(&sys); /獲得本地電腦時間string str;if(begin_hoursys.wHour)|(begin_hour=sys.wHour&begin_minutesys.wMinute)str=已發(fā)出!;else str=未發(fā)出!;return str;void output(int i)cout-n;cout班次號 起飛時間 起始站 終點站 飛行時間 固定載客量 已訂票人數(shù) 飛機票價 飛機狀態(tài)endl;cout bi.air_num bi.begin_hour:bi.begin_minute bi.begin_name bi.end_name bi.fly_time bi.total bi.total_already bi.fare bi.exist;void find() /查詢班次信息函數(shù)int k=-1;/計數(shù)器 char end10;coutend;for(int i=0;in+4;i+)if(strcmp(bi.end_name,end)=0) /strcmp()是用來比較大小的,它是C+中頭文件(字符串函數(shù)) /中定義的一個用于對兩組字符串進(jìn)行比較的函數(shù),它的返回值是int類型。output(i);k=i;if(k=-1)cout不存在至此的航班endl; void check() /瀏覽班次函數(shù)cout已有的航班班次為:n+4endl;for(int i=0;in+4;i+) output(i);couttime(bi.begin_hour,bi.begin_minute)endl; /顯示是否發(fā)出航班 void order() /訂票函數(shù)int num1,num2,k=-1;char ch;cout請輸入要購買機票的班次編號:num1;for(int i=0;in+4;i+)if(bi.air_num=num1) k=i;cout存在此班次!;if(bi.total=bi.total_already)cout對不起,此班次的機票已售完!;else cout仍有機票bi.total-bi.total_already張!endl;coutnum2;if(bi.total-bi.total_alreadynum2)cout對不起,您所要購買的機票數(shù)已超過剩余票數(shù),無法辦理!endl;break;else cout確定要購買?(y/n)ch;if(ch=y|ch=Y)SYSTEMTIME sys;GetLocalTime(&sys);if(bi.begin_hoursys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute)bi.total_already+=num2;cout訂票成功,祝您旅途愉快!endl;else cout此航班已經(jīng)發(fā)出,無法辦理訂票!endl;else return; if(k=-1)cout不存在編號為num1的班次!endl;void refund() /退票函數(shù)int num1,num2,k=-1;char ch;cout請輸入要退機票的班次編號:num1;for(int i=0;in+4;i+)if(bi.air_num=num1) k=i;cout存在此班次!;SYSTEMTIME sys;GetLocalTime(&sys);if(bi.begin_hoursys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute)cout對不起,此航班已經(jīng)起飛,無法辦理退票!endl;else coutnum2;if(bi.total_alreadynum2)cout只售出bi.total_already張票!endl; break;else cout確定要退票?(y/n)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(
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國電腦清洗劑行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展報告
- 2025至2030中國電拋光鋼行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國電子游戲廣告行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國甲基丙烯酸二甲氨基乙酯行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國珠寶首飾行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國現(xiàn)場和非現(xiàn)場自動取款機行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國特種紙行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國特殊砂漿行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 填充墻砌體培訓(xùn)課件
- 教育科技的研發(fā)與應(yīng)用評價研究
- 2024年佛山市南海區(qū)圖書館招聘考試真題
- NAMPT調(diào)控NAD代謝影響椎間盤退變的分子機制與干預(yù)策略研究
- 地方病防治測試題及答案
- 健康教育大講堂:跌倒
- AFU阿芙精油品牌手冊
- T/CHES 43-2020水利水電工程白蟻實時自動化監(jiān)測預(yù)警系統(tǒng)技術(shù)規(guī)范
- 學(xué)習(xí)給復(fù)旦大學(xué)建校120周年賀信心得體會
- 2025內(nèi)蒙古包頭農(nóng)商行社會招聘10人筆試歷年典型考題及考點剖析附帶答案詳解
- 2025明光事業(yè)單位筆試真題
- 2025房縣事業(yè)單位筆試真題
- DBJ50T-195-2025 混凝土抗壓強度檢測技術(shù)標(biāo)準(zhǔn)
評論
0/150
提交評論