版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《校園導(dǎo)航系統(tǒng)》課程設(shè)計(jì)報(bào)告</p><p><b> 目 錄</b></p><p> 摘要……………………………………………………………….……………….1</p><p> 題目…………………………………………………………….……………….1</p><p> 概要設(shè)計(jì)…………………
2、…………………………………………………….1</p><p> 調(diào)試分析……………………………………………………………………….15</p><p> 參考文獻(xiàn)……………………………………………………………………….15</p><p><b> 題目</b></p><p><b> 校園導(dǎo)航系統(tǒng)&l
3、t;/b></p><p> 設(shè)計(jì)一個(gè)校園導(dǎo)游程序,后臺(tái)操作:</p><p> 1、操作員信息管理如修改密碼等</p><p> 2、能根據(jù)學(xué)校的規(guī)模進(jìn)行添加景點(diǎn)信息、修改景點(diǎn)信息等功能,</p><p> 3、若臨時(shí)有交通管制,能進(jìn)行交通管制的設(shè)置和撤銷(如某某時(shí)間段那條路進(jìn)行那個(gè)方向的交通管制等)</p>&
4、lt;p> 前臺(tái)為來(lái)訪的客人提供各種信息查詢服務(wù):</p><p> 1、設(shè)計(jì)學(xué)校的校園平面圖,所含景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號(hào)、簡(jiǎn)介等信息;以邊表示路徑,存放路徑長(zhǎng)度等相關(guān)信息。</p><p> 2、為來(lái)訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。</p><p> 3、提供途中任意景點(diǎn)問(wèn)路查詢,即求任意兩個(gè)景點(diǎn)間的一條
5、最短的簡(jiǎn)單路徑。</p><p><b> 1.1 需求分析</b></p><p> 設(shè)計(jì)一個(gè)校園導(dǎo)航系統(tǒng),導(dǎo)航系統(tǒng)又分為游客和管理員。要進(jìn)行管理操作還是游客操作由用戶自己選擇</p><p> 管理員的操作:修改景點(diǎn)信息、增加景點(diǎn)信息、交通管制等。</p><p> 游客的操作:查看景點(diǎn)信息和查最短路徑。&
6、lt;/p><p><b> 概要設(shè)計(jì)</b></p><p> 景點(diǎn)的信息由一維數(shù)組存放,景點(diǎn)關(guān)系由二維數(shù)據(jù)來(lái)存放</p><p> 景點(diǎn)的信息和關(guān)系從文件讀取,進(jìn)而初始化</p><p> typedef struct //保存單個(gè)景點(diǎn)信息的結(jié)構(gòu)體</p><
7、;p><b> {</b></p><p> char code[10]; //存放景點(diǎn)代碼</p><p> char name[20]; //存放景點(diǎn)名稱</p><p> char instruction[100]; //存放景點(diǎn)簡(jiǎn)介</p>
8、<p> }ViewPoint;</p><p> typedef struct //存放景點(diǎn)關(guān)系的二維數(shù)組</p><p><b> {</b></p><p> int edges[MAXV][MAXV]; //兩景點(diǎn)間的距離</p><p> int
9、number; //景點(diǎn)的數(shù)量</p><p> ViewPoint V[MAXV]; //保存景點(diǎn)信息的結(jié)構(gòu)體數(shù)組</p><p><b> }MGraph;</b></p><p><b> 2.1 流程圖</b></p><p><
10、;b> ↓</b></p><p><b> ↓</b></p><p><b> ↓</b></p><p><b> ↓</b></p><p><b> ↓</b></p><p><b>
11、; ↓</b></p><p><b> ↓</b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> void MainMenu(); 主菜單,寫界面操作的函數(shù)。 </p><p> void UserMenu(); 游客菜單,判斷是否非法輸入,不會(huì)死循環(huán)。&
12、lt;/p><p> void Map(); 輸出民大地圖,由于時(shí)間關(guān)系,沒(méi)有畫出。</p><p> void ViewAsk(); 游客查詢景點(diǎn)函數(shù),讓游客選擇要查詢的景點(diǎn),判斷是否非法輸入,不會(huì)死循環(huán)。</p><p> void PathAsk(); 問(wèn)路函數(shù),根據(jù)游客的起點(diǎn)和終點(diǎn)給出最短路徑,判斷是否非法輸入,不會(huì)死循環(huán)。</p><
13、p> void Dijkstra(MGraph G,int v,int i); 迪杰斯特拉函數(shù)求最短路徑</p><p> void Ppath(MGraph G,int path[],int i,int v); 輸出最短路徑中的景點(diǎn)</p><p> void Dispath(MGraph G,int dist[],int path[],int s[],int n,int v
14、,int i); 查找最短路徑。</p><p> void AdminMenu(); 管理員菜單,判斷是否非法輸入,不會(huì)死循環(huán)。</p><p> void Password(); 密碼函數(shù),管理員需輸入密碼才能進(jìn)入后臺(tái),輸入一次后無(wú)需再輸入。</p><p> void AdminAlter(); 修改密碼,需要再次輸入密碼。</p><
15、;p> void ViewAdd(); 增加景點(diǎn),列出已有景點(diǎn),判斷新景點(diǎn)信息是和與已有景點(diǎn)的沖突,如沖突需重新輸入,判斷是否非法輸入,不會(huì)死循環(huán)。</p><p> void ViewAlter(); 修改景點(diǎn)信息,由于時(shí)間關(guān)系,沒(méi)有判斷新修改的景點(diǎn)信息是否與已有景點(diǎn)信息沖突。若要做次判斷,應(yīng)與增加景點(diǎn)的判斷算法一致。</p><p> void ControlMenu();
16、 交通管制菜單,判斷是否非法輸入,不會(huì)死循環(huán)。</p><p> void PathControl(); 路徑管理,可增加路徑和修改路徑,列出已有路徑,根據(jù)用戶的輸入進(jìn)行管理,判斷是否非法輸入,不會(huì)死循環(huán)。但路徑長(zhǎng)度為整型,沒(méi)有判斷,若輸入非整型,則進(jìn)入死循環(huán),一個(gè)大大的BUG,能力有限。</p><p> void PathDel(); 刪除路徑,列出已有路徑,用戶根據(jù)提示進(jìn)行刪除。
17、判斷是否非法輸入,不會(huì)死循環(huán)。</p><p> void Read(MGraph &G); 讀取文件。</p><p> void White(MGraph &G); 保存文件。</p><p><b> 操作界面</b></p><p> 程序一開(kāi)始登錄主界面:</p><
18、p><b> 游客菜單:</b></p><p><b> 管理員界面</b></p><p><b> 管理員界面</b></p><p><b> 管理員操作界面</b></p><p><b> 查詢景點(diǎn)</b>
19、</p><p><b> 查詢最短路徑</b></p><p><b> 修改密碼</b></p><p><b> 增加景點(diǎn)</b></p><p><b> 修改景點(diǎn)信息</b></p><p><b>
20、交通管制界面</b></p><p><b> 刪除路徑</b></p><p><b> 管理路徑</b></p><p><b> 3 調(diào)試分析:</b></p><p> 當(dāng)進(jìn)入操作界面進(jìn)行功能的選擇,但非法輸入時(shí),應(yīng)該提示錯(cuò)誤并可以讓用戶重新選擇,
21、我使用的接收選擇的是字符串,判斷字符串長(zhǎng)度是否等于1,如果不等于則是錯(cuò)誤的,等于1后用switch判斷第一個(gè)字符,與case比較,調(diào)用相應(yīng)的函數(shù)。用whlie(1),使之一直循環(huán),直到與case中相同,使用標(biāo)志和break;讓他跳出相應(yīng)的循環(huán)層。在這里經(jīng)常會(huì)出錯(cuò),所以要很小心的判斷每個(gè)標(biāo)志跳出的相應(yīng)的循環(huán),使他不會(huì)跳出不該跳出的循環(huán)。</p><p> 另一個(gè)問(wèn)題是最短路徑。在新增一個(gè)景點(diǎn)后,我選擇不添加相鄰的
22、路徑時(shí)(矩陣的行等于列始終為0,表示同一個(gè)景點(diǎn)到同一個(gè)景點(diǎn)的路徑為0),再次查詢最短路徑時(shí),起點(diǎn)為新增的路徑,終點(diǎn)為任何一個(gè)景點(diǎn)都無(wú)法運(yùn)行;但是起點(diǎn)為除新增景點(diǎn)外的景點(diǎn),而終點(diǎn)為新增景點(diǎn)時(shí),可正確輸出:沒(méi)有路徑。由于時(shí)間原因來(lái)不及調(diào)試了。</p><p><b> 參考文獻(xiàn) </b></p><p> [1]嚴(yán)蔚敏、吳為民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版).北京:清華大學(xué)出版
23、社.2007</p><p> [2]林小茶.C語(yǔ)言程序設(shè)計(jì)(第二版).中國(guó)鐵道出版社.2010</p><p> [3]杜茂康、李昌兵等.C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第2版).北京:電子工業(yè)出版社.2011 </p><p><b> 附 錄</b></p><p><b> 源程序</b>
24、</p><p> <All.h>:頭文件詳細(xì)代碼</p><p> #include<iostream.h></p><p> #include<iomanip.h></p><p> #include<fstream.h></p><p> #include
25、<string.h></p><p> #include<conio.h></p><p> #include<stdlib.h></p><p> #include<stdio.h></p><p> #define MAXV 100</p><p> #de
26、fine INF 10000</p><p> typedef struct</p><p><b> {</b></p><p> char code[10];</p><p> char name[20];</p><p> char instruction[100];</p&
27、gt;<p> }ViewPoint;</p><p> typedef struct</p><p><b> {</b></p><p> int edges[MAXV][MAXV];</p><p> int number;</p><p> ViewPoint V
28、[MAXV];</p><p><b> }MGraph;</b></p><p> void MainMenu();</p><p> void UserMenu();</p><p> void Map();</p><p> void ViewAsk();</p>&
29、lt;p> void PathAsk();</p><p> void Dijkstra(MGraph G,int v,int i);</p><p> void Ppath(MGraph G,int path[],int i,int v);</p><p> void Dispath(MGraph G,int dist[],int path[],in
30、t s[],int n,int v,int i);</p><p> void AdminMenu();</p><p> void Password();</p><p> void AdminAlter();</p><p> void ViewAdd();</p><p> void ViewAlter
31、();</p><p> void ControlMenu();</p><p> void PathControl();</p><p> void PathDel();</p><p> void Read(MGraph &G);</p><p> void White(MGraph &G
32、);</p><p> <Main.cpp>:主函數(shù)</p><p> #include"All.h"</p><p><b> main()</b></p><p><b> {</b></p><p><b> int
33、pass;</b></p><p> char name[10],password[10];</p><p> ifstream indata("Password.txt");</p><p> indata>>pass>>name>>password;</p><p>
34、; indata.close();</p><p><b> pass=0;</b></p><p> ofstream outdata("Password.txt");</p><p> outdata<<pass<<endl<<name<<endl<<p
35、assword;</p><p> outdata.close();</p><p> MainMenu();</p><p><b> }</b></p><p> <Menu.cpp>:菜單功能</p><p> #include"All.h"<
36、/p><p> void MainMenu()</p><p><b> {</b></p><p> system("cls");</p><p> char choose[1];</p><p> cout<<"\n\n\n"<&
37、lt;setw(56)<<"歡迎光臨廣西民族大學(xué),祝您旅途愉快!"<<endl;</p><p> cout<<setw(55)<<"廣西民族大學(xué)校園導(dǎo)航系統(tǒng)為您服務(wù)!"<<endl;</p><p> cout<<endl<<setw(45)<<&q
38、uot;1.進(jìn)入導(dǎo)航系統(tǒng)"<<endl;</p><p> cout<<setw(45)<<"───────"<<endl;</p><p> cout<<setw(45)<<"2.登錄操作系統(tǒng)"<<endl;</p><p>
39、 cout<<setw(45)<<"───────"<<endl;</p><p> cout<<setw(37)<<"3.退出"<<endl;</p><p> cout<<setw(45)<<"───────"<<e
40、ndl;</p><p> cout<<endl<<setw(46)<<"請(qǐng)輸入您的選擇:";</p><p> cin>>choose;</p><p> if(strlen(choose)==1)</p><p><b> {</b><
41、/p><p> switch(choose[0])</p><p><b> {</b></p><p><b> case '1':</b></p><p> UserMenu();break;</p><p><b> case '
42、2':</b></p><p> Password();break;</p><p><b> case '3':</b></p><p><b> exit(0);</b></p><p><b> default:</b><
43、/p><p> system("cls");</p><p> cout<<"\n\n\n"<<endl<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p> cout<<endl<<setw(52)<
44、;<"按任意鍵返回主菜單重新選擇!";</p><p> cout<<endl;</p><p><b> getch();</b></p><p> MainMenu();</p><p><b> break;</b></p><
45、p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> system("cls");</p>&l
46、t;p> cout<<"\n\n\n"<<endl<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p> cout<<endl<<setw(52)<<"按任意鍵返回主菜單重新選擇!";</p><p> co
47、ut<<endl;</p><p><b> getch();</b></p><p> MainMenu();</p><p><b> }</b></p><p><b> }</b></p><p> void UserMen
48、u()</p><p><b> {</b></p><p> system("cls");</p><p> char choose[1];</p><p> int flag=0;</p><p> cout<<"\n\n\n"&l
49、t;<setw(45)<<"校園導(dǎo)航系統(tǒng)!"<<endl;</p><p> cout<<endl<<setw(45)<<"1.查看校園地圖"<<endl;</p><p> cout<<setw(45)<<"───────"
50、<<endl;</p><p> cout<<setw(45)<<"2.景點(diǎn)信息查詢"<<endl;</p><p> cout<<setw(45)<<"───────"<<endl;</p><p> cout<<setw(
51、45)<<"3.景點(diǎn)問(wèn)路查詢"<<endl;</p><p> cout<<setw(45)<<"───────"<<endl;</p><p> cout<<setw(43)<<"4.返回主菜單"<<endl;</p>
52、<p> cout<<setw(45)<<"───────"<<endl;</p><p> cout<<setw(37)<<"5.退出"<<endl;</p><p> cout<<setw(45)<<"───────&qu
53、ot;<<endl;</p><p> cout<<endl<<setw(46)<<"請(qǐng)輸入您的選擇:";</p><p> cin>>choose;</p><p> if(strlen(choose)==1)</p><p><b> {&l
54、t;/b></p><p> switch(choose[0])</p><p><b> {</b></p><p><b> case '1':</b></p><p> Map();break;</p><p><b> cas
55、e '2':</b></p><p> ViewAsk();break;</p><p><b> case '3':</b></p><p> PathAsk();break;</p><p><b> case '4':</b>
56、</p><p> MainMenu();break;</p><p><b> case '5':</b></p><p><b> exit(0);</b></p><p><b> default:</b></p><p>
57、 system("cls");</p><p> cout<<"\n\n\n"<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p> cout<<endl<<setw(49)<<"按任意鍵返回重新選擇!";
58、</p><p> cout<<endl;</p><p><b> getch();</b></p><p> UserMenu();</p><p><b> }</b></p><p><b> }</b></p>
59、<p><b> else</b></p><p><b> {</b></p><p> system("cls");</p><p> cout<<"\n\n\n"<<setw(43)<<"選擇錯(cuò)誤!"
60、<<endl;</p><p> cout<<endl<<setw(49)<<"按任意鍵返回重新選擇!";</p><p> cout<<endl;</p><p><b> getch();</b></p><p> UserMen
61、u();</p><p><b> }</b></p><p><b> }</b></p><p> void Password()</p><p><b> {</b></p><p> system("cls");&l
62、t;/p><p> char name[10],password[10];</p><p> char entername[10],enterpassword[10];</p><p> char choose[1];</p><p> int pass,flag=0,flag1=0;</p><p> ifst
63、ream indata("Password.txt");</p><p> indata>>pass>>name>>password;</p><p> indata.close();</p><p><b> if(pass)</b></p><p> A
64、dminMenu();</p><p><b> else</b></p><p><b> {</b></p><p> cout<<"\n\n\n"<<setw(40)<<"用戶名:";</p><p> cin
65、>>entername;</p><p> cout<<endl<<setw(40)<<"密碼:";</p><p> cin>>enterpassword;</p><p> if(strcmp(name,entername)==0&&strcmp(passwor
66、d,enterpassword)==0)</p><p><b> {</b></p><p><b> pass=1;</b></p><p> ofstream outdata("Password.txt");</p><p> outdata<<pass
67、<<endl<<name<<endl<<password;</p><p> outdata.close();</p><p> AdminMenu();</p><p><b> }</b></p><p><b> else</b><
68、/p><p><b> {</b></p><p> system("cls");</p><p> cout<<"\n\n\n";</p><p> cout<<setw(47)<<"用戶名或密碼錯(cuò)誤!"<<
69、endl;</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> if(flag1)</b></p><p><b> {</b></p><p> syste
70、m("cls");</p><p> cout<<"\n\n\n";</p><p><b> }</b></p><p> cout<<endl<<setw(45)<<"1.重新輸入密碼"<<endl;</p&g
71、t;<p> cout<<setw(45)<<"───────"<<endl;</p><p> cout<<setw(43)<<"2.返回主菜單"<<endl;</p><p> cout<<setw(45)<<"─────
72、──"<<endl;</p><p> cout<<setw(37)<<"3.退出"<<endl;</p><p> cout<<setw(45)<<"───────"<<endl;</p><p> cout<<e
73、ndl<<setw(46)<<"請(qǐng)輸入您的選擇:";</p><p> cin>>choose;</p><p> if(strlen(choose)==1)</p><p><b> {</b></p><p> switch(choose[0])<
74、/p><p><b> {</b></p><p><b> case '1':</b></p><p> flag=1;Password();break;</p><p><b> case '2':</b></p><
75、p> flag=1;MainMenu();break;</p><p><b> case '3':</b></p><p><b> exit(0);</b></p><p><b> default:</b></p><p><b>
76、 flag1=1;</b></p><p> system("cls");</p><p> cout<<"\n\n\n"<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p> cout<<endl<<
77、;setw(49)<<"按任意鍵返回重新選擇!";</p><p> cout<<endl;</p><p><b> getch();</b></p><p><b> }</b></p><p><b> if(flag)</b
78、></p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> flag
79、1=1;</b></p><p> system("cls");</p><p> cout<<"\n\n\n"<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p> cout<<endl<<setw(
80、49)<<"按任意鍵返回重新選擇!";</p><p> cout<<endl;</p><p><b> getch();</b></p><p><b> }</b></p><p><b> }</b></p>
81、;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void AdminMenu()</p><p><b> {</b></p><p&
82、gt; system("cls");</p><p> char choose[1];</p><p> int flag=0;</p><p> cout<<"\n\n\n"<<setw(45)<<"后臺(tái)操作系統(tǒng)!"<<endl;</p>
83、<p> cout<<endl<<setw(46)<<"1.操作員信息管理"<<endl;</p><p> cout<<setw(46)<<"────────"<<endl;</p><p> cout<<setw(44)<&l
84、t;"2.增加景點(diǎn)信息"<<endl;</p><p> cout<<setw(46)<<"────────"<<endl;</p><p> cout<<setw(44)<<"3.修改景點(diǎn)信息"<<endl;</p><p
85、> cout<<setw(46)<<"────────"<<endl;</p><p> cout<<setw(44)<<"4.道路交通管制"<<endl;</p><p> cout<<setw(46)<<"────────&quo
86、t;<<endl;</p><p> cout<<setw(42)<<"5.返回主菜單"<<endl;</p><p> cout<<setw(46)<<"────────"<<endl;</p><p> cout<<set
87、w(36)<<"6.退出"<<endl;</p><p> cout<<setw(46)<<"────────"<<endl;</p><p> cout<<endl<<setw(46)<<"請(qǐng)輸入您的選擇:";</p>
88、<p> cin>>choose;</p><p> if(strlen(choose)==1)</p><p><b> {</b></p><p> switch(choose[0])</p><p><b> {</b></p><p&g
89、t;<b> case '1':</b></p><p> AdminAlter();break;</p><p><b> case '2':</b></p><p> ViewAdd();break;</p><p><b> case
90、9;3':</b></p><p> ViewAlter();break;</p><p><b> case '4':</b></p><p> ControlMenu();break;</p><p><b> case '5':</b>
91、;</p><p> MainMenu();break;</p><p><b> case '6':</b></p><p><b> exit(0);</b></p><p><b> default:</b></p><p>
92、; system("cls");</p><p> cout<<"\n\n\n"<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p> cout<<endl<<setw(49)<<"按任意鍵返回重新選擇!"
93、;</p><p> cout<<endl;</p><p><b> getch();</b></p><p> AdminMenu();</p><p><b> }</b></p><p><b> }</b></p&g
94、t;<p><b> else</b></p><p><b> {</b></p><p> system("cls");</p><p> cout<<"\n\n\n"<<setw(43)<<"選擇錯(cuò)誤!&quo
95、t;<<endl;</p><p> cout<<endl<<setw(49)<<"按任意鍵返回重新選擇!";</p><p> cout<<endl;</p><p><b> getch();</b></p><p> Admin
96、Menu();</p><p><b> }</b></p><p><b> }</b></p><p> void ControlMenu()</p><p><b> {</b></p><p> system("cls&quo
97、t;);</p><p> char choose[1];</p><p> cout<<"\n\n\n"<<setw(45)<<"道路交通管制!"<<endl;</p><p> cout<<endl<<setw(41)<<"
98、1.管理路徑"<<endl;</p><p> cout<<setw(45)<<"───────"<<endl;</p><p> cout<<setw(41)<<"2.刪除路徑"<<endl;</p><p> cout<
99、;<setw(45)<<"───────"<<endl;</p><p> cout<<setw(45)<<"3.返回上級(jí)菜單"<<endl;</p><p> cout<<setw(45)<<"───────"<<endl;
100、</p><p> cout<<setw(37)<<"4.退出"<<endl;</p><p> cout<<setw(45)<<"───────"<<endl;</p><p> cout<<endl<<setw(46)&l
101、t;<"請(qǐng)輸入您的選擇:";</p><p> cin>>choose;</p><p> if(strlen(choose)==1)</p><p><b> {</b></p><p> switch(choose[0])</p><p><
102、b> {</b></p><p><b> case '1':</b></p><p> PathControl();break;</p><p><b> case '2':</b></p><p> PathDel();break;&l
103、t;/p><p><b> case '3':</b></p><p> AdminMenu();break;</p><p><b> case '4':</b></p><p><b> exit(0);</b></p>&
104、lt;p><b> default:</b></p><p> system("cls");</p><p> cout<<"\n\n\n"<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p> cout&l
105、t;<endl<<setw(49)<<"按任意鍵返回重新選擇!";</p><p> cout<<endl;</p><p><b> getch();</b></p><p> ControlMenu();</p><p><b> }&l
106、t;/b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> system("cls");</p><p> cout<&l
107、t;"\n\n\n"<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p> cout<<endl<<setw(49)<<"按任意鍵返回重新選擇!";</p><p> cout<<endl;</p><p&g
108、t;<b> getch();</b></p><p> ControlMenu();</p><p><b> }</b></p><p><b> }</b></p><p> <User.cpp>:包涵游客用的函數(shù)</p><p&
109、gt; #include"All.h"</p><p> void Map()</p><p><b> {</b></p><p> system("cls");</p><p> cout<<"\n\n\n"<<setw(4
110、2)<<"map!"<<endl;</p><p> cout<<endl<<setw(47)<<"按任意鍵繼續(xù)...";</p><p> cout<<endl;</p><p><b> getch();</b></p
111、><p> UserMenu();</p><p><b> }</b></p><p> void ViewAsk()</p><p><b> {</b></p><p> system("cls");</p><p>&
112、lt;b> MGraph G;</b></p><p> char viewpoint[20];</p><p> char choose[1];</p><p> int i,flag=0,flag1=1,flag2=0;</p><p><b> Read(G);</b></p>
113、;<p> cout<<"\n\n\n"<<setw(44)<<"民大景點(diǎn):"<<endl<<endl;</p><p> for(i=0;i<G.number;i++)</p><p> cout<<setw(34)<<"(&qu
114、ot;<<G.V[i].code<<")"<<G.V[i].name<<endl;</p><p><b> while(1)</b></p><p><b> {</b></p><p> cout<<endl<<setw(
115、55)<<"請(qǐng)輸入要查詢的景點(diǎn)代碼或名稱:";</p><p> cin>>viewpoint;</p><p> for(i=0;i<G.number;i++)</p><p><b> {</b></p><p> flag1=1;flag2=0;</p
116、><p> if(strcmp(G.V[i].code,viewpoint)==0||strcmp(G.V[i].name,viewpoint)==0)</p><p><b> {</b></p><p><b> flag1=0;</b></p><p> cout<<"
117、;\n\n"<<setw(37)<<"代碼"<<":"<<G.V[i].code<<endl;</p><p> cout<<setw(37)<<"名稱"<<":"<<G.V[i].name<<endl;
118、</p><p> cout<<setw(37)<<"簡(jiǎn)介"<<":"<<G.V[i].instruction<<endl<<endl;</p><p><b> while(1)</b></p><p><b> {
119、</b></p><p> cout<<setw(48)<<"是否繼續(xù)查詢(Y/N):";</p><p> cin>>choose;</p><p> if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0)&l
120、t;/p><p><b> {</b></p><p> flag2=1;break;}</p><p> else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0)</p><p><b> {</b>&l
121、t;/p><p> flag=1;UserMenu();break;</p><p><b> }</b></p><p><b> else</b></p><p> cout<<endl<<setw(43)<<"選擇錯(cuò)誤!"<&l
122、t;endl;</p><p><b> }//while</b></p><p><b> }//if</b></p><p> if(flag2||flag)</p><p><b> break;</b></p><p><b>
123、 }//for</b></p><p><b> if(flag1)</b></p><p><b> {</b></p><p> cout<<endl<<setw(46)<<"沒(méi)有要查詢的景點(diǎn)!"<<endl;</p>
124、<p><b> while(1)</b></p><p><b> {</b></p><p> cout<<setw(48)<<"是否繼續(xù)查詢(Y/N):";</p><p> cin>>choose;</p><p>
125、 if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0)</p><p><b> {</b></p><p><b> break;}</b></p><p> else if(strcmp(choose,"N"
126、;)==0||strcmp(choose,"n")==0)</p><p><b> {</b></p><p> UserMenu();break;</p><p><b> }</b></p><p><b> else</b></p>
127、;<p> cout<<endl<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p><b> }//while</b></p><p><b> }</b></p><p><b> }</b>
128、</p><p><b> }</b></p><p> void PathAsk()</p><p><b> {</b></p><p> system("cls");</p><p><b> MGraph G;</b>
129、;</p><p> char choose[1];</p><p> char start[10],end[10];</p><p> int i,j,flag=0,flag1=1,flag2=0,flag3=1;</p><p><b> Read(G);</b></p><p>
130、cout<<"\n\n\n"<<setw(43)<<"民大景點(diǎn):"<<endl<<endl;</p><p> for(i=0;i<G.number;i++)</p><p> cout<<setw(34)<<"("<<G.V
131、[i].code<<")"<<G.V[i].name<<endl;</p><p> cout<<endl<<setw(45)<<"請(qǐng)輸入景點(diǎn)代碼!"<<endl;</p><p><b> while(1)</b></p>&
132、lt;p><b> { </b></p><p> flag=0,flag1=1,flag2=0,flag3=1;</p><p> cout<<endl<<setw(40)<<"起點(diǎn):";</p><p> cin>>start;</p>&l
133、t;p> for(i=0;i<G.number;i++)</p><p><b> {</b></p><p> if(strcmp(G.V[i].code,start)==0)</p><p><b> {</b></p><p><b> flag1=0;<
134、/b></p><p> cout<<setw(40)<<"終點(diǎn):";</p><p><b> cin>>end;</b></p><p> for(j=0;j<G.number;j++)</p><p><b> {</b&g
135、t;</p><p> if(strcmp(G.V[j].code,end)==0)</p><p><b> {</b></p><p><b> flag3=0;</b></p><p> Dijkstra(G,i,j);</p><p><b> w
136、hile(1)</b></p><p><b> {</b></p><p> cout<<setw(48)<<"是否繼續(xù)查詢(Y/N):";</p><p> cin>>choose;</p><p> if(strcmp(choose,&qu
137、ot;Y")==0||strcmp(choose,"y")==0)</p><p><b> {</b></p><p> flag2=1;break;}</p><p> else if(strcmp(choose,"N")==0||strcmp(choose,"n"
138、)==0)</p><p><b> {</b></p><p> flag=1;UserMenu();break;</p><p><b> }</b></p><p><b> else</b></p><p> cout<<e
139、ndl<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p><b> }//while</b></p><p> if(flag||flag2)</p><p><b> break;</b></p><p><b&
140、gt; }</b></p><p> if(flag||flag2)</p><p><b> break;</b></p><p><b> }//for</b></p><p><b> if(flag3)</b></p><p&g
141、t;<b> {</b></p><p> cout<<endl<<setw(44)<<"沒(méi)有該終點(diǎn)!"<<endl;</p><p><b> while(1)</b></p><p><b> {</b></p>
142、;<p> cout<<setw(48)<<"是否繼續(xù)查詢(Y/N):";</p><p> cin>>choose;</p><p> if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0)</p><p>
143、<b> {</b></p><p> flag2=1;break;}</p><p> else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0)</p><p><b> {</b></p><p>
144、; flag=1;UserMenu();break;</p><p><b> }</b></p><p><b> else</b></p><p> cout<<endl<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p>
145、<p><b> }//while</b></p><p><b> }</b></p><p> if(flag2||flag)</p><p><b> break;</b></p><p><b> }</b></p>
146、;<p> if(flag||flag2)</p><p><b> break;</b></p><p><b> }//for</b></p><p><b> if(flag1)</b></p><p><b> {</b>&
147、lt;/p><p> cout<<endl<<setw(44)<<"沒(méi)有該起點(diǎn)!"<<endl;</p><p><b> while(1)</b></p><p><b> {</b></p><p> cout<<
148、;setw(48)<<"是否繼續(xù)查詢(Y/N):";</p><p> cin>>choose;</p><p> if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0)</p><p><b> {</b>&l
149、t;/p><p> flag2=1;break;}</p><p> else if(strcmp(choose,"N")==0||strcmp(choose,"n")==0)</p><p><b> {</b></p><p> flag=1;UserMenu();brea
150、k;</p><p><b> }</b></p><p><b> else</b></p><p> cout<<endl<<setw(43)<<"選擇錯(cuò)誤!"<<endl;</p><p><b> }//w
151、hile</b></p><p><b> }//if</b></p><p><b> }//while</b></p><p><b> }</b></p><p> void Dijkstra(MGraph G,int v,int i2) //v為出
152、發(fā)頂點(diǎn)</p><p><b> {</b></p><p> int dist[MAXV],path[MAXV];</p><p> int s[MAXV];</p><p> int mindis,i,j,u;</p><p> for(i=0;i<G.number;i++)&
153、lt;/p><p><b> {</b></p><p> dist[i]=G.edges[v][i]; //賦值</p><p><b> s[i]=0;</b></p><p> if(G.edges[v][i]<INF)</p><p> path[i]=
154、v;</p><p><b> else</b></p><p> path[i]=-1;</p><p><b> }</b></p><p><b> s[v]=1;</b></p><p> path[v]=0;</p>&
155、lt;p> for(i=0;i<G.number;i++)</p><p><b> {</b></p><p> mindis=INF;</p><p> for(j=0;j<G.number;j++)</p><p> if(s[j]==0&&dist[j]<mind
156、is)</p><p><b> {</b></p><p><b> u=j;</b></p><p> mindis=dist[j];</p><p><b> }</b></p><p><b> s[u]=1;</b&g
157、t;</p><p> for(j=0;j<G.number;j++)</p><p> if(s[j]==0)</p><p> if(G.edges[u][j]<INF&&dist[u]+G.edges[u][j]<dist[j])</p><p><b> {</b><
158、;/p><p> dist[j]=dist[u]+G.edges[u][j];</p><p> path[j]=u;</p><p><b> }</b></p><p><b> }</b></p><p> Dispath(G,dist,path,s,G.numb
159、er,v,i2);</p><p><b> }</b></p><p> void Ppath(MGraph G,int path[],int i,int v)</p><p><b> {</b></p><p><b> int k;</b></p>
160、<p> k=path[i];</p><p><b> if(k==v)</b></p><p><b> return;</b></p><p> Ppath(G,path,k,v);</p><p> cout<<G.V[k].name<<&quo
161、t;→";</p><p><b> }</b></p><p> void Dispath(MGraph G,int dist[],int path[],int s[],int n,int v,int i)</p><p><b> {</b></p><p> if(dist[
162、i]!=0)</p><p><b> {</b></p><p> if(s[i]==1)</p><p><b> {</b></p><p> cout<<endl<<setw(24)<<"從"<<G.V[v].nam
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)報(bào)告
- 校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)
- 算法課程設(shè)計(jì)--校園導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)---算法及分析課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 校園導(dǎo)航系統(tǒng)---算法與分析課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)導(dǎo)航系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---交通模擬導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)需求分析
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—校園導(dǎo)航問(wèn)題報(bào)告
- 算法課程設(shè)計(jì)—校園導(dǎo)航問(wèn)題
- 基于qt的校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)游系統(tǒng)課程設(shè)計(jì)報(bào)告
- android校園地圖導(dǎo)航系統(tǒng)
- 校園導(dǎo)游系統(tǒng)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論