




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) /學(xué) 號(hào) 成都理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)說明書題目訂票系統(tǒng)學(xué) 生 姓 名班 級(jí)成 績指導(dǎo)教師(簽字) 計(jì)算機(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è)計(jì)41.根據(jù)飛機(jī)訂票系統(tǒng)的可設(shè)要求,要實(shí)現(xiàn)以下功能:42.具體的方法及函數(shù)調(diào)用的思想:4struct:/它相當(dāng)于一種記錄43.方法的實(shí)現(xiàn):51)input( ); /錄入52)find( ); /查詢,按終點(diǎn)站來查詢63)string time(short begin_hour,char begin_minute); /調(diào)用系統(tǒng)時(shí)間64)order( ); /辦理訂票函數(shù)65)refund( ); /辦理退票函數(shù)6第4章 測試結(jié)果及分析7執(zhí)行結(jié)果:7參考文獻(xiàn)10附錄:源代碼101第1章 問題描述通過此系統(tǒng)可以實(shí)現(xiàn)如下功能:(1)錄入:可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)(2)查詢: 可以查詢某個(gè)航線的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉);可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;(3)訂票:可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;(4)退票:訂票數(shù)量及航班情況。第2章 概要設(shè)計(jì)1、 開發(fā)環(huán)境系統(tǒng)環(huán)境:Microsoft Windows10 專業(yè)版開發(fā)環(huán)境:Microsoft Visual Studio 2015開發(fā)平臺(tái):Win64開發(fā)語言:C+硬件環(huán)境:(1) CPU:Intel Core i5(2) 內(nèi)存:4GB(3) 顯示卡:NVIDIA GeForce GTX950M飛機(jī)訂票系統(tǒng)2、組成框圖退票訂票錄入信息查詢信息3、 流程圖點(diǎn)擊查詢機(jī)票進(jìn)入訂票機(jī)票機(jī)票信息頁面進(jìn)入退票頁面按條件查詢開始飛機(jī)起飛?購票失敗允許購買YNn飛機(jī)起飛?退票失敗允許退票YN返回第3章 詳細(xì)設(shè)計(jì) 1.根據(jù)飛機(jī)訂票系統(tǒng)的可設(shè)要求,要實(shí)現(xiàn)以下功能:(1)錄入:錄入航班情況(2)查詢: 可以查詢某個(gè)航線的情況 可以輸入抵達(dá)城市,查詢飛機(jī)航班情況;(3)訂票: 1)先判斷飛機(jī)是否起飛,如果發(fā)出航班則訂票失敗,否則可以訂機(jī)票。2)當(dāng)有余票時(shí)顯示剩余票數(shù),則可以訂票成功,如果沒有余票,則訂票失敗。(4)退票:1)先判斷飛機(jī)是否起飛,如果發(fā)出航班則訂票失敗,否則可以訂機(jī)票。 2)當(dāng)有余票時(shí)顯示剩余票數(shù),則可以退票成功,如果沒有余票,則退票失敗。2.具體的方法及函數(shù)調(diào)用的思想:struct:/它相當(dāng)于一種記錄定義要存儲(chǔ)的變量:可以通過以下的聲明來建立如圖的數(shù)據(jù)類型int air_num; /班次號(hào) short begin_hour; /起飛時(shí)間小時(shí) short begin_minute; /起飛時(shí)間分鐘 char begin_name10; /起始站點(diǎn) char end_name10; /終點(diǎn)站名 float fly_time; /飛行時(shí)間 int total; /乘員總定額 int total_already; /已訂票人數(shù) bool exist; /航班狀態(tài) int fare; /飛機(jī)票價(jià) 定義一個(gè)結(jié)構(gòu)體來存儲(chǔ)四個(gè)航班信息: 里的變量依次表示為:航班號(hào),起飛時(shí)間(小時(shí)),起飛時(shí)間(分鐘),起始站點(diǎn),終點(diǎn)站名,飛行時(shí)間,成員定額,已訂票人數(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.方法的實(shí)現(xiàn):1)input( ); /錄入input()方法的功能就是錄入航班號(hào) i,起飛時(shí)間(小時(shí))begin_hour,起飛時(shí)間(分鐘)begin_minute,起始地點(diǎn)名稱 begin_name,種植地點(diǎn)名稱 end_name,飛行時(shí)間 fly_time,總載客量 total,已訂票人數(shù) total_already,飛機(jī)票價(jià) fare,航班狀態(tài) exist。變量int i=4,因?yàn)槭孪纫呀?jīng)錄入4個(gè)編號(hào)為14的航班號(hào),因此當(dāng)輸入14的航班號(hào)時(shí)會(huì)提醒此航班號(hào)已存在,因而在控制臺(tái)輸入的航班號(hào)必須大于4而小于50。變量int j=0;則j+1表示錄入第(j+1)個(gè)航班班次的信息2)find( ); /查詢,按終點(diǎn)站來查詢根據(jù)已有的飛機(jī)信息來依據(jù)終點(diǎn)信息來查詢航班。首先要調(diào)用讀取機(jī)票信息函數(shù),讀取要查詢的機(jī)票信息,既read()方法。并且在方法中有一個(gè)計(jì)數(shù)器 k,當(dāng)k=-1時(shí)輸出無此航班的飛機(jī),反之根據(jù)終點(diǎn)站名字來查詢航班信息。3)string time(short begin_hour,char begin_minute); /調(diào)用系統(tǒng)時(shí)間當(dāng)輸入起飛時(shí)間與該電腦里的時(shí)間作比較,當(dāng)電腦現(xiàn)在的時(shí)間比輸入起飛時(shí)間大的話,則說明飛機(jī)已經(jīng)起飛。通過線面的語句來實(shí)現(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),如果有,計(jì)算剩余的多少張票bi.total-bi.total_already,進(jìn)而訂在剩余票數(shù)的范圍內(nèi)購票,如果與之相反,則證明飛機(jī)已經(jīng)起飛也就是說已經(jīng)訂不到票了。5)refund( ); /辦理退票函數(shù)思路類似于訂票,首先要數(shù)如要退票的航班號(hào),并且在這之后讀入系統(tǒng)中的航班信息,當(dāng)輸入航班編號(hào)后如無此航班號(hào),則失敗,反之先判斷次航班是否已經(jīng)起飛if(bi.begin_hoursys.wHour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute),如果沒起飛,確定退票數(shù)完成退票操作。如果與之相反,則證明飛機(jī)已經(jīng)起飛了,無法進(jìn)行退票業(yè)務(wù)了。第4章 測試結(jié)果及分析 執(zhí)行結(jié)果: 參考文獻(xiàn)附錄:源代碼#include#include /strcmp()是用來比較大小的,它是C+中頭文件(字符串函數(shù))#include /系統(tǒng)窗口時(shí)間using namespace std; const int N= 50;struct airlineint air_num; /班次號(hào)short begin_hour; /起飛時(shí)間小時(shí)short begin_minute; /起飛時(shí)間分鐘char begin_name10; /起始站點(diǎn) char end_name10; /終點(diǎn)站名 float fly_time; /飛行時(shí)間 int total; /乘員總定額int total_already; /已訂票人數(shù)bool exist; /航班狀態(tài)int fare; /飛機(jī)票價(jià);struct airline bN=/航班號(hào),起飛時(shí)間(小時(shí)),起飛時(shí)間(分鐘),起始站點(diǎn),終點(diǎn)站名,飛行時(shí)間,成員定額,已訂票人數(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(); /查詢,按終點(diǎn)站來查詢string time(short begin_hour,char begin_minute); /調(diào)用系統(tǒng)時(shí)間void order(); /辦理訂票函數(shù)void refund(); /辦理退票函數(shù)void input() /錄入班次信息函數(shù)if(n=0)cout請(qǐng)輸入錄入班次的數(shù)量:n; for(int i=4,j=0;in+4,jn;i+,j+)cout正在錄入第j+1個(gè)班次的信息!n;cout-n;coutbi.air_num;if(bi.air_num50|bi.air_num1)cout輸入編號(hào)錯(cuò)誤!endl;break;for(int j=0;ji;j+)if(bi.air_num!=bj.air_num) continue; else cout錄入失敗,此編號(hào)的班次已經(jīng)存在!=i) cout請(qǐng)輸入班次的起飛時(shí)間:endlbi.begin_hour;coutbi.begin_minute;coutbi.begin_name;coutbi.end_name; if(strcmp(bi.end_name,bi.begin_name)=0)cout輸入錯(cuò)誤!起始地點(diǎn)和終到地點(diǎn)不應(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í)間函數(shù)SYSTEMTIME sys; /系統(tǒng)時(shí)間 sysGetLocalTime(&sys); /獲得本地電腦時(shí)間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班次號(hào) 起飛時(shí)間 起始站 終點(diǎn)站 飛行時(shí)間 固定載客量 已訂票人數(shù) 飛機(jī)票價(jià) 飛機(jī)狀態(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;/計(jì)數(shù)器 char end10;coutend;for(int i=0;in+4;i+)if(strcmp(bi.end_name,end)=0) /strcmp()是用來比較大小的,它是C+中頭文件(字符串函數(shù)) /中定義的一個(gè)用于對(duì)兩組字符串進(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請(qǐng)輸入要購買機(jī)票的班次編號(hào):num1;for(int i=0;in+4;i+)if(bi.air_num=num1) k=i;cout存在此班次!;if(bi.total=bi.total_already)cout對(duì)不起,此班次的機(jī)票已售完!;else cout仍有機(jī)票bi.total-bi.total_already張!endl;coutnum2;if(bi.total-bi.total_alreadynum2)cout對(duì)不起,您所要購買的機(jī)票數(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不存在編號(hào)為num1的班次!endl;void refund() /退票函數(shù)int num1,num2,k=-1;char ch;cout請(qǐng)輸入要退機(jī)票的班次編號(hào):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對(duì)不起,此航班已經(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不存在編號(hào)為num1的班次!endl;void main() /主函數(shù)char e=1;while(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 糞污資源化利用技術(shù)在中小規(guī)模養(yǎng)殖企業(yè)中的應(yīng)用
- 德育共同體視角下中醫(yī)藥高校學(xué)生思想政治教育效果評(píng)估
- 山東省齊河縣2024-2025學(xué)年八上數(shù)學(xué)期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 內(nèi)蒙古烏拉特前旗三校2024-2025學(xué)年化學(xué)九上期末質(zhì)量檢測模擬試題含解析
- 第6課 西方的文官制度教學(xué)設(shè)計(jì)
- 酒店餐飲企業(yè)代理記賬與餐飲財(cái)務(wù)管理合同
- 廠房抵押貸款居間擔(dān)保協(xié)議
- 茶餐廳廚房承包及員工培訓(xùn)服務(wù)合同
- 某商業(yè)廣場電力設(shè)施規(guī)劃與配電系統(tǒng)設(shè)計(jì)
- 虛擬現(xiàn)實(shí)技術(shù)在安全培訓(xùn)中的應(yīng)用
- 暑假假期安全教育(課件)-小學(xué)生主題班會(huì)
- 2024年1月黑龍江高中學(xué)業(yè)水平合格考政治試卷真題(含答案詳解)
- 供應(yīng)室護(hù)理進(jìn)修匯報(bào)總結(jié)
- 儲(chǔ)糧害蟲與技術(shù)和化學(xué)防治
- 自適應(yīng)前照燈控制系統(tǒng)
- 電梯招標(biāo)文件示范文本
- 上海市安裝工程預(yù)算定額(2000)工程量計(jì)算規(guī)則
- 街道、鎮(zhèn)、區(qū)道路保潔及垃圾轉(zhuǎn)運(yùn)服務(wù)采購項(xiàng)目服務(wù)方案(投標(biāo)方案)
- GB/T 16886.10-2024醫(yī)療器械生物學(xué)評(píng)價(jià)第10部分:皮膚致敏試驗(yàn)
- 醫(yī)院感染管理制度制度匯編
- 幼兒園衛(wèi)生檢查表
評(píng)論
0/150
提交評(píng)論