版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、專題設(shè)計(jì)(圖)報(bào)告題目:公交線路查詢小組成員:?jiǎn)栴}描述當(dāng)一個(gè)用戶從甲地到乙地時(shí),由于不同需求,就有不同的交通方式及不同的交通路線。有人希望以最快速度到達(dá),有人希望以最短距離到達(dá),有人希望用最少的費(fèi)用等。交通方式有公交車和地鐵。編寫一北京公交線路查詢系統(tǒng),通過輸入起始站、終點(diǎn)站,為用戶提供三種或以上決策的交通咨詢。設(shè)計(jì)要求a. 提供對(duì)交通線路進(jìn)行編輯功能。要求可添加或刪除線路。b. 提供兩種交通工具,公交車和地鐵,設(shè)定路程所需要的時(shí)間、距離及費(fèi)用等參數(shù)。c. 提供多種決策:最短距離、最快到達(dá)、最少費(fèi)用、最少換乘次數(shù)等。d. 中途不考慮等候、擁堵等消耗時(shí)間。e. 該系統(tǒng)以人機(jī)對(duì)話方式進(jìn)行。用戶輸入
2、起始站、終點(diǎn)站及需求原則,系統(tǒng)輸出乘車方案:乘什么車、乘幾路車、距離、時(shí)間、費(fèi)用換乘方法等相關(guān)信息。數(shù)據(jù)結(jié)構(gòu)本程序運(yùn)用了關(guān)于圖這種數(shù)據(jù)結(jié)構(gòu)。它的抽象數(shù)據(jù)類型定義如下:typedef struct unDiGraph int numVerts; /結(jié)點(diǎn) costAdj cost; /鄰接矩陣unDiGraph,*UNG;基本操作:unDiGraph* CreateCostG()操作結(jié)果:構(gòu)造帶權(quán)(費(fèi)用)圖。unDiGraph* CreateTimeG()操作結(jié)果:構(gòu)造帶權(quán)(時(shí)間)圖。構(gòu)造地鐵帶權(quán)(費(fèi)用)圖。PathMat *Floyed(unDiGraph *D)操作結(jié)果:Floyed函數(shù) 求任
3、意兩點(diǎn)的最短路徑。設(shè)計(jì)與實(shí)現(xiàn)算法思路(1) 數(shù)據(jù)存儲(chǔ)。站點(diǎn)信息(站點(diǎn)代碼)、交通信息(站點(diǎn)間的里程、公交和地鐵時(shí)刻)存儲(chǔ)于磁盤文件。建議把站點(diǎn)信息存于文件前面,交通信息存于文件的后面,用fread和fwrite函數(shù)操作。(2) 數(shù)據(jù)的邏輯結(jié)構(gòu)。根據(jù)設(shè)計(jì)任務(wù)的描述,其站點(diǎn)間的交通問題是典型的圖結(jié)構(gòu),可看作為有向圖,圖的頂點(diǎn)是站點(diǎn),邊是站點(diǎn)之間所耗費(fèi)的時(shí)間(要包括中轉(zhuǎn)站的等候時(shí)間)或車費(fèi)。(3) 數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。采用鄰接表和鄰接矩陣都可作為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),但當(dāng)鄰接邊不多時(shí),宜采用鄰接表,以提高空間的存儲(chǔ)效率。這里建議采用鄰接表作為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。(4) 用不同的功能模塊對(duì)站點(diǎn)信息和交通信息進(jìn)行編輯
4、。添加、修改、刪除功能可用菜單方式或命令提示方式。只要能方便的對(duì)站點(diǎn)信息和交通信息進(jìn)行管理即可。(5) 最優(yōu)決策功能模塊(fast or province)。 讀入信息和交通信息,用鄰接表生成含權(quán)網(wǎng)絡(luò),表頭數(shù)組中的元素存放站點(diǎn)名及對(duì)方站點(diǎn)到達(dá)該元素所代表站點(diǎn)的所有信息;表頭數(shù)組中的元素所對(duì)應(yīng)的單鏈表存放與該元素所代表的站點(diǎn)有交通聯(lián)系的站點(diǎn)(代碼、里程、公交和地鐵車次)。 根據(jù)具體最優(yōu)決策的要求,用Dijkstra算法求出出發(fā)站點(diǎn)到其它各站點(diǎn)的最優(yōu)值(最短時(shí)間或最小的費(fèi)用),搜索過程中所經(jīng)過站點(diǎn)的局部最優(yōu)信息都保存在鄰接表的表頭數(shù)組中。其目的站點(diǎn)所代表的元素中就保存了所需的最優(yōu)決策結(jié)果。這過程中
5、,要用隊(duì)列或棧保存局部最優(yōu)決策值(局部最短的時(shí)間或最省的費(fèi)用)變小的站點(diǎn),其相應(yīng)的初始值可為,并在表頭數(shù)組對(duì)應(yīng)的站點(diǎn)元素中保存響應(yīng)的信息。開始時(shí),棧(隊(duì))中只有出發(fā)站點(diǎn),隨著對(duì)棧(隊(duì))頂(首)站點(diǎn)有交通聯(lián)系的站點(diǎn)求得決策值(最短時(shí)間或最小的費(fèi)用),若該值是局部最優(yōu)值且該站點(diǎn)不在棧(隊(duì))中,則進(jìn)棧(隊(duì)),直至棧(隊(duì))為空。 輸出結(jié)果。從目的站點(diǎn)出發(fā),搜索到出發(fā)站點(diǎn),所經(jīng)過的站點(diǎn)均入棧,再逐一出棧棧中的站點(diǎn),輸出保存在表頭數(shù)組中對(duì)應(yīng)站點(diǎn)的信息(對(duì)方站點(diǎn)的出發(fā)信息,里程、時(shí)間、費(fèi)用等)及最終結(jié)果。即輸出依次于何時(shí)何地乘坐幾點(diǎn)的公交或地鐵于何時(shí)到達(dá)何地;最終所需的最快需要多長(zhǎng)時(shí)間才能到達(dá)及費(fèi)用,或者最
6、少需要多少車費(fèi)才能到達(dá)及時(shí)間。(6) 主程序可以有系統(tǒng)界面、菜單;也可用命令提示方式;選擇功能模塊執(zhí)行,要求在程序運(yùn)行過程中可以反復(fù)操作。算法思想 本程序運(yùn)用了圖的知識(shí)里程時(shí)間A-B88B-C55C-K67K-L11L-J67J-M66C-D55D-M55D-E44E-M1111E-H66E-F99F-A99F-G66G-I22E-H66MLKJIHGFEDCBA并利用Floyed函數(shù)求帶權(quán)圖兩點(diǎn)之間的最短路徑。通過對(duì)圖表求最短路徑,就可以最短道從一站點(diǎn)到另一站點(diǎn)之間最省時(shí)間和最省費(fèi)用的走法。程序模塊程序的模塊為#include <windows.h>#include <st
7、dio.h>#include <crtdbg.h>#include <string.h>#include<iostream.h> #include <malloc.h>/引用的文本件#define INF 65535 /定義一個(gè)最大數(shù)定為無窮值#define MAX 13typedef int costAdjMAX+1MAX+1;/圖鄰接矩陣從1開始記數(shù)int PathMAX+1MAX+1;/圖鄰接矩陣從1開始記數(shù)int o13,h;typedef struct unDiGraphint numVerts; /結(jié)點(diǎn)costAdj cost;
8、 /鄰接矩陣unDiGraph,*UNG; /圖的定義costAdj B,L;void pr(int i)/選擇城市void pri()/輸出城市unDiGraph *CreateCostG()/構(gòu)造帶權(quán)(費(fèi)用)圖 返回首地址G:unDiGraph *CreateTimeG()/構(gòu)造帶權(quán)(時(shí)間)圖 返回首地址G:unDiGraph *CreateFlyG()/飛機(jī)的相關(guān)信息void Floyed(unDiGraph *D,unDiGraph *M) /Floyed函數(shù) 求任意兩點(diǎn)的最短路徑:void prn_pass(int i,int j) /為了求從i到j(luò)的最短路徑,只需要調(diào)用如下的過程v
9、oid time()/求最少時(shí)間路徑。void money()/求最少花費(fèi)路徑void administrator()/管理員功能void main()/main函數(shù)測(cè)試與結(jié)論顯示站點(diǎn)選擇最短時(shí)間路線 選擇最少花費(fèi)路線增加站點(diǎn)并測(cè)試總結(jié)與思考拿到題目的時(shí)候比較困惑,畢竟我們的C/C+學(xué)的不是很好,后來看了很多有關(guān)的例子,仔細(xì)看了書上的圖部分的知識(shí),覺得就是書上的許許多多的內(nèi)容和代碼,其實(shí)總體來說,應(yīng)該不會(huì)特別的難。后來,參照書上的和網(wǎng)上的諸多例子,一個(gè)模塊一個(gè)模塊的編寫,調(diào)試,一個(gè)功能一個(gè)功能去完善。發(fā)現(xiàn)越做越順利,又有以前用C/C+寫的各個(gè)程序的代碼,回頭看了一下自己當(dāng)年編寫的程序,加上實(shí)驗(yàn)
10、中對(duì)于改錯(cuò)的經(jīng)驗(yàn)積累和幾個(gè)學(xué)得不錯(cuò)的同學(xué)的幫助,我們小組的程序中的錯(cuò)誤也一個(gè)一個(gè)的順利解決。其實(shí),這個(gè)對(duì)于文本文件的操作以前也有涉及到過,但是以前的時(shí)候總是以數(shù)組或者指針的形式進(jìn)行調(diào)用,這一次直接才有的是I/O流,覺得效果還是很不錯(cuò)的。再后來,程序終于就基本實(shí)現(xiàn)了。其實(shí),從這次實(shí)驗(yàn)中我們認(rèn)識(shí)到,編程有很多的樂趣也有很多的技巧性和知識(shí)性。我們將在以后的日子里繼續(xù)認(rèn)真的學(xué)習(xí)知識(shí),積累經(jīng)驗(yàn),讓自己的編程能力提高。附錄程序源代碼#include <windows.h>#include <stdio.h>#include <string.h>#include<i
11、ostream.h> #include <malloc.h>#define INF 65535 /定義一個(gè)最大數(shù)定為無窮值#define MAX 23static int c_number=13;static int k=0;static int v=0,z=0,r=0,t=0;typedef struct zhuint c_cost;int c_time;int f_cost;int f_time;zhu;zhu m20,x20,n20;typedef int costAdjMAX+1MAX+1; /圖鄰接矩陣從1開始記數(shù)int PathMAX+1MAX+1; /圖鄰接矩陣
12、從1開始記數(shù)typedef struct unDiGraph int numVerts; /結(jié)點(diǎn)costAdj cost; /鄰接矩陣unDiGraph,*UNG; /圖的定義typedef struct c_edit char a10;c_edit;c_edit add10;costAdj B,L;int pr(int i,int j) int h=0; if(j=0) h=i; else if(j=1) cin>>addi.a; switch(h)/運(yùn)用switch語(yǔ)句。 case(0):cout<<""break;case(1) : cout&
13、lt;<"A "break; case(2) : cout<<"B "break; case(3) : cout<<"C "break; case(4) : cout<<"D "break; case(5) : cout<<"E "break; case(6) : cout<<"F "break; case(7) : cout<<"G "break; case(8) : cout
14、<<"H "break; case(9) : cout<<"I "break; case(10) : cout<<"J "break;case(11) : cout<<"K "break; case(12) : cout<<"L "break; case(13) : cout<<"M "break;default : cout<<addi-13.a;return 1; /輸出站點(diǎn)列表及相應(yīng)代碼
15、void pri() int i;cout<<" 站點(diǎn)及其代碼"<<endl<<endl<<endl; cout<<" *"<<endl; for (i=1;i<=c_number;i+)cout<<i<<"."pr(i,0);cout<<endl<<" *"<<endl<<endl<<endl<<endl<<endl<<
16、;endl;/構(gòu)造帶權(quán)(費(fèi)用)圖 返回首地址G:unDiGraph *CreateCostG(int o)/公交的花費(fèi)的存貯和編輯功能 unDiGraph *G;int i,j;int a=0,b=0,f,h=1;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph)return(NULL); /為G分配存儲(chǔ)空間。for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF; /初始化使G->costij為無窮。G->numVerts=c_number;G->co
17、st16=G->cost61=9;G->cost12=G->cost21=8;G->cost23=G->cost32=5;G->cost34=G->cost43=5;G->cost45=G->cost54=4;G->cost56=G->cost65=9;G->cost58=G->cost85=6;G->cost57=G->cost75=6;G->cost67=G->cost76=6;G->cost79=G->cost97=2;G->cost311=G->cost113=
18、6;G->cost1112=G->cost1211=1;G->cost1210=G->cost1012=7;G->cost310=G->cost103=3;G->cost1310=G->cost1013=5;G->cost135=G->cost513=11; if (o) while(h=1)v=v+1;pri();cout<<"公交花費(fèi)編輯"<<endl;cout<<"請(qǐng)輸入開始站點(diǎn)的代碼"<<endl;cin>>a;cout<
19、<"請(qǐng)輸入結(jié)尾站點(diǎn)的代碼"<<endl;cin>>b;cout<<"請(qǐng)輸入你的兩地花費(fèi)"<<endl;cin>>mv.c_cost;nv.c_cost=a;xv.c_cost=b;cout<<"請(qǐng)選擇"<<endl;cout<<"*"<<endl;cout<<"1:繼續(xù)更改站點(diǎn)費(fèi)用"<<endl;cout<<"0:返回上一級(jí)菜單"
20、;<<endl;cout<<"*"<<endl;cin>>h; switch(h) case 1: h=1;break;case 0: h=0;break;default:cout<<"選擇出錯(cuò)"<<endl; f=v+1; while (v-) G->costnv.c_costxv.c_cost=mv.c_cost; v=f;return(G);/構(gòu)造帶權(quán)(時(shí)間)圖 返回首地址G:unDiGraph *CreateTimeG(int o)/公交的時(shí)間的存貯和編輯功能unDiG
21、raph *G;int i,j;int a=0,b=0,f,h=1;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph) return(NULL); /為G分配存儲(chǔ)空間。 for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF;/初始化使G->costij為無窮。G->numVerts=c_number; G->cost16=G->cost61=9;G->cost12=G->cost21=8;G->cost23=G->cost
22、32=5;G->cost34=G->cost43=5;G->cost45=G->cost54=4;G->cost56=G->cost65=9;G->cost57=G->cost75=6;G->cost58=G->cost85=6;G->cost67=G->cost76=6;G->cost79=G->cost97=2;G->cost311=G->cost113=6;G->cost1112=G->cost1211=1;G->cost1210=G->cost1012=6;G->
23、;cost310=G->cost103=3;G->cost1310=G->cost1013=6;G->cost135=G->cost513=11; if (o) while(h=1) z=z+1;pri();cout<<"公交時(shí)間編輯"<<endl;cout<<"請(qǐng)輸入開始站點(diǎn)的代碼"<<endl;cin>>a;cout<<"請(qǐng)輸入結(jié)尾站點(diǎn)的代碼"<<endl;cin>>b;cout<<"
24、請(qǐng)輸入你的兩地時(shí)間"<<endl;cin>>mz.c_time;nz.c_time=a;xz.c_time=b;cout<<"請(qǐng)選擇"<<endl;cout<<"*"<<endl;cout<<"1:繼續(xù)更改站點(diǎn)時(shí)間"<<endl;cout<<"0:返回上一級(jí)菜單"<<endl;cout<<"*"<<endl;cin>>h; swit
25、ch(h) case 1: h=1;break; case 0: h=0;break; default:cout<<"選擇出錯(cuò)"<<endl; f=z+1; while (z-) G->costnz.c_timexz.c_time=mz.c_time; z=f;return(G);unDiGraph *CreateTimeF(int o)/地鐵的時(shí)間的存貯和編輯功能unDiGraph *G;int i,j;int a=0,b=0,f,h=1;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph) return(
26、NULL); /為G分配存儲(chǔ)空間。for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF;/初始化使G->costij為無窮。G->numVerts=c_number; G->cost16=G->cost61=3;G->cost12=G->cost21=2;G->cost23=G->cost32=1;G->cost34=G->cost43=2;G->cost45=G->cost54=4;G->cost56=G->cost65=
27、3;G->cost57=G->cost75=6;G->cost58=G->cost85=6;G->cost67=G->cost76=6;G->cost79=G->cost97=2;G->cost311=G->cost113=6;G->cost1112=G->cost1211=1;G->cost1210=G->cost1012=2;G->cost310=G->cost103=3;G->cost1310=G->cost1013=6;G->cost135=G->cost513=1;
28、 if (o) while(h=1) t=t+1;pri();cout<<"地鐵時(shí)間編輯"<<endl;cout<<"請(qǐng)輸入開始站點(diǎn)的代碼"<<endl;cin>>a;cout<<"請(qǐng)輸入結(jié)尾站點(diǎn)的代碼"<<endl;cin>>b;cout<<"請(qǐng)輸入你的兩地時(shí)間"<<endl;cin>>mt.f_time;nt.f_time=a;xt.f_time=b;cout<<&qu
29、ot;請(qǐng)選擇"<<endl;cout<<"*"<<endl;cout<<"1:繼續(xù)更改站點(diǎn)時(shí)間"<<endl;cout<<"0:返回上一級(jí)菜單"<<endl;cout<<"*"<<endl;cin>>h; switch(h) case 1: h=1;break; case 0: h=0;break; default:cout<<"選擇出錯(cuò)"<<
30、endl; f=t+1; while (t-) G->costnt.f_timext.f_time=mt.f_time; t=f;return(G);unDiGraph *CreateCostF(int o)/地鐵花費(fèi)的存貯和編輯功能 unDiGraph *G;int i,j;int a=0,b=0,f,h=1;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph) return(NULL); /為G分配存儲(chǔ)空間。 for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF
31、; /初始化使G->costij為無窮。G->numVerts=c_number;G->cost16=G->cost61=9;G->cost12=G->cost21=7;G->cost23=G->cost32=5;G->cost34=G->cost43=5;G->cost45=G->cost54=4;G->cost56=G->cost65=9;G->cost58=G->cost85=6;G->cost57=G->cost75=6;G->cost67=G->cost76=6;G
32、->cost79=G->cost97=2;G->cost311=G->cost113=6;G->cost1112=G->cost1211=3;G->cost1210=G->cost1012=6;G->cost310=G->cost103=3;G->cost1310=G->cost1013=6;G->cost135=G->cost513=11; if (o) while(h=1) r=r+1;pri();cout<<"地鐵花費(fèi)編輯"<<endl;cout<<
33、"請(qǐng)輸入開始站點(diǎn)的代碼"<<endl;cin>>a;cout<<"請(qǐng)輸入結(jié)尾站點(diǎn)的代碼"<<endl;cin>>b;cout<<"請(qǐng)輸入你的兩地花費(fèi)"<<endl;cin>>mr.f_cost;nr.f_cost=a;xr.f_cost=b;cout<<"請(qǐng)選擇"<<endl;cout<<"*"<<endl;cout<<"1:繼續(xù)更
34、改站點(diǎn)費(fèi)用"<<endl;cout<<"0:返回上一級(jí)菜單"<<endl;cout<<"*"<<endl;cin>>h; switch(h) case 1: h=1;break; case 0: h=0;break; default:cout<<"選擇出錯(cuò)"<<endl; f=r+1; while (r-) G->costnr.f_costxr.f_cost=mr.f_cost; r=f;return(G);/Floyed函
35、數(shù) 求任意兩點(diǎn)的最短路徑:void Floyed(unDiGraph *D,unDiGraph *M) int i,j,k,n;costAdj A,C;n=c_number; for(i=1;i<=n;i+) for(j=1;j<=n;j+) Aij=D->costij;/初始化矩陣A。 Cij=M->costij; Pathij=-1; /初始化矩陣p, 置-1. for(k=1;k<=n;k+) /k為逐步加入的中間結(jié)點(diǎn) for(i=1;i<=n;i+) /i為A中行號(hào) for(j=1;j<=n;j+) if(Aik+Akj<Aij) Aij
36、=Aik+Akj; Cij=Cik+Ckj; Pathij=k;/若i經(jīng)過k到j(luò)比i到j(luò)小,則令A(yù)ij=Aik+Akj。 Bij=Aij; Lij=Cij; else Bij=Aij;Lij=Cij; /end-for cout<<"n最短路徑為: "<<endl;/end-Floyed/為了求從i到j(luò)的最短路徑,只需要調(diào)用如下的過程:void prn_pass(int i,int j) if(Pathij!=-1) prn_pass(i,Pathij);/輸出最短路徑經(jīng)過的所有點(diǎn) pr(Pathij,0);/求最少時(shí)間路徑。void time()i
37、nt Bcity,Ecity;/起始成市號(hào)碼和終點(diǎn)站點(diǎn)號(hào)碼 int l,h=1; do pri();/輸出站點(diǎn)列表及相應(yīng)代碼。 cout<<"請(qǐng)輸入起始站點(diǎn)和目的站點(diǎn)的代碼,中間以空格隔開,范圍(1- "<<c_number<<")" cin>>Bcity;cin>>Ecity;/輸入起始站點(diǎn)和終點(diǎn)站點(diǎn)的代碼。 if (!(0<Bcity&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_numbe
38、r+1)&&Bcity!=Ecity) cout<<"n出錯(cuò)啦! 輸入站點(diǎn)號(hào)碼請(qǐng)?jiān)?-"<<c_number<<"之間,且兩站點(diǎn)不能相等!"<<endl; Floyed(CreateTimeG(0),CreateCostG(0);/調(diào)用Floyed函數(shù)。 pr(Bcity,0);/ 顯示起始站點(diǎn)。 prn_pass(Bcity,Ecity);/調(diào)用prn_pass函數(shù),顯示最短路徑經(jīng)過的站點(diǎn)。 pr(Ecity,0);/顯示終點(diǎn)站點(diǎn)。 if (BBcityEcity>5000|LBci
39、tyEcity>10000) cout<<"兩地間還沒有線路通過"<<endl; else cout<<"公交花的錢是"<<LBcityEcity<<"元"<<endl; cout<<"公交花的時(shí)間是"<<BBcityEcity<<"分鐘"<<endl; printf("nn 1.繼續(xù)最少花費(fèi)查找n 2.返回主菜單n 清選擇."); scanf(&qu
40、ot;%d",&l); /輸入1或2選擇是否繼續(xù)。 h=l; while(h=1); printf("n");void f_time()int Bcity,Ecity;/起始成市號(hào)碼和終點(diǎn)站點(diǎn)號(hào)碼 int l,h=1; do pri();/輸出站點(diǎn)列表及相應(yīng)代碼。 cout<<"請(qǐng)輸入起始站點(diǎn)和目的站點(diǎn)的代碼,中間以空格隔開,范圍(1- "<<c_number<<")" cin>>Bcity;cin>>Ecity;/輸入起始站點(diǎn)和終點(diǎn)站點(diǎn)的代碼。 if (!
41、(0<Bcity&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_number+1)&&Bcity!=Ecity)cout<<"n出錯(cuò)啦! "<<endl; Floyed(CreateTimeF(0),CreateCostF(0);/調(diào)用Floyed函數(shù)。 pr(Bcity,0);/ 顯示起始站點(diǎn)。 prn_pass(Bcity,Ecity);/調(diào)用prn_pass函數(shù),顯示最短路徑經(jīng)過的站點(diǎn)。 pr(Ecity,0);/顯示終點(diǎn)站點(diǎn)。
42、 if (BBcityEcity>5000|LBcityEcity>10000) cout<<"兩地間還沒有線路通過"<<endl; else cout<<"地鐵花的錢是"<<LBcityEcity<<"元"<<endl; cout<<"地鐵花的時(shí)間是"<<BBcityEcity<<"分鐘"<<endl; printf("nn 1.繼續(xù)最少花費(fèi)查找n 2.
43、返回主菜單n 清選擇."); scanf("%d",&l); /輸入1或2選擇是否繼續(xù)。 h=l; while(h=1); printf("n");/求最少花費(fèi)路徑。void money() int Bcity,Ecity;/起始成市號(hào)碼和終點(diǎn)站點(diǎn)號(hào)碼 char l,h=1; /*unDiGraph *G;*/ do pri();/輸出站點(diǎn)列表及相應(yīng)代碼。 cout<<"請(qǐng)輸入起始站點(diǎn)和目的站點(diǎn)的代碼,中間以空格隔開,范圍(1- "<<c_number<<")"
44、 cin>>Bcity; cin>>Ecity;/輸入起始站點(diǎn)和終點(diǎn)站點(diǎn)的代碼。 if (!(0<Bcity&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_number+1)&&Bcity!=Ecity)cout<<"n出錯(cuò)啦! "<<endl; /輸入出錯(cuò) Floyed(CreateCostG(0),CreateTimeG(0);/調(diào)用Floyed函數(shù)。 pr(Bcity,0);/顯示起始站點(diǎn)。 prn_pa
45、ss(Bcity,Ecity);/調(diào)用prn_pass函數(shù),顯示最短路徑經(jīng)過的站點(diǎn)。 pr(Ecity,0);/顯示終點(diǎn)站點(diǎn)。 if (BBcityEcity>5000|LBcityEcity>10000) cout<<"兩地間還沒有線路通過"<<endl; else cout<<"公交花的錢是"<<BBcityEcity<<"元"<<endl; cout<<"公交花的時(shí)間"<<LBcityEcity<
46、<"分鐘"<<endl; printf("nn 1.繼續(xù)最少花費(fèi)查找n 2.返回主菜單n 清選擇."); scanf("%d",&l); /輸入1或2選擇是否繼續(xù)。 h=l; while(h=1); printf("n");/求地鐵的情況void f_money() cout<<"1"<<endl;int Bcity,Ecity;/起始成市號(hào)碼和終點(diǎn)站點(diǎn)號(hào)碼 char l,h=1; /*unDiGraph *G;*/ do cout<<
47、;"2"<<endl; pri();/輸出站點(diǎn)列表及相應(yīng)代碼。cout<<"請(qǐng)輸入起始站點(diǎn)和目的站點(diǎn)的代碼,中間以空格隔開,范圍(1- "<<c_number<<")" cin>>Bcity;cin>>Ecity;/輸入起始站點(diǎn)和終點(diǎn)站點(diǎn)的代碼。if (!(0<Bcity&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_number+1)&&Bcit
48、y!=Ecity)cout<<"n出錯(cuò)啦! "<<endl; /輸入出錯(cuò) Floyed(CreateCostF(0),CreateTimeF(0);/調(diào)用Floyed函數(shù)。pr(Bcity,0);/顯示起始站點(diǎn)。prn_pass(Bcity,Ecity);/調(diào)用prn_pass函數(shù),顯示最短路徑經(jīng)過的站點(diǎn)。pr(Ecity,0);/顯示終點(diǎn)站點(diǎn)。if (BBcityEcity>5000|LBcityEcity>10000) cout<<"兩地間還沒有線路通過"<<endl;else cout&l
49、t;<"地鐵花的錢是"<<BBcityEcity<<"元"<<endl; cout<<"地鐵花的時(shí)間"<<LBcityEcity<<"分鐘"<<endl; printf("nn 1.繼續(xù)最少花費(fèi)查找n 2.返回主菜單n 清選擇."); scanf("%d",&l); /輸入1或2選擇是否繼續(xù)。 h=l; while(h=1); printf("n");void
50、 add_city()/對(duì)站點(diǎn)的增加static int i=1;int j;cout<<"請(qǐng)輸入你要增加的站點(diǎn)的個(gè)數(shù)"<<endl;cin>>j;for (i=1;i<=j;i+)cout<<"請(qǐng)輸入你要增加的站點(diǎn)名"<<endl;pr(i,1);c_number=c_number+1; cout<<"站點(diǎn)增加完畢"<<endl;void chose_money()/花最少錢的算法int h;cout<<"1:公交&quo
51、t;<<endl;cout<<"2:地鐵"<<endl;cout<<"請(qǐng)選擇:"<<endl;cin>>h;if (h=1) money();else f_money();void chose_time()/花最少時(shí)間的算法int h;cout<<"1:公交"<<endl;cout<<"2:地鐵"<<endl;cout<<"請(qǐng)選擇:"<<endl;cin>>h;if (h=1) time();else f_time();void edit_line()/增加編輯公交的費(fèi)用CreateCostG(1);void edit_hour()/增加編輯公交的時(shí)間CreateTimeG(1);void edit_fline()/增加編輯地鐵的費(fèi)用CreateCostF(1);void edit_fhour()/增加編輯地鐵的時(shí)間CreateTimeF(1);void administrator()/管理員功能int h=1;whi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)器人輔助管道維修-深度研究
- 機(jī)器人檢測(cè)數(shù)據(jù)分析-深度研究
- 智能交通系統(tǒng)風(fēng)險(xiǎn)評(píng)估-深度研究
- 無線網(wǎng)絡(luò)安全態(tài)勢(shì)研究-深度研究
- 智能化地磅數(shù)據(jù)管理-深度研究
- 2025年廣西體育高等??茖W(xué)校高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 圖書館空間設(shè)計(jì)研究-深度研究
- 2025年山西財(cái)貿(mào)職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2025年山東化工職業(yè)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 基礎(chǔ)設(shè)施公募REITs融資模式研究
- 2024-2025學(xué)年山東省濰坊市高一上冊(cè)1月期末考試數(shù)學(xué)檢測(cè)試題(附解析)
- 數(shù)學(xué)-湖南省新高考教學(xué)教研聯(lián)盟(長(zhǎng)郡二十校聯(lián)盟)2024-2025學(xué)年2025屆高三上學(xué)期第一次預(yù)熱演練試題和答案
- 決勝中層:中層管理者的九項(xiàng)修煉-記錄
- 幼兒園人民幣啟蒙教育方案
- 高考介詞練習(xí)(附答案)
- 單位就業(yè)人員登記表
- 衛(wèi)生監(jiān)督協(xié)管-醫(yī)療機(jī)構(gòu)監(jiān)督
- 記錄片21世紀(jì)禁愛指南
- 腰椎間盤的診斷證明書
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)七 裂變傳播
- 單級(jí)倒立擺系統(tǒng)建模與控制器設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論