




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上目 錄一、需求分析1.問題描述2.基本要求二、概要設計1. 程序流程圖2. 數據結構設計三、詳細設計1.程序設計思想2.軟件模塊結構圖3.源程序四、調試分析 1.測試數據2.時間復雜度分析3.上機遇到的問題及解決方案4.算法的改進設想五、用戶使用手冊六、心得體會一、需求分析1.問題描述該題目采用我國鐵路運輸網的數據進行編程和運行驗證。詳細可在網上搜索全國鐵路局管轄線路示意圖,只要全國的主干線就可以了。鐵路運輸網絡中由鐵路線和火車站的兩個主要概念,譬如:1號鐵路線表示京廣線,2號鐵路線表示京滬線等。鐵路線對象包括鐵路線編號,鐵路線名稱,起始站編號,終點站編號,該鐵路線長
2、度,通行標志(00B客貨運禁行,01B貨運通行專線,10B客運通行專線,11B客貨運通行)。火車站對象包括所屬鐵路線編號,車站代碼,車站名,車站簡稱,離該鐵路線起點站路程及終點站路程。2.基本要求(1)查詢某站所屬的鐵路線(2)要求具備新增鐵路線的管理功能(3)要求具備新增車站的管理功能(4)針對客運,貨運情況能計算任何一個起始車站到任何一個終點站之間的最短路徑。并且要求能夠顯示出該最短路徑的各個火車站的經由順序二、概要設計1. 程序流程圖(我負責的為除弗洛伊德算法外的設計)結束switch(menu)main開 始readviews();readways();readlines();menu
3、=1menu=2menu=5menu=3menu=4addview();addline();addway();輸出謝謝使用.再見.謝夢芳 李婷婷search();short_path();floyed();在這里簡單介紹弗洛伊德算法的核心思想:從圖的帶權鄰接矩陣開始,假設從Vi到Vj有弧,則從Vi到Vj存在一條長度為arcsi j的路徑,該路徑不一定是最小路徑,尚需進行n次試探。首先考慮路徑(Vi,V0,Vj)是否存在。如果存在,則比較(Vi,Vj)和(Vi,V0,Vj)的路徑長度取長度較短者為從Vi到Vj的中間頂點的序號不大于0的最短路徑。假如在路徑上再增加一個頂點V1,如果(Vi,.,V1
4、)和(V1,.,Vj)分別是當前找到的中間頂點的序號不大于0的最短路徑,那么(Vi,V1,,Vj)就有可能是從Vi到Vj的中間頂點的序號不大于1的最短路徑。將它和已經得到的Vi到Vj的中間頂點的序號不大于0的最短路徑相比較,從中選出中間頂點的序號不大于1的最短路徑之后,再增加一個V2繼續試探,以此類推,經過n次比較后,即可求出從Vi到Vj的最短路徑。2.數據結構設計存儲結構:本程序部分函數采用的是文件進行數據的存儲,所以采用的是順序存儲結構,如要添加數據,直接在文件里面進行操作就行了。弗洛伊德算法中采用的存儲結構是圖的鄰接矩陣。A.如下為抽象數據類型定義的模板以及抽象數據類型線性表的定義:AD
5、T List數據對象:D=ai| ai ElemSet,i=1,2,3,n,n0數據關系:R1=<ai-1,ai>| ai-1,ai D,i=1,2,3,n基本操作:void readviews()初始條件:views.txt已經存在。操作結果:將 views.txt里面的數據一次存入數組viewsSIZE_view里,并將數組里面的存儲數據的個數賦值給全局變量view_count; void readways()初始條件:ways.txt已經存在。操作結果:將 ways.txt里面的數據一次存入數組waysSIZE_way里,并將數組里面的存儲數據的個數賦值給全局變量way_co
6、unt;void readlines()初始條件:lines.txt已經存在。操作結果:將 lines.txt里面的數據一次存入數組linesSIZE_line里,并將數組里面的存儲數據的個數賦值給全局變量line_count;void search();初始條件:viewsSIZE_view存在,且里面放有相關信息。操作結果:根據用戶輸入的車站名查找該車站的相關信息并輸出;void addview() 初始條件:views.txt已經存在。操作結果:將 views.txt里面的數據一次存入數組viewsSIZE_view里,并將數組里面的存儲數據的個數賦值給全局變量view_count;vo
7、id addway()初始條件:ways.txt已經存在。操作結果:將 ways.txt里面的數據一次存入數組waysSIZE_way里,并將數組里面的存儲數據的個數賦值給全局變量way_count;void addline()初始條件:lines.txt已經存在。操作結果:將 lines.txt里面的數據一次存入數組linesSIZE_line里,并將數組里面的存儲數據的個數賦值給全局變量line_count;void floyed()初始條件: viewsSIZE_view、waysSIZE_way、linesSIZE_line已經存在并且存有相關信息。操作結果:把每個車站到各個車站的最短
8、經由路徑及此路徑的距離存儲在path_info、path_listSIZE_viewSIZE_view數組里;void shortest_path()初始條件:path_info、path_listSIZE_viewSIZE_view存儲相關的數據;操作結果:輸出輸入的兩個站的最短距離及經過的所有站;void addadta(int menu)初始條件:views.txt、ways.txt、lines.txt已經存在。操作結果:如果menu=1,則添加車站數據,如果menu=2,則添加路線數據;B.弗洛伊德算法中,數據結構所用到的思想為圖的思想,所以數據結構的設計主要的目的為便于圖的操作的設計
9、。因此我們用了下面這些數據定義。struct view_info /*城市信息結構*/int id;char name20;int code;char shortname20;char LName100;/經過此站的鐵路線名稱viewsSIZE_view;struct line_info/鐵路線信息結構int Lid;char LName20;int start_id; /始發站int end_id; /終點站int dist; /鐵路線長char sign5; /通行標志linesSIZE_line;struct way_info /鐵路度的信息結構int station1;int stat
10、ion2;int dist;waysSIZE_way;struct path_info /用于最短路徑的查詢int count;int pathSIZE_view;三、詳細設計1.程序設計思想設計思路:核心問題:求最短路徑(弗洛伊德算法)數據模型(邏輯結構):帶權有向圖輸入輸出:初始數據是從views.txt、lines.txt、way.txt三個文件中讀入,在讀入數據后,用戶可以根據選項選擇相應的功能,不同的功能有不同的數據輸入/輸出,比如:查詢的功能是要求輸入要查詢的站的名稱,然后輸出是該站的相關信息;查詢最短路徑的功能則是輸入起點站、終點站的名稱,輸出則是該段路線距離和經由站等。程序的輸
11、入:(1)鐵路線信息的輸入:依次輸入“鐵路線代碼,鐵路線名稱,起始站代碼, 終點站代碼,該鐵路線長度、通行標志” ,并且中間以空格隔開。(2)火車站信息的輸入:依次輸入“車站代碼,車站名,車站編號、車站簡稱,所屬鐵路線編號” ,并且中間以空格隔開。 程序的輸出格式: (1)當顯示鐵路線或者火車站的信息時,與輸入時的格式完全一致 ; (2)輸出最短路徑的長度,以及最短路徑的經由順序;按照程序功能要求,設計了一下各個功能模塊:(1)、文件讀取模塊文件讀取模塊包括讀取車站信息模塊readviews、路段權值信息讀取模塊readlines、鐵路線信息讀取模塊readlines。這些模塊的主要功能為從文
12、件中讀取所需的信息。(2)、添加信息模塊adddata添加信息模塊又包括以下子功能模塊:A、添加站點信息模塊addview。B、添加路段權值模塊addway。C、添加鐵路線信息模塊addline。(3)查詢模塊根據用戶需求,查詢站點信息(4)最短路徑查詢模塊該模塊為本軟件設計的核心部分。根據該模塊可以很方便的找出兩個城市的最短路徑。該最短路徑的算法為常用的弗洛伊德算法。(5)操作菜單模塊該模塊主要用于與用戶的交互,一個界面友好的菜單可以提高軟件的人機交互體驗。2. 軟件模塊結構圖 voidaddline()voidaddway()voidaddview()voidfloyed()void ma
13、in()voidsearch() voidshort_path() voidadddata(int mune) void readlines() void readways() void readviews() (1)主程序模塊,其中主函數為: void main() 新增火車站;新增鐵路線;查詢火車站的信息;針對客運、貨運情況,求兩站之間的最短路徑及其經由順尋;退出界面 (2) 文件模塊為:void readways(); void readviews(); void readlines()(3)圖模塊為:Void short_path();void floyed()(4)查詢函數和添加函數
14、void search();void adddata(in menu); void addway(); void addline();void addview()函數的調用:進入主函數,調用文件模塊各函數以讀取數據;選擇1或2,則調用void adddata(in menu),其中若選擇1,則調用void addview()函數,若選擇2,則調用void addline()和void addway()函數;選擇3,調用void search()函數進行查詢;選擇4,調用void short_path()和void floyed()函數以得到最短路徑。3.源程序(見附錄)四、調試分析1.測試數據
15、數據讀取如下:操作界面如下:功能測試截圖:輸入1,增加車站信息如下:輸入2,增加鐵路線信息如下:輸入3,查詢車站信息如下:輸入4,查詢最短路徑如下:輸入5,退出界面如下;2.時間復雜度分析程序中圖的存儲結構為帶權鄰接矩陣, 其中對鄰接矩陣的初始化的時間復雜度為O(n*n); 在求最短路徑的時候,用的是弗洛伊德算法,時間復雜度主要在于求每一站到任意站的最短路徑由是的for循環,那有三個for循環,所以時間復雜度為O(n3)。3.上機過程中出現的問題及其解決方案(1)剛剛看到題目要求的時候就想到了弗洛伊德算法,但是不知道如何去做,在網站搜索到類似代碼,經過修改后,最終得出了源程序。(2)源程序可以
16、運行的時候,忘記添加相關文本文件,所以運行文件的時候會提示文件打開失敗,無法進行接下來的功能使用,這時候才想起來要自行添加相關的文本文檔,接著問題就解決了。(3)在way.text文本文檔中添加各站權值的時候,一開始不知道如何添加,經過思考和查詢課本后,明白了添加權值時是以各站編碼代表各站,由于是有向圖,所以需要添加兩站往返權值。(4)在輸入信息時,由于是輸入漢字,系統不穩定,容易出現刷屏,這個問題,我是向學長尋求幫助并得以解決的。4.算法的改進設想1.程序界面不夠美觀,需要改進,作為人機交互的界面,應盡量美觀舒適,提高人機交互體驗。2.鐵路交通網的管理還有很多方面,例如刪除某些鐵路線或火車站
17、五、用戶使用手冊首先運行可執行文件,執行文件為:test.exe。根據需要選擇相應的數字代碼:【1】 選擇1,增加車站信息。首先輸入新車站的id,輸入為數字(必須大于所給提示信息),其次輸入新車站名稱,輸入為文字,接著輸入新車站的編號,輸入為數字(必須大于所給信息),然后輸入新車站的簡稱,輸入為英文字母(一般為新車站拼音首字母),接著輸入新車站經過的路線,輸入為文字。最后選擇是否繼續,輸入為n(不)或y(是)。【2】 選擇2,增加鐵路線信息。首先輸入新鐵路線信息的Lid,輸入為數字(必須大于所給提示信息),其次輸入新鐵路線名稱,輸入為文字,接著分別輸入新鐵路線的起始站id和終點站id,輸入為數
18、字,然后輸入距離,輸入為數字,通行標志:00B客貨運禁行,01B貨運通行專線,10B客運通行專線,11B客貨運通行,接著輸入權值信息,前一站和后一站的編碼,輸入為數字,兩站的距離,輸入為數字。最后選擇是否繼續,輸入為n(不)或y(是)。【3】 選擇3,查詢車站信息。輸入需要查詢的車站名稱,輸入為文字。最后選擇是否繼續,輸入為n(不)或y(是)。【4】 選擇4,查詢最短路徑。分別輸入需要查詢最短路徑的起始站和終點站的名稱。最后選擇是否繼續,輸入為n(不)或y(是)。【5】選擇5,退出程序。六、心得體會本次課程設計我們做的是全國鐵路網最經經由問題,功能都實現了,運行順暢。對于這次的數據結構設計我覺
19、得我們還是挺成功的。以下是我在這次數據結構中的體會。我覺得相比大一做的C語言程序設計而言,這次的程序難了很多,但同時教會了我更多的知識,最重要的就是讓我明白了數據結構這門課程的使用價值。以前,在課堂上老師一遍遍的講到數據結構和編程語言的關系,自從完成了課程設計以后我突然恍然大悟,明白了數據結構和C語言等編程語言的關系。簡單的說,它就是一個程序所采用的邏輯結構(有集合,線性表,樹和圖等)和存儲結構(順序和鏈表)。只有確定了這些,再加上算法才能寫出一個程序。 在寫本次程序時,遇到了不少的問題。主要還是對編程語言的不熟悉,雖然總體思路可以明確,但是真的寫起來卻漏洞百出。因此,我們上網搜索相關資料,找
20、到了類似的源程序,參考源程序之后,我們進行了一系列的改錯和完善。遇到不明白的部分,馬上詢問學長或者優秀的同學,讓他們為我們指點迷津。最終把他們都解決了。雖然這次花的時間比較多,但是收獲也是很大啊。最重要的收獲就是:當遇到問題時,要很高興的面對它。相信自己一定能解決這個問題。接下來,要沉住氣,不斷地嘗試,不斷地調試,最終會把問題給解決的。我認為編程遇到問題是一件很高興的事情。只有遇到問題,才能有問題解決。解決問題也是一件很開心的事情。 通過本次課程設計,增強了我的調試程序的能力,以及分析程序,分析算法的能力。鞏固了我數據結構的知識,對與去年學習的一門學科的溫習,讓我更了解了弗洛伊德算法,熟練掌握
21、了函數的定義,函數的調用等編程能力。我相信只有自己的能力不斷地提高,才能編寫出高質量的程序來。 課程設計期間,不得不提的是合作。因為合作我們才能又快又好的完成任務。當今社會,需要一個會思考會設計的人,但是更需要的是一個懂合作,會合作的搭檔。只有兩個人默契配合,合理分工才能順利的完成任務。我很開心能和我的搭檔一組,我們分工合作,在整個課程設計中遇到問題一起商量,一起解決,讓我感受到了合作的快樂。 最后我想說,數據結構是一門很復雜的學科,難懂。但是只要你利用學習到的理論知識去實踐,結合實踐去分析和理解它,最終你會發現它也不過如此。 在實踐的過程中互相幫助很重要,它能讓你在困境中體會到快樂,在苦澀的
22、學習中體會友情帶來的快樂!附錄:#include <fstream>#include <iostream>#include <string>#include <cstdio>#include <iomanip>#include <cstdlib>#define SIZE_view 50#define SIZE_line 100#define SIZE_way 300#define MAXNODE 30 /定義最多節點數#define MAXCOST 10000using namespace std;struct view_
23、info /*城市信息結構*/int id;char name20;int code;char shortname20;char LName100;/經過此站的鐵路線名稱viewsSIZE_view;struct line_info/鐵路線信息結構int Lid;char LName20;int start_id; /始發站int end_id; /終點站int dist; /鐵路線長char sign5; /通行標志linesSIZE_line;struct way_info /鐵路度的信息結構int station1;int station2;int dist;waysSIZE_way;s
24、truct path_info /用于最短路徑的查詢int count;int pathSIZE_view;int view_count,line_count,way_count; /用來存儲文件中有多少條記錄int dist_listSIZE_viewSIZE_view; /定義一個數組struct path_info path_listSIZE_viewSIZE_view; /定義一個path_info結構體變量.void readviews();void readways();void readlines();void search();void addview();void addwa
25、y();void addline();void shortest_path();void floyed();void adddata(int menu);void main()readviews(); cout<<endl<<endl;readlines(); cout<<endl<<endl;readways();while(1)int menu;cout<<endl<<endl;cout<<" 全國鐵路運輸網經由系統"<<endl;cout<<"*&qu
26、ot;<<endl;cout<<" 1、增加車站信息"<<endl;cout<<" 2、增加鐵路線信息"<<endl;cout<<" 3、查詢車站信息"<<endl;cout<<" 4、查詢最短路徑"<<endl;cout<<" 5、退出界面"<<endl;cout<<"*"<<endl; cout<<&quo
27、t;請選擇你要的操作代碼.1-5):"<<endl;cin>>menu;while(menu<1|menu>5)/cout<<"error!please enter again:"cout<<"錯誤!請再次輸入:" cin>>menu;switch(menu)case 1:case 2:adddata(menu);break;case 3:while(1)search();/cout<<"do you want to continue?(y/n)&qu
28、ot;<<endl;cout<<endl<<"你是否要繼續?(y/n)"<<endl;char con;cin>>con;if(con='y');elsebreak;break;case 4:while(1)shortest_path();/cout<<"do you want to continue?(y/n)"<<endl;cout<<endl<<"你是否要繼續?(y/n)"<<endl;char
29、 con;cin>>con;if(con='y');/* addline();*/elsebreak;break;case 5:cout<<"謝謝使用.再會."<<endl;getchar();getchar();exit(1);break;void readviews()int i;ifstream infile("views.txt",ios:in); /打開文件/把文件中的個數付給view_count/* infile>>view_count; */if(!infile) /打開文件失
30、敗/cerr<<"can't open views.txt!"<<endl;cerr<<"不能打開 views.txt!"<<endl;exit(1);/infile>>view_count;/先讀入文件個數for(i=0;i+)infile>>viewsi.id>>>>viewsi.code>>viewsi.shortname>>viewsi.LName;if(i!=0&&viewsi.i
31、d=0)break;view_count=i;/view_count=i;/給出源文件中車站的個數infile.close();/下面是測試用的代碼cout<<setiosflags(ios:left);cout<<"城市信息結構"<<endl<<endl;/cout<<setw(8)<<"id"<<setw(9)<<"name"<<setw(8)<<"code"<<setw(12)&
32、lt;<"shortname"<<setw(10)<<"LName"<<endl;cout<<setw(8)<<"序號"<<setw(9)<<"名稱"<<setw(8)<<"code"<<setw(12)<<"簡稱"<<setw(10)<<"經過此站的鐵路線名稱"<<endl;for(
33、i=0;i<view_count;i+)cout<<setw(8)<<viewsi.id<<setw(9)<<<<setw(8)<<viewsi.code<<setw(12);cout<<viewsi.shortname<<viewsi.LName<<endl;cout<<resetiosflags(ios:left);void readways()/讀文件ways.txtint i;ifstream infile("ways
34、.txt",ios:in);/打開文件/* infile>>way_count;*/ /把文件中的記錄付給way_countif(!infile) /打開文件失敗/cerr<<"can't open ways.txt!"<<endl;cerr<<"不能打開 ways.txt!"<<endl;exit(1);for(i=0;i+)infile>>waysi.station1>>waysi.station2>>waysi.dist;if(i!=0
35、&&waysi.station1=0)break;way_count=i;infile.close();/測試用.輸入路段的信息/ cout<<setiosflags(ios:left);/ cout<<setw(12)<<"station1"<<setw(12)<<"station2"<<"dist"<<endl;/ for(i=0;i<way_count;i+)/ / cout<<setw(12)<<w
36、aysi.station1<<setw(12)<<waysi.station2;/ cout<<waysi.dist<<endl;/ / cout<<resetiosflags(ios:left);void readlines()/讀文件lines.txtint i;ifstream infile("lines.txt",ios:in);/打開文件/把文件中的記錄付給line_countif(!infile) /打開文件失敗cerr<<"can't open lines.txt!&qu
37、ot;<<endl;exit(1);/* infile>>line_count; */for(i=0;i+)infile>>linesi.Lid>>linesi.LName>>linesi.start_id;infile>>linesi.end_id>>linesi.dist>>linesi.sign;if(i!=0&&linesi.Lid=0)break;line_count=i;infile.close();/下面的代碼為測試時用的cout<<"鐵路線信息結
38、構"<<endl<<endl;cout<<setiosflags(ios:left);/ cout<<setw(8)<<"Lid"<<setw(12)<<"LName"<<setw(10)<<"start_id"/ cout<<setw(10)<<"end_id"<<setw(8)<<"dist"<<"sign
39、"<<endl;cout<<setw(8)<<"序號"<<setw(12)<<"路線名稱"<<setw(15)<<"始發站的id"cout<<setw(15)<<"終點站的id"<<setw(15)<<"路線長度"<<"通行標志"<<endl;for(i=0;i<line_count;i+)/ cout&l
40、t;<setw(8)<<linesi.Lid<<setw(12)<<linesi.LName<<setw(10)<<linesi.start_id;/ cout<<setw(10)<<linesi.end_id<<setw(8)<<linesi.dist<<linesi.sign<<endl;cout<<setw(8)<<linesi.Lid<<setw(12)<<linesi.LName<<set
41、w(15)<<linesi.start_id;cout<<setw(15)<<linesi.end_id<<setw(15)<<linesi.dist<<linesi.sign<<endl;cout<<resetiosflags(ios:left);/這里輸出文本中的信息void search() /cout<<"Please enter the station name:"cout<<"請輸入要查詢站的名稱:"char sta_nam
42、e20;cin>>sta_name; cout<<endl; ifstream infile("views.txt",ios:in); / /* infile>>view_count;*/ if(!infile) cerr<<"can't open views.txt!"<<endl; exit(1); int i,mark; for(i=0;i<view_count;i+)infile>>viewsi.id>>>>view
43、si.code>>viewsi.shortname>>viewsi.LName;infile.close();for(i=0;i<view_count;i+)if(strcmp(sta_name,)=0)/cout<<"the station informations is:n"<<endl;cout<<"站點信息:n"cout<<"*"<<endl;cout<<setiosflags(ios:left);cou
44、t<<setw(8)<<"序號"<<setw(9)<<"名稱"<<setw(8)<<"code"<<setw(12)<<"簡稱"<<setw(10)<<"經過此站的鐵路線名稱"<<endl;/cout<<setw(8)<<"id"<<setw(9)<<"name"<<
45、setw(8)<<"code"<<setw(12)<<"shortname"<<setw(10)<<"LName"<<endl;cout<<setw(8)<<viewsi.id<<setw(9)<<<<setw(8)<<viewsi.code<<setw(12);cout<<viewsi.shortname<<viewsi.LName&
46、lt;<endl;cout<<resetiosflags(ios:left);cout<<"*"<<endl;break;mark=i;if(mark=view_count-1) /cout<<"sorry, the station is not in here!"<<endl;cout<<"對不起, 你輸入的站點不存在!"<<endl;void addview()cout<<"請輸入新的車站信息:"<<
47、;endl;/cout<<"Please enter the new view's informations:"<<endl; /輸入新的車站信息/cout<<"id(id>"<<viewsview_count-1.id<<"):"cout<<"序號(id>"<<viewsview_count-1.id<<"):"cin>>viewsview_count.id;whil
48、e(1)if(viewsview_count.id<viewsview_count-1.id)cout<<"你輸入的數據不合法.請重新輸入:"cin>>viewsview_count.id;elsebreak;/cout<<"name:"cout<<"名稱:"cin>>viewsview_;cout<<"code(code>"<<viewsview_count-1.code<<"
49、):"cin>>viewsview_count.code;while(1)if(viewsview_count.code<viewsview_count-1.code)cout<<"你輸入的數據不合法.請重新輸入:"cin>>viewsview_count.id;elsebreak;/cout<<"shortname:"cout<<"簡稱:"cin>>viewsview_count.shortname;/cout<<"LNam
50、e:"cout<<"經過此站的鐵路線名稱:"cin>>viewsview_count.LName;cout<<endl;ofstream outfile("views.txt",ios:app); /打開views 文件.并寫入數據/* outfile<<view_count<<endl;*/if(!outfile)cerr<<"can't open views.txt!"exit(1);outfile<<endl<<vi
51、ewsview_count.id<<" "<<viewsview_<<" "outfile<<viewsview_count.code<<" "<<viewsview_count.shortname;outfile<<" "<<viewsview_count.LName<<endl;/在文件末尾添加view_count+;outfile.close(); /關閉文件/cout<<
52、;"Successfully!the new station is added"<<endl;cout<<"成功添加新的站點!"<<endl;cout<<"新的站點是:"<<view_count<<endl;void addway()cout<<"Please enter the new way's informations:"<<endl; /輸入新的車站信息/cout<<"station
53、1:"cout<<"站1的code:"cin>>waysway_count.station1; /station1 的id/cout<<"station2:"cout<<"站2的code:"cin>>waysway_count.station2; /station2 的id/cout<<"dist:"cout<<"距離:"cin>>waysway_count.dist; /路段的長度ofst
54、ream outfile("ways.txt",ios:app); /打開ways.txt 文件.并寫入數據/* outfile<<way_count<<endl;*/if(!outfile)cerr<<"can't open ways.txt!"exit(1);outfile<<endl<<waysway_count.station1<<" "<<waysway_count.station2<<" "outfi
55、le<<waysway_count.dist<<" "<<waysway_count.station2<<" "<<waysway_count.station1;outfile<<" "<<waysway_count.dist;/在文件末尾添加way_count+;outfile.close(); /關閉文件cout<<"Successfully!the new way is added"<<endl;cou
56、t<<"new station number is :"<<way_count<<endl;void addline()/cout<<"Please enter the new line's informations:"<<endl; /輸入新鐵路信息cout<<"請輸入新鐵路信息:"<<endl; /輸入新鐵路信息cout<<"序號(Lid>"<<linesline_count-1.Lid&l
57、t;<"):"cin>>linesline_count.Lid;while(1)if(linesline_count.Lid<linesline_count-1.Lid)cout<<"你輸入的數據不合法.請重新輸入:"cin>>linesline_count.Lid;elsebreak;/cout<<"LName:"cout<<"名稱:"cin>>linesline_count.LName;/cout<<"st
58、art_id:"cout<<"始發站id:"cin>>linesline_count.start_id;/cout<<"end_id:"cout<<"終點站id:"cin>>linesline_count.end_id;/cout<<"dist:"cout<<"距離:"cin>>linesline_count.dist;/cout<<"sign:"cout&l
59、t;<"通行標志:"cin>>linesline_count.sign;ofstream outfile("lines.txt",ios:app); /* outfile<<line_count+1<<endl;*/if(!outfile)cerr<<"can't open lines.txt!"exit(1);outfile<<endl<<linesline_count.Lid<<" "<<linesli
60、ne_count.LName<<" "<<linesline_count.start_id;outfile<<" "<<linesline_count.end_id<<" "<<linesline_count.dist<<" "outfile<<linesline_count.sign;line_count+;outfile.close(); / cout<<"Successfully!the ne
61、w line is added"<<endl;/ cout<<"new station number is :"<<line_count<<endl;cout<<"成功添加新的線路"<<endl;cout<<"新建線路的序號 :"<<line_count<<endl;void floyed() /弗洛伊德算法int i,j,k,m;/包含著count 和path用來存儲經過的路徑/ for(i=0;i<=view
62、_count;i+)/ for(j=0;j<=view_count;j+)/ dist_listij=MAXCOST;/先對任意兩點的距離初始值為無窮for(int t=0;t<=way_count;t+)i=wayst.station1;j=wayst.station2;dist_listij=wayst.dist;/把文件中的數據付給dist_listij=wayst.dist;形式for(i=0;i<=view_count;i+)for(j=0;j<=view_count;j+)if(i=j) /車站到本車站的距離賦值為零dist_listij=0;continue;dist_listij=-1; /先設置任意兩點之間的距離為-1.表示這兩點不通path_listij.count=0; /
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工安全隱患排查工具試題及答案
- 注冊土木工程師考試研究生課程試題及答案
- 制造業綠色供應鏈管理在綠色物流中的綠色運輸車輛管理優化報告
- 物理模型問題解析及答案2025年
- 2025年制造業數字化供應鏈協同產業協同技術創新研究報告
- 查驗員考試題及答案
- 能源行業數字化轉型智能電網優化:智能電網設備運維與健康管理報告
- 生鮮新零售行業2025年供應鏈優化與冷鏈物流解決方案報告
- 家具行業的市場競爭與產品設計創新相結合的研究試題及答案
- 控煙知識試題及答案解析
- 風電基礎施工方案
- ICD-10疾病編碼完整版
- 肩關節超聲檢查
- 畢業論文-中小企業防火墻的應用
- 可穿戴式設備安全可靠性技術規范 腕戴式設備
- 內科學動脈粥樣硬化和冠狀動脈粥樣硬化性心臟病
- ×××章程修訂對比表
- 《運算的意義》(教學設計)-2023-2024學年六年級下冊數學北師大版
- 高效養中蜂關鍵技術
- 廣州小學六年級英語下冊知識點歸納和習題(全冊)
- (正式版)JTT 1482-2023 道路運輸安全監督檢查規范
評論
0/150
提交評論