![全國(guó)交通咨詢模擬系統(tǒng)_第1頁](http://file4.renrendoc.com/view/4f5d6c7683635905b4e32addad790b0a/4f5d6c7683635905b4e32addad790b0a1.gif)
![全國(guó)交通咨詢模擬系統(tǒng)_第2頁](http://file4.renrendoc.com/view/4f5d6c7683635905b4e32addad790b0a/4f5d6c7683635905b4e32addad790b0a2.gif)
![全國(guó)交通咨詢模擬系統(tǒng)_第3頁](http://file4.renrendoc.com/view/4f5d6c7683635905b4e32addad790b0a/4f5d6c7683635905b4e32addad790b0a3.gif)
![全國(guó)交通咨詢模擬系統(tǒng)_第4頁](http://file4.renrendoc.com/view/4f5d6c7683635905b4e32addad790b0a/4f5d6c7683635905b4e32addad790b0a4.gif)
![全國(guó)交通咨詢模擬系統(tǒng)_第5頁](http://file4.renrendoc.com/view/4f5d6c7683635905b4e32addad790b0a/4f5d6c7683635905b4e32addad790b0a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
通系1目錄需求分析........................................................................................................................個(gè)人工作........................................................................................................................概要設(shè)計(jì)..主程序流程圖:.創(chuàng)建圖算法流程圖:源程序............................................................................................................................13程序結(jié)果.245.3設(shè)計(jì)和調(diào)試分析27六、程序設(shè)計(jì)體會(huì).................................................................................................................282一、
全國(guó)交通詢模擬系統(tǒng)需求分析旅客對(duì)由于出行目的的不同對(duì)交通工具的要求也有不同。例如,因公事出差的旅客希望在旅途中的時(shí)間盡可能短出門旅游的游客則希望旅費(fèi)盡可能省而老年旅客則要求中轉(zhuǎn)次數(shù)最少為了能滿足廣大旅客的需求方便旅客出行就此編制一個(gè)全國(guó)城市間的交通咨詢程序旅客提供兩種或者三種最優(yōu)決策的交通咨詢,達(dá)到如下的基本要求::提供對(duì)城市信息進(jìn)行編輯(如:添加和刪除)的功能城市之間有兩種交通工具:火車和飛機(jī)。提供對(duì)列車時(shí)刻表和飛機(jī)航班表進(jìn)行編輯(增加或刪除)的功能。提供兩種最優(yōu)決策:最快到達(dá)和最省錢到達(dá)。全程只考慮一種交通工具。旅途中耗費(fèi)的總時(shí)間應(yīng)該包括中轉(zhuǎn)站的等候時(shí)間。咨詢以用戶和計(jì)算機(jī)的對(duì)話方式進(jìn)行。由用戶輸入起始站、終點(diǎn)站、最優(yōu)決策原則和交通工具,輸出信息:最快需要多長(zhǎng)時(shí)間才能到達(dá)或者最少需要多少旅費(fèi)才能到達(dá),并詳細(xì)說明依次于何時(shí)乘哪趟列車或哪一次班機(jī)到何地。通過對(duì)比以及用戶操作基本達(dá)到旅客出行的便利。3二、
個(gè)人工作此次課程設(shè)計(jì)是對(duì)全國(guó)城市交通圖列車時(shí)刻表及飛機(jī)航班表的編輯此次課設(shè)是利用具在環(huán)境下實(shí)現(xiàn)全國(guó)交通的咨詢與管理。通過此次程序可以對(duì)全國(guó)城市之間火車與飛機(jī)進(jìn)行兩方面的咨詢最少的時(shí)間與最少的費(fèi)用的咨詢,從而方便旅客的出行。通過此次課程設(shè)計(jì),我要學(xué)會(huì)怎樣用在dos環(huán)境下編程而且要通過此次課程設(shè)計(jì)加深對(duì)數(shù)據(jù)結(jié)構(gòu)的理解在設(shè)計(jì)中用鄰接表作交通圖的存儲(chǔ)結(jié)構(gòu),表示邊的結(jié)點(diǎn)中除含有鄰接點(diǎn)的信息外,還包括交通工具、路程中消耗的時(shí)間和花費(fèi)以及出發(fā)和到達(dá)的時(shí)間等屬性。圖中頂點(diǎn)城市的信息,包括城市名稱、城市編號(hào)和依附該頂點(diǎn)的邊的指針。在程序中,利用迪杰斯特拉算法求花錢最少和花時(shí)間最少的交通方式。三、概要設(shè)1.
主序程:開始OpenGraph_P(GP)SaveGraph_P(GP)DestoryGraph(GT)DestoryGraph(GP)結(jié)束42
創(chuàng)圖法程:開始NYi++
結(jié)束3打圖法程:開始打開文件讀出圖中頂點(diǎn)數(shù)vexNum,數(shù)NY讀出城市的號(hào)數(shù)cityNum標(biāo)志,城市名稱cityNamej++i<edgeNumNY讀出邊上的各信息5結(jié)束i++4主單作法程:開始Switch(n)5咨菜流圖
Inquire_Money(GT,GP)6咨錢少塊
Inquire_Time(GT,GP)Inquire_Money(GT,GP)NY輸入6Yn==1NY
input_Money(GP,st,n==2NLeastMoneyPathinput_Money(GT,st,print_Money(GP,p)LeastMoneyPath(GT,st,nd,p)Yn==2
結(jié)束print_Money(GT,p)
N結(jié)束結(jié)束結(jié)束7.G,int&st,int算法程輸入起始城市名稱,st)==trueN7
Y8.法程開始輸入城市名字,name,i)==trueN輸出城市不存在結(jié)束9.)算流圖開始YG.Flag[i]==1&&strcmp(G.AdY
輸入終止城市名稱inputVex(G,sn)==trueNYi++false
結(jié)束8.print_Money(GT,p)算流圖開始i=0Sum+=p.moneyi++
i<p.len
N
輸錢打印邊信息
Y
結(jié)束.算法程9開始初始化Y每個(gè)頂點(diǎn)的最短路徑為一最大值,初始化每條路徑Y(jié)p的一條邊q=p->nextEdgeY重置每個(gè)頂點(diǎn)的最少錢的路徑dijkst[p->elem.jvex]=p->elem.Moneyt=p->elem
Np=G.Adjlist[st].firstEdgeWhile(p)p=q
NFound=求從到的短路徑算法并復(fù)制此路徑copyPath(path[w],path[v])結(jié)束11.法程10開始每個(gè)點(diǎn)初始一個(gè)最大值初始每條路徑置間置起點(diǎn)的時(shí)間為n置起點(diǎn)的第一條邊檢測(cè)依附每個(gè)頂點(diǎn)的邊依據(jù)迪杰斯特求每個(gè)起點(diǎn)到終點(diǎn)的時(shí)間最少的路徑結(jié)束.算流圖開始City_Edit(GT,GP)
Case0:Plane_Edit(GT,GP.法程開始輸入進(jìn)選擇Nn==111Y
N14.
添加城市及相關(guān)信息結(jié)束輸出錯(cuò)誤輸入n進(jìn)選擇NTrain_Edit(GT,GP)算流圖開始NYBreak輸入進(jìn)選擇結(jié)束
==2Y刪除城市及相關(guān)信息結(jié)束==0Y結(jié)束Yn==1NY
輸入列車的信息n==2刪除列車的信息
NN
重新輸入進(jìn)選擇
n==0Y注釋:部分算法的設(shè)計(jì)思想相同,只是參數(shù)不同,故省略部分程序流程圖。12四、源程序MAXVTXNUM//圖頂點(diǎn)數(shù)的最大值/************點(diǎn)、邊和圖類**********************************///定義各車次及航班的信息弧信{intivex;//始點(diǎn)號(hào)intjvex;終點(diǎn)號(hào)//車號(hào)int//費(fèi)int//起時(shí)間(秒)int//終止時(shí)(秒)int//中途時(shí)間(秒)}EdgeInfo;邊的信息EdgeNode//邊的信弧點(diǎn){elem;EdgeNode*nextEdge;//的結(jié)點(diǎn)類型,指向邊的指針//市信息頭結(jié)點(diǎn){intEdgePtrfirstEdge;//指向的一條依附該頂點(diǎn)的邊的指針//頂類型圖的結(jié)構(gòu){鄰表intvexNum,edgeNum;//圖中的頂點(diǎn)數(shù)和邊數(shù)int//志是否是圖中的頂0表不是,1表是}Graph;圖型/*****************的本操**********************//************路類型*************************/{intvx,vy;//vx為徑的起,vy為徑終點(diǎn)p;//路徑中邊的信息}Edge;13{Edgeedges[MAXVTXNUM];中的列:點(diǎn)到i的路徑int中的目}Path;路本操作>**********************/voidcopyPath&p1,Path&p2){路p1=p2inti;for(i=0;i<p2.len;i++){p1.edges[i].vx=p2.edges[i].vx;p1.edges[i].vy=p2.edges[i].vy;p1.edges[i].p=p2.edges[i].p;}p1.len=p2.len;}voidSetPath(Pathv,intw,{pa從v到w的條息為tpa.edges[0].vx=v;pa.edges[0].vy=w;pa.edges[0].p=t;pa.len=1;}#include<iostream.h>intTimeChange(intminute){入時(shí)和分鐘樹轉(zhuǎn)成分鐘的形式,忽略天數(shù)if(minute>60){hour=hour+minute/60;minute=minute%60;}if(hour>24){hour=hour%24;}#include<stdio.h>#include<stdlib.h>#include<string.h>#include"Graph.h"#include"Time.h"#include"Path.h"#define014OpenGraph_T(Graph&G);OpenGraph_P(GraphintMain_Menu(Graph>,Graph&GP);G);SaveGraph_P(Graphvoid{GT;//車交通圖//機(jī)交通圖建立空的火車交通圖CreateGraph(GP);//立空的飛機(jī)交通圖//打開已經(jīng)存火車的數(shù)據(jù)OpenGraph_P(GP);//打開經(jīng)存在飛機(jī)的數(shù)據(jù)Main_Menu(GT,GP);SaveGraph_T(GT);//保存火車數(shù)據(jù)SaveGraph_P(GP);//保存飛機(jī)數(shù)據(jù)DestoryGraph(GP);}/****<迪斯特拉算法求最少錢數(shù)和最短時(shí)間>*********/voidG,intintnd,Path&pathA):起點(diǎn),:終點(diǎn)號(hào),結(jié)果存儲(chǔ)在pathA中//path包路徑的長(zhǎng)度,起點(diǎn),點(diǎn)和路徑信息{//利用迪杰斯特拉算法的基本思想圖中頂點(diǎn)st到nd的條//最短路徑PathInfo,路長(zhǎng)度pathLength//設(shè)intdijkst[MAXVTXNUM];Pathinti;intdijkst[MAXVTXNUM];final[MAXVTXNUM]={false};//個(gè)頂點(diǎn)都有路徑EdgeNode//邊的信息弧點(diǎn)t;//邊信息intmin=9999,min_i,v,w;//初化{dijkst[i]=9999;//path[i].len=0;}p=G.Adjlist[st].firstEdge;//初始化dijkst數(shù)檢測(cè)依附于起始點(diǎn)的每一條邊{15if(p->elem.Money<dijkst[p->elem.jvex]){}}while(!found){//在所有未求得最短路徑的頂點(diǎn)求得最小的i{if(final[i]==false&&dijkst[i]<min)min_i=i;}final[min_i]=true;if(min_i==nd)found=true;{{w=p->elem.jvex;&&((dijkst[v]+p->elem.Money)<dijkst[w])){dijkst[w]=dijkst[v]+p->elem.Money;}}//while(p)}}//}voidShortestTimePath(Graphintst,intint&pathA){:起點(diǎn),:終點(diǎn)號(hào),n:當(dāng)前時(shí)間(秒果儲(chǔ)在中16//利用迪杰斯特拉算法的基本思想圖中頂點(diǎn)st到nd的條//最短路徑PathInfo,路長(zhǎng)度pathLength//設(shè)intdijkst[MAXVTXNUM];Pathinti;intdijkst[MAXVTXNUM];final[MAXVTXNUM]={false};intnow[MAXVTXNUM];EdgeNodet;int//初化{dijkst[i]=99999;now[i]=0;}p=G.Adjlist[st].firstEdge;//初化dijkst數(shù)組檢測(cè)依附于起始點(diǎn)的每一條邊{if(p->elem.StartTime<now[st]&&p->elem.EndTime>=now[st]){1440-TimeSub(p->elem.EndTime,now[st]);}TimeSub(p->elem.EndTime,now[st]);if(time<dijkst[p->elem.jvex]){}}while(!found){//在所有未求得最短路徑的頂點(diǎn)求得最小的i17{if(final[i]==false&&dijkst[i]<min)min_i=i;}final[min_i]=true;if(min_i==nd)found=true;{{w=p->elem.jvex;&&(dijkst[v]+TimeSub(p->elem.EndTime,now[v])<dijkst[w])){}}//while(p)}}//}voidGT,Graph{intn=5;intst,nd;{cout<<查詢飛機(jī)"cout<<"\t查火車";cout<<"\t退\n";cout<<"\t請(qǐng)選擇";cin>>n;cout<<"\n";{18input_Money(GP,st,nd);LeastMoneyPath//最少錢數(shù)print_Money(GP,p);break;}if(n==2){input_Money(GT,st,nd);LeastMoneyPath(GT,st,nd,p);//最少錢數(shù)print_Money(GT,p);break;}ifbreak;cout<<"輸入有誤,請(qǐng)重新輸入\n\n";}}//咨詢系統(tǒng)菜單voidGP){{intcout<<"\t***************************"<<"\n";cout<<"\t*咨系統(tǒng)菜單*"<<"\n";cout<<"\t*1.最省錢咨詢*"<<"\n";cout<<"\t*2.最快到達(dá)咨詢*"<<"\n";cout<<"\t*退系統(tǒng)*"<<"\n";\t******************************"<<"\n";cout<<"
請(qǐng)選擇";cin>>choice;switch(choice){Inquire_Money(GT,GP);break;Inquire_Time(GT,GP);break;{cout<<"
輸入錯(cuò)誤選請(qǐng)?jiān)嘰n\n";}}}19}//城市編輯voidCity_Edit(Graph>,Graph&GP){intn,i;{cout<<"\n";cout<<"\t添城市";cout<<"\t刪城市";cout<<"\t退";cout<<"\t\t\t\t請(qǐng)擇:";cin>>n;{cout<<"\n請(qǐng)入添加城市名稱";cin>>name;cout<<"\n添成功!"<<"\n";break;}if(n==2){cout<<"\n請(qǐng)入刪除城市名稱";{DeleteVex(GT,i);cout<<"刪除成功!\n";}break;}if(n==0){cout<<"\n";break;}cout<<"輸入有誤,請(qǐng)重新輸入";}20}//列車時(shí)刻表編輯void>,GraphGP){intn,st,sn;inthour,minute;q;{cout<<"\n";cout<<"\t添列車
";cout<<"\t刪列車cout<<"\t退cout<<請(qǐng)擇:cin>>n;{{
";";cout<<"\n請(qǐng)入起始城市名稱";if(input_Vex(GT,st)==true)break;}{cout<<"\n請(qǐng)入終點(diǎn)城市名稱";break;}cout<<"\n請(qǐng)入車次:";cin>>number;q.ivex=st;cout<<"\n請(qǐng)入票價(jià):";cin>>q.Money;cout<<"\n請(qǐng)入起始時(shí)間";cout<<"\n幾:";cin>>hour;21cout<<"幾分";cin>>minute;q.StartTime=TimeChange(hour,minute);cout<<"\n請(qǐng)入到站時(shí)間";cout<<"\n幾:";cin>>hour;cout<<"幾分";cin>>minute;q.Time=TimeSub(q.EndTime,q.StartTime);cout<<"\n行時(shí)間:"<<q.Time/60<<"小時(shí)"<<q.Time%60"分鐘"cout<<"\n添成功!"<<break;}if(n==2){{cout<<"\n請(qǐng)入起始城市名稱";if(input_Vex(GT,st)==true)break;}{cout<<"\n請(qǐng)入終點(diǎn)城市名稱";break;}cout<<"\n請(qǐng)入車次:";{q.ivex=st;cout<<"刪除成功!\n";break;}}if(n==0)22{cout<<break;}cout<<"輸入有誤,請(qǐng)重新輸入";}}void&GP){{intcout<<"\t***********************************"<<"\n";cout<<"\t*管系菜單cout<<"\t*1.城市編輯cout<<"\t*2.列車時(shí)刻表編輯cout<<"\t*3.航班時(shí)刻表編輯cout<<"\t*0.退出系統(tǒng)"\t********************************"<<"\n";
*"<<"\n";*"<<"\n";*"<<"\n";*"<<"\n";*"<<"\n";cout<<"
請(qǐng)選擇";cin>>choice;switch(choice){Plane_Edit(GT,GP);break;cout<<"輸錯(cuò)誤選請(qǐng)?jiān)嘰n\n";}}}}int>,Graph{{intchoicem=3;cout<<cout<<"\t****************************************"<<cout<<"\t*全國(guó)交通咨詢系統(tǒng)主單*"<<"\n";23cout<<"\t*咨系統(tǒng)cout<<"\t*管系統(tǒng)cout<<"\t*退系統(tǒng)
*"<<"\n";*"<<"\n";*"<<"\n";"\t**************************************"<<cout<<cin>>cout<<"\n";fflush(stdin);//清輸入流{
請(qǐng)選擇";Inquire_Menu(GT,GP);break;Manage_Menu(GT,GP);break;{cout<<"
輸入有請(qǐng)重試。\n\n";}}}}五、程序結(jié)5.1操作流程.
本程序的運(yùn)行環(huán)境為DOS操作系統(tǒng)行文件為源程序目錄下的子目錄下的:雙擊了Traffic.exe后顯示了文本方式的用戶界面如下:選擇1進(jìn):選擇2進(jìn):在選擇入咨詢系統(tǒng)菜單后
選擇124在選擇入咨詢系統(tǒng)菜單后
選擇1在選擇入咨詢系統(tǒng)菜單后
選擇2選擇2進(jìn)管理系統(tǒng)后行選擇進(jìn)城市編輯進(jìn)入城市編輯后選擇進(jìn)行添加城市25進(jìn)入城市編輯選清除城市進(jìn)入管理菜單選進(jìn)行列車時(shí)刻編輯進(jìn)入列車時(shí)刻表編輯添列車選擇3進(jìn)航班編輯后擇行添加航班選擇3進(jìn)航班編輯后擇行刪除航班265.2據(jù)測(cè)試測(cè)試1:長(zhǎng)沙—上海乘火信
:最省錢:總共費(fèi)用243元T147長(zhǎng)沙—南昌63元K445南昌—上海180元最快到出發(fā)時(shí)間早上8:00共需48小時(shí)30分鐘T147長(zhǎng)沙—南昌5:50---12:30K445南昌—上海16:20—8:40因?yàn)榘却龝r(shí)間,所以是時(shí)30分最快到出發(fā)時(shí)間中5:30共需27小時(shí)10分鐘T147長(zhǎng)沙—南昌5:50---12:30K445南昌—上海16:20—8:40乘飛信
:長(zhǎng)沙―上海最省錢:總共費(fèi)用860元K888長(zhǎng)沙—南昌320K999南昌—上海540最快到出發(fā)時(shí)間上午11:30)共需6小時(shí)40分K888長(zhǎng)沙—南昌始發(fā)時(shí)間:12:20到站時(shí)間:13:30K999南昌—上海始發(fā)時(shí)間:16:20到站時(shí)間:18:105.3計(jì)和調(diào)分析在咨詢系統(tǒng)的設(shè)計(jì)中主要涉及到下面兩個(gè)部分:.圖的建立(文件讀取建立,添加邊,添加點(diǎn)).最小路徑的求取在這兩個(gè)部分設(shè)計(jì)和實(shí)現(xiàn)中都遇到了一些困難,調(diào)試分析如下:1.圖的結(jié)構(gòu)建立采取鄰接表結(jié)構(gòu),為了便于刪除,加入域標(biāo)志是否是圖中頂點(diǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025年高中化學(xué)1.1第1課時(shí)化學(xué)實(shí)驗(yàn)安全過濾和蒸發(fā)講義+練習(xí)新人教版必修1
- 2024-2025學(xué)年高中地理課時(shí)作業(yè)8城市化過程對(duì)地理環(huán)境的影響湘教版必修2
- 2024-2025學(xué)年高中數(shù)學(xué)第三章概率3.1隨機(jī)事件的概率3.1.1頻率與概率學(xué)案北師大版必修3
- 2024-2025學(xué)年高中數(shù)學(xué)第三章概率3.2.1古典概型練習(xí)含解析新人教A版必修3
- 2024-2025年新教材高中生物第3章第1節(jié)細(xì)胞膜的結(jié)構(gòu)和功能教案新人教版必修1
- 2025年度物流企業(yè)信息化安全防護(hù)合同
- 支教申請(qǐng)書范文
- 貧困救助申請(qǐng)書范文
- 二零二五年度土地整治項(xiàng)目土地權(quán)屬變更合同
- 現(xiàn)代商業(yè)辦公空間的綠色裝修理念
- 2024年小學(xué)人教版一年級(jí)數(shù)學(xué)上冊(cè)教學(xué)工作總結(jié)
- 網(wǎng)絡(luò)貨運(yùn)行業(yè)研究報(bào)告
- 【人教版化學(xué)】選擇性必修1 知識(shí)點(diǎn)默寫小紙條(答案背誦版)
- 警察法制進(jìn)校園
- 人教版七年級(jí)英語上冊(cè)單元重難點(diǎn)易錯(cuò)題Unit 2 單元話題完形填空練習(xí)(含答案)
- 新版建設(shè)工程工程量清單計(jì)價(jià)標(biāo)準(zhǔn)解讀
- 云南省昆明市盤龍區(qū)2023-2024學(xué)年三年級(jí)上學(xué)期語文期末試卷
- 圖像處理技術(shù)在自動(dòng)駕駛中的應(yīng)用
- 2024年云南省公務(wù)員考試《行測(cè)》真題及答案解析
- 2024-2025學(xué)年廣東省大灣區(qū)40校高二上學(xué)期聯(lián)考英語試題(含解析)
- 旅拍店兩人合作協(xié)議書范文
評(píng)論
0/150
提交評(píng)論