《數(shù)據(jù)結(jié)構(gòu)B》課程設(shè)計(jì)報(bào)告基于飛機(jī)訂票系統(tǒng)和全國(guó)交通模擬系統(tǒng)_第1頁(yè)
《數(shù)據(jù)結(jié)構(gòu)B》課程設(shè)計(jì)報(bào)告基于飛機(jī)訂票系統(tǒng)和全國(guó)交通模擬系統(tǒng)_第2頁(yè)
《數(shù)據(jù)結(jié)構(gòu)B》課程設(shè)計(jì)報(bào)告基于飛機(jī)訂票系統(tǒng)和全國(guó)交通模擬系統(tǒng)_第3頁(yè)
《數(shù)據(jù)結(jié)構(gòu)B》課程設(shè)計(jì)報(bào)告基于飛機(jī)訂票系統(tǒng)和全國(guó)交通模擬系統(tǒng)_第4頁(yè)
《數(shù)據(jù)結(jié)構(gòu)B》課程設(shè)計(jì)報(bào)告基于飛機(jī)訂票系統(tǒng)和全國(guó)交通模擬系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩68頁(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、數(shù)據(jù)結(jié)構(gòu)b課程設(shè)計(jì)報(bào)告系 別: 計(jì)算機(jī)與電子系 專業(yè)班級(jí): 電子0901 學(xué)生姓名: 指導(dǎo)教師: (課程設(shè)計(jì)時(shí)間2011年12月12至2011年12月24) 華中科技大學(xué)武昌分校課程設(shè)計(jì)報(bào)告撰寫內(nèi)容、格式與成績(jī)?cè)u(píng)定一、課程設(shè)計(jì)報(bào)告的撰寫內(nèi)容與要求1.課程設(shè)計(jì)總結(jié)報(bào)告應(yīng)包括:前言、基本原理或理論、設(shè)計(jì)計(jì)算書(shū)或?qū)嶒?yàn)報(bào)告、結(jié)論、圖紙(框圖、流程圖)、參考資料等;或調(diào)查、訪談報(bào)告、調(diào)查問(wèn)卷、調(diào)查提綱等。2.課程設(shè)計(jì)總結(jié)報(bào)告應(yīng)書(shū)寫工整,文句通順、精煉、邏輯性強(qiáng),圖紙和曲線的繪制應(yīng)符合規(guī)范。3.調(diào)查型課程設(shè)計(jì)應(yīng)根據(jù)調(diào)查結(jié)果撰寫調(diào)查報(bào)告。調(diào)查報(bào)告內(nèi)容包括:題目、參加時(shí)間、地點(diǎn)、方式、過(guò)程、調(diào)查對(duì)象一般情況、

2、調(diào)查內(nèi)容、發(fā)現(xiàn)的問(wèn)題、調(diào)查結(jié)果和調(diào)查分析及體會(huì)等。調(diào)查報(bào)告要求語(yǔ)言簡(jiǎn)練、準(zhǔn)確;敘述清楚、明白;數(shù)據(jù)、資料可靠;結(jié)論有理、有據(jù)。4.圖紙應(yīng)布局合理,比例恰當(dāng),線條分明,字體工整,符合國(guó)家制圖標(biāo)準(zhǔn)。5.課程設(shè)計(jì)報(bào)告字?jǐn)?shù)要求:理工、藝術(shù)類不少于2000字,其他專業(yè)不少于3000字。二、課程設(shè)計(jì)成績(jī)?cè)u(píng)定1.學(xué)生的課程設(shè)計(jì)成績(jī)由平時(shí)成績(jī)、業(yè)務(wù)考核成績(jī)兩部分組成,均為百分制記分,其中平時(shí)成績(jī)占總成績(jī)的30%,業(yè)務(wù)考核成績(jī)占70%。業(yè)務(wù)考核含設(shè)計(jì)報(bào)告(計(jì)算說(shuō)明書(shū)、調(diào)查提綱、調(diào)查問(wèn)卷等)、繪制的圖紙、編制的軟件、制作的模型、撰寫的論文或問(wèn)卷統(tǒng)計(jì)、調(diào)查分析等的完成及質(zhì)量情況;平時(shí)成績(jī)含設(shè)計(jì)表現(xiàn)、到課率等。2.

3、教師按學(xué)生實(shí)際成績(jī)(百分制,含平時(shí)成績(jī)和業(yè)務(wù)考核成績(jī)兩部分)登記并錄入教務(wù)mis系統(tǒng),由系統(tǒng)自動(dòng)轉(zhuǎn)化為“優(yōu)秀(90100分)、良好(8089分)、中等(7079分)、及格(6069分)和不及格(60分以下)”五等。 目 錄1.課程設(shè)計(jì)目的12.課程設(shè)計(jì)題目描述和要求12.1航空訂票系統(tǒng)描述與要求12.2全國(guó)交通咨詢模擬系統(tǒng)描述與要求:23課程設(shè)計(jì)報(bào)告內(nèi)容23.1航空訂票系統(tǒng)課程設(shè)計(jì)報(bào)告內(nèi)容23.1.1設(shè)計(jì)思路23.1.2主要功能函數(shù)的設(shè)計(jì)33.1.3調(diào)試分析:33.1.4源程序代碼:43.1.5運(yùn)行測(cè)試123.2全國(guó)交通模擬小系統(tǒng)課程設(shè)計(jì)報(bào)告內(nèi)容143.2.1設(shè)計(jì)思路:143.2.2主要功能函

4、數(shù)的設(shè)計(jì):153.2.3調(diào)試分析:173.2.4參考源程序:183.2.5運(yùn)行測(cè)試644總結(jié)68參考文獻(xiàn)691.課程設(shè)計(jì)目的1) 培養(yǎng)自己運(yùn)用算法與數(shù)據(jù)結(jié)構(gòu)的基本知識(shí)解決實(shí)際編程中的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì)問(wèn)題。2) 培養(yǎng)自己獨(dú)立設(shè)計(jì)程序與解決問(wèn)題的能力,培養(yǎng)學(xué)生團(tuán)隊(duì)協(xié)作集成程序模塊及調(diào)試能力。3) 培養(yǎng)自己初步的軟件設(shè)計(jì)及軟件測(cè)試的能力。4)培養(yǎng)自己分析問(wèn)題,解決問(wèn)題的能力。2.課程設(shè)計(jì)題目描述和要求2.1航空訂票系統(tǒng)描述與要求【問(wèn)題描述】 航空客運(yùn)訂票的業(yè)務(wù)活動(dòng)包括;查詢航線、客票預(yù)訂和辦理退票等。試設(shè)計(jì)一個(gè)航空客運(yùn)訂票系統(tǒng),以使上述業(yè)務(wù)可以借助計(jì)算機(jī)來(lái)完成?!净疽蟆浚?)每條航線所涉及

5、的信息有:終點(diǎn)站名、航班名、飛機(jī)號(hào)、飛行周日(星期幾)、乘員定額、余票量、已訂票的客戶名單(包括姓名、訂票量、艙位等級(jí)1,2或3)以及等候替補(bǔ)的客戶名單(包括姓名、所需票量);(2)作為示意系統(tǒng),全部數(shù)據(jù)可以只放在內(nèi)存中;(3)系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:a.查詢航線:根據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號(hào)、飛機(jī)號(hào)、星期幾飛行,最近一天航班的日期和余票額;b.承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號(hào)、訂票數(shù)額)查詢?cè)摵桨嗥鳖~情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號(hào);若已滿員或余票額少于訂票額,則需重新詢問(wèn)客戶要求。若需要,可登記排隊(duì)候補(bǔ);c.承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(日期

6、、航班),為客戶辦理退票手續(xù),然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢問(wèn)排在第一的客戶,若所退票額能滿足客戶的要求,則為客戶辦理訂票手續(xù),否則依次詢問(wèn)其他排隊(duì)候補(bǔ)的客戶2.2全國(guó)交通咨詢模擬系統(tǒng)描述與要求:【問(wèn)題描述】出于不同目的的旅客對(duì)交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的時(shí)間盡可能短,出門旅游的旅客則期望旅費(fèi)盡可能省,而老年旅客則要求中轉(zhuǎn)次數(shù)最少。編制一個(gè)全國(guó)城市間的交通咨詢程序,為旅客提供兩種或三種最優(yōu)先決策的交通咨詢?!净疽蟆?1)提供對(duì)城市信息進(jìn)行編輯(如:添加或刪除)的功能。(2)城市之間有兩種交通工具:火車和飛機(jī)。提供對(duì)列車時(shí)刻表和飛機(jī)航班進(jìn)行編輯(增設(shè)或刪除

7、)的功能。(3)提供兩種最優(yōu)決策:最快到達(dá)或最省錢到達(dá)。全程只考慮一種交通工具。(4)旅途中耗費(fèi)的總時(shí)間應(yīng)該包括中轉(zhuǎn)站的等候時(shí)間。(5)咨詢以用戶和計(jì)算機(jī)的對(duì)話方式進(jìn)行。由用戶輸入起始站、終點(diǎn)站、最優(yōu)決策原則和交通工具,輸出信息:最快需要多長(zhǎng)時(shí)間才能到達(dá)或者最少需要多少旅費(fèi)才能到達(dá),并詳細(xì)說(shuō)明依次于何時(shí)乘坐哪一趟列車或哪一次班機(jī)到何地。3課程設(shè)計(jì)報(bào)告內(nèi)容3.1航空訂票系統(tǒng)課程設(shè)計(jì)報(bào)告內(nèi)容3.1.1設(shè)計(jì)思路1)主程序偽代碼:int main() 界面初始化; 輸入操作命令; while(“命令” != “退出”) 接受命令(用戶輸入要實(shí)現(xiàn)功能); 進(jìn)入各個(gè)處理命令函數(shù);2)主程序的流程以及各程序

8、模塊之間的調(diào)用關(guān)系:退票模塊航線信息列表main()函數(shù)訂票模塊查詢客戶信息初始化航線信息3.1.2主要功能函數(shù)的設(shè)計(jì)(1)顯示已初始化的航線信息void display(struct airline *info);打印每條航線的基本信息(2)航班查詢業(yè)務(wù)void search():根據(jù)客戶提出的終點(diǎn)站名輸出航線struct airline *find();根據(jù)系統(tǒng)提示的航班號(hào)查詢并以指針形勢(shì)返回。(3)航班訂票業(yè)務(wù)void order():班里航班訂票業(yè)務(wù),根據(jù)客戶提供的航班號(hào)查詢,如為空,退出該模塊;如客戶訂票數(shù)量乘員訂票總量,則退出;若未超出乘員訂票總量,則訂票成功并登記信息。(4)航班

9、退票業(yè)務(wù)void return_tkt();辦理退票業(yè)務(wù),調(diào)用查詢函數(shù) ,根據(jù)客戶提供的航線進(jìn)行搜索,再根據(jù)客戶的姓名到訂票客戶名單域進(jìn)行查詢,若信息查詢成功,刪除訂票客戶名單域的信息,若未找到,則退出該模塊。(5)其他航班線路查詢業(yè)務(wù)void oher_search();客戶訂票時(shí),剩余票量不滿足時(shí),調(diào)用該函數(shù)模塊,根據(jù)客戶提供的航班目的地,顯示出所有能到達(dá)目的地的航班。3.1.3調(diào)試分析:調(diào)試過(guò)程中遇到的問(wèn)題是如何解決的以及對(duì)設(shè)計(jì)與實(shí)現(xiàn)的回顧討論和分析,在調(diào)試的過(guò)程中碰到了一下問(wèn)題:a. 引用形參應(yīng)用不當(dāng);b. 有關(guān)指針參數(shù)和操作不熟悉,通過(guò)查參考資料數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)和同學(xué)討論最終解決(2

10、) 算法的時(shí)空分析:基本操作時(shí)間復(fù)雜度空間復(fù)雜度menu_select()o(1)o(1)void display()o(1)o(1)void search()o(n)o(1)void order()o(n)o(n)void return_tkt()o(n)o(n)void list()o(1)o(1)void pritlink()o(n)o(1)3.1.4源程序代碼:#include#include#include#include#define maxsize 15#define air_maxnum 200typedef struct wat_ros char name20;/姓名 int

11、 req_amt;/訂票量 struct wat_ros *next;qnode,*qptr;typedef struct pqueue qptr front; qptr rear;linkqueue;typedef struct ord_ros char name20;/客戶信息 int ord_amt;/頂票量 int grade;/艙位等級(jí) struct ord_ros *next;linklist; struct airline char ter_name20;/終點(diǎn)站名 char air_num20;/航班號(hào) char plane_num20;/飛機(jī)號(hào) char day7;/飛行日期

12、 int tkt_amt;/乘員定額 int tkt_sur;/余票數(shù)量 linklist *order;/乘員名單域 linkqueue wait;/等候客戶名單域lineinfo;struct airline *start;void display(struct airline *info)/打印航線基本信息printf(%8st%3st%6st%6st%7dt%8dn,info-ter_name,info-air_num,info-plane_num,info-day,info-tkt_amt,info-tkt_sur);void list()/打印全部航線信息 struct airli

13、ne *info; int i=0; info=start; printf( 終點(diǎn)站 航班號(hào) 飛機(jī)號(hào) 飛行日期 乘員定額余票額數(shù)n); while(imaxsize) display(info); info+; i+; printf(nn);void search()/根據(jù)客戶提供的終點(diǎn)站名輸出航線信息 struct airline *info,*find(); char name20; int i=0; info=start; printf(請(qǐng)輸入終點(diǎn)站名:); scanf(%s,name); while(iter_name) break; info+; i+; if(i=maxsize)p

14、rintf(對(duì)不起沒(méi)有航班); else printf( 終點(diǎn)站 航班號(hào) 飛機(jī)號(hào) 飛行日期 乘員定額余票額數(shù)n); display(info); void oher_search()/訂票要求不滿足時(shí)提供其他航班線路 struct airline *info,*find(); char name20; int i=0,j=0; int amount; info=start; printf(請(qǐng)輸入終點(diǎn)站名:); scanf(%s,name); printf(請(qǐng)您輸入想要訂的票量:); scanf(%d,&amount); while(iter_name) printf( 終點(diǎn)站 航班號(hào) 飛機(jī)號(hào)

15、飛行日期 乘員定額余票額數(shù)n); display(info); info+; i+; if(i=maxsize) printf(沒(méi)有航班); struct airline *find()/根據(jù)系統(tǒng)提供的航班號(hào)查詢 struct airline *info; char number10; int i=0; info=start; printf(請(qǐng)輸入航班班次:); scanf(%s,number); while(iair_num) return info;info+;i+; printf(對(duì)不起沒(méi)有航班); return null;void prtlink()/打印訂票乘員名單域的客戶名單信息

16、linklist *p; struct airline *info; info=find(); p=info-order; if(p!=null) printf(客戶名字 機(jī)票號(hào) 座位號(hào)n);while(p) printf(%stt%dt%dn,p-name,p-ord_amt,p-grade); p=p-next; else printf(航班沒(méi)有乘客信息);linklist *insertlink(linklist *head,int amount,char name,int grade)/增加訂票乘員名單域的客戶信息 linklist *p1,*ne; p1=head; ne=(link

17、list*)malloc(sizeof(linklist); if(!ne) printf(錢不足!n);return null; strcpy(ne-name,name); ne-ord_amt=amount; ne-grade=grade; ne-next=null; if(head=null) head=ne;ne-next=null; else head=ne; ne-next=p1; return head;linkqueue appendqueue(linkqueue q,char name,int amount)/增加排隊(duì)等候的客戶名單域 qptr ne; ne=(qptr)ma

18、lloc(sizeof(qnode); strcpy(ne-name,name); ne-req_amt=amount; ne-next=null; if(q.front=null) q.front=ne; else q.rear-next=ne;q.rear=ne;return q;void order()/辦理訂票業(yè)務(wù) struct airline *info; int amount,grade; char name20; info=start; if(!(info=find() return; printf(請(qǐng)您輸入想要訂的票量:); scanf(%d,&amount); if(amou

19、ntinfo-tkt_amt) printf(n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過(guò)乘員定額!);return; if(amounttkt_sur) int i;printf(請(qǐng)輸入您的名字:);scanf(%s,name);printf(請(qǐng)訂票,請(qǐng)付款.n您要的艙位等級(jí));scanf(%d,&grade);info-order=insertlink(info-order,amount,name,grade);for(i=0;itkt_amt-info-tkt_sur+i+1);info-tkt_sur-=amount;printf(n 祝您旅途愉快!n); else char r; printf

20、(n沒(méi)有多余的票了,您需要排隊(duì)等候嗎?(y/n)); r=getch(); printf(%c,r); if(r=y|r=y) printf(n請(qǐng)輸入您的名字:); scanf(%s,name); info-wait=appendqueue(info-wait,name,amount); printf(n注冊(cè)成功!n); else printf(n歡迎下次訂購(gòu)!n); void return_tkt()/辦理退票業(yè)務(wù) struct airline *info; qnode *t,*back,*f,*r; int grade; linklist *p1,*p2,*head; char cusna

21、me20; if(!(info=find() return; head=info-order; p1=head; printf(輸入您的名字); scanf(%s,cusname); while(p1!=null) if(!strcmp(cusname,p1-name)break;p2=p1;p1=p1-next; if(p1=null) printf(對(duì)不起,您沒(méi)有訂票!n);return; else if(p1=head) head=p1-next; else p2-next=p1-next;info-tkt_sur+=p1-ord_amt;grade=p1-grade;printf(%s

22、 退票成功!n,p1-name);free(p1); info-order=head; f=(info-wait).front; r=(info-wait).rear; t=f; while(t) if(info-tkt_sur=info-wait.front-req_amt) int i; info-wait.front=t-next; printf(%s 購(gòu)票成功!n,t-name); for(i=0;ireq_amt;i+) printf(%s 的座位號(hào)是:%dn,t-name,(info-tkt_sur)-i); info-tkt_sur-=t-req_amt; info-order=

23、insertlink(info-order,t-req_amt,t-name,grade); free(t); break;back=t;t=t-next;if(info-tkt_sur)=(t-req_amt)&t!=null) int i; back-next=t-next; printf(% 訂票成功!n,t-name); for(i=0;ireq_amt;i+) printf(的座位號(hào)是:%dn,t-name,(info-tkt_sur)-i); info-tkt_sur-=t-req_amt; info-order=insertlink(info-order,t-req_amt,t-

24、name,grade); free(t); break; if(f=r)break; int menu_select()/菜單界面 int c; char s20;printf(*n); printf(* 歡迎進(jìn)入武漢航空旅客服務(wù)系統(tǒng) *n);printf(* 1.顯示航班信息 *n);printf(* 2.打印訂票乘客信息 *n);printf(* 3.航班查詢業(yè)務(wù) *n);printf(* 4.航班訂票業(yè)務(wù) *n);printf(* 5.航班退票業(yè)務(wù) *n); printf(* 6.其他航班路線情況 *n);printf(* 7.退出系統(tǒng) *n);printf(*);printf(*);

25、do printf( 請(qǐng)選擇您需要的業(yè)務(wù):); scanf(%s,s); c=atoi(s); while(c7); return c;int main(void) printf(*n); printf(* 制作信息簡(jiǎn)介 *n); printf(* 學(xué)院:計(jì)算機(jī)與電子系 *n); printf(* 專業(yè):電子科學(xué)與技術(shù) *n); printf(* 班級(jí):電子 *n); printf(* 姓名:高傲 *n); printf(* 學(xué)號(hào): *n); printf(* 指導(dǎo)老師:徐琴 *n); printf(* 未完待續(xù). *n); printf(*n); printf(*n); printf(請(qǐng)按任

26、何鍵以繼續(xù)); getchar(); struct airline airmaxsize= beijing,1,b8571,sun,air_maxnum,air_maxnum, tianjing,2,s4652,mon,air_maxnum,air_maxnum, nanjing,3,h8600,tus,air_maxnum,air_maxnum, shanghai,4,t5201,wes,air_maxnum,air_maxnum, hongkong,5,b1314,fri,air_maxnum,air_maxnum, beijing,6,k2930,sun,air_maxnum,air_m

27、axnum, londou,7,b8478,sat,air_maxnum,air_maxnum, englang,8,t4782,fir,air_maxnum,air_maxnum, london,9,k4717,sun,air_maxnum,air_maxnum, xiamen,10,b2787,wes,air_maxnum,air_maxnum, guangzhou,11,b5300,sat,air_maxnum,air_maxnum, shanghai,12,n9768,tus,air_maxnum,air_maxnum, hongkong,13,b6547,fri,air_maxnum

28、,air_maxnum, tanwan,14,k4727,sun,air_maxnum,air_maxnum, englang,15,w4712,fir,air_maxnum,air_maxnum,; system(cls); start=air; for(;) switch(menu_select() case 1:system(cls);list();break; case 2:system(cls);prtlink();break; case 3:system(cls);search();break; case 4:system(cls);order();break; case 5:sy

29、stem(cls);return_tkt();break; case 6:system(cls);oher_search();break; case 7:printf(n歡迎再次進(jìn)入系統(tǒng),再見(jiàn)!n); exit(0); printf(n 請(qǐng)按任意鍵繼續(xù)!n); getch(); return(0);3.1.5運(yùn)行測(cè)試1)制作信息界面2)界面顯示3)航班信息顯示4)訂票流程界面5)訂票客戶信息6)航班查詢業(yè)務(wù)7)退票業(yè)務(wù)8)票量不足時(shí)排隊(duì)注冊(cè)界面9)票量不滿足時(shí)其他航線查詢3.2全國(guó)交通模擬小系統(tǒng)課程設(shè)計(jì)報(bào)告內(nèi)容 3.2.1設(shè)計(jì)思路:主程序的流程以及各程序模塊之間的調(diào)用關(guān)系:退出顯示交通系統(tǒng)pr

30、intgraph用戶咨詢userdemand管理員管理administer主函數(shù)main() 返回上一級(jí)菜單列車車次編輯administer飛機(jī)航班編輯administer城市編輯cityedit管理員管理administer初始化交通系統(tǒng)initgraph返回上一級(jí)菜單最少中轉(zhuǎn)次數(shù)transferdispose最少旅行時(shí)間timedispose用戶咨詢userdemand最少旅行費(fèi)用expendituredisposeuserdemand顯示城市顯示飛機(jī)航班顯示列車車次返回上一級(jí)菜單顯示交通系統(tǒng)printgraph刪除城市新增城市城市編輯cityedit刪除航班新增航班飛機(jī)航班編輯plane

31、edit刪除車次新增車次火車列次編輯trainedit3.2.2主要功能函數(shù)的設(shè)計(jì):1)void administer(algraph *g);管理員模式2)void cityedit(algraph *g);城市編輯3)void copytimetree(timetree p,timetree q);航班列車時(shí)間編輯4)void createcityfile();創(chuàng)建城市信息文件5)void creategraph(algraph *g);建立全國(guó)交通圖6)void createplanefile();創(chuàng)建航班信息文件7)voidcreatetimetree(timetreep,inti,i

32、nt j,linkqueue *q,infolist (*arcs)max_vertex_num);時(shí)間編輯8)void createtrainfile();創(chuàng)建列車信息文件,9)int deleteplanearc(algraph *g);刪除航班信息10)void deletequeue(linkqueue *q,int *x);隊(duì)列存儲(chǔ)方式刪除11)int deletetrainarc(algraph *g);刪除列車車次12)void deletevertex(algraph *g);圖中刪除節(jié)點(diǎn)信息13)void demanddispose(int n,algraph g); 交通咨

33、詢14)void destorytimetree(timetree p);刪除時(shí)間信息15)void enterplanearc(algraph *g);增加航班信息16)void enterqueue(linkqueue *q,int x);隊(duì)列存儲(chǔ)方式增加17)void entertrainarc(algraph *g);增加圖中列車節(jié)點(diǎn)18)void entervertex(algraph *g); 增加圖中航班節(jié)點(diǎn)19)voidexpendituredispose(intk,infolist(*arcs)max_vertex_num,algraph g,int v0,int v1,fl

34、oat *m,int *final);旅行花費(fèi),根據(jù)目的地計(jì)算旅程所需總的費(fèi)用。20)void flightedit(algraph *g);圖中航班節(jié)點(diǎn)信息編輯21)void initgraph(algraph *g);初始化交通系統(tǒng)(圖)22)void initqueue(linkqueue *q); 初始化交通系統(tǒng)(單鏈表)23)int isempty(linkqueue *q);判隊(duì)空24)int locatevertex(algraph *g,char *v);25)void minexpenditure(infolist arcs,float *expenditure,int *r

35、oute);根據(jù)提供的路徑計(jì)算最小花費(fèi)。26)void mintime(infolist arcs,int *time,int *route); 根據(jù)提供的路徑計(jì)算最少耗時(shí)。27)void printgraph(algraph *g);顯示交通系統(tǒng)28)int save(algraph *g);保存圖中的節(jié)點(diǎn)信息29)void timedispose(int k,infolist (*arcs)max_vertex_num,algraph g,int v0,int v1,int (*t)2,int *final);中轉(zhuǎn)時(shí)間(圖)30)void timetreedispose(node *hea

36、d,infolist (*arcs)max_vertex_num);根據(jù)算法計(jì)算最少中轉(zhuǎn)時(shí)間31void trainedit(algraph *g);圖中列車節(jié)點(diǎn)信息編輯32)void transferdispose(int k,infolist (*arcs)max_vertex_num,algraph g,int v0,int v1);最少中轉(zhuǎn)次數(shù)模塊函數(shù)33)void userdemand(algraph g);用戶模式34)void visittimetree(timetree p);3.2.3調(diào)試分析: 調(diào)試過(guò)程中遇到的問(wèn)題是如何解決的以及對(duì)設(shè)計(jì)與實(shí)現(xiàn)的回顧討論和分析,在調(diào)試的過(guò)程中

37、碰到了一下問(wèn)題:a. 引用形參應(yīng)用不當(dāng);b. 文件操作中遇到讀入錯(cuò)誤或找不到文件;解決方案:a. 對(duì)引用形參了解的不是很透徹,導(dǎo)致錯(cuò)誤,通過(guò)查閱相關(guān)書(shū)籍如數(shù)據(jù)結(jié)構(gòu)c語(yǔ)言版和請(qǐng)教編程能力較高的人,最終解決問(wèn)題。b. 通過(guò)參考譚浩強(qiáng)編著的c程序設(shè)計(jì)中的文件操作,文件格式和相關(guān)文件路徑的設(shè)置,最終解決問(wèn)題。 算法的時(shí)空分析(包括基本操作和其他算法的時(shí)間復(fù)雜度和空間復(fù)雜度的分析)和改進(jìn)設(shè)想:基本操作時(shí)間復(fù)雜度空間復(fù)雜度void administer(algraph *g)o(1)o(1)void cityedit(algraph *g)o(n)o(n)void copytimetree(timetre

38、e p,timetree q)o(n)o(1)void createcityfile()o(n)o(n)void creategraph(algraph *g)o(n)o(n)void createplanefile()o(1)o(1)void createtimetree(timetree p,int i,int j,linkqueue *q,infolist (*arcs)max_vertex_num)o(n)o(n)void createtrainfile()o(1)o(1)int deleteplanearc(algraph *g)o(n)o(n)void deletequeue(li

39、nkqueue *q,int *x)o(1)o(1)int deletetrainarc(algraph *g)o(n)o(n)void deletevertex(algraph *g)o(n)o(n)void demanddispose(int n,algraph g)o(1)o(1)void destorytimetree(timetree p)o(n)o(1)void enterplanearc(algraph *g)o(n)o(n)void enterqueue(linkqueue *q,int x)o(1)o(1)void entertrainarc(algraph *g)o(1)o

40、(1)void entervertex(algraph *g)o(n)o(n)voidexpendituredispose(intk,infolist (*arcs)max_vertex_num,algraphg,int v0,int v1,float *m,int *final)o(n)o(1)void flightedit(algraph *g)o(1)o(1)void initgraph(algraph *g)o(1)o(n)void initqueue(linkqueue *q)o(1)o(1)int isempty(linkqueue *q)o(1)o(1)int locatever

41、tex(algraph *g,char *v)o(n)o(1)void minexpenditure(infolist arcs,float *expenditure,int *route)o(n)o(n)void mintime(infolist arcs,int *time,int *route)o(n)o(n)void printgraph(algraph *g)o(1)o(n)int save(algraph *g)o(1)o(1)void timedispose(int k,infolist (*arcs)max_vertex_num,algraph g,int v0,int v1,

42、int (*t)2,int *final)o(n)o(n)void timetreedispose(node *head,infolist (*arcs)max_vertex_num)o(n)o(n)void trainedit(algraph *g)o(1)o(1)void transferdispose(int k,infolist (*arcs)max_vertex_num,algraph g,int v0,int v1)o(n)o(n)void userdemand(algraph g)o(1)o(1)void visittimetree(timetree p)o(n)o(n)3.2.

43、4參考源程序:#define max_vertex_num 18#define null 0#define max_arc_size 100#define max_route_num 5#include#include#include#include#define false 0#define true 1#define infinity 10000typedef structint number;/編號(hào)float expenditure;/花費(fèi) int begintime2;/起始時(shí)間 int arrivetime2;/到達(dá)時(shí)間vehide;typedef structvehide stat

44、amax_route_num;/開(kāi)始城市 int last;infolist;typedef struct arcnodeint adjvex;struct arcnode *nextarc; infolist info;arcnode;typedef struct vnode/城市信息編輯char cityname10;/城市名稱arcnode *planefirstarc,*trainfirstarc;/到達(dá)城市的飛機(jī)線路,列車線路vnode,adjlistmax_vertex_num;typedef structadjlist vertices; int vexnum,planearcn

45、um,trainarcnum;/列車車次,航班號(hào)algraph;typedef struct nodeint adjvex; int route;/線路 struct node *next;node;typedef struct qnodeint adjvex; struct qnode *next;qnode;typedef structqnode *front; qnode *rear;linkqueue;typedef struct timenode/起始,到達(dá)時(shí)間編輯int adjvex; int route;/線路 int begintime2;/起始時(shí)間 int arrivetime2;/

溫馨提示

  • 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)論