




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-校園導(dǎo)游系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)目錄1.設(shè)計(jì)要求2.1需求分析2.2概要設(shè)計(jì)2.3各個(gè)模塊名稱(chēng)和功能2.4系統(tǒng)導(dǎo)游主界面前臺(tái)系統(tǒng)后臺(tái)系統(tǒng)退出系統(tǒng)3實(shí)驗(yàn)總結(jié)參考文獻(xiàn)1.設(shè)計(jì)要求設(shè)計(jì)一個(gè)校園導(dǎo)游程序,為來(lái)訪的客人提供各種信息查詢效勞。2.1需求分析設(shè)計(jì)學(xué)校的校園平面圖。選取假設(shè)干個(gè)有代表性的景點(diǎn)抽象成一個(gè)無(wú)向帶權(quán)圖無(wú)向網(wǎng),所含景點(diǎn)不少于 30 個(gè)。以圖中頂點(diǎn)表示校各景點(diǎn),邊上的權(quán)值表示兩景點(diǎn)之間的距離。存放景點(diǎn)代號(hào)、名稱(chēng)、簡(jiǎn)介等信息供用戶查詢。為來(lái)訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。為來(lái)訪客人提供圖中任意景點(diǎn)之間的問(wèn)路查詢??梢詾樾@平面圖增加或刪除景點(diǎn)或邊,修改邊上的權(quán)值等。景點(diǎn)距離圖2.2概要設(shè)計(jì)校
2、園旅游模型是由景點(diǎn)和景點(diǎn)之間的路徑組成的,所以這完全可以用數(shù)據(jù)構(gòu)造中的圖來(lái)模擬。用圖的結(jié)點(diǎn)代表景點(diǎn),用圖的邊代表景點(diǎn)之間的路徑。所以首先應(yīng)設(shè)計(jì)一個(gè)圖類(lèi)。結(jié)點(diǎn)值代表景點(diǎn)信息,邊的權(quán)值代表景點(diǎn)間的距離。結(jié)點(diǎn)值及邊的權(quán)值用順序表存儲(chǔ),所以需要設(shè)計(jì)一個(gè)順序表類(lèi)。本系統(tǒng)需要查詢景點(diǎn)信息和求一個(gè)景點(diǎn)到另一個(gè)景點(diǎn)的最短路徑長(zhǎng)度及路線,為方便操作,所以給每個(gè)景點(diǎn)一個(gè)代碼,用構(gòu)造體類(lèi)型實(shí)現(xiàn)。計(jì)算路徑長(zhǎng)度和最短路線時(shí)可用迪杰斯特拉Dijkastra算法實(shí)現(xiàn)。最后用 switch 選擇語(yǔ)句選擇執(zhí)行瀏覽景點(diǎn)信息或查詢最短路徑。1、主界面設(shè)計(jì)為了實(shí)現(xiàn)校園導(dǎo)游系統(tǒng)各功能的管理,首先設(shè)計(jì)一個(gè)含有多個(gè)菜單項(xiàng)的主控菜單子程序以
3、系統(tǒng)的各項(xiàng)子功能,方便用戶使用本系統(tǒng)。2、存儲(chǔ)構(gòu)造設(shè)計(jì)本系統(tǒng)采用圖構(gòu)造類(lèi)型mgraph存儲(chǔ)抽象校園圖的信息。其中,各景點(diǎn)間的鄰接關(guān)系用圖鄰接矩陣類(lèi)型adjmatri*存儲(chǔ);景點(diǎn)頂點(diǎn)信息用構(gòu)造數(shù)組(ve*s)存儲(chǔ),其中每個(gè)數(shù)組元素是一個(gè)構(gòu)造變量,包含景點(diǎn)編號(hào)、景點(diǎn)名稱(chēng)及景點(diǎn)介紹三個(gè)分量;圖的頂點(diǎn)個(gè)數(shù)及邊的條數(shù)由分量 ve*num、arum 表示,它們是整型數(shù)據(jù)。3、系統(tǒng)功能設(shè)計(jì)本系統(tǒng)除了要完成圖的初始化功能外還設(shè)置了9個(gè)子功能。圖的初始化由 initgraph()函數(shù)實(shí)現(xiàn)。依據(jù)讀入的圖的頂點(diǎn)個(gè)數(shù)和邊的條數(shù),分別初始化圖構(gòu)造中圖的頂點(diǎn)數(shù)組和圖的鄰接矩陣。9個(gè)子功能的設(shè)計(jì)描述如下。1 景點(diǎn)信息查詢景
4、點(diǎn)信息查詢由函數(shù) seeabout()實(shí)現(xiàn)。該功能根據(jù)用戶輸入的景點(diǎn)編號(hào)輸出該景點(diǎn)的相關(guān)信息。如景點(diǎn)編號(hào)、名稱(chēng)等。2 學(xué)校景點(diǎn)介紹學(xué)校景點(diǎn)介紹由函數(shù) browsecampus()實(shí)現(xiàn)。當(dāng)用戶選擇該功能,系統(tǒng)即能輸出學(xué)校全部景點(diǎn)的信息:包括景點(diǎn)編號(hào)、景點(diǎn)名稱(chēng)及景點(diǎn)介紹。3 相鄰的景點(diǎn)及其距離為使游客能夠知道其周?chē)木包c(diǎn)和路徑,方便他們迅速知道其所在位置和周?chē)畔? 查看瀏覽線路查看瀏覽線路由函數(shù) shortestpath_dij()實(shí)現(xiàn)。該功能采用迪杰斯特拉(Dijkstra)算法實(shí)現(xiàn)。當(dāng)用戶選擇該功能,系統(tǒng)能根據(jù)用戶輸入的起始景點(diǎn)編號(hào),求出從該景點(diǎn)到其他景點(diǎn)的最短路徑線路及距離。當(dāng)用戶選擇該功
5、能,系統(tǒng)能根據(jù)用戶輸入的起始景點(diǎn)及目的景點(diǎn)編號(hào),查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的最短路徑線路及距離。5 更改圖信息修改一個(gè)已有景點(diǎn)的相關(guān)信息、刪除一個(gè)景點(diǎn)及其相關(guān)信息、刪除一條路徑、加一條路徑、修改路徑長(zhǎng)度、添加一個(gè)景點(diǎn)6 數(shù)據(jù)平安防設(shè)置密碼,能保證數(shù)據(jù)不會(huì)被隨便更改,由pass()判定密碼是否正確,可由changepw()函數(shù)修改密碼,初始密碼為gdufs*7 寫(xiě)入文件并保存修改翻開(kāi)該軟件,假設(shè)沒(méi)有g(shù)raph.t*t,則會(huì)由系統(tǒng)初始化生成一個(gè)graph.t*t,假設(shè)已存在該文檔會(huì)由該文檔中的容初始化系統(tǒng)。8 恢復(fù)初始狀態(tài)假設(shè)數(shù)據(jù)已經(jīng)顯得很雜亂并很難修理,就可以啟用這個(gè)功能9 退出即退出校園導(dǎo)游系統(tǒng),由
6、 e*it(0)函數(shù)實(shí)現(xiàn)2.3函數(shù)構(gòu)造void initgraph(mgraph &G); /依據(jù)讀入的圖的頂點(diǎn)個(gè)數(shù)和邊的條數(shù),/分別初始化圖構(gòu)造中圖的頂點(diǎn)向量數(shù)組和圖的鄰接矩陣void browsecampus(mgraph G); /輸出學(xué)校全部景點(diǎn)的信息:編號(hào)、名稱(chēng)、介紹void cgraph(mgraph &G,Password &pw);/構(gòu)造無(wú)向圖和讀寫(xiě)文件graph。t*tvoid writet*t(mgraph &G,Password &pw);/寫(xiě)入文件int pass(Password pw);/認(rèn)證密碼的正確與否,正確返回1,錯(cuò)誤返
7、回0void reception(mgraph &G); /前臺(tái)效勞函數(shù)void seeabout(mgraph &G); /景點(diǎn)信息void shortestpath_dij(mgraph G); /該景點(diǎn)到其他景點(diǎn)的最短路徑線路及距離void near(mgraph G); /相鄰的景點(diǎn)及其距離void changegraph(mgraph &G,Password &pw); /后臺(tái)函數(shù),并調(diào)用void changeP(mgraph &G,Password &pw); /修改一個(gè)已有景點(diǎn)的相關(guān)信息void deleteP(mgraph &am
8、p;G,Password &pw); /刪除一個(gè)景點(diǎn)及其相關(guān)信void deleteL(mgraph &G,Password &pw); /刪除一條路徑void addL(mgraph &G,Password &pw); /添加一條路徑void changeL(mgraph &G,Password &pw); /修改路徑長(zhǎng)度void Add(mgraph &G,Password &pw); /添加一個(gè)景點(diǎn)void changepw(mgraph &G,Password &pw); /修改密碼void reg
9、raph(mgraph &G,Password &pw); /恢復(fù)初始狀態(tài)2.42.4校園導(dǎo)游主界面程序運(yùn)行,后臺(tái)對(duì)圖構(gòu)造進(jìn)展初始化,運(yùn)行結(jié)果如圖。2.4主界面前臺(tái)系統(tǒng)前臺(tái)系統(tǒng)是游客瀏覽查詢界面。如圖游客瀏覽界面?zhèn)€別景點(diǎn)的相關(guān)信息查詢景點(diǎn)的相關(guān)信息查詢是通過(guò)seeabout ( )函數(shù)來(lái)調(diào)用輸出的,在前臺(tái)系統(tǒng)輸入1,輸入任一景點(diǎn)編號(hào)即可知道其信息。運(yùn)行結(jié)果如圖信息查詢?nèi)我鈨删包c(diǎn)間最短路徑查詢根據(jù)用戶的需求,在用戶輸入了起點(diǎn)和終點(diǎn)后計(jì)算出最短路徑是哪一條路徑。例如起點(diǎn)是3.中國(guó)銀行,終點(diǎn)是15.教學(xué)樓A棟。運(yùn)行結(jié)果如圖任意兩景點(diǎn)間最短路徑查詢輸出所有景點(diǎn)信息為方便用戶一次性知道所
10、有景點(diǎn)信息,設(shè)置了查詢所有景點(diǎn)的信息如圖輸出所有景點(diǎn)信息相鄰的景點(diǎn)及其距離為使游客能夠知道其周?chē)木包c(diǎn)和路徑,方便他們迅速知道其所在位置和周?chē)畔?。如圖相鄰的景點(diǎn)及其距離后臺(tái)系統(tǒng)輸入密碼為防止他人隨意修改景點(diǎn)信息,需密碼驗(yàn)證身份,初始密碼為gdufs*,進(jìn)入后臺(tái)系統(tǒng)后可修改密碼,如圖輸入密碼后臺(tái)效勞后臺(tái)效勞具有以下功能:修改一個(gè)已有景點(diǎn)的相關(guān)信息;刪除一個(gè)景點(diǎn)及其相關(guān)信息;刪除一條路徑;添加一條路徑;修改路徑長(zhǎng)度;添加一個(gè)景點(diǎn);修改密碼;恢復(fù)初始狀態(tài)。如圖。功能如圖至后臺(tái)效勞修改一個(gè)已有景點(diǎn)的相關(guān)信息刪除一個(gè)景點(diǎn)及其相關(guān)信息刪除一條路徑添加一條路徑修改路徑長(zhǎng)度 2.4.26 添加一個(gè)景點(diǎn)修改密
11、碼恢復(fù)初始狀態(tài)在后臺(tái)系統(tǒng)輸入8,就會(huì)詢問(wèn)你是否恢復(fù)初始狀態(tài),暗“Y將會(huì)使之前一切修改的數(shù)據(jù)信息都恢復(fù)原樣,重新初始化?;謴?fù)初始狀態(tài)退出系統(tǒng)用戶滿足了需求之后,只要在主界面菜單處輸入0便可退出此次校園導(dǎo)游系統(tǒng)。運(yùn)行結(jié)果如圖。退出系統(tǒng)3總結(jié)由于設(shè)計(jì)者水平有限,本導(dǎo)游圖系統(tǒng)的功能還比較簡(jiǎn)單,沒(méi)有求出兩景點(diǎn)間的多條可行路徑供游客選擇,無(wú)法在界面中顯示出地圖;由于鄰接矩陣是30*30的,所以無(wú)法在一個(gè)界面中完整簡(jiǎn)潔的顯示出來(lái)。還有個(gè)很好的想法也沒(méi)有實(shí)現(xiàn),就是怎樣求出游完所有景點(diǎn)是的最短路徑和線路,這樣游客就不需要重復(fù)走過(guò)幾個(gè)景點(diǎn)。在這次作業(yè)中,我積累了不少經(jīng)歷,提高了動(dòng)手能力。在編程序過(guò)程中不要急于求成
12、,如果一下字把所有的功能編出來(lái)了再去編譯,一旦出錯(cuò),就很難找出是哪里錯(cuò)誤了,這就需要一個(gè)一個(gè)的實(shí)現(xiàn)了。這次作業(yè)也讓我增加了對(duì)文件流的理解。參考文獻(xiàn)1嚴(yán)蔚敏,冬梅,吳偉民.數(shù)據(jù)構(gòu)造C語(yǔ)言版.人民郵電.2021.2王珊珊,臧洌,志航.C+程序設(shè)計(jì)教程第二版.機(jī)械工業(yè).2021:/程序名稱(chēng):校園導(dǎo)游系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)/程序員:Joebug/編寫(xiě)時(shí)間:2021 年6月*include <iostream>*include <string.h>*include <stdlib.h>*include <fstream>*include <conio.h&g
13、t;using namespace std;*define N 50*define M 10typedef struct Infor /景點(diǎn)構(gòu)造體char name20; /景點(diǎn)名稱(chēng)char inf100; /景點(diǎn)信息Infor;typedef structint adjNN; /各景點(diǎn)間的鄰接關(guān)系用圖鄰接矩陣類(lèi)型Infor ve*sN; /景點(diǎn)頂點(diǎn)信息:int ve*num,arum; /圖的頂點(diǎn)個(gè)數(shù)及邊的條數(shù)mgraph;typedef struct char p6; Password;char inform30100="信息男宿舍,后面是環(huán),與風(fēng)采園相近,前面是南苑9-12棟!
14、","一樓價(jià)格還好,但飯菜比較難吃,二樓較貴,飯菜還行!","中國(guó)銀行營(yíng)業(yè)廳,如果要辦理業(yè)務(wù),需很早地去排隊(duì);有ATM機(jī)!","二樓有自強(qiáng)社辦公室、校學(xué)生會(huì)辦公室一樓有健身房!","東西較貴但品類(lèi)根本齊全!","主要是教師居住。喜祥數(shù)碼港要收費(fèi),云山數(shù)碼港在不換硬件條件下免費(fèi)修!","主要接待外來(lái)人員,招待所!","一樓有糖水和奶茶供應(yīng),晚上總有很多部門(mén)在此開(kāi)會(huì)。二樓有許多套餐!","一樓群眾點(diǎn)菜,品類(lèi)比三飯多。二樓的價(jià)格在8元左右!&
15、quot;,"女生宿舍,北苑三棟樓下有創(chuàng)業(yè)園!","組成巡邏隊(duì),協(xié)助學(xué)校保障校園平安。!","位于保衛(wèi)處后面,在校生??床≈恍柚Ц逗苌俚馁M(fèi)用!","具有防空洞;連接宿舍區(qū)和教學(xué)區(qū)!","在隧道口的上方,可以乘坐很多路的公交車(chē)!","一樓有中國(guó)銀行ATM。早上和中午前面有校巴。不少活動(dòng)的舉辦地點(diǎn)!","是學(xué)習(xí)的主要地方,教室里面設(shè)施較為齊全,有多媒體、空調(diào)、電視等,后面是語(yǔ)心湖和實(shí)驗(yàn)樓!","早上會(huì)有學(xué)生在那里練嗓子,以及讀書(shū)!",&qu
16、ot;多種會(huì)議比賽的場(chǎng)所!","學(xué)校政要的辦公室所在地!","各學(xué)院教師的辦公室所在地!","拍畢業(yè)照時(shí),校友回來(lái)時(shí)的聚集之地!","擺放著很多電腦的地方!","位于教學(xué)樓和實(shí)驗(yàn)樓之間,湖水平靜,還有黑天鵝嬉戲于水上!","各種活動(dòng)的舉辦場(chǎng)所!","主要是藝術(shù)生上課的地方,周六日為雅思考場(chǎng)!","重要會(huì)議進(jìn)展的地方,黨課和軍訓(xùn)理論課在這里上,有空調(diào)!","圖書(shū)館除了中英文借閱區(qū)與雜志借閱區(qū)外,還有自習(xí)區(qū);前面有大廣場(chǎng)
17、,最前面是學(xué)校正門(mén)!","有排球場(chǎng)、籃球場(chǎng),外有足球場(chǎng)。還有游泳池、網(wǎng)球場(chǎng)!","體育館有多個(gè)觀眾席;中央可用做正規(guī)比賽場(chǎng)所。日常用來(lái)上羽毛球課、跆拳道課!","位于圖書(shū)館前面,學(xué)術(shù)報(bào)告廳與藝術(shù)樓中間,雖然不宏偉,但是也是一個(gè)標(biāo)志!"char Name3020="南苑13棟","風(fēng)采園(三飯)","中國(guó)銀行","學(xué)活&水榭", "又康超市","師苑&數(shù)碼港","廣外友苑"
18、,"博雅園(二飯)","文采園(一飯)","創(chuàng)業(yè)園","后勤&保衛(wèi)處","校醫(yī)室","隧道口","廣外公交站","教學(xué)樓A棟","教學(xué)樓E、F棟","鳳凰山坡","八角樓","校辦公樓","院系辦公樓","校友林","實(shí)驗(yàn)樓","語(yǔ)心湖","學(xué)術(shù)報(bào)告廳"
19、;,"藝術(shù)樓","大會(huì)堂","圖書(shū)館","泳池&操場(chǎng)","體育館&場(chǎng)","正校門(mén)"void initgraph(mgraph &G); /依據(jù)讀入的圖的頂點(diǎn)個(gè)數(shù)和邊的條數(shù), /分別初始化圖構(gòu)造中圖的頂點(diǎn)向量數(shù)組和圖的鄰接矩陣void browse(mgraph G); /輸出學(xué)校全部景點(diǎn)的信息:編號(hào)、名稱(chēng)、介紹void cgraph(mgraph &G,Password &pw); /構(gòu)造無(wú)向圖和讀寫(xiě)文件graph。t*tvoid wr
20、itet*t(mgraph &G,Password &pw); /寫(xiě)入文件int pass(Password pw); /認(rèn)證密碼的正確與否,正確返回1,錯(cuò)誤返回0 void reception(mgraph &G); /前臺(tái)效勞函數(shù)void seeabout(mgraph &G); /景點(diǎn)信息void shortestpath_dij(mgraph G); /該景點(diǎn)到其他景點(diǎn)的最短路徑線路及距離void browsecampus(mgraph G); /輸出學(xué)校全部景點(diǎn)的信息:編號(hào)、名稱(chēng)、介紹void near(mgraph G); /相鄰的景點(diǎn)及其距離voi
21、d changegraph(mgraph &G,Password &pw); /后臺(tái)函數(shù),并調(diào)用void changeP(mgraph &G,Password &pw); /修改一個(gè)已有景點(diǎn)的相關(guān)信息void deleteP(mgraph &G,Password &pw); /刪除一個(gè)景點(diǎn)及其相關(guān)信void deleteL(mgraph &G,Password &pw); /刪除一條路徑void addL(mgraph &G,Password &pw); /添加一條路徑void changeL(mgraph &am
22、p;G,Password &pw); /修改路徑長(zhǎng)度void Add(mgraph &G,Password &pw); /添加一個(gè)景點(diǎn)void changepw(mgraph &G,Password &pw); /修改密碼void regraph(mgraph &G,Password &pw); /恢復(fù)初始狀態(tài)int main()mgraph campus;Password pw;strcpy(pw.p,"gdufs*"); /初始化密碼initgraph(campus);cgraph(campus,pw);int n
23、,m=1;while(m) system("cls"); cout<<" 歡迎使用GDUFS校園導(dǎo)游系統(tǒng)"<<endl;cout<<" *"<<endl<<endl; cout<<" (1)前臺(tái)效勞(游客身份登陸)"<<endl; cout<<" (2)后臺(tái)效勞(管理員身份登陸)"<<endl; cout<<" (0)退出"<<endl<&
24、lt;endl;cout<<" *"<<endl;cout<<" 請(qǐng)輸入您的選擇(0-2):" cin>>n; switch(n) case 1: reception(campus); break; case 2:if(pass(pw)=1) changegraph(campus,pw); /后臺(tái)函數(shù)break; case 0: m=0;cout<<"您的使用!" <<endl<<"按任意鍵繼續(xù)" ;getch();e*it(0);
25、 default: cout<<" 您的輸入有誤,任意鍵繼續(xù)." getch(); void initgraph(mgraph &G) /依據(jù)讀入的圖的頂點(diǎn)個(gè)數(shù)和邊的條數(shù), /分別初始化圖構(gòu)造中圖的頂點(diǎn)向量數(shù)組和圖的鄰接矩陣int i,j;for(i=0;i<N;i+)for(j=0;j<N;j+) G.adjij=9999;for(i=0;i<30;i+)strcpy(G.ve*,Namei);strcpy(G.ve*si.inf,informi);G.ve*num=30;G.arum=45;G.adj01=55; G.
26、adj10=55; G.adj05=287; G.adj50=287;G.adj12=243; G.adj21=243;G.adj23=28; G.adj32=28;G.adj34=31; G.adj43=31;G.adj45=42; G.adj54=42;G.adj49=106; G.adj94=106; G.adj56=87; G.adj65=87;G.adj57=71; G.adj75=71;G.adj78=132; G.adj87=132;G.adj79=97; G.adj97=97;G.adj712=150; G.adj127=150;G.adj89=111; G.adj98=111
27、;G.adj811=151; G.adj118=151;G.adj813=126; G.adj138=126;G.adj911=257; G.adj119=257;G.adj1011=33; G.adj1110=33;G.adj1013=128; G.adj1310=128;G.adj1027=287; G.adj2710=287;G.adj1213=117; G.adj1312=117;G.adj1214=83; G.adj1412=83;G.adj1216=160; G.adj1612=160;G.adj1326=359; G.adj2613=359;G.adj1415=118; G.ad
28、j1514=118;G.adj1416=245; G.adj1614=245;G.adj1522=94; G.adj2215=94;G.adj1526=176; G.adj2615=176;G.adj1618=62; G.adj1816=62;G.adj1718=74; G.adj1817=74;G.adj1719=88; G.adj1917=88;G.adj1722=218; G.adj2217=218;G.adj1920=64; G.adj2019=64;G.adj2021=167; G.adj2120=167;G.adj2122=68; G.adj2221=68;G.adj2123=13
29、2; G.adj2321=132;G.adj2326=203; G.adj2623=203;G.adj2329=60; G.adj2923=60;G.adj2425=129; G.adj2524=129;G.adj2428=263; G.adj2824=263;G.adj2429=80; G.adj2924=80;G.adj2526=181; G.adj2625=181;G.adj2527=212; G.adj2725=212;G.adj2528=192; G.adj2825=192;G.adj2627=164; G.adj2726=164;G.adj2728=354; G.adj2827=3
30、54;void cgraph(mgraph &G,Password &pw) /寫(xiě)入文件并初始化int i,j,dist;char c;ifstream infile("graph.t*t");if(!infile)infile.close();writet*t(G,pw);elseinfile.close();ifstream infile("graph.t*t");infile>>G.ve*num>>G.arum;for(i=0;i<G.ve*num;i+)infile>>G.ve*si.na
31、me;infile>>G.ve*si.inf; for(i=0;i<G.ve*num;i+)for(j=0;j<G.ve*num;j+)infile>>dist;G.adjij=dist;for(i=0;i<6;i+)infile>>pw.pi; infile.close();void writet*t(mgraph &G,Password &pw) /寫(xiě)入文件int i,j;ofstream outfile("graph.t*t");outfile<<G.ve*num<<endl
32、<<G.arum<<endl;for(i=0;i<G.ve*num;i+)outfile<<G.ve*<<endl<<G.ve*si.inf<<endl; for(i=0;i<G.ve*num;i+)for(j=0;j<G.ve*num;j+)outfile<<G.adjij<<" "for(i=0;i<6;i+)outfile<<pw.pi<<" "outfile.close();void bro
33、wse(mgraph G) /輸出學(xué)校全部景點(diǎn)的信息:編號(hào)、名稱(chēng)int j=0,k;for(int i=0;i<G.ve*num;i+)k=i+1;cout<<k<<"."<<G.ve*<<'t'j+;if(j%3=0)cout<<endl;if(j%3!=0)cout<<endl;int pass(Password pw)char ch6,judge=1;cout<<" 請(qǐng)輸入密碼:"for(int i=0;i<6;i+)chi
34、=getch();cout.flush();cout<<"*" for(int i=0;i<6;i+)if(pw.pi!=chi)judge=0; return judge; void changepw(mgraph &G,Password &pw)int i,b=1;char ch6,ch16,judge1=1,judge2=1;while(b=1)cout<<"請(qǐng)輸入原密碼:"<<endl;for(i=0;i<6;i+)chi=getch();cout.flush();cout<&
35、lt;"*" for(i=0;i<6;i+)if(pw.pi!=chi)judge1=0;if(judge1)cout<<endl<<"請(qǐng)輸入新密碼:"<<endl;for(i=0;i<6;i+)chi=getch();cout.flush();cout<<"*" cout<<endl<<"請(qǐng)確認(rèn)新密碼:"<<endl;for(i=0;i<6;i+)ch1i=getch();cout.flush();cout<
36、;<"*" for(i=0;i<6;i+)if(chi!=ch1i)judge2=0; if(judge2)for(i=0;i<6;i+)pw.pi=chi;cout<<endl<<"修改成功!" <<endl;writet*t(G,pw);elsecout<<endl<<"修改錯(cuò)誤!" <<endl; else cout<<"密碼錯(cuò)誤!"<<endl;cout<<endl<<&
37、quot;返回后臺(tái)系統(tǒng)按0,繼續(xù)修改按1"<<endl; cin>>b;cout<<endl; /前臺(tái)/ void reception(mgraph &G) /前臺(tái)函數(shù) int n,i,j; while(1) system("cls");/清屏 cout<<"*歡迎使用前臺(tái)系統(tǒng)*"<<endl; cout<<"(1)個(gè)別景點(diǎn)信息查詢"<<endl; cout<<"(2)問(wèn)路查詢"<<endl
38、; cout<<"(3)輸出所有景點(diǎn)信息"<<endl; cout<<"(4)相鄰的景點(diǎn)及其距離"<<endl; cout<<"(0)返回上一級(jí)菜單"<<endl; cout<<"請(qǐng)輸入您的選擇(0-4):" cin>>n; switch(n) case 1: seeabout(G); break; case 2: shortestpath_dij(G); break; case 3: browsecampus(G);
39、break; case 4: near(G); break; case 0: return; break; default: cout<<"您的輸入有誤,任意鍵繼續(xù)."<<endl; getch(); void seeabout(mgraph &G) /景點(diǎn)信息int a; int b=1;system("cls");browse(G); while(b) cout<<"請(qǐng)輸入要查找的景點(diǎn)信息"<<endl; cin>>a; a-;if(a>=0&&am
40、p;a<G.ve*num)cout<<a+1<<"."<<G.ve*<<endl<<G.ve*sa.inf<<endl; else cout<<"輸入錯(cuò)誤,無(wú)此景點(diǎn)"<<endl; cout<<"返回前臺(tái)系統(tǒng)按0,繼續(xù)查找按1"<<endl; cin>>b;while(b!=0&&b!=1)cout<<"返回前臺(tái)系統(tǒng)按0,繼續(xù)查找按1"&
41、lt;<endl;cin>>b; void shortestpath_dij(mgraph G) /該景點(diǎn)到其他景點(diǎn)的最短路徑線路及距離 int b=1,i,j,vt,v,v0,w,min; bool SN; int DN,PathN; int n=G.ve*num; system("cls"); browse(G); while(b) cout<<"請(qǐng)輸入要查詢路徑的兩個(gè)景點(diǎn)的編號(hào)"<<endl; cin>>v0; v0-; cin>>vt; vt-; for(v=0;v<n;v+
42、) Sv=false; Dv=G.adjv0v; if(Dv<9999) Pathv=v0;/v0是v的前趨 else Pathv=-1;/v無(wú)前趨 Dv0=0; Sv0=true; for(i=1;i<n;i+) min=9999; for(w=0;w<n;w+) if(!Sw&&Dw<min) v=w; min=Dw;/選擇一條當(dāng)前的最短路徑,終點(diǎn)為v Sv=true; /將v參加S for(w=0;w<n;w+)/更新當(dāng)前最短路徑及距離 if(!Sw&&(Dv+G.adjvw<Dw) Dw=Dv+G.adjvw; Pat
43、hw=v; cout<<"距離為:"<<endl; cout<<Dvt<<endl; cout<<"要經(jīng)過(guò)"<<endl; int f=Pathvt,eN; i=0; while(f!=-1) ei=f; f=Pathf; i+; for(v=i-1;v>=0;v-) cout<<ev+1<<"."<<G.ve*<<"->" cout<<vt+1<&l
44、t;"."<<G.ve*<<endl; cout<<"返回后臺(tái)系統(tǒng)按0,繼續(xù)查詢按1"<<endl; cin>>b;void browsecampus(mgraph G) /輸出學(xué)校全部景點(diǎn)的信息:編號(hào)、名稱(chēng)、介紹int k;for(int i=0;i<G.ve*num;i+)k=i+1;cout<<k<<"."<<G.ve*<<endl<<G.ve*si.inf<<e
45、ndl;cout<<"按任意鍵返回前臺(tái)系統(tǒng)"<<endl;getch();void near(mgraph G) /相鄰的景點(diǎn)及其距離int b=1,i,j; bool a5050;system("cls"); while(b)browse(G);for(i=0;i<50;i+) for(j=0;j<50;j+) aij=false; for(i=0;i<G.ve*num;i+) for(j=0;j<G.ve*num;j+) if(G.adjij!=9999)if(!aij)cout<<i+1&
46、lt;<" <-> "<<j+1<<"t"<<G.adjij<<endl;aij=true;aji=true; cout<<"返回后臺(tái)系統(tǒng)按0"<<endl; cin>>b; /后臺(tái)函數(shù)/ void changegraph(mgraph &G,Password &pw) /修改圖信息 int n; while(1) system("cls"); cout<<"*歡迎使用后臺(tái)系統(tǒng)
47、*"<<endl; cout<<"(1)修改一個(gè)已有景點(diǎn)的相關(guān)信息"<<endl; cout<<"(2)刪除一個(gè)景點(diǎn)及其相關(guān)信息"<<endl; cout<<"(3)刪除一條路徑"<<endl; cout<<"(4)增加一條路徑"<<endl; cout<<"(5)修改一條路徑長(zhǎng)度"<<endl; cout<<"(6)增加景點(diǎn)&quo
48、t;<<endl; cout<<"(7)修改密碼"<<endl; cout<<"(8)恢復(fù)初始狀態(tài)"<<endl; cout<<"(0)返回上一級(jí)菜單"<<endl; cout<<"請(qǐng)輸入您的選擇(0-8):" cin>>n; switch(n) case 1: changeP(G,pw); break; case 2: deleteP(G,pw); break; case 3: deleteL(G,pw);
49、 break; case 4: addL(G,pw); break; case 5: changeL(G,pw); break; case 6: Add(G,pw); break; case 7: changepw(G,pw); break; case 8: regraph(G,pw); break; case 0: return; break; default: cout<<"您的輸入有誤,任意鍵繼續(xù)."<<endl; getch(); void changeP(mgraph &G,Password &pw) /修改一個(gè)已有景點(diǎn)的相
50、關(guān)信息int a; int b=1; while(b) system("cls");browse(G);cout<<"請(qǐng)輸入要修改景點(diǎn)信息的"<<endl; cin>>a; a-;if(a>=0&&a<=G.ve*num) cout<<a+1<<"."<<G.ve*<<endl<<G.ve*sa.inf<<endl; cout<<"請(qǐng)輸入該景點(diǎn)的修改后的信息&quo
51、t;<<endl; cin>>G.ve*sa.inf; cout<<"修改成功!"<<endl; cout<<"是否要保存.保存按1,不保存按2"<<endl; int c; cin>>c; if(c=1) writet*t(G,pw); elsecgraph(G,pw); else cout<<"error!輸入有誤!"<<endl; cout<<"返回后臺(tái)系統(tǒng)按0,繼續(xù)修改按1"<<
52、;endl; cin>>b; void deleteP(mgraph &G,Password &pw) /刪除一個(gè)景點(diǎn)及其相關(guān)信息int b=1,i,j,k; while(b) system("cls");browse(G);cout<<"請(qǐng)輸入要?jiǎng)h除的景點(diǎn)的編號(hào)"<<endl; cin>>i; i-; if(i>=0&&i<=G.ve*num) for(j=i;j<G.ve*num-1;j+) G.ve*sj=G.ve*sj+1; for(k=0;k<
53、;G.ve*num-1;k+) G.adjkj=G.adjkj+1; for(j=i;j<G.ve*num-1;j+) for(k=0;k<G.ve*num-1;k+) G.adjjk=G.adjj+1k; G.ve*num-; G.arum=0; for(i=0;i<G.ve*num;i+) for(j=0;j<G.ve*num;j+) if(G.adjij!=9999) G.arum+; G.arum=G.arum/2; b=0; cout<<"刪除成功!"<<endl; if(b!=0) cout<<&quo
54、t;輸入有誤!請(qǐng)看清楚!"<<endl; else cout<<"是否要保存.保存按1,不保存按2"<<endl; int c; cin>>c; if(c=1) writet*t(G,pw); elsecgraph(G,pw); cout<<"返回后臺(tái)系統(tǒng)按0,繼續(xù)刪除按1"<<endl; cin>>b; void deleteL(mgraph &G,Password &pw) /刪除一條路徑int b=1,i,j; bool a5050;system("cls"); while(b)browse(G);for(i=0;i<50;i+) for(j=0;j<50;j+) aij=fals
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年四氫苯酐資金籌措計(jì)劃書(shū)代可行性研究報(bào)告
- 2025云南省中考道法真題
- 幼兒園小班數(shù)學(xué)有趣的餅干教案
- 2025年公共關(guān)系專(zhuān)業(yè)考核試卷及答案
- 2025年公共關(guān)系與傳播考試題及答案
- 稀土投資項(xiàng)目可行性研究報(bào)告(立項(xiàng)備案模板)undefinedundefined
- 2025年工程造價(jià)管理考試卷及答案
- 2025年食品安全與營(yíng)養(yǎng)學(xué)試題及答案
- 第7課 百家爭(zhēng)鳴 課件 初中歷史七年級(jí)上冊(cè)部編版
- 滬粵版(2024)八年級(jí)下冊(cè)物理期末復(fù)習(xí)全冊(cè)知識(shí)點(diǎn)考點(diǎn)提綱
- 邊坡作業(yè)安全教育培訓(xùn)
- 《2025年CSCO腎癌診療指南》解讀
- 小學(xué)語(yǔ)文跨學(xué)科主題學(xué)習(xí)策略研究
- 2022-2023學(xué)年浙江省溫州市永嘉縣人教PEP版四年級(jí)下冊(cè)期末測(cè)試英語(yǔ)試卷
- 東盟經(jīng)貿(mào)文化與習(xí)俗知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋海南外國(guó)語(yǔ)職業(yè)學(xué)院
- 國(guó)家開(kāi)放大學(xué)專(zhuān)科《社會(huì)調(diào)查研究與方法》期末紙質(zhì)考試總題庫(kù)2025春期考試版
- 2024年設(shè)備監(jiān)理師考試題庫(kù)及答案(歷年真題)
- 財(cái)務(wù)指標(biāo)分析培訓(xùn)課件
- 病案分析報(bào)告范文
- 工業(yè)自動(dòng)化設(shè)備維護(hù)保養(yǎng)操作手冊(cè)
- vte預(yù)防健康教育課件
評(píng)論
0/150
提交評(píng)論