題目8:全國(guó)鐵路運(yùn)輸網(wǎng)最佳經(jīng)由問題_第1頁(yè)
題目8:全國(guó)鐵路運(yùn)輸網(wǎng)最佳經(jīng)由問題_第2頁(yè)
題目8:全國(guó)鐵路運(yùn)輸網(wǎng)最佳經(jīng)由問題_第3頁(yè)
題目8:全國(guó)鐵路運(yùn)輸網(wǎng)最佳經(jīng)由問題_第4頁(yè)
題目8:全國(guó)鐵路運(yùn)輸網(wǎng)最佳經(jīng)由問題_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)告(本科)課程: 學(xué)號(hào): 姓名: 班級(jí): 教師: 時(shí)間:數(shù)據(jù)結(jié)構(gòu)1210441019 12104410041210441020葛程、徐雙雙杜明輝2012級(jí)物聯(lián)網(wǎng)工程班程敏2014.01.02計(jì)算機(jī)科學(xué)與技術(shù)系設(shè)計(jì)名稱:全國(guó)鐵路運(yùn)輸網(wǎng)最佳經(jīng)由問題 設(shè)計(jì)內(nèi)容、目的與要求:實(shí)驗(yàn)內(nèi)容:鐵路運(yùn)輸網(wǎng)絡(luò)中由鐵路線和火車站的兩個(gè)主要概念,譬如:1號(hào)鐵路線表示京廣線,2號(hào)鐵路線表示京滬線等。鐵路線對(duì)象包括鐵路線編號(hào),鐵路線名稱,起始站編號(hào),終點(diǎn)站編號(hào),該鐵路 線長(zhǎng)度,通行標(biāo)志(00B客貨運(yùn)禁行,01B貨運(yùn)通行專線,10B客運(yùn)通行專線,11B 客貨運(yùn)通行)?;疖囌緦?duì)象包括所屬鐵路線編號(hào),車站代碼,車站名

2、,車站簡(jiǎn)稱,離該鐵路 線起點(diǎn)站路程及終點(diǎn)站路程。實(shí)驗(yàn)要求:(1)查詢某站所屬的鐵路線(2)要求具備新增鐵路線的管理功能(3)要求具備新增車站的管理功能(4)針對(duì)客運(yùn),貨運(yùn)情況能計(jì)算任何一個(gè)起始車站到任何一個(gè)終點(diǎn)站之間的最 短路徑。并且要求能夠顯示出該最短路徑的各個(gè)火車站的經(jīng)由順序 計(jì)劃與進(jìn)度安排:11.1 11.10大體規(guī)劃幾部分函數(shù),設(shè)計(jì)基本的鐵路圖,今后在基本圖上實(shí) 驗(yàn)鐵路的基本管理功能。11.11 11.30各組員完成自己的功能函數(shù),并盡量達(dá)到要求。12.1 12.15組員一起完成函數(shù)的組建及基本輔助函數(shù)功能的實(shí)現(xiàn)。12.16 12.25組員各自拿到所有的程序,開始個(gè)人調(diào)試與完善。12.

3、26 12.30組員一起討論最后的方案,并做最后的優(yōu)化。設(shè)計(jì)過程、步驟(可加頁(yè)):一:設(shè)計(jì)過程:將鐵路網(wǎng)抽象成圖,然后查詢中國(guó)現(xiàn)有的鐵路網(wǎng)結(jié)構(gòu)圖,選取合適的站點(diǎn)數(shù)目, 構(gòu)造一個(gè)簡(jiǎn)單的鐵路圖,在構(gòu)造的鐵路圖上實(shí)現(xiàn)設(shè)計(jì)的要求。用結(jié)構(gòu)體創(chuàng)建圖, 然后再圖的基礎(chǔ)上實(shí)現(xiàn)算法要求。通過對(duì)題目的分析我們覺得會(huì)用到會(huì)用到數(shù)據(jù) 結(jié)構(gòu)的鄰接矩陣的存儲(chǔ)圖的定義,圖的遍歷算法(深度優(yōu)先遍歷),兩點(diǎn)間最短路徑查詢(迪杰斯特拉算法)。使用文件的存儲(chǔ)方式,對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。32現(xiàn)行的鐵路圖:產(chǎn)艮武上想r.k-* I *一工*卜甲蟲冒蒯、品E加噌舶T*升na 夫qJtwi/E恤工” 11 f 口. 4i.fta 2*i、勺I“

4、3單強(qiáng)門戶WAfe 工*, 產(chǎn)胃下盟 :矍 .,, I*白把修 ,WfKN最后簡(jiǎn)單化的鐵路網(wǎng)如下:typedef structint id;char name20;char des100;vinfo;/ 站點(diǎn) typedef struct int distance;int kind;ArcCell, AdjMatrixMAX_V_NUMMAX_V_NUM; 令口接矩陣 typedef structvinfo vexsMAX_V_NUM;/ 站點(diǎn)數(shù)組AdjMatrix arcs;int vexnum,arcnum;MGraph;/ 圖二:函數(shù)的聲明和調(diào)用:void welcome。;/歡迎界面v

5、oid search_vex_info();/站點(diǎn)信息介紹void search_rantwo_short();/查詢?nèi)我鈨蓚€(gè)站點(diǎn)之間的一條最短簡(jiǎn)單路徑void map_manage();/站點(diǎn)線路修改擴(kuò)充void search_two_allpath();/查詢兩站點(diǎn)間所有路徑void search_kh_path();/客貨運(yùn)類別路徑查詢void about();/ 關(guān)于void create_map();/初始化地圖void save_map();/將程序中的圖結(jié)構(gòu)體寫入數(shù)據(jù)文件int input_num_check(int min,int max);/數(shù)字輸入檢驗(yàn)void shorte

6、st_path_ota(int begin);/ 生成某一站點(diǎn)到所有其它站點(diǎn)的最短路 徑數(shù)據(jù)void print fgx();/輸出獨(dú)占一行的分割線void map_add_vex();/新增站點(diǎn)void map_add_road();/ 新增道路void map_revise_vex();/修改站點(diǎn)void map_revise_road();/修改道路(引導(dǎo)界面)void map_reroad_in(int vid);/ 修改道路(公用嵌入函數(shù))void map_delete_vex();/ 刪除站點(diǎn)void map_delete_road();/ 刪除道路(引導(dǎo)界面)void map_r

7、e_arc(int bid,int fid,int kind,int xid);/修改道路(模塊函數(shù))若修改終點(diǎn):調(diào)用前需確保xid(新終點(diǎn))與原終點(diǎn)不相同void map_de_arc(int bid,int fid);/刪除道路(模塊函數(shù))void DFS_allpath(int bid,int fid,int k);/尋找兩點(diǎn)間所有路徑并輸出void search_kh_kh(int kind);/ 查找所有符合類別的路徑void DFS_allpath_kh(int bid,int fid,int k,int kind);/尋找兩點(diǎn)間所有路徑并判斷該路徑上到道路是否全為客/貨運(yùn)線路in

8、t DFS_allpath_kh_isinclude(int bz_i,int pa_k,int kind);/人客/ 貨運(yùn)線路判斷較長(zhǎng)路徑是否完全包含較短路徑int DFS_allpath_kh_test(int a_i,int b_i)結(jié)果與分析(可以加頁(yè)):b l g 允E P4藝七 二| T可 x可供喜迎妁苦點(diǎn): ,場(chǎng)】北京B.Jl1鄭州工0北京;仁糙鸚/占當(dāng)尚 口】廣州藍(lán) 口【天津站 鼻血,餐褊超包酒Hi后廣電站點(diǎn)北京站介招二京廣技 京九弒、京哈線等、 ,清輸入謠點(diǎn)1D3;退出區(qū), E:作業(yè) DebugX5Up.eKE需柒殺竄魯;兩站間最短路徑查詢 量人起點(diǎn)ID 退出 就人終點(diǎn)退出)

9、;30 :退出)SBa喘藕翰昆明站E151貴糖01北京站到r31廣州站的最短路徑二M d匕京站一 CiJ Wh|3fi- 12株洲站一13】廣州站一涇程共10酬風(fēng) 贏入j西益k退出”口cl請(qǐng)請(qǐng)請(qǐng)充目查修 變川道查系 B點(diǎn)點(diǎn)貸出 站至某可供查詢的站點(diǎn)二B北氮4】連基H】株也設(shè)計(jì)體會(huì)與建議:這次的程序軟件基本上運(yùn)行成功,可以簡(jiǎn)單的對(duì)已經(jīng)輸入的數(shù)據(jù)進(jìn)行計(jì)算, 求全國(guó)鐵路運(yùn)輸網(wǎng)最佳經(jīng)由。但是程序較小,功能不全面,只是理論,并未實(shí)踐 經(jīng)過這次課程設(shè)計(jì),通過對(duì)程序的編制,調(diào)試和運(yùn)行,使我更好的掌握了圖基本 性質(zhì)和關(guān)于選址問題的解決方法,熟悉了各種調(diào)用的數(shù)據(jù)類型,在調(diào)試和運(yùn)行過 程中使我更加的了解和熟悉程序

10、運(yùn)行的環(huán)境, 提高了我對(duì)程序調(diào)試分析的能力和對(duì)錯(cuò)誤的糾正能力。這次數(shù)據(jù)結(jié)構(gòu)的程序設(shè)計(jì),對(duì)于我來說是一個(gè)挑戰(zhàn)。我對(duì)數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)在程序的設(shè)計(jì)中也有所體現(xiàn)。 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知 識(shí)、發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí) 際工作能力的具體訓(xùn)練和考察過程。 隨著科學(xué)技術(shù)發(fā)展的日新月異,當(dāng)今計(jì)算機(jī) 應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握計(jì)算機(jī) 開發(fā)技術(shù)是十分重要的。在整個(gè)課程程序中,我們充分應(yīng)用和調(diào)用各個(gè)程序模塊,從而實(shí)現(xiàn)了此次程 序設(shè)計(jì)的所應(yīng)該有的功能。在本組看來這就是我們?cè)谡n程設(shè)計(jì)是比較成功的, 而 在這個(gè)過程中,讓我們感覺收獲最

11、大的就是我們都能利用這次課程設(shè)計(jì)學(xué)到很多 我們?cè)谡n本上沒有的知識(shí),充分的發(fā)揮了我們的主動(dòng)性,使我們自主的去學(xué)習(xí)。附錄:#include #include #include #include #include #include #include #define MAX_V_NUM 100#define MAX 60000 typedef structint id;char name20;char des100;vinfo;/ 站點(diǎn)typedef structint distance;int kind;ArcCell, AdjMatrixMAX_V_NUMMAX_V_NUM;/ 鄰接矩陣typed

12、ef structvinfo vexsMAX_V_NUM;/ 站點(diǎn)數(shù)組AdjMatrix arcs;int vexnum,arcnum;MGraph;/ 圖MGraph G;/ 圖 Gint input_exit = 0;/ 退出操作/ota 最短路徑存儲(chǔ)用變量int PMAX_V_NUMMAX_V_NUM; / 最短路徑中間點(diǎn)記錄int DMAX_V_NUM; / 到各點(diǎn)的最短路徑int SorderMAX_V_NUM; / 最短路徑根點(diǎn)由小到大排序/路徑探尋存儲(chǔ)用變量(使用前后必須重置為 0) int pathMAX_V_NUM; / 路徑站點(diǎn)int visitedMAX_V_NUM; /

13、 訪問標(biāo)志int path_num; / 所有路徑數(shù)int best_l; / 目前最短的總長(zhǎng)度int bestl_num; / 目前總長(zhǎng)度最短的路徑途經(jīng)站點(diǎn)個(gè)數(shù)/客運(yùn)貨運(yùn)路徑函數(shù)用存儲(chǔ)數(shù)組int path_khMAX_V_NUMMAX_V_NUM;/ 存儲(chǔ)暫時(shí)滿足條件的客貨運(yùn)路徑int path_kh_vnumMAX_V_NUM;/ 記錄每條路徑途經(jīng)的站點(diǎn)數(shù)int path_num_bak;/ 備份所有路徑數(shù)/*函數(shù)聲明*/void welcome();/ 歡迎界面void search_vex_info();/ 站點(diǎn)信息介紹void search_rantwo_short();/ 查詢?nèi)我?/p>

14、兩個(gè)站點(diǎn)之間的一條最短簡(jiǎn)單路徑void map_manage();/ 站點(diǎn)線路修改擴(kuò)充/void search_two_allpath();/ 查詢兩站點(diǎn)間所有路徑void search_kh_path();/ 客貨運(yùn)類別路徑查詢void create_map();/ 初始化地圖void save_map();/ 將程序中的圖結(jié)構(gòu)體寫入數(shù)據(jù)文件int input_num_check(int min,int max);/ 數(shù)字輸入檢驗(yàn)void shortest_path_ota(int begin);/ 生成某一站點(diǎn)到所有其它站點(diǎn)的最短路徑數(shù)據(jù)void print_fgx();/ 輸出獨(dú)占一行的

15、分割線void map_add_vex();/ 新增站點(diǎn)void map_add_road();/ 新增道路void map_revise_vex();/ 修改站點(diǎn)void map_revise_road();/ 修改道路(引導(dǎo)界面)void map_reroad_in(int vid);/ 修改道路(公用嵌入函數(shù))void map_delete_vex();/ 刪除站點(diǎn)void map_delete_road();/ 刪除道路(引導(dǎo)界面)void map_re_arc(int bid,int fid,int kind,int xid);/ 修改道路(模塊函數(shù)) 若修改終點(diǎn):調(diào)用前需確保 xi

16、d( 新終點(diǎn))與原終點(diǎn)不相同void map_de_arc(int bid,int fid);/ 刪除道路 (模塊函數(shù) )void DFS_allpath(int bid,int fid,int k);/ 尋找兩點(diǎn)間所有路徑并輸出void search_kh_kh(int kind);/ 查找所有符合類別的路徑void DFS_allpath_kh(int bid,int fid,int k,int kind);/ 尋找兩點(diǎn)間所有路徑并判斷該路徑上到道路是否全為客/ 貨運(yùn)線路int DFS_allpath_kh_isinclude(int bz_i,int pa_k,int kind);/ 人

17、客 /貨運(yùn)線路 判斷較長(zhǎng)路徑是否完全包含較短路徑int DFS_allpath_kh_test(int a_i,int b_i);/ 輸出前檢測(cè)判斷較長(zhǎng)路徑是否完全包含較短路徑void main()int step = -1,choose = 1;create_map();dowelcome();printf( 請(qǐng)輸入功能序號(hào):);step = input_num_check(0,3);if(input_exit = 1)input_exit = 0;step = -1;choose = 0;elseswitch(step)case 1:search_vex_info();break;case

18、 2:map_manage();break;case 3:search_kh_path();break; default:choose = 0;while(choose != 0);printf(n*n您已成功退出 , 歡迎下次使用 , 再見 !n 按任意鍵關(guān)閉窗口 );getch();/在你需要暫停的位置暫停一下,當(dāng)你按一下任意鍵它又會(huì)繼續(xù)往下執(zhí)行! void welcome() int i;printf(”*n);n);printf(printf(全國(guó)鐵路網(wǎng)最佳經(jīng)由系統(tǒng)n);printf(n);printf( printf( printf( printf( printf( printf(n

19、);1 . 站點(diǎn)介紹查詢n);2 .站點(diǎn)道路修改擴(kuò)充n);3 .客貨查詢n);0.退出系統(tǒng)n);n);printf(*/ printf( 共 有 %d 個(gè) 站 點(diǎn) %d 條 道 路 最 大 值 MAX 為 %d 最 多 %d 個(gè) 頂 點(diǎn)”,G.vexnum,G.arcnum,MAX,MAX_V_NUM);print_fgx();printf( 可供查詢的站點(diǎn):n);for(i=0;iG .vexnum;i+) printf( 【 %d】 %s ,G.vexsi.id,G .);if(i%5 = 4 & i != 0) printf(n); print_fgx();void

20、search_vex_info()int vid;doprintf( 請(qǐng)輸入站點(diǎn) ID(e: 退出 ):);vid = input_num_check(0,G .vexnum-1);if(input_exit = 1) input_exit = 0;system(cls); return;print_fgx();printf(站點(diǎn)【s】介紹:s,G.,G .vexsvid.des); print_fgx();while(1);void search_rantwo_short()int bid,fid,i,j;do printf(請(qǐng)輸入起點(diǎn)ID(e:退出):); bid

21、= input_num_check(0,G .vexnum-1);if(input_exit = 1) input_exit = 0;system(cls);return;printf( 請(qǐng)輸入終點(diǎn) ID(e: 退出 ):);fid = input_num_check(0,G .vexnum-1);if(input_exit = 1)input_exit = 0;system(cls); return;shortest_path_ota(bid);print_fgx();printf( 【 %d 】 %s 到 【 %d 】 %s 的 最 短 路 徑 :,G.vexsbid.id,G .vexs

22、,G.vexsfid.id,G .);print_fgx();for(i=0;i,G.vexsj.id,G .);printf( 全程共 %dkm,Dfid);print_fgx();while(1); void map_manage() int select;doprintf(1. 新增站點(diǎn)2.新增線路3.修改站點(diǎn) 4.修改線路 5.刪除站點(diǎn) 6.刪除線路e:退出)n請(qǐng)輸入操作編號(hào):”);select = input_num_check(1,6);if(input_exit = 1) input_exit = 0;system(cl

23、s);return; switch(select)case 1:map_add_vex();break;case 2:map_add_road();break;case 3:map_revise_vex();break;case 4:map_revise_road();break;case 5:map_delete_vex();break;case 6:map_delete_road();break;default:exit(1);while(1);void search_kh_path()int select;int sign=0;doprintf(1.貨運(yùn)2.客運(yùn)3兩站間最短路徑查詢e:退

24、出)n請(qǐng)輸入操作編號(hào):);select = input_num_check(1,3);if(input_exit = 1)input_exit = 0;system(cls);return; switch(select)case 1:search_kh_kh(1);break;case 2:search_kh_kh(2);break;case 3:search_rantwo_short();break; default:exit(1);while(1);/初始化地圖void create_map() if(access(mmapdata.mdat,0) = 0) FILE *fp;fp = f

25、open(mmapdata.mdat,rb); if(!fp)printf(n 數(shù)據(jù)文件打開失敗!n); exit(1);fread(&G ,sizeof(MGraph),1,fp); fclose(fp); elseint i,j;/站點(diǎn)數(shù)與道路數(shù)賦值G.vexnum = 16;G.arcnum = 20;/站點(diǎn)編號(hào)賦值for(i=0;iG .vexnum;i+) G.vexsi.id = i;/站點(diǎn)名稱賦值strcpy(G., 北京站);strcpy(G., 鄭州站);strcpy(G., 株洲站);strcpy(G.vexs3.

26、name, 廣州站);strcpy(G., 天津站);strcpy(G., 連云港站 );strcpy(G., 上海站);strcpy(G., 南昌站);strcpy(G., 九龍站);strcpy(G., 包頭站);strcpy(G., 烏魯木齊站);strcpy(G., 蘭州站);strcpy(G., 寶雞站);strcpy(G., 成都站);strcpy(G.,

27、 昆明站);strcpy(G., 貴陽(yáng) );/站點(diǎn)介紹賦值);strcpy(G.vexs0.des,京廣線、京九線、京哈線等、strcpy(G.vexs1.des, 京廣線);strcpy(G.vexs2.des, 京廣線);strcpy(G.vexs3.des, 京廣線);strcpy(G.vexs4.des, 有待補(bǔ)充);strcpy(G.vexs5.des, 有待補(bǔ)充);strcpy(G.vexs6.des, 有待補(bǔ)充);strcpy(G.vexs7.des, 京九線);strcpy(G.vexs8.des, 京九線);strcpy(G.vexs9.des, 京包線

28、);strcpy(G.vexs10.des, 有待補(bǔ)充);strcpy(G.vexs11.des,有待補(bǔ)充);strcpy(G.vexs12.des, 有待補(bǔ)充);strcpy(G.vexs13.des, 有待補(bǔ)充);strcpy(G.vexs14.des, 有待補(bǔ)充);strcpy(G.vexs15.des, 有待補(bǔ)充);for(i=0;iMAX_V_NUM;i+)for(j=0;jMAX_V_NUM;j+) G.arcsij.distance = MAX;G.arcs01.distance=300;G .arcs01.kind=1;G.arcs04.distance=100;G .arcs

29、04.kind=2;G.arcs09.distance=300;G .arcs09.kind=2;G.arcs15.distance=400;G .arcs15.kind=1;G.arcs112.distance=200;G.arcs112.kind=1;G.arcs12.distance=300;G .arcs12.kind=1;G.arcs23.distance=400;G .arcs23.kind=1;G.arcs27.distance=300;G.arcs27.kind=2;G.arcs215.distance=250;G.arcs215.kind=2;G.arcs45.distanc

30、e=200;G .arcs45.kind=2;G.arcs56.distance=300;G .arcs56.kind=2;G.arcs67.distance=200;G .arcs67.kind=2;G.arcs78.distance=500;G .arcs78.kind=2;G.arcs911.distance=350;G .arcs911.kind=2;G.arcs1011.distance=800;G .arcs1011.kind=1;G.arcs1112.distance=200;G .arcs1112.kind=1;G.arcs1213.distance=300;G.arcs121

31、3.kind=2;G.arcs1314.distance=200;G .arcs1314.kind=2;G.arcs1415.distance=350;G.arcs1415.kind=2;for(i=0;iG .vexnum;i+)for(j=0;jj)G.arcsij = G.arcsji;save_map();/將程序中的圖結(jié)構(gòu)體寫入數(shù)據(jù)文件void save_map()FILE *fp;fp = fopen(mmapdata.mdat,wb);if(!fp)printf(n 數(shù)據(jù)文件打開失敗!n); exit(1);fwrite(&G ,sizeof(MGraph),1,fp);fclo

32、se(fp);/數(shù)字輸入檢驗(yàn)int input_num_check(int min,int max)int id,isright=0;doscanf(%d,&id);if(id=min)isright = 1;else if(getchar() = e) input_exit = 1;return 0;printf(輸入有誤,請(qǐng)重新輸入(e:退出):);while(isright != 1); return id;void print_fgx() printf(nn);void shortest_path_ota(int begin) /Dijkstra( 迪杰斯特拉)算法int i,k=0,

33、v,w,finalMAX_V_NUM,min,m;/初始化 for(v=0;vG .vexnum;v+) finalv = 0; Dv = G .arcsbeginv.distance; for(w=0;wG .vexnum;w+) Pvw = 0; if(DvMAX) Pvbegin = 1; Pvv = 1; Dbegin = 0; finalbegin = 1; Sorderk = begin;for(i=1;iG .vexnum;i+) min = MAX;for(w=0;wG.vexnum;w+) if(!finalw)if(Dwmin)v = w;min = Dw;finalv =

34、 1;if(v != begin) k+; Sorderk = v; / 記錄最短路徑遞增的站點(diǎn)隊(duì)列for(w=0;wG .vexnum;w+)if(!finalw & (min + G.arcsvw.distance Dw)Dw = min + G .arcsvw.distance;for(m=0;mG .vexnum;m+)Pwm = Pvm;Pww = 1;void DFS_allpath(int bid,int fid,int k)int i,j;if(pathk = fid)for(i=0;i,G.vexspathi.id,G .); printf( 【

35、%d 】 %s,G.vexspathk.id,G .);print_fgx();path_num+;elsefor(j=0;jG .vexnum;j+)if(G .arcspathkj.distance=MAX_V_NUM)printf(站點(diǎn)數(shù)已達(dá)到最大值 d,按任意鍵返回匚MAX_V_NUM);getchar();getchar();system(cls);welcome();return;printf(新站點(diǎn)的編號(hào)為【d】,是否繼續(xù)?(1.繼續(xù)e:退出):,vid);ifgo = input_num_check(1,1);if(input_exit = 1)in

36、put_exit = 0;system(cls);welcome();return;G.vexsvid.id = vid;printf( 請(qǐng)輸入新站點(diǎn)的名稱:);scanf(%s,&G .);printf( 請(qǐng)輸入新站點(diǎn)的介紹:);scanf(%s,&G .vexsvid.des);printf( 添加站點(diǎn)成功!);print_fgx();G.vexnum+;G.arcnum+=newroad;save_map();vid+;while(1);void map_add_road()int bid,fid;doprintf( 請(qǐng)輸入新增道路起始站點(diǎn) ID(e: 退出 ):

37、);bid = input_num_check(0,G .vexnum-1);if(input_exit = 1)input_exit = 0;system(cls);welcome(); return;printf(請(qǐng)輸入新增道路終止站點(diǎn)ID(e:退出):);fid = input_num_check(0,G .vexnum-1);if(input_exit = 1)input_exit = 0;system(cls);welcome(); return;if(fid = bid)printf( 終點(diǎn)與起點(diǎn)重復(fù)!n);continue;if(G.arcsbidfid.distanceprin

38、t_fgx();printf( 您 正 在 添 加 道 路 【 %d 】 %s【%d】 %s:n,G.vexsbid.id,G .,G .vexsfid.id,G .);printf( 請(qǐng)輸入新建道路的長(zhǎng)度( km ) :);scanf(%d,&G .arcsbidfid.distance);printf( 請(qǐng)輸入新建道路的類型(1.貨運(yùn)2.客運(yùn)):);scanf(%d,&G .arcsbidfid.kind);printf( 添加道路成功!);print_fgx();G.arcsfidbid = G .arcsbidfid;G.arcnum+;

39、save_map();while(1);void map_revise_vex()int vid,choose,i;do printf( 請(qǐng)輸入需要修改的站點(diǎn) ID(e: 退出 ):);vid = input_num_check(0,G .vexnum-1);if(input_exit = 1)input_exit = 0;system(cls);welcome(); return;print_fgx();printf( 站 點(diǎn) 信 息 預(yù) 覽 :【 %d 】 %s 介 紹 :%sn,G.vexsvid.id,G .,G .vexsvid.des);print_fgx(

40、);for(i=0;iG .vexnum;i+)if(G .arcsvidi.distance 【 %d 】 %s 道路信息 :長(zhǎng)度 %dkm ,G.vexsvid.id,G.,G .vexsi.id,G .,G .arcsvidi.distance);if(G.arcsvidi.kind = 1) printf( 類型 貨運(yùn) );else printf( 類型 客運(yùn) ); print_fgx();printf( 請(qǐng)輸入需要修改的對(duì)象(1.名稱 2.信息3.線路 ):);scanf(%d,&choose);if(choose = 1)printf(

41、請(qǐng)輸入新的站點(diǎn)名稱:);scanf(%s,&G .);else if(choose = 2)printf( 請(qǐng)輸入新的站點(diǎn)信息 :);scanf(%s,&G .vexsvid.des);else if(choose = 3) map_reroad_in(vid);elseprintf( 輸入錯(cuò)誤 !n); continue;save_map();print_fgx();printf( 修改成功 !n);while(1);/修改道路(引導(dǎo)界面)void map_revise_road()int vid;doprintf(請(qǐng)輸入需要修改的道路的起點(diǎn)(e:退出):);vid

42、= input_num_check(0,G .vexnum-1);if(input_exit = 1)input_exit = 0;system(cls);welcome(); return;map_reroad_in(vid);save_map();print_fgx();printf( 修改成功 !n);while(1);/修改道路void map_reroad_in(int vid)int fid,ekind,pass=0,passt=1;doprintf(請(qǐng)輸入需要修改的道路的終點(diǎn) (e:退出):); fid = input_num_check(0,G .vexnum-1);if(in

43、put_exit = 1)input_exit = 0;else if(G.arcsvidfid.distance = MAX | fid = vid) printf( 道路不存在或端點(diǎn)重復(fù)!n);else pass = 1;while(pass != 1);if(pass = 1) pass = 0;doprintf(您需要修改線路 d】s -d】s的n(1.終點(diǎn)2.長(zhǎng)度3.類型):,G .vexsvid.id,G .,G .vexsfid.id,G .);scanf(%d,&ekind);if(ekind = 1) int xid;do printf( 請(qǐng)輸入道路的新終點(diǎn) :);xid = input_num_check(0,G .vexnum-1); if(input_exit = 1) input_exit = 0;else if(G.arcsvidxid.distance MAX | xid = vid) printf( 新道路已存在或端點(diǎn)重復(fù)!n);else pass = 1;while(pass != 1);map_re_arc(vid,fid,3,xid);else if(ekind = 2)map_re_arc(vid,fid,1,-1);else if(ekind = 3) map_r

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論