




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、全國(guó)交通咨詢模擬 一、設(shè)計(jì)目的掌握線性表、棧、圖結(jié)構(gòu)和對(duì)文件的操作,學(xué)習(xí)屏幕編輯和菜單技術(shù),掌握用最短路徑及其搜索算法編制較綜合性的程序,能用圖的鄰接存儲(chǔ)結(jié)構(gòu)求解最優(yōu)路線問(wèn)題,解決有關(guān)實(shí)際問(wèn)題。得到軟件設(shè)計(jì)技能的訓(xùn)練。二、問(wèn)題描述交通咨詢模擬。根據(jù)旅客的不同需要,要考慮到旅客希望在旅途中的時(shí)間盡可能短、希望旅費(fèi)盡可能省等的要求。旅途用火車或飛機(jī)作為交通工具。用計(jì)算機(jī)編制程序,為旅客提供兩種最優(yōu)決策的交通咨詢系統(tǒng)。三、根本要求1、對(duì)城市信息(城市名、城市間的里程)進(jìn)行編輯:具備添加、修改、刪除功能;2、對(duì)城市間的兩種交通工具:飛機(jī)和火車。對(duì)飛機(jī)航班和列車時(shí)刻表進(jìn)行編輯:里程、航班和列車班次的添加
2、、修改、刪除;3、提供兩種最優(yōu)決策:最快到達(dá)或最省錢(qián)到達(dá)。全程只考慮一種交通工具,可以不考慮回程;4、旅途中的消耗的總時(shí)間應(yīng)包括中轉(zhuǎn)站的等候時(shí)間。其中飛機(jī)至少二小時(shí),火車至少一小時(shí);5、咨詢以用戶和計(jì)算機(jī)對(duì)話方式進(jìn)行,要注意人機(jī)交互的屏幕界面。由用戶選擇最優(yōu)決策原那么和交通工具,輸入起始站、終點(diǎn)站、出發(fā)時(shí)間,輸出信息:最快需要多長(zhǎng)時(shí)間才能到達(dá)及旅費(fèi),或者最少需要多少旅費(fèi)才能到達(dá)及時(shí)間,并詳細(xì)說(shuō)明依次于何時(shí)何地乘坐哪一趟班機(jī)或列車何時(shí)到達(dá)何地。四、實(shí)現(xiàn)提示1、算法思路(1) 數(shù)據(jù)存儲(chǔ)。城市信息(城市名、代碼)、交通信息(城市間的里程、各航班和列車時(shí)刻)存儲(chǔ)于磁盤(pán)文件。建議把城市信息存于文件前面,
3、交通信息存于文件的后面,用fread和fwrite函數(shù)操作。(2) 數(shù)據(jù)的邏輯結(jié)構(gòu)。根據(jù)設(shè)計(jì)任務(wù)的描述,其城市之間的旅游交通問(wèn)題是典型的圖結(jié)構(gòu),可看作為有向圖,圖的頂點(diǎn)是城市,邊是城市之間所消耗的時(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ì)城市信息和交通信息進(jìn)行編輯。添加、修改、刪除功能可用菜單方式或命令提示方式。只要能方便的對(duì)城市信息和交通信息進(jìn)行管理即可,但要注意人機(jī)界面,具體實(shí)現(xiàn)由學(xué)生自行設(shè)計(jì),也可參考有關(guān)程序(屆
4、時(shí)在網(wǎng)上提供)。這些工作有不小的工作量。(5) 最優(yōu)決策功能模塊(fast or province)。 讀入城市信息和交通信息,用鄰接表生成含權(quán)網(wǎng)絡(luò),表頭數(shù)組中的元素存放城市名及對(duì)方城市到達(dá)該元素所代表城市的所有信息;表頭數(shù)組中的元素所對(duì)應(yīng)的單鏈表存放與該元素所代表的城市有交通聯(lián)系的城市(代碼、里程、航班、列車車次)。 根據(jù)具體最優(yōu)決策的要求,用Dijkstra算法求出出發(fā)城市到其它各城市的最優(yōu)值(最短時(shí)間或最小的費(fèi)用),搜索過(guò)程中所經(jīng)過(guò)城市的局部最優(yōu)信息都保存在鄰接表的表頭數(shù)組中。其目的城市所代表的元素中就保存了所需的最優(yōu)決策結(jié)果。這過(guò)程中,要用隊(duì)列或棧保存局部最優(yōu)決策值(局部最短的時(shí)間或最
5、省的費(fèi)用)變小的城市,其相應(yīng)的初始值可為,并在表頭數(shù)組對(duì)應(yīng)的城市元素中保存響應(yīng)的信息。開(kāi)始時(shí),棧(隊(duì))中只有出發(fā)地城市,隨著對(duì)棧(隊(duì))頂(首)城市有交通聯(lián)系的城市求得決策值(最短時(shí)間或最小的費(fèi)用),假設(shè)該值是局部最優(yōu)值且該城市不在棧(隊(duì))中,那么進(jìn)棧(隊(duì)),直至棧(隊(duì))為空。 輸出結(jié)果。從目的城市出發(fā),搜索到出發(fā)城市,所經(jīng)過(guò)的城市均入棧,再逐一出棧棧中的城市,輸出保存在表頭數(shù)組中對(duì)應(yīng)城市的信息(對(duì)方城市的出發(fā)信息,里程、時(shí)間、費(fèi)用等)及最終結(jié)果。即輸出依次于何時(shí)何地乘坐幾點(diǎn)的飛機(jī)或火車于何時(shí)到達(dá)何地;最終所需的最快需要多長(zhǎng)時(shí)間才能到達(dá)及旅費(fèi),或者最少需要多少旅費(fèi)才能到達(dá)及時(shí)間。(6) 主程序可
6、以有系統(tǒng)界面、菜單;也可用命令提示方式;選擇功能模塊執(zhí)行,要求在程序運(yùn)行過(guò)程中可以反復(fù)操作。2、數(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)造飛機(jī)帶權(quán)(費(fèi)用)圖。PathMat *Floyed(unDiGraph *D)操作結(jié)果:Floyed函數(shù) 求任意兩點(diǎn)的
7、最短路徑。3、算法思想 本程序運(yùn)用了圖的知識(shí),構(gòu)造了無(wú)向帶權(quán)費(fèi)用圖和無(wú)向帶權(quán)時(shí)間圖。如圖1,圖2所示 圖1. 十三城市之間火車費(fèi)用表權(quán)值表示費(fèi)用 圖2. 十三城市之間火車行駛時(shí)間表 權(quán)值表示時(shí)間并利用Floyed函數(shù)求帶權(quán)圖兩點(diǎn)之間的最短路徑。通過(guò)對(duì)帶權(quán)費(fèi)用圖和帶權(quán)時(shí)間圖求最短路徑,就可以最短道從一城市到另一城市之間最省時(shí)間和最省費(fèi)用的走法。 為了簡(jiǎn)潔直觀,本設(shè)計(jì)對(duì)課本內(nèi)的交通網(wǎng)進(jìn)行了簡(jiǎn)化,原來(lái)的25個(gè)城市縮減為13個(gè)。但是根本實(shí)現(xiàn)了設(shè)計(jì)的目的。滿足了根本要求。4、程序模塊1 程序是用dos 版做的界面。23 程序的模塊為#include <windows.h>#include &
8、lt;stdio.h>#include <crtdbg.h>#include <string.h>#include<iostream.h> #include <malloc.h>/引用的文本件#define INF 65535 /定義一個(gè)最大數(shù)定為無(wú)窮值#define MAX 13typedef int costAdjMAX+1MAX+1;/圖鄰接矩陣從1開(kāi)始記數(shù)int PathMAX+1MAX+1;/圖鄰接矩陣從1開(kāi)始記數(shù)int o13,h;typedef struct unDiGraphint numVerts; /結(jié)點(diǎn)costAdj
9、cost; /鄰接矩陣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)用如
10、下的過(guò)程void time()/求最少時(shí)間路徑。void money()/求最少花費(fèi)路徑void administrator()/管理員功能void main()/main函數(shù)5、 主程序#include <windows.h>#include <stdio.h>#include <crtdbg.h>#include <string.h>#include<iostream.h> #include <malloc.h>#define INF 65535 /定義一個(gè)最大數(shù)定為無(wú)窮值#define MAX 23static in
11、t c_number=13;static int k=0;staticint 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開(kāi)始記數(shù)int PathMAX+1MAX+1;/圖鄰接矩陣從1開(kāi)始記數(shù)typedef struct unDiGraphint numVerts; /結(jié)點(diǎn)costAdj cost; /鄰接矩陣unDiGraph,*UNG; /圖的定義typedef s
12、truct c_editchar 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<<"成都 " break; case(2) : cout<<"西安 "break; case(3) : cout<<&quo
13、t;鄭州 "break; case(4) : cout<<"武漢 "break; case(5) : cout<<"株洲 "break; case(6) : cout<<"貴陽(yáng) "break; case(7) : cout<<"柳州 "break; case(8) : cout<<"廣州 "break; case(9) : cout<<"南寧 "break; case(10) : cout<
14、;<"徐州 "break;case(11) : cout<<"北京 "break; case(12) : cout<<"天津 "break; case(13) : cout<<"上海 "break;default: cout<<addi-13.a;return 1;/輸出城市列表及相應(yīng)代碼void pri()int i;cout<<" 城市及其代碼"<<endl<<endl<<endl; cou
15、t<<" *"<<endl; for (i=1;i<=c_number;i+)cout<<i<<"."pr(i,0);cout<<endl<<" *"<<endl<<endl<<endl<<endl<<endl<<endl;/構(gòu)造帶權(quán)(費(fèi)用)圖 返回首地址G:unDiGraph *CreateCostG(int o)/火車的花費(fèi)的存貯和編輯功能unDiGraph *G;int i,j;i
16、nt a=0,b=0,f,h=1;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph) /為G分配存儲(chǔ)空間。return(NULL);for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF; /初始化使G->costij為無(wú)窮。G->numVerts=c_number;G->cost16=G->cost61=96;G->cost12=G->cost21=84;G->cost23=G->cost32=51;G->cost3
17、4=G->cost43=53;G->cost45=G->cost54=40;G->cost56=G->cost65=90;G->cost58=G->cost85=67;G->cost57=G->cost75=67;G->cost67=G->cost76=60;G->cost79=G->cost97=25;G->cost311=G->cost113=69;G->cost1112=G->cost1211=13;G->cost1210=G->cost1012=67;G->cost3
18、10=G->cost103=34;G->cost1310=G->cost1013=65;G->cost135=G->cost513=118;if (o) while(h=1)v=v+1;pri();cout<<"火車花費(fèi)編輯"<<endl;cout<<"請(qǐng)輸入開(kāi)始城市的代碼"<<endl;cin>>a;cout<<"請(qǐng)輸入結(jié)尾城市的代碼"<<endl;cin>>b;cout<<"請(qǐng)輸入你的
19、兩地花費(fèi)"<<endl;cin>>mv.c_cost;nv.c_cost=a;xv.c_cost=b;cout<<"請(qǐng)選擇"<<endl;cout<<"*"<<endl;cout<<"1:繼續(xù)更改城市費(fèi)用"<<endl;cout<<"0:返回上一級(jí)菜單"<<endl;cout<<"*"<<endl;cin>>h;switch(h)
20、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í)間的存貯和編輯功能unDiGraph *G;int i,j;int a=0,b=0,f,h=1;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph)
21、/為G分配存儲(chǔ)空間。return(NULL);for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF;/初始化使G->costij為無(wú)窮。G->numVerts=c_number;G->cost16=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->co
22、st65=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->cost310=G->cost103=3;G->cost1310=G->cost1013=6;G->cost135=G->cost5
23、13=11;if (o) while(h=1)z=z+1;pri();cout<<"火車時(shí)間編輯"<<endl;cout<<"請(qǐng)輸入開(kāi)始城市的代碼"<<endl;cin>>a;cout<<"請(qǐng)輸入結(jié)尾城市的代碼"<<endl;cin>>b;cout<<"請(qǐng)輸入你的兩地時(shí)間"<<endl;cin>>mz.c_time;nz.c_time=a;xz.c_time=b;cout<<
24、;"請(qǐng)選擇"<<endl;cout<<"*"<<endl;cout<<"1:繼續(xù)更改城市時(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ò)"<<
25、;endl;f=z+1;while (z-) G->costnz.c_timexz.c_time=mz.c_time;z=f;return(G);unDiGraph *CreateTimeF(int o)/飛機(jī)的時(shí)間的存貯和編輯功能unDiGraph *G;int i,j;int a=0,b=0,f,h=1;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph) /為G分配存儲(chǔ)空間。return(NULL);for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF;/初始
26、化使G->costij為無(wú)窮。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=3;G->cost57=G->cost75=6;G->cost58=G->cost85=6;G->cost67=G->cost76=6;G->
27、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;if (o) while(h=1)t=t+1;pri();cout<<"飛機(jī)時(shí)間編輯"<<endl;cout<<"請(qǐng)輸
28、入開(kāi)始城市的代碼"<<endl;cin>>a;cout<<"請(qǐng)輸入結(jié)尾城市的代碼"<<endl;cin>>b;cout<<"請(qǐng)輸入你的兩地時(shí)間"<<endl;cin>>mt.f_time;nt.f_time=a;xt.f_time=b;cout<<"請(qǐng)選擇"<<endl;cout<<"*"<<endl;cout<<"1:繼續(xù)更改城市時(shí)間&qu
29、ot;<<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=t+1;while (t-) G->costnt.f_timext.f_time=mt.f_time;t=f;return(G);unDiGraph *CreateCostF
30、(int o)/飛機(jī)花費(fèi)的存貯和編輯功能unDiGraph *G;int i,j;int a=0,b=0,f,h=1;if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph) /為G分配存儲(chǔ)空間。return(NULL);for(i=1;i<c_number+1;i+)for(j=1;j<c_number+1;j+)G->costij=INF; /初始化使G->costij為無(wú)窮。G->numVerts=c_number;G->cost16=G->cost61=960;G->cost12=G->cost21=
31、840;G->cost23=G->cost32=501;G->cost34=G->cost43=530;G->cost45=G->cost54=400;G->cost56=G->cost65=900;G->cost58=G->cost85=670;G->cost57=G->cost75=670;G->cost67=G->cost76=600;G->cost79=G->cost97=200;G->cost311=G->cost113=690;G->cost1112=G->cos
32、t1211=310;G->cost1210=G->cost1012=670;G->cost310=G->cost103=340;G->cost1310=G->cost1013=650;G->cost135=G->cost513=1180;if (o) while(h=1)r=r+1;pri();cout<<"飛機(jī)花費(fèi)編輯"<<endl;cout<<"請(qǐng)輸入開(kāi)始城市的代碼"<<endl;cin>>a;cout<<"請(qǐng)輸入結(jié)尾城市
33、的代碼"<<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ù)更改城市費(fèi)用"<<endl;cout<<"0:返回上一級(jí)菜單"<<endl;cou
34、t<<"*"<<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函數(shù) 求任意兩點(diǎn)的最短路徑:void Floyed(unDiGraph *D,unDiGraph *M) int i,j,k,n;costAdj A,C;n=
35、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=Aik+Akj;Cij=Cik+Ckj; Pathij=k;/假設(shè)i經(jīng)過(guò)k到j(luò)比i到j(luò)小,那么令A(yù)ij=Aik+Akj。 Bij=Aij;Lij=Cij; else
36、Bij=Aij;Lij=Cij;/end-for cout<<"n最短路徑為: "<<endl;/end-Floyed/為了求從i到j(luò)的最短路徑,只需要調(diào)用如下的過(guò)程:void prn_pass(int i,int j) if(Pathij!=-1) prn_pass(i,Pathij);/輸出最短路徑經(jīng)過(guò)的所有點(diǎn) pr(Pathij,0);/求最少時(shí)間路徑。void time()int Bcity,Ecity;/起始成市號(hào)碼和終點(diǎn)城市號(hào)碼 int l,h=1;do pri();/輸出城市列表及相應(yīng)代碼。 cout<<"請(qǐng)輸入起
37、始城市和目的城市的代碼,中間以空格隔開(kāi),范圍(1- "<<c_number<<")" cin>>Bcity; cin>>Ecity;/輸入起始城市和終點(diǎn)城市的代碼。 if (!(0<Bcity&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_number+1)&&Bcity!=Ecity) cout<<"n出錯(cuò)啦! 輸入城市號(hào)碼請(qǐng)?jiān)?-"<<c_number&
38、lt;<"之間,且兩城市不能相等!"<<endl; Floyed(CreateTimeG(0),CreateCostG(0);/調(diào)用Floyed函數(shù)。pr(Bcity,0);/ 顯示起始城市。 prn_pass(Bcity,Ecity);/調(diào)用prn_pass函數(shù),顯示最短路徑經(jīng)過(guò)的城市。pr(Ecity,0);/顯示終點(diǎn)城市。if (BBcityEcity>5000|LBcityEcity>10000) cout<<"兩地間還沒(méi)有線路通過(guò)"<<endl;elsecout<<"火
39、車花的錢(qián)是"<<LBcityEcity<<"元"<<endl;cout<<"火車花的時(shí)間是"<<BBcityEcity<<"小時(shí)"<<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_time()int
40、Bcity,Ecity;/起始成市號(hào)碼和終點(diǎn)城市號(hào)碼 int l,h=1;do pri();/輸出城市列表及相應(yīng)代碼。 cout<<"請(qǐng)輸入起始城市和目的城市的代碼,中間以空格隔開(kāi),范圍(1- "<<c_number<<")" cin>>Bcity; cin>>Ecity;/輸入起始城市和終點(diǎn)城市的代碼。 if (!(0<Bcity&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_number+1
41、)&&Bcity!=Ecity) cout<<"n出錯(cuò)啦! "<<endl; Floyed(CreateTimeF(0),CreateCostF(0);/調(diào)用Floyed函數(shù)。pr(Bcity,0);/ 顯示起始城市。 prn_pass(Bcity,Ecity);/調(diào)用prn_pass函數(shù),顯示最短路徑經(jīng)過(guò)的城市。pr(Ecity,0);/顯示終點(diǎn)城市。if (BBcityEcity>5000|LBcityEcity>10000) cout<<"兩地間還沒(méi)有線路通過(guò)"<<endl
42、;elsecout<<"飛機(jī)花的錢(qián)是"<<LBcityEcity<<"元"<<endl;cout<<"飛機(jī)花的時(shí)間是"<<BBcityEcity<<"小時(shí)"<<endl; printf("nn 1.繼續(xù)最少花費(fèi)查找n 2.返回主菜單n 清選擇."); scanf("%d",&l); /輸入1或2選擇是否繼續(xù)。 h=l; while(h=1); printf("n&
43、quot;);/求最少花費(fèi)路徑。void money() int Bcity,Ecity;/起始成市號(hào)碼和終點(diǎn)城市號(hào)碼 char l,h=1;/*unDiGraph *G;*/do pri();/輸出城市列表及相應(yīng)代碼。cout<<"請(qǐng)輸入起始城市和目的城市的代碼,中間以空格隔開(kāi),范圍(1- "<<c_number<<")" cin>>Bcity;cin>>Ecity;/輸入起始城市和終點(diǎn)城市的代碼。if (!(0<Bcity&&Bcity<c_number+1)&a
44、mp;&(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);/顯示起始城市。prn_pass(Bcity,Ecity);/調(diào)用prn_pass函數(shù),顯示最短路徑經(jīng)過(guò)的城市。pr(Ecity,0);/顯示終點(diǎn)城市。if (BBcityEcity>5000|LBcityEcity>1
45、0000) cout<<"兩地間還沒(méi)有線路通過(guò)"<<endl;elsecout<<"火車花的錢(qián)是"<<BBcityEcity<<"元"<<endl;cout<<"火車花的時(shí)間"<<LBcityEcity<<"小時(shí)"<<endl; printf("nn 1.繼續(xù)最少花費(fèi)查找n 2.返回主菜單n 清選擇."); scanf("%d",&
46、;l); /輸入1或2選擇是否繼續(xù)。 h=l; while(h=1); printf("n"); /求飛機(jī)的情況void f_money() cout<<"1"<<endl;int Bcity,Ecity;/起始成市號(hào)碼和終點(diǎn)城市號(hào)碼 char l,h=1;/*unDiGraph *G;*/do cout<<"2"<<endl; pri();/輸出城市列表及相應(yīng)代碼。cout<<"請(qǐng)輸入起始城市和目的城市的代碼,中間以空格隔開(kāi),范圍(1- "<<
47、;c_number<<")" cin>>Bcity;cin>>Ecity;/輸入起始城市和終點(diǎn)城市的代碼。if (!(0<Bcity&&Bcity<c_number+1)&&(0<Ecity&&Ecity<c_number+1)&&Bcity!=Ecity) cout<<"n出錯(cuò)啦! "<<endl; /輸入出錯(cuò) Floyed(CreateCostF(0),CreateTimeF(0);/調(diào)用Floyed函數(shù)
48、。pr(Bcity,0);/顯示起始城市。prn_pass(Bcity,Ecity);/調(diào)用prn_pass函數(shù),顯示最短路徑經(jīng)過(guò)的城市。pr(Ecity,0);/顯示終點(diǎn)城市。if (BBcityEcity>5000|LBcityEcity>10000) cout<<"兩地間還沒(méi)有線路通過(guò)"<<endl;elsecout<<"飛機(jī)花的錢(qián)是"<<BBcityEcity<<"元"<<endl;cout<<"飛機(jī)花的時(shí)間"&
49、lt;<LBcityEcity<<"小時(shí)"<<endl; printf("nn 1.繼續(xù)最少花費(fèi)查找n 2.返回主菜單n 清選擇."); scanf("%d",&l); /輸入1或2選擇是否繼續(xù)。 h=l; while(h=1); printf("n"); void add_city()/對(duì)城市的增加static int i=1;int j;cout<<"請(qǐng)輸入你要增加的城市的個(gè)數(shù)"<<endl;cin>>j;for (i
50、=1;i<=j;i+)cout<<"請(qǐng)輸入你要增加的城市名"<<endl;pr(i,1);c_number=c_number+1;cout<<"城市增加完畢"<<endl;void chose_money()/花最少錢(qián)的算法int h;cout<<"1:火車"<<endl;cout<<"2:飛機(jī)"<<endl;cout<<"請(qǐng)選擇:"<<endl;cin>>h
51、;if (h=1) money();elsef_money();void chose_time()/花最少時(shí)間的算法int h;cout<<"1:火車"<<endl;cout<<"2:飛機(jī)"<<endl;cout<<"請(qǐng)選擇:"<<endl;cin>>h;if (h=1) time();elsef_time();void edit_line()/增加編輯火車的費(fèi)用CreateCostG(1);void edit_hour()/增加編輯火車的時(shí)間Crea
52、teTimeG(1);void edit_fline()/增加編輯飛機(jī)的費(fèi)用CreateCostF(1);void edit_fhour()/增加編輯飛機(jī)的時(shí)間CreateTimeF(1);void administrator()/管理員功能int h=1;while (h) cout<<"*"<<endl;cout<<"1:增加城市"<<endl;cout<<"2:添加或編輯火車費(fèi)用"<<endl;cout<<"3:添加或編輯火車時(shí)間"<<endl;cout<<"4:添加或編輯飛機(jī)費(fèi)用"<<endl;cout<<"5:添加或編輯飛機(jī)時(shí)間"<<endl;cout<<"0:返回主菜單"<<endl;cout<<"*"<<endl;cout<<"請(qǐng)選擇"<<endl;cin>>h;sw
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 讀寫(xiě)結(jié)合 提高能力──《火燒云》教學(xué)案例(13篇)
- 財(cái)務(wù)會(huì)計(jì)基礎(chǔ)編制方法
- 財(cái)會(huì)經(jīng)濟(jì)-高級(jí)經(jīng)濟(jì)師-旅游經(jīng)濟(jì)-14-強(qiáng)化練習(xí)題-強(qiáng)化練習(xí)題五
- 設(shè)計(jì)公司管理制度
- 記賬實(shí)操-日用百貨銷售公司的賬務(wù)處理分錄
- 內(nèi)蒙古自治區(qū)錫林郭勒盟三縣聯(lián)考2025屆九年級(jí)下學(xué)期中考三模語(yǔ)文試卷(含答案)
- 從中醫(yī)角度探討消化道出血的預(yù)防與護(hù)理經(jīng)驗(yàn)
- 2024年中考押題預(yù)測(cè)卷02(深圳卷)-道德與法治(考試版)A3
- 2024-2025學(xué)年下學(xué)期高二生物人教版期末必刷??碱}之生態(tài)工程
- 散文閱讀練字題目及答案
- 競(jìng)選車間班長(zhǎng)的演講稿
- 校園欺凌事件調(diào)解協(xié)議書(shū)
- 麗思卡爾頓酒店介紹
- 藥物過(guò)敏性休克急救護(hù)理課件
- 國(guó)企物流公司筆試題庫(kù)答案
- 重癥醫(yī)學(xué)科的建設(shè)與管理指南(2023版)
- 甘肅省的自然災(zāi)害分析報(bào)告
- 社區(qū)獲得性肺炎護(hù)理查房
- 管理者自我執(zhí)行力提升的兩大抓手-課后測(cè)試及答案
- 塵肺病的運(yùn)動(dòng)康復(fù)計(jì)劃
- 守株待兔-幼兒成語(yǔ)故事
評(píng)論
0/150
提交評(píng)論