數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告航空售票處服務(wù)系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告航空售票處服務(wù)系統(tǒng)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告航空售票處服務(wù)系統(tǒng)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告航空售票處服務(wù)系統(tǒng)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告航空售票處服務(wù)系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、淮陰工學(xué)院 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 選題名稱(chēng)選題名稱(chēng): 航空售票處服務(wù)系統(tǒng) 系(院)系(院): 計(jì)算機(jī)工程學(xué)院 專(zhuān)專(zhuān) 業(yè)業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班班 級(jí)級(jí): 計(jì)算機(jī) 1084 姓姓 名名: 學(xué)學(xué) 號(hào)號(hào): 1081308119 指導(dǎo)教師指導(dǎo)教師: 學(xué)年學(xué)期學(xué)年學(xué)期: 2009 2010 學(xué)年 第 2 學(xué)期 2010年 6 月 26 日 設(shè)計(jì)任務(wù)書(shū)設(shè)計(jì)任務(wù)書(shū) 課題課題 名稱(chēng)名稱(chēng) 航空售票處服務(wù)系統(tǒng) 設(shè)計(jì)設(shè)計(jì) 目的目的 本課程設(shè)計(jì)的目的是通過(guò)實(shí)踐使學(xué)生經(jīng)歷一個(gè)小型系統(tǒng)開(kāi)發(fā)的全過(guò)程并受 到一次綜合的訓(xùn)練,以便能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識(shí)去分析、 解決實(shí)際問(wèn)題。 實(shí)驗(yàn)實(shí)驗(yàn)

2、環(huán)境環(huán)境 1、windows sever 2008 2、visual c+ 6.0 任務(wù)任務(wù) 要求要求 任務(wù):任務(wù): 完成航空售票處服務(wù)系統(tǒng)系統(tǒng)的分析設(shè)計(jì)工作,并選用適當(dāng)?shù)拈_(kāi)發(fā)工 具完成系統(tǒng)的開(kāi)發(fā)。 要求:要求: 1、完成需求分析; 2、進(jìn)行概念設(shè)計(jì); 3、進(jìn)行詳細(xì)設(shè)計(jì)和實(shí)現(xiàn); 4、進(jìn)行調(diào)試與操作說(shuō)明; 工作進(jìn)度計(jì)劃工作進(jìn)度計(jì)劃 序號(hào)序號(hào)起止日期起止日期工工 作作 內(nèi)內(nèi) 容容 2010.06.21網(wǎng)上資料搜索 2010.6.22需求分析與概念設(shè)計(jì) 2010.6.23詳細(xì)設(shè)計(jì)與調(diào)試 2010.06.24完成報(bào)告及 ppt 講稿,答辯 指導(dǎo)教師:指導(dǎo)教師: 2010 年年 6 月月 10 日日 摘

3、要: 在當(dāng)今經(jīng)濟(jì)和商務(wù)交往日益頻繁的狀況下,航空服務(wù)行業(yè)正面臨客流量驟 增的壓力。越來(lái)越多的航空公司都認(rèn)識(shí)到傳統(tǒng)的售票方法已經(jīng)不能適合當(dāng)今社 會(huì)的需要,必須借助先進(jìn)的計(jì)算機(jī)信息技術(shù)對(duì)售票服務(wù)進(jìn)行管理。 “航空售票系 統(tǒng)”可以說(shuō)是整個(gè)航空售票計(jì)算機(jī)信息系統(tǒng)的中心子系統(tǒng),因?yàn)楹娇帐燮弊钪?要的功能就是為旅客提供訂票退票。通過(guò)此程序能夠?qū)崿F(xiàn)添加、查詢、訂票、 退票、修改、刪除、瀏覽、保存等功能。實(shí)現(xiàn)這一課程,首先必須對(duì)一些知識(shí) 點(diǎn)有所了解,我們是用單鏈表來(lái)做的。通過(guò)此程序能夠?qū)崿F(xiàn)添加、查詢、訂票、 退票、修改、刪除、瀏覽、保存等功能。實(shí)現(xiàn)這一課程,首先必須對(duì)一些知識(shí) 點(diǎn)有所了解,我們是用單鏈表來(lái)做的

4、。概要設(shè)計(jì)部分主要介紹了邏輯設(shè)計(jì),物 理設(shè)計(jì),界面設(shè)計(jì)和系統(tǒng)功能模塊圖;源碼部分給出了此程序所有的實(shí)現(xiàn)源代 碼。 關(guān)鍵詞:航空售票系統(tǒng);訂票退票;單鏈表;實(shí)現(xiàn)源代碼 目目 錄錄 1 需求分析.1 2 概要設(shè)計(jì).2 2.1 總體功能結(jié)構(gòu)設(shè)計(jì).2 2.2 主要實(shí)現(xiàn)的方法和原理.3 3 詳細(xì)設(shè)計(jì)和實(shí)現(xiàn).3 3.1 添加航班信息模塊.3 3.2 查詢航班信息模塊.5 3.3 訂票函數(shù)模塊.9 3.4 退票函數(shù)模塊.12 3.5 修改航班信息模塊.16 3.6 刪除航班信息模塊.20 3.7 瀏覽航班信息模塊.21 4 調(diào)試與操作說(shuō)明.22 總結(jié).30 致謝.31 參考文獻(xiàn).32 1 需求分析需求分析

5、本次課程設(shè)計(jì)利用 c+語(yǔ)言來(lái)編寫(xiě),其運(yùn)行平臺(tái)為 visual c+。 1. 問(wèn)題描述: 航空客運(yùn)訂票業(yè)務(wù)活動(dòng)包括:查詢航線、客票預(yù)定和辦理退票等。設(shè)計(jì)一 個(gè)航空客運(yùn)訂票系統(tǒng),以使上述業(yè)務(wù)可以借助計(jì)算機(jī)來(lái)完成。 2. 基本要求: 任務(wù):通過(guò)此系統(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à)折扣,確定航班是否滿倉(cāng)) ; (3)可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況; (4)訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂 票,如

6、果該航班已經(jīng)無(wú)票,可以提供相關(guān)可選擇航班; (5)退票:可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號(hào), 訂票數(shù)量及航班情況,訂單要有編號(hào)。 (6)修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件。 3. 查詢能實(shí)現(xiàn)的操作和功能如下: 查詢航線:根據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號(hào)、飛機(jī)號(hào)、星 期幾飛行,最近一天航班的日期和余票額; 承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號(hào)、訂票數(shù)額)查詢?cè)摵桨嗥?額情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號(hào);若已滿員或余票 少于訂票額,則需重新詢問(wèn)客戶要求。若需要,可登記排隊(duì)候補(bǔ); 承辦退票業(yè)務(wù):根據(jù)客戶的情況(日期、航班) ,為客戶辦

7、理退票手續(xù),然 后查詢?cè)摵桨嗍欠裼腥伺抨?duì),首先詢問(wèn)排在第一的客戶,若所退票數(shù)滿足他的 要求,則為他辦理訂票手續(xù),否則一次詢問(wèn)其他排隊(duì)候補(bǔ)的客戶。 2 概要設(shè)計(jì)概要設(shè)計(jì) 2.1 總體功能結(jié)構(gòu)設(shè)計(jì)總體功能結(jié)構(gòu)設(shè)計(jì) 1航空售票處服務(wù)系統(tǒng)業(yè)務(wù)活動(dòng)包括:添加航班信息,查詢航班信息,修 改航班信息,刪除航班信息,訂票業(yè)務(wù),退票業(yè)務(wù),保存,退出等,以 上述業(yè)務(wù)可以借助計(jì)算機(jī)來(lái)完成。 2每條航線所涉及的信息有:航班號(hào),航班起點(diǎn)站,航班終點(diǎn)站,航班起 飛時(shí)間日期,航班飛行時(shí)間,航班票數(shù),航班剩余票數(shù)。 3作為示意系統(tǒng),全部數(shù)據(jù)可以只放在內(nèi)存中,但保存數(shù)據(jù)使用文件存儲(chǔ)。 4系統(tǒng)能實(shí)現(xiàn)的操作和功能如下: 詢航線:根

8、據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號(hào)、起飛起 點(diǎn)和重點(diǎn),航班,訂票數(shù),等待訂票客戶和剩余票額。 航線信息的處理:包括添加,查詢,修改,刪除航線信息。 承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號(hào)、訂票數(shù)額)查詢?cè)摵?班票額情況,若尚有余票,則為客戶辦理訂票手續(xù)。若已滿員或余 票額少于訂票額,則需重新詢問(wèn)客戶要求。若需要,可登記排隊(duì)候 補(bǔ); 承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(日期、航班),為客戶辦理退 票手續(xù),然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢問(wèn)排在第一的 客戶,若所剩票額能滿足他的要求則為他辦理訂票手續(xù),否則依 次詢問(wèn)其它排隊(duì)候補(bǔ)的客戶。 5兩個(gè)客戶名單可分別由線性表和隊(duì)列實(shí)現(xiàn)。為查找方便

9、已訂票客戶的 線性表應(yīng)按客戶姓名有序,并且,為插入和刪除方便,應(yīng)以鏈表作存儲(chǔ) 結(jié)構(gòu)。由于預(yù)約人數(shù)無(wú)法預(yù)計(jì),隊(duì)列也應(yīng)以鏈表作存儲(chǔ)結(jié)構(gòu)。整個(gè)系統(tǒng) 需匯總各條航線約情況登錄在一張線性表上,由于航線基本不變采用順 序存儲(chǔ)結(jié)構(gòu),并按航班有序或按終點(diǎn)站名有序。 6保存當(dāng)前操作:將所有數(shù)據(jù)寫(xiě)入文件中。使下次登錄時(shí)候可以使用此次 操作的信息。為以后接入數(shù)據(jù)庫(kù)留接口。 7密碼驗(yàn)證部分:為以后接入數(shù)據(jù)庫(kù)使用密碼驗(yàn)證留接口。 圖 2.1 系統(tǒng)功能結(jié)構(gòu)圖 2.2 主要實(shí)現(xiàn)的方法和原理主要實(shí)現(xiàn)的方法和原理 此課程設(shè)計(jì)主要使用的是鏈表的相關(guān)操作,如創(chuàng)建,插入,刪除等。 在設(shè)計(jì)訂票等待相關(guān)函數(shù)的時(shí)候用了隊(duì)列的先進(jìn)先出的思想

10、來(lái)設(shè)計(jì)等待函 數(shù)。先申請(qǐng)等待的客戶在有余票的時(shí)候優(yōu)先得到訂票權(quán)。 3 詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)詳細(xì)設(shè)計(jì)和實(shí)現(xiàn) 3.1 添加航班信息模塊添加航班信息模塊 隊(duì)列算法 輸入相關(guān)數(shù)據(jù) (字符型) 鏈表 圖 3.1 添加航班信息功能模塊圖 此模塊通過(guò)鏈表的創(chuàng)建和插入的原理,把輸入的相關(guān)數(shù)據(jù)儲(chǔ)存在鏈表中。 函數(shù)如下: /.添加航班信息函數(shù). void newairsysinfo(vector *vec_air)/輸入新的航班信息 airsysinfo* pa; char yes=n; coutyes; if(yes=n|yes=n)return ; coutendl; string num,start,end,ti

11、me,flytime; int count; /*開(kāi)始錄入航班信息*/ coutnum; coutendl; coutstart; coutendl; coutend; couttime; coutendl; coutflytime; coutcount; coutsetnum(num); /新航班編號(hào) pa-setstart(start); /新航班起點(diǎn)站 pa-setend(end); /新航班終點(diǎn)站 pa-settime(time); /新航班起飛日期 pa-setflytime(flytime); /新航班總飛行時(shí)間(小時(shí)) pa-setcount(count); /新航班總票數(shù) pa

12、-setleftcount(count); /新航班剩余票數(shù) vec_air-push_back(pa); coutendl; coutt 錄入新航班信息成功,請(qǐng)查看!endl; coutt 按任意鍵返回主界面!; cin.get(); cin.get(); /*結(jié)束錄入航班信息*/ 3.2 查詢航班信息模塊查詢航班信息模塊 鏈表順序遍歷 輸入字符 (選擇查找方式) 節(jié)點(diǎn) 圖 3.2 查詢航班信息功能模塊圖 通過(guò)鏈表的順序遍歷來(lái)查找相關(guān)節(jié)點(diǎn) 函數(shù)如下: /.查詢航班信息函數(shù). void findairsysinfo(vector vec_air)/查詢航班信息 system(cls); cou

13、tendl; char choice=p; while(choice!=y) system(cls); coutendl; couttt1 按航班編號(hào)查詢tt2.按起點(diǎn)站查詢endl; couttt3.按終點(diǎn)站查詢tt4.按起飛時(shí)間(日期)endl; couttt5.按飛行總時(shí)間查詢t0.返回主界面endlendl; coutchoice; switch(choice) case 1:/按航班編號(hào)查詢 string num; coutnum; for(int i=0;igetnum()=num)/是否有相應(yīng)的航班編號(hào) vec_airi-printinfo();/打印輸出相應(yīng)航班的所有信息 br

14、eak; if(i=vec_air.size() /如果找到所有記錄最后還沒(méi)有找到要找的航班編號(hào), /則表示沒(méi)有此航班 coutt 對(duì)不起,沒(méi)有找到該編號(hào)的航班信息!; cin.get(); cin.get(); break; case 2:/按起點(diǎn)站查詢 int flag=0; string start; coutstart; for(int i=0;igetstart()=start) vec_airi-printinfo(); flag=1; /說(shuō)明起碼找到一條相應(yīng)的記錄 if(flag=0)/沒(méi)有此航班記錄 coutt 對(duì)不起,沒(méi)有找到該起飛站航班信息!; cin.get(); cin

15、.get(); break; case 3:/按終點(diǎn)站查詢 int flag=0; string end; coutend; for(int i=0;igetend()=end) vec_airi-printinfo();/打印輸出航班信息 flag=1;/說(shuō)明起碼找到一條相應(yīng)的記錄 if(flag=0) coutt 對(duì)不起,沒(méi)有找到該終點(diǎn)站航班信息!; cin.get(); cin.get(); break; case 4:/按起飛時(shí)間(日期) int flag=0; string time; couttime; for(int i=0;igettime()=time) vec_airi-p

16、rintinfo(); flag=1; if(flag=0) coutt 對(duì)不起,沒(méi)有找到該起飛日期的航班信息!; cin.get(); cin.get(); break; cin.get(); cin.get(); break; case 5:/按飛行總時(shí)間查詢 int flag=0; string flytime; coutflytime; for(int i=0;igetflytime()=flytime) vec_airi-printinfo(); flag=1; if(flag=0) coutt 對(duì)不起,沒(méi)有找到該終點(diǎn)站航班信息!; cin.get(); cin.get(); bre

17、ak; case 0:/返回 coutendl; coutchoice; break; 3.3 訂票函數(shù)模塊訂票函數(shù)模塊 圖 3.3 訂票功能模塊圖 輸入節(jié)點(diǎn)相關(guān)數(shù)據(jù),如航班數(shù)等,首先查找是否已經(jīng)余票為零。若為零, 則詢問(wèn)時(shí)候進(jìn)入等候隊(duì)列。若不為零則繼續(xù)添加訂票信息,進(jìn)入訂票隊(duì)列。 函數(shù)部分如下: /.訂票函數(shù)部分. void bookairsysinfo(vector *vec_air)/訂票 vector:iterator v_iter;/當(dāng)作指針用 system(cls);/清屏 coutendl; string num;/航班號(hào) coutnum; for(v_iter=vec_air-

18、begin();v_iter!=vec_air-end();v_iter+) if(*v_iter)-getnum()=num)/找到相應(yīng)的航班號(hào) (*v_iter)-printinfo();/輸出航班信息 break; if(v_iter=vec_air-end()/如果找到記錄最后還沒(méi)有找到此航班的記錄 coutm_wperson.size()!=0)/是否有客戶在等候訂票 for(int i=0;im_wperson.size();i+) /如果第一個(gè)客戶所訂票數(shù)小于此航班所剩余的票數(shù),則詢問(wèn)此客戶 是否要訂票 if(*v_iter)-m_wperson0.m_nwantgetleftc

19、ount() coutt 請(qǐng)先核對(duì)并滿足排隊(duì)等候本航班的客戶!getleftcount()-(*v_iter)- m_wperson0.m_nwant; char meet;/滿足要求 coutmeet; if(meet=y)/滿足此客戶的訂票需求 vector:iterator iter_person; /聲明一個(gè)客戶類(lèi)型的指 針 iter_person=(*v_iter)-m_wperson.begin(); /指向等候隊(duì)列首 地址 (*v_iter)-setleftcount(left); coutt 已經(jīng)為等候本航班的客戶訂票!請(qǐng)通知該客戶! m_wperson0.m_strid; p

20、erson.m_strname=(*v_iter)-m_wperson0.m_strname; person.m_nwant=(*v_iter)-m_wperson0.m_nwant; /把已滿足的客戶放入已訂得票的客戶記錄 (*v_iter)-m_havebook.push_back(person); /刪除第一個(gè)已經(jīng)滿足訂票的客戶 (*v_iter)-m_wperson.erase(iter_person); /輸出修改后的本航班所有信息 (*v_iter)-printinfo(); i-; if(*v_iter)-m_wperson.size()!=0)/還有客戶等候本航班 char w

21、ait=n; coutwait; if(wait=y) buyer p;/聲明一個(gè)要等候的客戶對(duì)象 coutp.m_strid; coutp.m_strname; coutp.m_nwant; (*v_iter)-m_wperson.push_back(p);/進(jìn)行排隊(duì)等候 coutt 此客戶已經(jīng)進(jìn)入本航班的訂票排隊(duì)!; else /新客戶,本航班沒(méi)有客戶在等候排票 int count; coutcount; if(*v_iter)-getleftcount()count)/若余票沒(méi)有了 coutendl; coutt 對(duì)不起,本航班已沒(méi)有足夠的票數(shù)endl; coutch; if(ch=y)

22、 buyer p; coutendl; coutp.m_strid; coutendl; coutp.m_strname; p.m_nwant=count; (*v_iter)-m_wperson.push_back(p); coutt 此客戶已進(jìn)入等候排隊(duì)訂票中!endl; else coutendl; coutt 您已取消了排隊(duì)等候訂票!endl; else/可以滿足訂票要求,把新客戶放入已訂得票的客戶記錄里 buyer person; coutendl; coutperson.m_strid; coutendl; coutperson.m_strname; person.m_nwant=

23、count; int left=(*v_iter)-getleftcount()-count;/ (*v_iter)-setleftcount(left); /設(shè)計(jì)本航班剩余票數(shù) (*v_iter)-m_havebook.push_back(person); /記錄可訂得票的客戶 coutendl; coutt 成功為新客戶訂票!endl; / coutt 按任意鍵返回主界面; cin.get(); cin.get(); 3.4 退票函數(shù)模塊退票函數(shù)模塊 圖 3.4 退票功能模塊圖 先遍歷到當(dāng)前客戶的信息節(jié)點(diǎn),若在訂票隊(duì)列里面,則刪除訂票隊(duì)列離得 節(jié)點(diǎn),然后在等候隊(duì)列里面的第一個(gè)節(jié)點(diǎn)插入訂票隊(duì)

24、列節(jié)點(diǎn),等候隊(duì)列節(jié)點(diǎn)里 面的后面幾個(gè)節(jié)點(diǎn)前移。若是刪除等候隊(duì)列里的節(jié)點(diǎn),則直接刪除若其后有節(jié) 點(diǎn),則前移。 函數(shù)如下: /.退票函數(shù). void cancelairsysinfo(vector *vec_air)/取消訂票(航班) vector:iterator v_iter;/指針 system(cls); coutendl; string num;/航班號(hào) coutnum; for(v_iter=vec_air-begin();v_iter!=vec_air-end();v_iter+)/begin()傳回迭代 器中的第一個(gè)數(shù)據(jù)地址 /end() 指向迭代器中末端元素的下一個(gè),指向一個(gè)不存

25、在元素 if(*v_iter)-getnum()=num)/找到相應(yīng)的航班號(hào) (*v_iter)-printinfo();/輸出航班信息 break; if(v_iter=vec_air-end()/如果找到最后還沒(méi)找到相應(yīng)的航班記錄 coutt 對(duì)不起,暫時(shí)沒(méi)有此航班號(hào)!; cin.get(); cin.get(); return ; char choice=n; coutt 要取消訂票的客戶是否在等候訂票隊(duì)列?(是則輸入y):endl; coutt 要取消訂票的客戶已經(jīng)得了票(是則輸入n):; coutchoice; if(choice=y/客戶 id coutstrid; for(int

26、 i=0;im_wperson.size();i+)/查找隊(duì)列是否有此 id 的客 戶 if(*v_iter)-m_wpersoni.m_strid=strid)/找到有此 id 的客戶 coutt 所找的客戶信息如下:endl; coutt 客戶 id:m_wpersoni.m_stridt 姓名:m_wpersoni.m_strnamet 所訂票數(shù):m_wpersoni.m_nwantendl; coutchoice; if(choice=y)/取消訂票 vector:iterator v; v=(*v_iter)-m_wperson.begin()+i; (*v_iter)-m_wper

27、son.erase(v);/刪除此客戶所有信息 coutt 成功取消此客戶的訂票業(yè)務(wù)!printinfo();/輸出取消訂票業(yè)務(wù)后的此航班記錄 信息 break; if(i=(*v_iter)-m_wperson.size() coutt 對(duì)不起,沒(méi)有此客戶在等候訂票隊(duì)列!m_havebook.size()/訂票的客戶,不在等候 隊(duì)列里(即已經(jīng)得到票) string strid;/客戶 id coutstrid; for(int i=0;im_havebook.size();i+)/查找隊(duì)列是否有此 id 的 客戶 if(*v_iter)-m_havebooki.m_strid=strid)/

28、找到有此 id 的客戶 coutt 所找的客戶信息如下:endl; coutt 客戶 id:m_havebooki.m_stridt 姓名:m_havebooki.m_strnamet 所訂票數(shù):m_havebooki.m_strnameendl; coutchoice; if(choice=y)/取消訂票 int left=(*v_iter)-getleftcount()+(*v_iter)- m_havebooki.m_nwant; (*v_iter)-setleftcount(left);/設(shè)計(jì)剩余票數(shù) vector:iterator v; v=(*v_iter)-m_havebook.

29、begin()+i; (*v_iter)-m_havebook.erase(v);/erase(beg,end)刪除 pos 位置 的數(shù)據(jù),傳回下一個(gè)數(shù)據(jù)的位置。即刪除此客戶所有信息 coutt 成功完成此客戶的退票業(yè)務(wù)!endl; coutt 修改訂票業(yè)務(wù)后的本航班信息如下:printinfo();/輸出取消訂票業(yè)務(wù)后的此航班記錄 信息 break; if(i=(*v_iter)-m_havebook.size() coutt 對(duì)不起,沒(méi)有此客戶在已訂票客戶記錄里!endl; else coutt 本航班沒(méi)有任何客戶!endl; coutendl; coutt 按任意鍵返回主界面; cin.

30、get(); cin.get(); 3.5 修改航班信息模塊修改航班信息模塊 圖 3.5 修改航班信息功能模塊圖 使用了鏈表的順序遍歷。輸入查找的信息字符,順序遍歷后找到節(jié)點(diǎn),然 后修改。 函數(shù)部分如下: /.修改航班信息函數(shù). void modifyairsysinfo(vector *vec_air)/修改航班信息 vector:iterator v_iter;/相當(dāng)于遍歷指針 system(cls);/清屏 string num; coutnum; for(v_iter=vec_air-begin();v_iter!=vec_air-end();v_iter+) if(*v_iter)-

31、getnum()=num)/查到相應(yīng)的航班(編號(hào)) (*v_iter)-printinfo(); break; if(v_iter=vec_air-end()/找到最后沒(méi)找到相應(yīng)的航班 coutt 對(duì)不起,沒(méi)有此航班!endl; coutt 按任意鍵返回主界面!; cin.get(); cin.get(); return ; char ch=n; coutch; if(ch=n)return ;/取消修改航班信息 char choice=p; while(choice!=y) coutendl; coutt1.修改航班編號(hào)ttt2.修改航班起飛站endl; coutt3.修改航班終點(diǎn)站tt4.

32、修改航班起飛時(shí)間(日期)endl; coutt5.修改航班總飛行時(shí)間(小時(shí))t6.修改航班總票數(shù)endl; coutt7.修改航班剩余票數(shù)tt8.修改等候訂本航班票的客戶endl; coutt0.返回主界面endlendl; coutchoice; switch(choice) case 1:/修改航班編號(hào) string tem; couttem; (*v_iter)-setnum(tem);/設(shè)計(jì)航班編號(hào) coutt 成功修改航班編號(hào)!; cin.get(); cin.get(); break; case 2:/修改航班起飛站 string tem; couttem; (*v_iter)-s

33、etstart(tem);/設(shè)計(jì)航班起飛站 coutt 成功修改航班起飛站!; cin.get(); cin.get(); break; case 3:/修改航班終點(diǎn)站 string tem; couttem; (*v_iter)-setend(tem);/設(shè)計(jì)航班終點(diǎn)站 coutt 成功修改航班終點(diǎn)站!; cin.get(); cin.get(); break; case 4:/修改航班起飛時(shí)間(日期) string tem; couttem; (*v_iter)-settime(tem);/設(shè)計(jì)航班起飛時(shí)間 coutt 成功修改航班起飛時(shí)間(日期)!; cin.get(); cin.get

34、(); break; case 5:/修改航班總飛行時(shí)間(小時(shí)) string tem; couttem; (*v_iter)-setflytime(tem);/設(shè)計(jì)航班飛行時(shí)間 coutt 成功修改航班飛行時(shí)間!; cin.get(); cin.get(); break; case 6:/修改航班總票數(shù) string tem; couttem; int count=atoi(tem.c_str(); (*v_iter)-setcount(count);/設(shè)計(jì)航班總票數(shù) coutt 成功修改航班票數(shù)!; cin.get(); cin.get(); break; case 7:/修改航班剩余票數(shù)

35、 int left; coutleft; (*v_iter)-setleftcount(left); coutt 成功修改航班剩余票數(shù)!; cin.get(); cin.get(); break; case 8:/修改等候訂本航班票的客戶 string strid;/客戶 id coutstrid; for(int i=0;im_wperson.size();i+) if(*v_iter)-m_wpersoni.m_strid=strid)/查找相應(yīng) id 號(hào)的客戶 coutt 所選客戶信息如下:endl; coutt 客戶 id:m_wpersoni.m_stridt 姓名:m_wperso

36、ni.m_strnamet 所訂票數(shù):m_wpersoni.m_nwantendl; char modify=n; coutmodify; if(modify=y)/確定修改此客戶的信息 /重新輸入此客戶的所有信息 cout(*v_iter)-m_wpersoni.m_strid; cout(*v_iter)-m_wpersoni.m_strname; cout(*v_iter)-m_wpersoni.m_nwant; coutendlendl; coutt 成功修改客戶信息!endlendl; cin.get(); cin.get(); break; case 0:/返回主界面 coutch

37、oice; break; default:break; 3.6 刪除航班信息模塊刪除航班信息模塊 圖 3.6 刪除航班信息功能模塊圖 輸入航班號(hào)后,鏈表遍歷,然后通過(guò) erase 指針來(lái)刪除相關(guān)節(jié)點(diǎn)。 函數(shù)部分如下: /.刪除航班信息函數(shù). void delairsysinfo(vector *vec_air)/刪除航班信息 vector:iterator v_iter; airsysinfo* pa; system(cls); coutendl; int flag=0; char del=n; string num; coutnum; for(v_iter=vec_air-begin();v

38、_iter!=vec_air-end();v_iter+) if(*v_iter)-getnum()=num)/相等說(shuō)明找到要?jiǎng)h除的航班編號(hào) (*v_iter)-printinfo();/輸出此航班信息記錄 flag=1; coutdel; if(del=n|del=n)return ;/取消刪除 pa=*v_iter; delete pa; vec_air-erase(v_iter);/刪除此航班記錄 coutt 成功刪除本航班信息!endl; break; if(flag=0) coutendl; coutt 不存在些航班信息!endl; coutt 按任意鍵返回主界面; cin.get(

39、); cin.get(); 3.7 瀏覽航班信息模塊瀏覽航班信息模塊 圖 3.7 瀏覽航班信息功能模塊圖 直接調(diào)用瀏覽航班信息模塊函數(shù),通過(guò)鏈表順序遍歷,輸出各個(gè)節(jié)點(diǎn)的數(shù) 據(jù) 函數(shù)如下: /.查詢航班信息函數(shù). void scanairsysinfo(vector vec_air)/瀏覽總航班信息 system(cls);/清屏 for(int i=0;iprintinfo(); coutendl; coutt 按任意鍵返回主界面!; cin.get(); cin.get(); 4 調(diào)試與操作說(shuō)明調(diào)試與操作說(shuō)明 整個(gè)調(diào)試步驟如下: 輸入密碼出錯(cuò)則退出。 圖 4.1 驗(yàn)證 錯(cuò)誤密碼圖 輸入正確則

40、進(jìn)入函數(shù)主體。 圖 4.2 驗(yàn)證 正確密碼圖 圖 4.3 系統(tǒng)主界面圖 首先瀏覽信息模塊,可以驗(yàn)證從文件輸入內(nèi)存的保存功能模塊。 圖 4.4 驗(yàn)證保存功能模塊圖 首先是驗(yàn)證添加航線信息模塊功能。 圖 4.5 添加航線信息模塊圖 查看是否錄入。 圖 4.6 調(diào)用查詢模塊功能模塊函數(shù)圖 可知錄入成功。 驗(yàn)證訂票業(yè)務(wù),票余部分功能。直接進(jìn)入訂票隊(duì)列。 圖 4.7 調(diào)用訂票業(yè)務(wù)功能模塊函數(shù)圖 再驗(yàn)證進(jìn)入等待隊(duì)列的功能。 圖 4.8 調(diào)用查詢模塊功能模塊函數(shù)圖 瀏覽函數(shù),查看是否進(jìn)入等待隊(duì)列。 圖 4.9 調(diào)用瀏覽信息功能模塊函數(shù)圖 可知成功。再驗(yàn)證退票業(yè)務(wù),先驗(yàn)證訂票隊(duì)列中用戶。 圖 4.10 調(diào)用退

41、票模塊功能模塊函數(shù)(訂票)圖 再驗(yàn)證等待隊(duì)列中客戶。 圖 4.11 調(diào)用退票模塊功能模塊函數(shù)(等候)圖 通過(guò)使用瀏覽函數(shù)看是否已經(jīng)刪除。 圖 4.12 調(diào)用瀏覽信息功能模塊函數(shù)圖 可知成功。 最后驗(yàn)證刪除航班模塊。 圖 4.13 調(diào)用刪除航班功能模塊函數(shù)圖 通過(guò)瀏覽函數(shù)看是否刪除航班,實(shí)現(xiàn)刪除航班模塊功能。 圖 4.14 調(diào)用瀏覽信息功能模塊函數(shù)圖 可知 30000 航班被刪除,功能實(shí)現(xiàn)! 綜上,各個(gè)模塊功能均已實(shí)現(xiàn)! 總結(jié) 通過(guò)此次課程設(shè)計(jì)的實(shí)踐,感觸較深。不僅使我加深了對(duì)書(shū)本知識(shí)的理解, 而且鍛煉了我編寫(xiě)程序、調(diào)試程序的能力,學(xué)習(xí)文檔編寫(xiě)規(guī)范,培養(yǎng)獨(dú)立學(xué)習(xí)、 吸取他人經(jīng)驗(yàn)、探索前言知識(shí)的習(xí)慣,樹(shù)立團(tuán)隊(duì)協(xié)作精神。同時(shí),課程設(shè)計(jì)也 充分彌補(bǔ)課堂教學(xué)及普通實(shí)驗(yàn)中知識(shí)的缺陷。 我所選擇的課程設(shè)計(jì)是航空售票系統(tǒng)的設(shè)計(jì),這個(gè)課題在實(shí)用性與開(kāi)放性 上上有很多的擴(kuò)張與發(fā)展空間。這次課程設(shè)計(jì)由于時(shí)間有限,對(duì)有些地方考慮 的還不夠周到。 本次課程設(shè)計(jì)的總體收獲是了解鏈表的應(yīng)用,使我有效地、深刻地理解課 程內(nèi)容,體會(huì)理論、方法和設(shè)計(jì)原則,培養(yǎng)了我分析實(shí)際應(yīng)用系統(tǒng)和設(shè)計(jì)設(shè)計(jì) 實(shí)際應(yīng)用系統(tǒng)的能力,提高了進(jìn)行實(shí)際系統(tǒng)的設(shè)計(jì)的能力。我深深的認(rèn)識(shí)到, 如果僅僅

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論