精品資料(2021-2022年收藏)交通咨詢程設(shè)計(jì)含源代碼可以運(yùn)行_第1頁(yè)
精品資料(2021-2022年收藏)交通咨詢程設(shè)計(jì)含源代碼可以運(yùn)行_第2頁(yè)
精品資料(2021-2022年收藏)交通咨詢程設(shè)計(jì)含源代碼可以運(yùn)行_第3頁(yè)
精品資料(2021-2022年收藏)交通咨詢程設(shè)計(jì)含源代碼可以運(yùn)行_第4頁(yè)
精品資料(2021-2022年收藏)交通咨詢程設(shè)計(jì)含源代碼可以運(yùn)行_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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、 目錄第一章 需求分析11.1題目分析21.2實(shí)現(xiàn)方法21.2.1圖的實(shí)現(xiàn)和聲明21.2.2程序功能的實(shí)現(xiàn)3第二章 系統(tǒng)功能模塊設(shè)計(jì)4第三章 流程圖5第四章 運(yùn)行調(diào)試6第五章 實(shí)驗(yàn)總結(jié)9第六章 致謝10附錄一11附錄二12程序設(shè)計(jì)綜合課程設(shè)計(jì)交通咨詢模擬第一章 需求分析設(shè)計(jì)、實(shí)現(xiàn)一個(gè)全國(guó)大城市間的交通咨詢程序,為旅客提供三種最優(yōu)決策方案:一是建立交通網(wǎng)絡(luò)圖的存儲(chǔ)結(jié)構(gòu),二實(shí)現(xiàn)兩個(gè)城市間的最短路經(jīng)問(wèn)題。程序所具有的功能特色本程序主要目的是為了給用戶提供路徑咨詢。實(shí)現(xiàn)了幫助用戶了解全國(guó)各大城市間往來(lái)的最短路徑問(wèn)題,第二,可以提供用戶查詢各大城市的相關(guān)信息。本程序最大的特點(diǎn)是支持用戶自己添加城市信息及

2、城市,或添加城市的路徑,既就有可擴(kuò)展性。該程序所做的工作的是模擬全國(guó)交通咨詢,為旅客提供三種最優(yōu)決策的交通咨詢。此程序規(guī)定:(1) 在程序中輸入城市名稱時(shí),需輸入10個(gè)字母以內(nèi)的字母串;輸入列車或飛機(jī)編號(hào)時(shí)需輸入一個(gè)整型數(shù)據(jù);輸入列車或飛機(jī)的費(fèi)用時(shí)需輸入一個(gè)實(shí)型數(shù)據(jù);輸入列車或飛機(jī)開(kāi)始時(shí)間和到達(dá)時(shí)間時(shí)均需輸入兩個(gè)整型數(shù)據(jù)(以hh:mm的形式);在選擇功能時(shí),應(yīng)輸入與所選功能對(duì)應(yīng)的一個(gè)整型數(shù)據(jù)。(2) 程序的輸出信息主要是:最快需要多少時(shí)間才能到達(dá),或最少需要多少旅費(fèi)才能到達(dá),或最少需要多少次中轉(zhuǎn)到達(dá),并詳細(xì)說(shuō)明依次于何時(shí)乘坐哪一趟列車或哪一次班機(jī)到何地。(3) 程序的功能包括:提供對(duì)城市信息的

3、編輯,提供列車時(shí)刻表和飛機(jī)航班表的編輯,提供三種最優(yōu)決策:最快到達(dá)、最省錢到達(dá)、最少中轉(zhuǎn)次數(shù)到達(dá)。1.1題目分析1通過(guò)對(duì)題目的分析知,是要讓我們能夠通過(guò)利用所學(xué)的數(shù)據(jù)結(jié)構(gòu)的基本知識(shí)和技能來(lái)解決程序設(shè)計(jì)問(wèn),因此在搞程序設(shè)計(jì)之前先好好的把書(shū)復(fù)習(xí)一遍,弄清楚各個(gè)知識(shí)之間的聯(lián)系。2由題目的分析知全國(guó)交通咨詢管理系統(tǒng)是有對(duì)城市信息的增加、刪除、修改、保存、查詢、有錯(cuò)時(shí)提示出錯(cuò)信息等功能,最后對(duì)數(shù)據(jù)進(jìn)行保存并退出操作系統(tǒng)。由此可知需要將函數(shù)模塊化,將它做為一個(gè)獨(dú)立的函數(shù)體去實(shí)現(xiàn)它的功能。它可以分為四大功能模塊,每個(gè)模塊需要去各個(gè)擊破。其中可能用到C+語(yǔ)言的指針與鏈表,因此,要先去復(fù)習(xí)一下C+語(yǔ)言課本。3根

4、據(jù)這些功能和基本要求,可充分運(yùn)用我們所學(xué)的數(shù)據(jù)結(jié)構(gòu)的基本知識(shí)和技能去逐步的解決。其中將函數(shù)進(jìn)行模塊化。在數(shù)據(jù)結(jié)構(gòu)中,通過(guò)隊(duì)列,棧,圖的聲明來(lái)實(shí)現(xiàn)系統(tǒng)的各種功能的存儲(chǔ)各城市之間乘火車的消耗價(jià)格,時(shí)間,乘飛機(jī)的價(jià)格,時(shí)間,以及中轉(zhuǎn)站最少。利用指針和結(jié)點(diǎn)來(lái)實(shí)現(xiàn)城市與城市之間各種操作,而這些知識(shí)點(diǎn)都是我們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)必須掌握和學(xué)會(huì)運(yùn)用的。4完成程序功能的設(shè)置后,應(yīng)對(duì)程序進(jìn)行調(diào)試,以便在調(diào)試中能及時(shí)地找出錯(cuò)誤并加以更正,這樣能使程序功能進(jìn)一步的完善和正確。這就要求我們?cè)诰幊毯驼{(diào)試過(guò)程中養(yǎng)成認(rèn)真分析和善于發(fā)現(xiàn)問(wèn)題并及時(shí)解決的習(xí)慣,不懂的及時(shí)問(wèn)老師或者其他同學(xué)。 1.2實(shí)現(xiàn)方法1.2.1圖的實(shí)現(xiàn)和聲明(1)

5、利用帶權(quán)圖,構(gòu)建交通網(wǎng)絡(luò)圖(2)根據(jù)題目要求,聲明了一個(gè)圖形的數(shù)據(jù)結(jié)構(gòu)用來(lái)存儲(chǔ)任意幾個(gè)城市之間的各種信息,其中是把它們的TTime; TPrice; FTime; FPrice;的各種信息用鄰接矩陣存儲(chǔ)起來(lái)的。同時(shí)運(yùn)用構(gòu)造函數(shù),利用特定的值來(lái)構(gòu)造對(duì)象。(3)struct City圖的結(jié)構(gòu),CreateCity建立鄰接圖,AddCity增加,DelCity刪除,EditCity修改,ShortestPath最小路徑,ShortestPath_DIJ求源點(diǎn)v0到各點(diǎn)的最短路徑 1火車時(shí)間最小,2火車金錢最小,3飛機(jī)時(shí)間最小,4飛機(jī)金錢最小,來(lái)實(shí)現(xiàn)的。 1.2.2程序功能的實(shí)現(xiàn)(1)全國(guó)交通咨詢信息

6、錄入和增加的實(shí)現(xiàn)主要是對(duì)城市基本信息的輸入,包括(乘火車的價(jià)格,乘火車的時(shí)間,乘飛機(jī)的價(jià)格,乘飛機(jī)的時(shí)間,中轉(zhuǎn)站次數(shù)最少)在程序中只要用AddCity (輸入函數(shù))和ShortestPath(C);來(lái)實(shí)現(xiàn)。(2)全國(guó)交通咨詢信息顯示的實(shí)現(xiàn)主要為用戶ShortestPath(C);函數(shù)顯示城市之間的基本信息,包括上面錄入的信息和增加的內(nèi)容。(3)全國(guó)交通咨詢信息載入文件的實(shí)現(xiàn)在程序中用LoadCity(C);break()函數(shù)來(lái)載入文件。(4)全國(guó)交通咨詢信息刪除的實(shí)現(xiàn)在程序中用DelCity(C)函數(shù)來(lái)實(shí)現(xiàn)對(duì)有錯(cuò)的信息進(jìn)行刪除。(5)全國(guó)交通咨詢信息修改的實(shí)現(xiàn)在程序中用EditCity(C)(

7、修改函數(shù))來(lái)實(shí)現(xiàn),而且可通過(guò)按編號(hào)或城市名來(lái)修改,當(dāng)找不到要修改的內(nèi)容時(shí)提示用戶可能輸入有誤,重新在輸一遍。(6)全國(guó)交通咨詢信息的重來(lái) CreateCity(C);break重來(lái),實(shí)現(xiàn)對(duì)錯(cuò)誤的從新輸入。(7)全國(guó)交通咨詢信息的保存在程序中用SaveCity(C)保存函數(shù)來(lái)實(shí)現(xiàn),并提示用戶數(shù)據(jù)已保存。(8)全國(guó)交通咨詢信息的增加ShowCityDat(C);break, case 2:AddCity(C);break 增加。第二章 系統(tǒng)功能模塊設(shè)計(jì) 該課題可以分為如下幾個(gè)模塊:控制選擇功能項(xiàng)的main函數(shù)、建立鄰接圖的CreateCity(City *C)函數(shù)、增加城市的AddCity(Cit

8、y *C)函數(shù)、刪除城市的DelCity(City *C)函數(shù)、修改資料的EditCity(City *C)函數(shù)、求最小路徑的ShortestPath(City *C)函數(shù)、求其他最值的ShortestPath_DIJ(City *C,int v0,int k)函數(shù)、載入文件資料的LoadCity(City *C)函數(shù)、保存資料的SaveCity(City *C)函數(shù)、顯示城市之間關(guān)系數(shù)據(jù)的ShowCityName(City *C,int k)函數(shù)。模塊圖如下:圖1-1這個(gè)程序由三部分組成:管理員:這個(gè)模塊包含了創(chuàng)建交通網(wǎng)跟增加城市兩個(gè),它是這 個(gè)程序往下運(yùn)行的前提。用戶:這個(gè)模塊的是屬于用戶

9、的在創(chuàng)建好的交通網(wǎng)上選擇自己的需求。顯示交通網(wǎng):這個(gè)模塊是計(jì)算機(jī)的運(yùn)算,運(yùn)算出來(lái)的是用戶想要的結(jié)果。第三章 流程圖圖2 系統(tǒng)流程圖開(kāi)始運(yùn)行程序,輸入命令,進(jìn)入各種不同的功能區(qū),進(jìn)行各自的功能,分別運(yùn)行,然后輸出結(jié)果。結(jié)束后,如果退出就結(jié)束,不退出重復(fù)上面的功能。第四章 運(yùn)行調(diào)試登陸界面:管理界面中有3大模塊即我們說(shuō)的三大功能 圖3 登陸界面進(jìn)入管理員模式進(jìn)行城市交通網(wǎng)絡(luò)的創(chuàng)建:在這個(gè)模塊中我們選擇1 創(chuàng)建城市數(shù)目是3 分別為a、b、c設(shè)ab間的路程是20,ac的潞城市30,bc的路程是40 創(chuàng)建建通網(wǎng)絡(luò)圖。26 圖4管理員界面這塊是用戶模式,在用戶進(jìn)入系統(tǒng)之后,進(jìn)行查詢:在用戶中我們輸入1咨詢

10、兩個(gè)城市間的信息再次選擇1咨詢最短的路程 a到a ,a到b的,a到c的。在界面輸入1的前提下分別輸入2,3。結(jié)果如下:圖5 用戶界面圖6 交通信息系統(tǒng)界面圖7 咨詢信息界面圖8 交通信息網(wǎng)的的結(jié)果第五章 實(shí)驗(yàn)總結(jié)第六章 致謝附錄一1數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版 嚴(yán)蔚敏、吳偉民,清華大學(xué)出版社,20022數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn) 徐孝凱,清華大學(xué)出版社, 20023數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)題典 李春葆,清華大學(xué)出版社,2002附錄二/*/ 交通咨詢系統(tǒng) / / /*/鄰接矩陣類/#include #ifndef ADJMATRIX_H#define ADJMATRIX_H#include#includeusing name

11、space std;const int MaxValue=100;/最大值struct EdgeType int iDistance;/路程 int iCost; /費(fèi)用 float fTime; /所花費(fèi)的時(shí)間;/城市結(jié)構(gòu)體,包括城市名字以及城市在圖中的編號(hào)struct City int Number; char *Name;/交通網(wǎng)絡(luò)圖,有iVexNum個(gè)城市,城市之間有iEdgNum條路線,每條路線上的時(shí)間路程費(fèi)用為/RouteMaxValueMaxValueclass AdjMatrixpublic: /AdjMatrix();/圖的初始化,構(gòu)造函數(shù) AdjMatrix(int n);

12、 int GetVexNum();/取得交通圖的城市個(gè)數(shù) int GetEdgNum();/取得交通圖的路線數(shù)目 char* GetCityName (const int i);/通過(guò)序號(hào)取得城市的名字 int GetCityNum(char* cityname);/通過(guò)城市名字取得城市的編號(hào) /EdgeType GetRoute (const int v1,const int v2); void Check(int &i,int &j);/檢查輸入的邊的序號(hào)是否越界,若越界就重輸 void CreateGraph();/構(gòu)造交通圖 void PrintGragh();/*供測(cè)試用 void

13、ShowRouteLength();/向用戶顯示路程長(zhǎng)度 void ShowRouteCost();/向用戶顯示路程車票 void ShowRouteTime();/向用戶顯示路程時(shí)間 void Dijkstra(int v,int dist,int path);/求一個(gè)源點(diǎn)到其他點(diǎn)的最短性質(zhì) void DijkstraShortDistance();/一個(gè)城市到其他城市的最短距離 void DijkstraLessTime();/一個(gè)城市到其他城市的最少時(shí)間 void DijkstraLessCost();/一個(gè)城市到其他城市的最少花費(fèi) void Floyd(int distMaxValue

14、MaxValue,int pathMaxValueMaxValue); /兩個(gè)點(diǎn)之間的最短性質(zhì) void FloydShortDistance();/兩個(gè)城市之間的最段距離 void FloydLessTime();/兩個(gè)城市之間的最少時(shí)間 void FloydLessCost();/兩個(gè)城市之間的最少花費(fèi)private: int iVexNum;/頂點(diǎn)數(shù),即城市個(gè)數(shù) int iEdgNum;/邊數(shù),即城市間的路線 City cityMaxValue;/圖的頂點(diǎn),即城市 EdgeType RouteMaxValueMaxValue;/各邊的權(quán)值,即路線的時(shí)間費(fèi)用以及路程;#endif /Adj

15、Matrix.cpp/#include AdjMatrix.h#includeusing namespace std;AdjMatrix:AdjMatrix(int n)/初始化有n個(gè)頂點(diǎn)的鄰接矩陣 for(int i=0;in;i+) for(int j=0;jn;j+) if(i=j) Routeij.fTime=0; Routeij.iCost=0; Routeij.iDistance=0; else Routeij.fTime=MaxValue; Routeij.iCost=MaxValue; Routeij.iDistance=MaxValue; iVexNum=iEdgNum=0;

16、int AdjMatrix:GetVexNum() return iVexNum; int AdjMatrix:GetEdgNum() return iEdgNum;char* AdjMatrix:GetCityName(const int i)/取城市的名字 if(iiVexNum) cerr參數(shù)越界,發(fā)生錯(cuò)誤了!endl; exit(1); return cityi.Name;int AdjMatrix:GetCityNum(char* cityname) for(int i=1;i=iVexNum;i+) if (strcmp(cityi.Name,cityname)=0) return

17、 cityi.Number; cerr您輸入的城市有錯(cuò)誤endl; return -1;void AdjMatrix:PrintGragh()/將圖打印出來(lái),最初測(cè)試之用 for(int i=0;iiVexNum;i+) for(int j=0;jiVexNum;j+) if(100=Routei+1j+1.iDistance) Routei+1j+1.iDistance=1000; coutRoutei+1j+1.iDistancet coutendl; void AdjMatrix:Check(int &i,int &j)/檢查輸入的邊的序號(hào)是否越界,若越界就重輸 while(1) if(

18、iiVexNum|jiVexNum) cerr參數(shù)越界,發(fā)生錯(cuò)誤了,請(qǐng)重輸!ij; /done/void AdjMatrix:CreateGraph()/為了方便真是先把時(shí)間跟費(fèi)用這兩個(gè)權(quán)值給屏蔽掉了 City city1,city2; int time,distance,cost; char flag=y; char *ch=new char(10); coutiVexNum; cout輸入城市的信息:endl; for(int i=1;i=iVexNum;i+) cout序號(hào)i的; coutcityi.Name; cityi.Number=i; cout請(qǐng)輸入路線的數(shù)目:iEdgNum;

19、for(i=0;iiEdgNum;i+) cout輸入兩個(gè)城市的信息:endl; / coutcity1.Number; coutcity1.Name; / cout序號(hào)是GetCityNum(city1.Name)endl; / coutcity2.Number; city1.Number=GetCityNum(city1.Name); coutcity2.Name; city2.Number=GetCityNum(city2.Name); /cout序號(hào)是GetCityNum(city2.Name)endl; / couttime; / Routecity1.Numbercity2.Num

20、ber.fTime=time; / Routecity2.Numbercity1.Number.fTime=time; / coutcost; / Routecity1.Numbercity2.Number.iCost=cost; / Routecity2.Numbercity1.Number.iCost=cost; coutdistance; Routecity1.Numbercity2.Number.iDistance=distance; / Routecity2.Numbercity1.Number.iDistance=distance; /* 可以保存到相應(yīng)的文件 FILE *fp1,

21、*fp2; if(fp1=fopen(city.txt,wb)=NULL) printf(無(wú)法打開(kāi)文件!n); return; for(int j=1;j,cityj.Number); fprintf(fp1,%s ,cityj.Name); fprintf(fp1,n); fclose(fp1); if(fp2=fopen(info.txt,wb)=NULL) printf(無(wú)法打開(kāi)文件!n); return; for(j=1;j=iEdgNum;j+) fprintf(fp2,%d.distance: %d,cost: %d,time: %f,j, Routecity1.Numbercit

22、y2.Number.iDistance, Routecity1.Numbercity2.Number.iCost, Routecity1.Numbercity2.Number.fTime); fclose(fp2);*/ return;void AdjMatrix:ShowRouteLength()/向用戶顯示各個(gè)城市之間路程長(zhǎng)度 coutt; for(int i=1;i=iVexNum;i+) coutcityi.Namet; coutendl; for(i=1;i=iVexNum;i+) coutcityi.Namet; for(int j=1;j=iVexNum;j+) coutRout

23、eij.iDistancet; coutendl; void AdjMatrix:ShowRouteCost()/向用戶顯示各個(gè)城市之間路程車票 coutt; for(int i=1;i=iVexNum;i+) coutcityi.Namet; coutendl; for(i=1;i=iVexNum;i+) coutcityi.Namet; for(int j=1;j=iVexNum;j+) coutRouteij.iCostt; coutendl; void AdjMatrix:ShowRouteTime()/向用戶顯示各個(gè)城市之間路程時(shí)間coutt; for(int i=1;i=iVexN

24、um;i+) coutcityi.Namet; coutendl; for(i=1;i=iVexNum;i+) coutcityi.Namet; for(int j=1;j=iVexNum;j+) coutRouteij.fTimet; coutendl; void AdjMatrix:Dijkstra(int v0,int dist,int path)/求一個(gè)源點(diǎn)到其他點(diǎn)的最短距離/函數(shù)里面城市圖的權(quán)值還是先展示用的兩地路程 即iDistance int mindis; int *s=new int(10); int u; for(int i=1;i=iVexNum;i+) disti=Ro

25、utev0i.iDistance; si=0; if(i!=v0&distiMaxValue) pathi=v0; else pathi=-1; distv0=0; sv0=1; for(i=1;iiVexNum;i+) mindis=MaxValue; for(int j=1;j=iVexNum;j+) if(0=sj&distjmindis) u=j; mindis=distj; if(mindis=MaxValue) return; su=1; for(int w=1;w=iVexNum;w+) if (0=sw&Routeuw.iDistanceMaxValue&distu+Route

26、uw.iDistancedistw) distw=distu+Routeuw.iDistance; pathw=u; void AdjMatrix:DijkstraShortDistance()/求一個(gè)城市到其他城市的最短路程/然后將這個(gè)路線打印出來(lái),不過(guò)是倒著打的,要正打的話可以用一個(gè)棧來(lái)實(shí)現(xiàn) char *cityname=new char; coutcityname; int v0=GetCityNum(cityname); int *dist=new intiVexNum; int *path=new intiVexNum; Dijkstra(v0,dist,path); cout從ci

27、tyname城市到其他城市的最短路程為:endl; for(int i=1;i=iVexNum;i+) cout到城市GetCityName(i) 的最短距離為distin; if(pathi!=-1) cout路徑為GetCityName(i)-; int x=pathi; while(x!=v0) coutGetCityName(x)-; x=pathx; coutcityname; coutendl; else coutendl; void AdjMatrix:DijkstraLessTime() char *cityname=new char; coutcityname; int v0

28、=GetCityNum(cityname); int *dist=new intiVexNum; int *path=new intiVexNum; Dijkstra(v0,dist,path); cout從 cityname城市到其他城市的最少時(shí)間為:n; for(int i=1;i=iVexNum;i+) cout到城市GetCityName(i) 的最少時(shí)間為distiendl; void AdjMatrix:DijkstraLessCost() char *cityname=new char; coutcityname; int v0=GetCityNum(cityname); int

29、 *dist=new intiVexNum; int *path=new intiVexNum; Dijkstra(v0,dist,path); cout從 cityname城市到其他城市的最少花費(fèi)為:n; for(int i=1;i=iVexNum;i+) cout到城市GetCityName(i) 的最少花費(fèi)為distiendl; void AdjMatrix:Floyd(int distMaxValueMaxValue,int pathMaxValueMaxValue)/求一個(gè)源點(diǎn)到其他點(diǎn)的最短距離/函數(shù)里面城市圖的權(quán)值還是先展示用的兩地路程 即iDistance int i,j,k;

30、for(i=1;i=iVexNum;i+) for(j=1;j=iVexNum;j+) distij=Routeij.iDistance; if(i!=j&distij!=MaxValue) pathij=i; else if(i=j) pathij=0; else pathij=-1; for(k=1;k=iVexNum;k+) for(i=1;i=iVexNum;i+) for(j=1;j(distik+distkj) distij=distik+distkj; pathij=pathkj; void AdjMatrix:FloydShortDistance()/求一個(gè)城市到其他城市的最短

31、路程/然后將這個(gè)路線打印出來(lái),不過(guò)是倒著打的,要正打的話可以用一個(gè)棧來(lái)實(shí)現(xiàn) char *cityname1=new char; char *cityname2=new char; int distMaxValueMaxValue; int pathMaxValueMaxValue; cout請(qǐng)輸入兩個(gè)城市:; coutcityname1; coutcityname2; int i= GetCityNum(cityname1); int j= GetCityNum(cityname2); Floyd( dist, path); cout城市cityname1到城市cityname2 的最短路徑為

32、distijendl; if(pathij!=-1) cout路徑為:cityname2-; int x=pathij; while(x!=i) coutGetCityName(x)-; x=pathix; coutcityname1; coutendl; else coutendl;void AdjMatrix:FloydLessTime() char *cityname1=new char; char *cityname2=new char; cout請(qǐng)輸入兩個(gè)城市:; coutcityname1; coutcityname2; int i= GetCityNum(cityname1);

33、int j= GetCityNum(cityname2); int distMaxValueMaxValue; int pathMaxValueMaxValue; Floyd( dist, path); cout城市cityname1到城市cityname2 的最少時(shí)間為distijendl;void AdjMatrix:FloydLessCost() char *cityname1=new char; char *cityname2=new char; cout請(qǐng)輸入兩個(gè)城市:; coutcityname1; coutcityname2; int i= GetCityNum(cityname

34、1); int j= GetCityNum(cityname2); int distMaxValueMaxValue; int pathMaxValueMaxValue; Floyd( dist, path); cout城市cityname1到城市cityname2 的最少花費(fèi)為distijendl;/*/最初的代碼。后來(lái)舍棄了void AdjMatrix:CreateCity() int i=0,tempnumber=0; char temp=y; coutCityi+; cout繼續(xù)輸入(y/n)?temp; cout請(qǐng)輸入城市名字: ; tempnumber+; coutendl; iV

35、exNum=tempnumber; void AdjMatrix:CreateRoute() char *city1; char *city2; int cost; int time2; int distance; cout請(qǐng)輸入各路線信息endl; coutcity1; coutcity2; coutdistance; coutcost; cout開(kāi)車時(shí)間:; scanf(%d:%d,&time0,&time1); while(time0=24|time1=60) coutn時(shí)間輸入錯(cuò)誤,請(qǐng)重輸!endl; scanf( %d:%d, &time0, &time1 ); cout到達(dá)時(shí)間:;

36、 scanf(%d:%d,&time0,&time1); while(time0=24|time1=60) coutn時(shí)間輸入錯(cuò)誤,請(qǐng)重輸!endl; scanf( %d:%d, &time0, &time1 ); EdgeType AdjMatrix:GetRoute(const int v1,const int v2)/取權(quán)值 if(v1iVexNum|v2iVexNum) cerr參數(shù)越界,發(fā)生錯(cuò)誤了!endl; exit(1); return Routev1v2;*/main.cpp#include/#include AdjMatrix.husing namespace std;Adj

37、Matrix Gragh(10); /done/void Administrator() /管理員管理項(xiàng)目的界面/里面包括城市網(wǎng)絡(luò)的初始化,以及增加城市等功能 int i; coutendl; cout*這里是管理員的界面,歡迎進(jìn)入*endl; cout1=創(chuàng)建城市交通網(wǎng)絡(luò)endl 2=增加城市endl 0=返回上一級(jí)菜單endl; couti; while(i!=0) switch(i) case 1:Gragh.CreateGraph();break; case 2:;break;/增加城市尚未實(shí)現(xiàn)(*_*) cout1=創(chuàng)建城市交通網(wǎng)絡(luò)endl 2=增加城市endl 0=返回上一級(jí)菜單e

38、ndl; couti; return;/done/void OnetoAnotherInfo()/一個(gè)城市到其他城市信息的查詢 int i; coutendl; cout1=咨詢一個(gè)城市到其他城市的最短路徑endl 2=咨詢一個(gè)城市到其他城市的最少時(shí)間endl 3=咨詢一個(gè)城市到其他城市的最少車票endl 0=返回上一級(jí)菜單endl; couti; while(i!=0) switch(i) case 1:Gragh.DijkstraShortDistance();break; case 2:Gragh.DijkstraLessTime();break; case 3:Gragh.DijkstraLessCost();break; cout1=咨詢一個(gè)城市到其他城市的最短路徑endl 2=咨詢一個(gè)城市到其他城市的最少時(shí)間endl 3=咨詢一個(gè)城市到其他城市的最少車票endl 0=返回上一級(jí)菜單endl; couti; return; void TwoCityInfo()/兩個(gè)城市之間的信息查詢 int i; coutendl; cout1=咨詢兩個(gè)城市之間的最短路程endl 2=咨詢兩個(gè)城市之間的最少時(shí)間endl 3=咨詢兩個(gè)城市之間的最少車票endl 0=返回上一級(jí)菜單endl; co

溫馨提示

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