




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 1學(xué) 號 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計設(shè)計說明書飛機(jī)訂票系統(tǒng)起止日期: 2011 年 12 月 12 日 至 2011 年 12 月 16 日學(xué)生姓名 班級 成績指導(dǎo)教師 (簽字 ) 電子與信息工程系電子與信息工程系2011 年年 12 月月 16 日日1 2天津城市建設(shè)學(xué)院課程設(shè)計任務(wù)書20112012 學(xué)年第學(xué)年第 1 學(xué)期學(xué)期 電子與信息工程 系 軟件工程 專業(yè) 班級課程設(shè)計名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 設(shè)計題目: 飛機(jī)訂票系統(tǒng) 完成期限:自 2011 年 12 月 12 日至 2011 年 12 月 16 日共 1 周設(shè)計依據(jù)、要求及主要內(nèi)容(可另加附頁):一、設(shè)計目的熟悉各種數(shù)據(jù)結(jié)構(gòu)和運算,會使
2、用數(shù)據(jù)結(jié)構(gòu)的基本操作解決一些實際問題。二、設(shè)計要求 (1)重視課程設(shè)計環(huán)節(jié),用嚴(yán)謹(jǐn)、科學(xué)和踏實的工作態(tài)度對待課程設(shè)計的每一項任務(wù);(2)按照課程設(shè)計的題目要求,獨立地完成各項任務(wù),嚴(yán)禁抄襲;凡發(fā)現(xiàn)抄襲,抄襲者與被抄襲者皆以零分計入本課程設(shè)計成績。凡發(fā)現(xiàn)實驗報告或源程序雷同,涉及的全部人員皆以零分計入本課程設(shè)計成績;(3)學(xué)生在接受設(shè)計任務(wù)后,首先要按設(shè)計任務(wù)書的要求編寫設(shè)計進(jìn)程表;(4)認(rèn)真編寫課程設(shè)計報告。三、設(shè)計內(nèi)容訂票系統(tǒng)1)問題描述 (1)錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)(2)查詢: 可以查詢某個航線的情況可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班
3、情況;(3)訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;(4)退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。(5)修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件2) 基本要求根據(jù)以上功能說明,設(shè)計航班信息,訂票信息的存儲結(jié)構(gòu),設(shè)計程序完成功能1 3目錄一、需求分析一、需求分析.4二、問題求解二、問題求解.4三、總體設(shè)計三、總體設(shè)計.41.程序設(shè)計組成框圖:.52.程序設(shè)計流程圖.6四、詳細(xì)設(shè)計四、詳細(xì)設(shè)計.71.根據(jù)飛機(jī)訂票系統(tǒng)的可設(shè)要求,要實現(xiàn)以下功能:.52.具體的方法及函
4、數(shù)調(diào)用的思想:.6定義要存儲的變量:.63.方法的實現(xiàn):.6五、調(diào)試與測試五、調(diào)試與測試.91.錄入信息時.92.訂票時:.93.退票時:.10六、關(guān)鍵源程序清單和執(zhí)行結(jié)果六、關(guān)鍵源程序清單和執(zhí)行結(jié)果.101.源程序:.102.執(zhí)行結(jié)果:.17七、參考文獻(xiàn)七、參考文獻(xiàn).211 4一、 需求分析本課程設(shè)計的名稱是飛機(jī)訂票系統(tǒng),本系統(tǒng)主要是描述了顧客在訂飛機(jī)票時的一些具體情況,包括錄入航班、乘客情況,查詢是否還有該顧客要乘坐的飛機(jī)以及剩余的票,之后是確定乘客訂票管理,然后當(dāng)乘客有突發(fā)情況發(fā)生時會伴隨著退票的發(fā)生。這就是產(chǎn)生訂票系統(tǒng)產(chǎn)生的原因。二、 問題求解 當(dāng)我們遇到飛機(jī)訂票這件事情的時候,我們通
5、常發(fā)生的地點是飛機(jī)場,首先,我們應(yīng)該到售票大廳去購買飛機(jī)票,因此,我根據(jù)我學(xué)過的 C+中學(xué)過的結(jié)構(gòu)體 struct,它相當(dāng)于其他高級語言中的高級記錄。因此定義了一個 airline 結(jié)構(gòu)體來存儲變量:struct airline ;air_num(班次號) ,short begin_hour(起飛時間小時) ,short begin_minute(起飛時間分鐘) ,char begin_name10(起始站點) ,char end_name10(終點站名) ,float fly_time(飛行時間) ,int total(乘員總定額) ,int total_already(已訂票人數(shù)) ,bo
6、ol exist(航班狀態(tài)) ,int fare;(飛機(jī)票價)定義了 struct airline bN ;(N 規(guī)定不能大于 50)來實現(xiàn)存儲:1120天津廣州2145130true10002630北京成都0.5140140true20003220廣州南京2.5120120true25004150天津長沙2120120true3000首先就要查詢是否有該路線的票,如果有的話則進(jìn)行購買,即要通過把信息錄入 input()方法來實現(xiàn)。則要錄入航班號(air_num) ,起飛時間(begin_hour,begin_minute) ,飛行時間(fly_time) ,起始站(begin_name) ,
7、終點站(end_name)等。在查找 find()方法中,首先定義一個計數(shù)器 k=-1,然后讀入文件信息,輸入要查詢的終點站名稱end,用 strcmp()是用來比較 end_name 和 end 字符串的大小,它的返回值是 int 類型。如果有此終點站,則調(diào)用 output(i)方法,打印出符合條件的航班信息,然后把 i 的值付給計數(shù)器 k。如果 k=-1,則顯示不存在此航班。在瀏覽 check()方法中,顯示已有的航班班次,調(diào)用 output()方法來顯示信息,緊著著要調(diào)用time()來判斷航班是否發(fā)出并輸出??赡苓€有一種情況需要考慮,當(dāng)飛機(jī)起飛了,則既不能訂票也不能退票了,這是通過時間的
8、比較來實現(xiàn)的,再次運用了電腦上的事件系統(tǒng)#include(系統(tǒng)窗口時間) ,建立方法 string time(short begin_hour,short begin_minute)來調(diào)用系統(tǒng)時間函數(shù)和輸入的時間作比較,判斷此時的時間和電腦現(xiàn)在系統(tǒng)的大小來比較,如果輸入的時間的小時數(shù)大于電腦系統(tǒng)里面的小時數(shù)或者輸入的小時數(shù)和電腦系統(tǒng)的小時數(shù)相等&輸入的分鐘數(shù)大于電腦系統(tǒng)的分鐘數(shù),其代碼實現(xiàn)如下:(if(begin_hoursys.wHour)|(begin_hour=sys.wHour&begin_minutenum1) ,因為事先在結(jié)構(gòu)體里存儲了四個航班信息,所以如果輸入的
9、num1 在 bi.air_num(即編號 14),則會 coutnum2,然后拿 num2 的大小和總票數(shù)減去已經(jīng)售出的票數(shù)的大小作比較,if(bi.total-bi.total_alreadynum2) ,接著詢問乘客是否去熱定要購票 if(ch=y|ch=Y),進(jìn)而進(jìn)行下一步,然后在判斷飛機(jī)是否已經(jīng)起飛,如果沒起飛則訂票成功,返回訂票成功,祝您旅途愉快!,然后調(diào)用 save()來把訂票后的信息存起來。反之無法辦理。然后,一旦乘客往里或者把票給丟了,售票員也能通過乘客的信息查詢到該乘客是否確實買過票,這就通過find()來查找,如果要瀏覽班次則需要 check()來實現(xiàn)。此程序的 outp
10、ut()方法是用來在控制臺顯示給售票員看的,所以要清楚明了,便于操作。三、總體設(shè)計1.程序設(shè)計組成框圖:飛機(jī)訂票系統(tǒng)錄入信息查詢信息訂票退票1 62.程序設(shè)計流程圖點擊查詢機(jī)票進(jìn)入訂票機(jī)票機(jī)票信息頁面進(jìn)入退票頁面按條件查詢開始飛機(jī)起飛?購票失敗允許購買YNn飛機(jī)起飛?退票失敗允許退票YN返回1 7四、詳細(xì)設(shè)計1.根據(jù)飛機(jī)訂票系統(tǒng)的可設(shè)要求,要實現(xiàn)以下功能:(1)錄入:錄入航班情況(2)查詢: 可以查詢某個航線的情況 可以輸入抵達(dá)城市,查詢飛機(jī)航班情況;(3)訂票: 1)先判斷飛機(jī)是否起飛,如果發(fā)出航班則訂票失敗,否則可以訂機(jī)票。2)當(dāng)有余票時顯示剩余票數(shù),則可以訂票成功,如果沒有余票,則訂票失
11、敗。(4)退票:1)先判斷飛機(jī)是否起飛,如果發(fā)出航班則訂票失敗,否則可以訂機(jī)票。 2)當(dāng)有余票時顯示剩余票數(shù),則可以退票成功,如果沒有余票,則退票失敗。2.具體的方法及函數(shù)調(diào)用的思想:(1)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; /乘員總定額 i
12、nt total_already; /已訂票人數(shù) bool exist; /航班狀態(tài) int fare; /飛機(jī)票價 定義一個結(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,1 8 4,15,0,天津,長沙,2,140,120,true,3000 1120天津廣州2145130t
13、rue10002630北京成都0.5140140true20003220廣州南京2.5120120true25004150天津長沙2120120true30003.方法的實現(xiàn):1)save( ); /保存航班信息因為可設(shè)要求把數(shù)據(jù)存儲在文件中,所以必須編寫此保存方法,因此用到 fstream 頭文件名(fstream 是 iostream 類的派生)用來支持對磁盤文件的輸入輸出,信息保存在 airpline.txt 文件中。2)read( ); /讀取航班信息read 方法是用來讀取 airpline.txt 文件中航班數(shù)據(jù)的,ios:in 以輸入方式打開文件3)input( ); /錄入in
14、put()方法的功能就是錄入航班號 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)個航班班次的信息4)find( ); /查詢,按終點站
15、來查詢根據(jù)已有的飛機(jī)信息來依據(jù)終點信息來查詢航班。首先要調(diào)用讀取機(jī)票信息函數(shù),讀取要查詢的機(jī)票信息,既 read()方法。并且在方法中有一個計數(shù)器 k,當(dāng) k=-1 時輸出無此航班的飛機(jī),反之根據(jù)終點站名字來查詢航班信息。5)string time(short begin_hour,char begin_minute); /調(diào)用系統(tǒng)時間當(dāng)輸入起飛時間與該電腦里的時間作比較,當(dāng)電腦現(xiàn)在的時間比輸入起飛時間大的話,則說明飛機(jī)已經(jīng)起飛。通過線面的語句來實現(xiàn):(begin_hoursys.wHour)|(begin_hour=sys.wHour&begin_minutesys.wHour)|(
16、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ī)已經(jīng)1 9起飛也就是說已經(jīng)訂不到票了。7)refund( ); /辦理退票函數(shù)思路類似于訂票,首先要數(shù)如要退票的航班號,并且在這之后讀入系統(tǒng)中的航班信息,當(dāng)輸入航班編號后如無此航班號,則失敗,反之先判斷次航班是否已經(jīng)起飛 if(bi.begin_hoursys.w
17、Hour)|(bi.begin_hour=sys.wHour&bi.begin_minutesys.wMinute),如果沒起飛,確定退票數(shù)完成退票操作。如果與之相反,則證明飛機(jī)已經(jīng)起飛了,無法進(jìn)行退票業(yè)務(wù)了。五、調(diào)試與測試六、關(guān)鍵源程序清單和執(zhí)行結(jié)果1. 源程序:#include#include /strcmp()是用來比較大小的,它是 C+中頭文件(字符串函數(shù))#include /系統(tǒng)窗口時間using namespace std; const int N= 50;struct airlineint air_num; /班次號short begin_hour; /起飛時間小時sho
18、rt begin_minute; /起飛時間分鐘char begin_name10; /起始站點 char end_name10; /終點站名 float fly_time; /飛行時間 int total; /乘員總定額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
19、,true,2000, 3,22,0,廣州,南京,2.5,140,120,true,2500,1 104,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; f
20、or(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;1 11coutbi.end_name; if
21、(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
22、_hoursys.wHour)|(begin_hour=sys.wHour&begin_minutesys.wMinute)str=已發(fā)出!;else str=未發(fā)出!;return str;void output(int i)cout-n;cout班次號 起飛時間 起始站 終點站 飛行時間 固定載客量 已訂票人數(shù) 飛機(jī)票價 飛機(jī)狀態(tài)endl;cout bi.air_num bi.begin_hour:bi.begin_minute bi.begin_name bi.end_name bi.fly_time 1 12bi.total bi.total_already bi.fare b
23、i.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);cout
24、time(bi.begin_hour,bi.begin_minute)endl; /顯示是否發(fā)出航班 1 13void order() /訂票函數(shù)int num1,num2,k=-1;char ch;cout請輸入要購買機(jī)票的班次編號:num1;for(int i=0;in+4;i+)if(bi.air_num=num1) k=i;cout存在此班次!;if(bi.total=bi.total_already)cout對不起,此班次的機(jī)票已售完!;else cout仍有機(jī)票bi.total-bi.total_already張!endl;coutnum2;if(bi.total-bi.total
25、_alreadynum2)cout對不起,您所要購買的機(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;1 14else cout此航班已經(jīng)發(fā)出,無法辦理訂票!endl;else return; if(k=-1)cout不存在編號為num1的班次!endl;void refund() /退票函數(shù)int num1,num2,k=-1;char ch;cout請輸入要退
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 師生捐贈活動方案
- 小組教育活動方案
- 小學(xué)節(jié)慶日活動方案
- 展廳開放活動方案
- 師德標(biāo)兵演講活動方案
- 巢湖煙花活動策劃方案
- 小學(xué)網(wǎng)絡(luò)育人活動方案
- 小組每月活動策劃方案
- 小學(xué)環(huán)境保護(hù)活動方案
- 小學(xué)登高活動方案
- AI與智慧城市建設(shè)的人才培養(yǎng)策略研究
- 物業(yè)夏季安全培訓(xùn)
- 道路工程制圖與識圖課件:識讀公路路線工程圖
- 碳匯效益評估體系-深度研究
- 初級無機(jī)化學(xué)反應(yīng)生產(chǎn)工職業(yè)技能鑒定理論考試題庫(含答案)
- 體育培訓(xùn)協(xié)議合同范本
- 2025年離婚協(xié)議紙質(zhì)模板電子版
- 2024-2025學(xué)年度第一學(xué)期七年級英語期末試卷
- 2025年春新北師大版數(shù)學(xué)一年級下冊課件 綜合實踐 設(shè)計教室裝飾圖
- 2025年陜西延長石油集團(tuán)礦業(yè)公司招聘筆試參考題庫含答案解析
- 廣東省茂名市2023-2024學(xué)年高一下學(xué)期7月期末考試 政治 含解析
評論
0/150
提交評論