數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)報(bào)告姓 名: 蔣小文 學(xué) 號(hào):110236100123 班 級(jí): 1班 專 業(yè): 網(wǎng)絡(luò)工程 指導(dǎo)教師:唐軼媛 蔣榮萍時(shí) 間:2012年7月5日 信息科學(xué)與工程學(xué)院目 錄摘要.1目的.2要求2題目.2任務(wù) .2 1).需求分析.3 2).概要設(shè)計(jì).4 3).詳細(xì)設(shè)計(jì).5 4).調(diào)試分析.8課設(shè)總結(jié).18附錄源代碼.19 目的 數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專業(yè)的核心課程,是一門實(shí)踐性很強(qiáng)的課程。課程設(shè)計(jì)是加強(qiáng)學(xué)生實(shí)踐能力的一個(gè)強(qiáng)有力手段,要求學(xué)生掌握數(shù)據(jù)結(jié)構(gòu)的應(yīng)用、算法的編寫、類C語(yǔ)言的算法轉(zhuǎn)換成C(C+)程序并上機(jī)調(diào)試的基本方法,還要求學(xué)生在完成程序設(shè)計(jì)的同時(shí)能夠?qū)懗霰容^規(guī)范的設(shè)計(jì)報(bào)告。

2、 要求 2.1 課程設(shè)計(jì)時(shí)間為2周;2.2 設(shè)計(jì)語(yǔ)言C(C+)不限;2.3 課余時(shí)間完成源程序和課程設(shè)計(jì)報(bào)告等文檔書寫工作,上機(jī)時(shí)間只能做調(diào)試工作。上機(jī)時(shí)帶上源程序、數(shù)據(jù)結(jié)構(gòu)教材、C語(yǔ)言教材。2.4 上機(jī)任務(wù)(1)選擇并定義合適的數(shù)據(jù)結(jié)構(gòu);(2)根據(jù)程序所要完成的基本要求,設(shè)計(jì)出完整的算法;(3)設(shè)計(jì)出主程序(main函數(shù)),使其成為完整的程序。 2.5 上機(jī)時(shí)間:上午8:30-11:30,下午3:00-5:30 題目題目:校園導(dǎo)航系統(tǒng)設(shè)計(jì)一個(gè)校園導(dǎo)游程序,后臺(tái)操作:3.1、操作員信息管理如修改密碼等3.2、能根據(jù)學(xué)校的規(guī)模進(jìn)行添加景點(diǎn)信息、修改景點(diǎn)信息等功能,3.3、若臨時(shí)有交通管制,能進(jìn)行

3、交通管制的設(shè)置和撤銷(如某某時(shí)間段那條路進(jìn)行那個(gè)方向的交通管制等)3.4、前臺(tái)為來(lái)訪的客人提供各種信息查詢服務(wù): 3.4.1、設(shè)計(jì)學(xué)校的校園平面圖,所含景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號(hào)、簡(jiǎn)介等信息;以邊表示路徑,存放路徑長(zhǎng)度等相關(guān)信息。 3.4.2、為來(lái)訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。 3.4.3、提供途中任意景點(diǎn)問(wèn)路查詢,即求任意兩個(gè)景點(diǎn)間的一條最短的簡(jiǎn)單路徑。任務(wù)4.1 需求分析 此系統(tǒng)使用者分為訪客與管理員,訪客按要求可直接使用本系統(tǒng)所具有的查詢兩景點(diǎn)間的最短距離,查詢景點(diǎn)的相關(guān)信息.管理員按要求在輸入密碼的情況下,可修改登錄密碼,修改景點(diǎn)信息,添加景

4、點(diǎn),添加景點(diǎn)信息,交通管制,撤銷交通管制,以及新建路徑.4.1.1 登錄:訪客無(wú)需登錄,首先將密碼存在一個(gè)文件中,當(dāng)輸入的密碼與從文件cipher.txt讀取的密碼相同,管理員方可進(jìn)入后臺(tái)管理員操作界面,4.1.2 修改登錄密碼:管理員進(jìn)入后臺(tái)操作管理員操作界面,若需改動(dòng)當(dāng)前的登錄密碼,首先必須要輸入原密碼,以確定是管理員自己修改密碼.在原密碼輸入正確的情況下輸入新密碼,為了管理員更好的確人自己的新密碼,必須兩次輸入的新密碼一致(password1=password2)才可以修改成功.4.1.3 添加新的結(jié)點(diǎn):若校園有新的景點(diǎn)出現(xiàn),管理員須將新的景點(diǎn)的相關(guān)信息加入系統(tǒng),將景點(diǎn)編號(hào),名字,景點(diǎn)介

5、紹這些信息寫入存儲(chǔ)景點(diǎn)信息的文件當(dāng)中.原來(lái)已經(jīng)有G.vernum個(gè)景點(diǎn),是一個(gè)G.vernum行G.vernum列的矩陣,加一個(gè)景點(diǎn)后便是一個(gè)G.vernum+1行G.vernum+1列的矩陣,將新結(jié)點(diǎn)與其他存在的直接路徑的結(jié)點(diǎn)之間的路徑權(quán)值.存入鄰接矩陣中,沒(méi)有直接路徑值的存一個(gè)無(wú)窮大的數(shù)(此系統(tǒng)用10000)于矩陣中,使得訪客可以查詢到新景點(diǎn)的相關(guān)信息和到達(dá)新景點(diǎn)的最短路徑.4.1.4 修改景點(diǎn)信息:若學(xué)校某景點(diǎn)的信息有改變,管理員進(jìn)入系統(tǒng)對(duì)景點(diǎn)的信息進(jìn)行修改,從文件information.txt.中讀取出景點(diǎn)信息,修改之后,再把信息存入information.txt中,使訪客了解最新的景

6、點(diǎn)信息.4.1.5 交通管制路徑:當(dāng)學(xué)校舉辦大型活動(dòng),或者大型考試的時(shí)候,對(duì)路進(jìn)行交通管制,以確保活動(dòng)的正常舉行,從connect.txt 讀取景點(diǎn)之間的鄰接矩陣,將需要進(jìn)行進(jìn)行交通管制的路徑賦值為一個(gè)無(wú)窮大的數(shù)(此系統(tǒng)用10000)來(lái)進(jìn)行對(duì)路徑的屏蔽作用.訪客要到達(dá)目的地需要繞道而行.4.1.6 恢復(fù)撤銷路徑:在活動(dòng)或者考試結(jié)束后,管理員需要對(duì)之前進(jìn)行交通管制的路徑進(jìn)行撤銷交通管制,此功能的實(shí)現(xiàn)過(guò)程與交通管制功能的實(shí)現(xiàn)過(guò)程剛好相反,將需要撤銷的路徑,將其路徑值有10000改成其真實(shí)路徑值,恢復(fù)正常的交通秩序.4.1.7 新建景點(diǎn)路徑:學(xué)??赡芸紤]為了廣大老師和學(xué)生的方面,可能會(huì)新建一些路徑,

7、例如國(guó)教樓和四坡食堂所建的風(fēng)雨橋,管理員便需要把新建的路徑加入系統(tǒng),此功能的實(shí)現(xiàn)代碼與撤銷交通管制的路徑完全相同,將景點(diǎn)的兩路徑值賦值為其真實(shí)值,存入connect.txt文件中.使得訪客能夠走最短的路徑到達(dá)目的地,節(jié)省時(shí)間體力,減少不必要的麻煩.4.1.8 查詢最短路徑:訪客無(wú)需密碼可直接使用本系統(tǒng),最為訪客,總是希望以最少的時(shí)間和路程到達(dá)自己的目的地,利用弗洛伊德算法,求出最短路徑,三維數(shù)組用來(lái)存儲(chǔ)量景點(diǎn)最短路徑的中間景點(diǎn),二維數(shù)組用于存放兩頂點(diǎn)間的路徑長(zhǎng)度.訪客在輸入自己的出發(fā)地點(diǎn)(或者當(dāng)前所在地點(diǎn)),再輸入目的地,方可在屏幕上顯示出出發(fā)地點(diǎn)到達(dá)目的地的最短路徑.4.1.9 查詢景點(diǎn)信息

8、:當(dāng)訪客進(jìn)入廣西民族大學(xué)時(shí),當(dāng)不知道該去哪個(gè)景點(diǎn)時(shí),可利用本功能進(jìn)行查詢各景點(diǎn)的信息,從information.txt中將文件讀取出來(lái),然后將我們需要的景點(diǎn)信息顯示出來(lái),訪客根據(jù)顯示的信息選擇自己感興趣的景點(diǎn).4.2概要設(shè)計(jì)1). 數(shù)據(jù)對(duì)象V:V具有相同特性的數(shù)組元素的集合,稱為頂點(diǎn)集2). 數(shù)據(jù)關(guān)系R:R=VR VR=|P(x,y)(x,y屬于V)ADT Graph 數(shù)據(jù)對(duì)象V:一個(gè)集合,該集合中的所有元素具有相同的特性 數(shù)據(jù)關(guān)系R:R=VR VR=|P(x,y)(x,y屬于V). 基本操作:1.Void main()2.void Welcome();/開(kāi)始?xì)g迎界面3.void Select

9、();/選擇管理員和訪客4.void InputPassword();/密碼輸入5.void Administer();/管理員操作6.int Increat_point_information();/增加景點(diǎn)信息7.void ChagePassword();/修改密碼8.void AddPoint();/增加景點(diǎn)9.void DeletPath();/交通管制,刪除路徑10.void Cancel();/取消交通管制,恢復(fù)路徑11.void NewPath();/新建路徑12.int Initgraph();/初始化鄰接矩陣13.void CorrectInformation();/修改景點(diǎn)

10、信息14.void StartGuide();/訪客界面15.int SearchPath();/查找最短路徑16.void SearchInformation();/查找景點(diǎn)信息17.void Return();/返回主菜單18.int Read_sight_information();/讀取景點(diǎn)信息文件19.void Remeber();/密碼錯(cuò)誤提示20.void Time();/時(shí)間停留21.void Goodbye();/退出系統(tǒng)4.3詳細(xì)設(shè)計(jì)4.3.1校園景點(diǎn)路徑平面圖4.3.2總體流程4.3.3各主要功能偽代碼;void main 1.歡迎使用本系統(tǒng); 2. Select();/

11、使用者選擇自己是管理員/訪客 3.退出本系統(tǒng)使用/密碼輸入Inputpassword password=從文件中讀取密碼 cincipher;/輸入密碼 if(cipher=password)coutcipher2if(cipher1=cipher2)coutpassword1;coutpassword2;if(password1=password2;)修改成功else修改失敗;返回主菜單/增加景點(diǎn)信息int Increat_point_information()依次輸入景點(diǎn)信息的編號(hào),名稱,信息存入number name information中;利用C+里的ios:app,在文件末尾追加信

12、息/交通管制 void DeletPath()首先確定進(jìn)行交通管制的路徑相關(guān)聯(lián)的兩個(gè)景點(diǎn)編號(hào)i,j;讀取矩陣文件connect.txt文件,將信息讀取到二維數(shù)組中,對(duì)應(yīng)于景點(diǎn)編號(hào)的位置的路徑權(quán)值賦值為10000,用以屏蔽路徑,表示進(jìn)行交通管制單向交通管制:單向1 G.adjarcsij.adj=10000;單向2 G.adjarcsji.adj=10000;雙向交通管制:G.adjarcsherethat.adj=G.adjarcsthathere.adj=10000存入文件即可/取消交通管制 void Cancel()實(shí)現(xiàn)過(guò)程與進(jìn)行交通管制的實(shí)現(xiàn)方式正好相反,確定于取消路徑相關(guān)聯(lián)的兩個(gè)景點(diǎn)標(biāo)

13、號(hào),i j;路徑長(zhǎng)度weight;cinweight;G.adjarcsij.adj=G.adjarcsji.adj=weight;/新建路徑void NewPath()實(shí)現(xiàn)代碼與取消交通管制代碼完全一致;/修改景點(diǎn)信息void CorrectInformation()從information中讀取景點(diǎn)的編號(hào),名稱,介紹的相關(guān)信息outfileG.vexi.numberG.G.rmationarcsvw.adj;/把v,w路徑的值放到Dvw中 v,w是,v,w路徑上的景點(diǎn),所以pvwv=1;pvww=1; 如果u到v,w之間的兩條路徑之和小于v,w之間的路徑

14、,則使Dvw=Dvu+Duw 若i是v,u上的最短路徑的景點(diǎn),或是u,w之間最短路徑的景點(diǎn),則i是v,w之間最短路徑上的景點(diǎn)int flag=1;while(flag) 輸入出發(fā)點(diǎn)和目的地的編號(hào):k, jif(kG-vernum|jG-vernum)景點(diǎn)編號(hào)不存在!請(qǐng)重新輸入出發(fā)點(diǎn)和目的地的編號(hào):k, j if(k=0&k=0&j頂點(diǎn)數(shù)目) flag=0; 逐個(gè)輸出最短路徑上的景點(diǎn)名字以及總路線長(zhǎng)/查詢景點(diǎn)信息void SearchInformation()從information將全部的數(shù)據(jù)讀取出來(lái)請(qǐng)輸入要查詢的景點(diǎn)編號(hào)n;if(nG.vernum)該景點(diǎn)不存在,請(qǐng)重新輸入:else 根據(jù)編

15、號(hào)輸出對(duì)應(yīng)的景點(diǎn)信息;4.4調(diào)試分析4.1.密碼輸入正確:4.2.密碼修改成功:例:(將原密碼wwww改為aaaa)4.3.添加景點(diǎn)和景點(diǎn)信息:例:把八坡側(cè)門加入景點(diǎn)添加前:添加過(guò)程:添加后,information.txt和connect.txt里面的內(nèi)容自動(dòng)修改為:景點(diǎn)和景點(diǎn)信息添加成功4.4.交通管制:例:(對(duì)2(大禮堂)4(圖書館)的路進(jìn)行管制)交通管制前:管制過(guò)程:管制之后:4.5撤銷交通管制:例(撤銷(2大禮堂)-4(大禮堂)的路徑管制)恢復(fù)前:撤銷管制過(guò)程:撤銷管制之后:4.6新建路徑:例:(在1(南門)5(科技館)新建一條長(zhǎng)300米的路徑)新建前:connect.txt的內(nèi)容:新

16、建過(guò)程:新建后:4.7修改景點(diǎn)信息:例:(將0(東門)的信息改為相思湖大酒店)4.8.查詢景點(diǎn)信息:(例:查找剛剛新修改的0相思湖大酒店信息)4.9.查詢最短路徑:例:(查詢1(南門)-9(9坡)的最短路徑:課設(shè)總結(jié): 這是第二次做課程設(shè)計(jì)了,但卻使我感到什么是真正的編程,如何做一個(gè)項(xiàng)目,如何開(kāi)始,如何進(jìn)行,如何高效率的完成它。這次指導(dǎo)老師對(duì)我們十分的嚴(yán)格,要求我們按照軟件工程的要求來(lái),雖然一開(kāi)始我們十分的不適應(yīng),可是我們最終堅(jiān)持下來(lái)了,經(jīng)歷了這個(gè)過(guò)程,對(duì)這門學(xué)科有了更深入得了解。 要做好一個(gè)項(xiàng)目,從需求分析到數(shù)據(jù)采集到概要設(shè)計(jì)到詳細(xì)設(shè)計(jì),都要求在我的腦海里有個(gè)大概并清晰地思路和想法。同時(shí),在

17、這次程序設(shè)計(jì)中,我基本上能夠按照正確的流程進(jìn)行,沒(méi)有一開(kāi)始就寫程序,這也是自我感覺(jué)進(jìn)步最大的地方了,拿到題目的那一個(gè)早上的時(shí)間我用來(lái)整理出正確的邏輯思路,然后再進(jìn)行詳細(xì)的程序設(shè)計(jì):先進(jìn)行需求分析,然后概要設(shè)計(jì),然后詳細(xì)設(shè)計(jì),最后寫程序,然后調(diào)試程序。我越來(lái)越感覺(jué)到一個(gè)優(yōu)秀的程序員,一定要有十分扎實(shí)的基本功,這次課程設(shè)計(jì),我發(fā)現(xiàn)自己還有很多地方不是很熟練,多次查閱書本、從最基本的定義著手才完成了它。通過(guò)本次課程設(shè)計(jì),我對(duì)圖的概念有了一個(gè)新的認(rèn)識(shí),在學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)這門課程之后,我慢慢地體會(huì)到了其中的奧妙,圖能夠在計(jì)算機(jī)中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說(shuō)權(quán)值、頂點(diǎn)個(gè)數(shù)等,這也就說(shuō)

18、明了想要把生活中的信息轉(zhuǎn)化到計(jì)算機(jī)中必須用數(shù)字來(lái)完整的構(gòu)成一個(gè)信息庫(kù),而圖的存在,又涉及到了頂點(diǎn)之間的聯(lián)系。 數(shù)據(jù)結(jié)構(gòu)是一門基礎(chǔ)課,今后很多的學(xué)科都要用到它,通過(guò)這次課程設(shè)計(jì),我發(fā)現(xiàn)它又對(duì)我們的編程能力要求很高,因此我認(rèn)為要真正的學(xué)好它,就要經(jīng)常地上機(jī),不斷地練習(xí),只有這樣,才有可能完全掌握它。現(xiàn)在,我才發(fā)現(xiàn)老師這一學(xué)期為什么對(duì)我們這么的嚴(yán)格,每次實(shí)驗(yàn)要求按時(shí)上交,并獨(dú)立完成,而且每次上交實(shí)驗(yàn)的時(shí)候也是按照課程設(shè)計(jì)的要求,會(huì)詢問(wèn)我們一些有關(guān)實(shí)驗(yàn)的問(wèn)題,對(duì)于不懂的地方,就會(huì)指出,要求我們自己查閱資料完成之后再上交,容不得半點(diǎn)馬虎,我想就是因?yàn)槔蠋熃o了我們這么多機(jī)會(huì)和作業(yè),我們?cè)谧稣n程設(shè)計(jì)時(shí)才沒(méi)感

19、到束手無(wú)策。 剛開(kāi)始學(xué)的時(shí)候確實(shí)有很多地方我很不理解,每次上課時(shí)老師都會(huì)給我們出不同的設(shè)計(jì)題目,對(duì)于我們一個(gè)初學(xué)者來(lái)說(shuō),無(wú)疑是一個(gè)具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來(lái),仔細(xì)去寫程序。老師會(huì)給我們需要編程的內(nèi)容一些講解,順著老師的思路,來(lái)完成自己的設(shè)計(jì),我們可以開(kāi)始運(yùn)行自己的程序,可是好多處的錯(cuò)誤讓人看的可怕,還看不出到底是哪里出現(xiàn)了錯(cuò)誤,但是程序還是得繼續(xù)下去,我多次請(qǐng)教了老師和同學(xué),逐漸能自己找出錯(cuò)誤,并加以改正。其實(shí)現(xiàn)在想起來(lái),收獲還真是不少,雖然說(shuō)以前非常不懂這門語(yǔ)言,在它上面花費(fèi)了好多心血,覺(jué)得它很難,是需用花費(fèi)了大量的時(shí)間編寫出來(lái)的?,F(xiàn)在真正的明白了一些代碼的應(yīng)用,每個(gè)程序都有

20、一些共同點(diǎn),通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會(huì)靈活的去應(yīng)用它。 這次課程設(shè)計(jì),自己熟悉了很多的東西,在編寫程序的過(guò)程中,自己發(fā)現(xiàn)了很多的問(wèn)題,并通過(guò)查閱資料,反復(fù)實(shí)踐予以解決,這就使得自己發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力得到了提升。課程設(shè)計(jì)多做幾次,我想它就不是那么陌生、那么可怕了,自己會(huì)在這個(gè)過(guò)程中不斷上手。正如一位偉人說(shuō)的那樣,自己的知識(shí)越多,越是感到未知越多。這次課程設(shè)計(jì),我發(fā)現(xiàn)了很多過(guò)去遺留的問(wèn)題,和有待解決的問(wèn)題。這些問(wèn)題在期末考試中沒(méi)有涉及,可并不代表我們真正掌握了。還是親自動(dòng)手可以發(fā)現(xiàn)問(wèn)題解決問(wèn)題。很多時(shí)候不親自動(dòng)手,就會(huì)忽略很多的問(wèn)題。其實(shí)自己現(xiàn)在掌握的東西還是很少的,這次課

21、程設(shè)計(jì),我查閱了很多的書籍,發(fā)現(xiàn)要學(xué)好這門課并真正掌握它,絕非一朝一夕之事,還要下功夫?qū)W習(xí)其他相關(guān)知識(shí)。為了擴(kuò)充自己的知識(shí),更好地掌握軟件專業(yè)的知識(shí),增加知識(shí)的深度和寬度,不斷完備知識(shí)的儲(chǔ)備。除此之外,我還要學(xué)習(xí)其他與之相關(guān)的知識(shí),只有牢牢地掌握這些,才會(huì)有更多的發(fā)展空間。 我現(xiàn)在越來(lái)越喜歡這門學(xué)科了,認(rèn)為自己兩年前的選擇是沒(méi)有錯(cuò)的,這個(gè)專業(yè)也是很有前途的,我相信只要自己的基本功扎實(shí),就會(huì)獲益匪淺。在這次課程設(shè)計(jì)中,我還是發(fā)現(xiàn)了自己的很多不足,我發(fā)現(xiàn)自己的效率不是很高,很多優(yōu)秀的同學(xué)沒(méi)用到半周就完成的差不多了,而自己卻要用到6天左右的時(shí)間。還有一點(diǎn)就是,自己的耐心不足,遇到問(wèn)題以解決不了,就心

22、煩氣躁,往往一下午沒(méi)有很大的進(jìn)展。這些暴露的問(wèn)題我會(huì)在以后的學(xué)習(xí)和生活中逐漸解決,希望在以后的學(xué)習(xí)和生活中老師可以嚴(yán)格要求我,使我不斷克服問(wèn)題,提高專業(yè)技能。 附錄源代碼/headfile.h#include #include #include #include #include #include stdlib.h#include time.husing namespace std;#define max_ver_num 100#define A 10000 int Initgraph();int Increat_point_information();void Welcome();void

23、Select();void InputPassword();void StartGuide();void Administer();void ChagePassword();void AddPoint();void Return();void CorrectInformation();void DeletPath();int Read_sight_information();void SearchInformation();void Remeber();void Time();void ShortestPath_DIJ();void Cancel();void NewPath();void G

24、oodbye();typedef struct int data; int t; int fisrt;Node;typedef struct verdata/景點(diǎn)信息char number5;char name20;char information1000;po;typedef struct Arcnode/設(shè)置邊的權(quán)值信息 int adj;/路徑權(quán)值A(chǔ)rcnode;typedef struct MGr /圖關(guān)系 verdata vexmax_ver_num; Arcnode adjarcsmax_ver_nummax_ver_num; int vernum;MGraph;/main.cpp#

25、include #include #include #include #include #include stdlib.h#include headfile.hMGraph G;using namespace std;time_t now;/主函數(shù)int main()time(&now);cout現(xiàn)在的時(shí)間是 ctime(&now); Welcome();Select();return 0;/歡迎void Welcome() /cout現(xiàn)在的時(shí)間是 ctime(&now);coutendl;cout 歡迎光臨廣西民族大學(xué) endl;cout endl;cout 廣西民族大學(xué)信息科學(xué)與工程學(xué)院軟

26、件學(xué)院 endl;cout 校園導(dǎo)航系統(tǒng)為你服務(wù) endl;cout endl; cout endl;cout 程序員:10網(wǎng)絡(luò)蔣小文 endl;coutendl; system(pause);system(cls);/開(kāi)始頁(yè)面void Select()char choice; coutendl; cout 1.導(dǎo)航使用者 endl;cout 2.系統(tǒng)管理員 endl;cout 3.退出此系統(tǒng) endl; coutendl;coutchoice;system(cls);switch(choice) case 1:StartGuide(); break; case 2:InputPassword

27、(); break; case 3: Goodbye(); break; default: coutendl; cout你的輸入有誤endl; coutendl; system(pause); system(cls); Select();/Admin.cpp#include #include #include #include #include #include stdlib.h#include headfile.hextern MGraph G;using namespace std;/后臺(tái) 輸入密碼,加景點(diǎn),加信息 改信息 改密碼 刪路徑void InputPassword()int m=

28、0;string password;string c; system(CLS);ifstream infile(cipher.txt);infilec; while(m3) coutpassword; if(c=password) coutendl; cout 密碼正確 進(jìn)入管理系統(tǒng) endl;coutendl;cout自動(dòng)跳轉(zhuǎn)中.;Time();system(cls); Administer(); else coutendl;cout密碼錯(cuò)誤!endl;coutendl;cout還有2-m次機(jī)會(huì)endl;coutendl;m+;cout自動(dòng)跳轉(zhuǎn)中.;Time();system(cls); R

29、emeber();void Administer()char choice; Initgraph();coutendl;cout 1.修改登錄密碼 endl;cout 2.添加新的景點(diǎn) endl;cout 3.修改景點(diǎn)信息 endl;cout 4.交通管制路徑 endl;cout 5.恢復(fù)撤銷路徑 endl;cout 6.新建景點(diǎn)路徑 endl; cout 7.返回導(dǎo)航主頁(yè) endl;coutendl;coutchoice;/system(cls);switch(choice)case 1: ChagePassword(); break;case 2: AddPoint(); break;ca

30、se 3: CorrectInformation(); break; case 4: DeletPath(); break;case 5: Cancel(); break; case 6: NewPath(); break;case 7: Return(); break;default:coutendl;cout你的輸入有誤endl;coutpassword;infile.close();coutendl;coutc;coutendl;if(c=password)cout原密碼輸入正確endl;coutendl;coutnewpasswrod1;coutendl;coutnewpasswrod

31、2;coutendl;if(newpasswrod1=newpasswrod2) ofstream outfile(cipher.txt); outfilenewpasswrod2; outfile.close(); cout密碼更改成功,登錄時(shí)請(qǐng)用更改后的密碼endl;elsecout兩次輸入的密碼不相同endl;elsecout原密碼輸入錯(cuò)誤endl;cout自動(dòng)跳轉(zhuǎn)中.endl;Time(); system(cls);Administer();void Remeber()coutendl;cout你已經(jīng)連續(xù)三次輸入密碼錯(cuò)誤了endl;coutendl; cout請(qǐng)認(rèn)真核對(duì)密碼,稍后再試!

32、endl;coutendl;Time();cout自動(dòng)返回主菜單endl;Time();system(cls);Select();void AddPoint()system(cls);cout添加景點(diǎn)endl;Increat_point_information();G.vernum=Read_sight_information();ifstream infile(connect.txt); for(int i=0;iG.vernum-1;i+)for(int j=0;jG.adjarcsij.adj;/*for(i=0;iG.vernum-1;i+)for(int j=0;jG.vernum-

33、1;j+)coutsetiosflags(ios:left)setw(5)G.adjarcsij.adj ;coutendl;*/infile.close();/cout每次添加景點(diǎn)個(gè)數(shù)為1個(gè);for(int m=0;mG.vernum;m+)G.adjarcsmG.vernum-1.adj=10000;for(int n=0;nG.vernum;n+)G.adjarcsG.vernum-1n.adj=10000;G.adjarcsG.vernum-1G.vernum-1.adj=0;cout你正準(zhǔn)備添加一個(gè)新結(jié)點(diǎn)endl;coutendl; cout請(qǐng)輸入此景點(diǎn)與其他景點(diǎn)存在的路徑權(quán)值end

34、l;coutendl;char yn;doint Spots_N,Weights;coutSpots_N; coutWeights;G.adjarcsG.vernum-1Spots_N.adj=G.adjarcsSpots_NG.vernum-1.adj=Weights;cout是否與其他景點(diǎn)存在直接路徑值(y/n)yn;while(yn=y|yn=Y); ofstream outfile0(connect.txt);for(int v=0;vG.vernum;v+)for(int w=0;wG.vernum;w+) outfile0G.adjarcsvw.adj ; outfile0endl

35、;outfile0.close(); cout添加成功endl;Time();system(cls);Administer();int Increat_point_information()/添加景點(diǎn)信息 char number2,name20,information10000;coutnumber; coutname; coutinformation; ofstream outfile(information.txt,ios:app);outfileendlnumber name information;outfile.close(); return 0;void CorrectInform

36、ation()int n;char m;system(cls); G.vernum=Read_sight_information();coutn; coutG.vexn.number;coutG.;coutG.rmation;ofstream outfile(information.txt);for(int j=0;jG.vernum-1;j+)outfileG.vexj.number G. G.rmationendl;outfileG.vexG.vernum-1.number G.vexG. G

37、.vexG.rmation;outfile.close();cout數(shù)據(jù)修改成功endl;coutm;if(m=y|m=Y)ifstream infile(information.txt);for(int i=0;iG.vexi.numberG.G.rmation;coutG.vexi.number G. G.rmationendl;infile.close();system(pause);system(cls);elsecout自動(dòng)跳轉(zhuǎn)中.endl; Time(); Administer();v

38、oid DeletPath() system(cls);coutendl;cout交通管制endl;coutendl; G.vernum=Read_sight_information();ifstream infile(connect.txt); for (int i=0;iG.vernum;i+)for(int j=0;jG.adjarcsij.adj;cout你想對(duì)哪兩個(gè)結(jié)點(diǎn)間的路徑進(jìn)行管制?endl;int here,that;couthere;coutthat;cout請(qǐng)問(wèn)你是刪除單項(xiàng)的還是雙向的路徑:;cout1.單向 2.雙向direction;switch(direction)c

39、ase 1: char choice;cout管制herethat選擇 1endl;cout管制thathere選擇 2choice; switch(choice) case 1:G.adjarcsherethat.adj=10000;break; case 2:G.adjarcsthathere.adj=10000;break; default:cout輸入錯(cuò)誤endl;DeletPath(); break; case 2: G.adjarcsherethat.adj=G.adjarcsthathere.adj=10000; break; default: cout輸入錯(cuò)誤endl; Del

40、etPath();ofstream outfile(connect.txt);for(int v=0;vG.vernum;v+)for(int w=0;wG.vernum;w+) outfileG.adjarcsvw.adj ; outfileendl;coutendl;cout 交通管制設(shè)置成功 endl;coutendl;system(pause);system(cls);outfile.close();Administer();void Cancel()system(cls);G.vernum=Read_sight_information();ifstream infile(connec

41、t.txt); for(int i=0;iG.vernum;i+)for(int j=0;jG.adjarcsij.adj; infile.close();int Spots_N1,Spots_N2,Weights;coutendl;cout你欲恢復(fù)的路的兩個(gè)端點(diǎn)是:endl;coutSpots_N1;coutSpots_N2;coutendl;coutWeights;G.adjarcsSpots_N1Spots_N2.adj=G.adjarcsSpots_N2Spots_N1.adj=Weights;ofstream outfile0(connect.txt);for(int v=0;vG.

42、vernum;v+)for(int w=0;wG.vernum;w+) outfile0G.adjarcsvw.adj ; outfile0endl;outfile0.close();coutendl;cout撤銷交通管制成功endl;coutendl;system(pause);system(cls);Administer();void NewPath()system(cls);G.vernum=Read_sight_information();ifstream infile(connect.txt); for(int i=0;iG.vernum;i+)for(int j=0;jG.adja

43、rcsij.adj; infile.close();int Spots_N1,Spots_N2,Weights;coutendl;cout新修建的路的兩個(gè)端點(diǎn)是:endl;coutSpots_N1;coutSpots_N2;coutendl;coutWeights;G.adjarcsSpots_N1Spots_N2.adj=G.adjarcsSpots_N2Spots_N1.adj=Weights;ofstream outfile0(connect.txt);for(int v=0;vG.vernum;v+)for(int w=0;wG.vernum;w+) outfile0G.adjarcs

44、vw.adj ; outfile0endl;outfile0.close(); coutendl; cout新建路徑成功endl;coutendl;system(pause);system(cls);Administer();void Return()char yn;coutyn;if(yn=y|yn=Y)system(cls);Select();else system(cls);Administer();/結(jié)束界面void Goodbye() coutendl;cout 感謝你對(duì)本校園導(dǎo)航系統(tǒng)的使用 endl; coutendl;cout 如對(duì)本校不懂的地方,你可繼續(xù)使用本系統(tǒng) endl;

45、coutendl;cout 祝君在我校有個(gè)美好的觀光經(jīng)歷 endl;coutendl;exit(0);/跳轉(zhuǎn)時(shí)間控制void Time()const int second=1;clock_t delay=second*CLOCKS_PER_SEC;clock_t start=clock();while(clock()-startdelay);/vistor.cpp#include #include #include #include #include #include stdlib.h#include headfile.hextern MGraph G;/#define A 10000usin

46、g namespace std;/前臺(tái) 導(dǎo)航使用者void StartGuide()char choice;coutendl; cout 1.查詢最短路徑 endl;cout 2.查詢景點(diǎn)信息 endl;cout 3.退出導(dǎo)航系統(tǒng) endl; coutendl; coutchoice;system(cls);switch(choice)case 1:ShortestPath_DIJ(); break;case 2:system(cls); SearchInformation();break; case 3:Goodbye();break;default:cout你的輸入有誤endl;void

47、SearchInformation()int k,choice; Read_sight_information();coutk;coutG.vexk.number G. G.rmationendl;coutendl;cout= 1. 繼續(xù)查詢景點(diǎn)信息 =endl;cout= 2. 返回導(dǎo)航主菜單 =endl;cout= 3. 退出系統(tǒng) =endl;coutchoice; system(cls);switch(choice)case 1: SearchInformation();break;case 2: StartGuide();break;case 3:

48、exit(0);break; default:cout你的輸入有誤endl; Time();system(cls);StartGuide();void ShortestPath_DIJ() G.vernum=Read_sight_information(); Read_sight_information();Initgraph(); int v,w,i,min,t=0,x,flag=1,v0,v1,k=0;int *final=new int G.vernum; int* p;p= new int*G.vernum; for(unsigned r=0; rG.vernum;+r) pr = n

49、ew intG.vernum; int *D=new intG.vernum;int *have=new intG.vernum;for(int m=0;mG.vernum;m+)havem=0; while(flag) printf(請(qǐng)輸入起始景點(diǎn)編號(hào):n); scanf(%d,&v0); if(v0G.vernum) printf(景點(diǎn)編號(hào)不存在!); printf(請(qǐng)輸入終止景點(diǎn)編號(hào):n); scanf(%d,&v1); if(v1G.vernum) printf(景點(diǎn)編號(hào)不存在!); if(v0=0&v0=0&v1G.vernum) flag=0;for(v=0;vG.vernum;+

50、v)finalv=0;Dv=G.adjarcsv0v.adj;for(w=0;wG.vernum;+w)pvw=A;if(DvA)pvv0=1;pvv=1;Dv0=0;finalv0=1;have0=v0;for(i=1;iG.vernum;+i)min=A;for(w=0;wG.vernum;+w)if(!finalw)if(Dwmin) v=w;min=Dw;finalv=1;havek=v;k+;for(w=0;wG.vernum;+w)if(!finalw&(min+(G.adjarcsvw.adj)Dw)Dw=min+G.adjarcsvw.adj;for(x=0;xG.vernum

51、;x+)pwx=pvx; pww=1;coutG.;for(i=0;iG.vernum;i+)if(pv1havei=1)coutG.; if(v1-v0)=1) coutn路徑長(zhǎng)度:G.adjarcsv0v1.adj; elsecoutn路徑長(zhǎng)度:Dv1米G.vexi.numberG.G.rmation;i+;return i;infile.close();/初始化鄰接矩陣int Initgraph()G.vernum=Read_sight_information();ifstream infile(conne

52、ct.txt); for(int i=0;iG.vernum;i+)for(int j=0;jG.adjarcsij.adj; infile.close();return 0;參考文獻(xiàn) 1 嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程.北京:清華大學(xué)出版社.2011.P309-P3112 林小茶.c語(yǔ)言程序設(shè)計(jì).北京:中國(guó)鐵道出版社2007.P280-P2903 杜茂康.C+面向?qū)ο蟪绦蛟O(shè)計(jì)(第二版).北京:電子工業(yè)出版社.2001.P50-P55 附 錄另起一頁(yè)。附錄的有無(wú)根據(jù)說(shuō)明書(設(shè)計(jì))情況而定,內(nèi)容一般包括正文內(nèi)不便列出的冗長(zhǎng)公式推導(dǎo)、符號(hào)說(shuō)明(含縮寫)、計(jì)算機(jī)程序等?!案健薄颁洝敝虚g空兩格、四號(hào)字

53、、黑體、居中。附錄中的內(nèi)容一般也取為五號(hào)宋體。附錄中有程序源代碼的因篇幅限制可酌情考慮內(nèi)容的字號(hào)和行距。附錄資料:不需要的可以自行刪除語(yǔ)言的常用庫(kù)函數(shù)函數(shù)1。absread()讀磁盤絕對(duì)扇區(qū)函數(shù)原形:int absread(int drive,int num,int sectnum,void *buf)功能:從drive指定的驅(qū)動(dòng)器磁盤上,sectnum指定的邏輯扇區(qū)號(hào)開(kāi)始讀取(通過(guò)DOS中斷0 x25讀取)num個(gè)(最多64K個(gè))扇區(qū)的內(nèi)容,儲(chǔ)存于buf所指的緩沖區(qū)中。參數(shù):drive=0對(duì)應(yīng)A盤,drive=1對(duì)應(yīng)B盤。返回值:0:成功;-1:失敗。頭文件:dos.h函數(shù)2。abswrit

54、e()寫磁盤絕對(duì)扇區(qū)函數(shù)原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驅(qū)動(dòng)器)、1(B驅(qū)動(dòng)器)、nsects=要寫的扇區(qū)數(shù)(最多64K個(gè));lsect=起始邏輯扇區(qū)號(hào);buffer=要寫入數(shù)據(jù)的內(nèi)存起始地址。功能:將指定內(nèi)容寫入(調(diào)用DOS中斷0 x26)磁盤上的指定扇區(qū),即使寫入的地方是磁盤的邏輯結(jié)構(gòu)、文件、FAT表和目錄結(jié)構(gòu)所在的扇區(qū),也照常進(jìn)行。返回值:0:成功;-1:失敗。頭文件:dos.h函數(shù)3。atof()將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)的函數(shù)原形:double atof(const char *s)

55、功能:把s所指向的字符串轉(zhuǎn)換成double類型。s格式為:符號(hào)數(shù)字.數(shù)字E符號(hào)數(shù)字返回值:字符串的轉(zhuǎn)換值。頭文件:math.h、stdlib.h函數(shù)4。atoi()將字符串轉(zhuǎn)換成整型數(shù)的函數(shù)原形:int atoi(const char *s)功能:把s所指向的字符串轉(zhuǎn)換成int類型。s格式為:符號(hào)數(shù)字返回值:字符串的轉(zhuǎn)換值。若出錯(cuò)則返回0。頭文件:stdlib.h函數(shù)5。atol()將字符串轉(zhuǎn)換成長(zhǎng)整型數(shù)的函數(shù)原形:long atol(const char *s)功能:把s所指向的字符串轉(zhuǎn)換成long int類型。s格式為:符號(hào)數(shù)字返回值:字符串的轉(zhuǎn)換值。若出錯(cuò)則返回0。頭文件:stdlib.

56、h函數(shù)6。bcd()把一個(gè)數(shù)轉(zhuǎn)換成對(duì)應(yīng)的BCD碼的函數(shù)原形:bcd bcd(int x)bcd bcd(double x)bcd bcd(double x,int decimals)注意:BCD碼的精度可達(dá)17位。參數(shù)decimals是可選的,用來(lái)指定轉(zhuǎn)換后小數(shù)點(diǎn)后的位數(shù)。頭文件:bcd.h函數(shù)7。bdos()原形int bdos(int fnum,unsigned dx,unsigned al)其中fnum是系統(tǒng)調(diào)用號(hào);dx是傳給寄存器DX的值;al是傳給寄存器AL的值;功能DOS系統(tǒng)調(diào)用(INT21H)返回值A(chǔ)X中的值函數(shù)8。biosdisk()調(diào)用BIOS磁盤驅(qū)動(dòng)程序函數(shù)原形:char

57、biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)功能:使用中斷0 x13,直接調(diào)用BIOS進(jìn)行磁盤操作參數(shù):(1)cmd:2-數(shù)據(jù)以每扇區(qū)512字節(jié)的格式讀入buffer,起始扇區(qū)由head、track和sector定,扇區(qū)數(shù)由nsects定。3-將buffer中的數(shù)據(jù)按每扇區(qū)512字節(jié)寫入磁盤。4-對(duì)扇區(qū)進(jìn)行數(shù)據(jù)校驗(yàn)。6-格式化一個(gè)磁盤并對(duì)化扇區(qū)設(shè)置化標(biāo)志。8-返回當(dāng)前驅(qū)動(dòng)器參數(shù)在buffer的前4個(gè)字節(jié)中。10-長(zhǎng)讀,每扇區(qū)讀入512字節(jié)加上額外的4個(gè)字節(jié)。11-長(zhǎng)寫,每扇區(qū)寫

58、入512字節(jié)加上額外的4個(gè)字節(jié)。(2)drive:0-第一個(gè)軟驅(qū);1-第二個(gè)軟驅(qū);0 x80-第一個(gè)硬驅(qū)(3)head:磁頭(4)track:磁道(5)sector:扇區(qū)(6)nsects:扇區(qū)數(shù)(7)buffer:數(shù)據(jù)緩沖區(qū),定義為unsigned char buffer;返回值:0 x00-操作成功0 x01-錯(cuò)誤命令0 x03-企圖寫具有寫保護(hù)的磁盤0 x07-驅(qū)動(dòng)器參數(shù)設(shè)置錯(cuò)誤0 x10-磁盤讀/CRC/ECC錯(cuò)誤頭文件:bios.h注:對(duì)于硬盤主引導(dǎo)記錄扇區(qū)head=0,track=0,sector=1函數(shù)9。biosprint()調(diào)用BIOS打印機(jī)I/O接口的函數(shù)原形:int bi

59、osprint(int cmd,int abyte,int port)功能:通過(guò)BIOS中斷0 x17在由參數(shù)port指定的打印機(jī)上完成各種打印機(jī)功能。port=0(LPT1)=1(LPT2);cmd=0(打印字符abyte)1(初始化打印機(jī)端口)2(讀打印機(jī)狀態(tài));abyte=0-255;返回值:打印機(jī)狀態(tài)位0(設(shè)備超時(shí));位3(I/O出錯(cuò));位4(打印機(jī)已選擇);位5(沒(méi)紙);位6(打印機(jī)確認(rèn));位7(不忙)頭文件:bios.h函數(shù)10。calloc()分配內(nèi)存函數(shù)原形:void *calloc(size_t nitems,size_t size)功能:在堆中分配一塊內(nèi)存,將該內(nèi)存的內(nèi)容全

60、部清。返回值:返回指向新分配內(nèi)存的指針??臻g不夠則返回NULL。頭文件:stdlib.h、calloc.h函數(shù)11。ceil()原形double ceil(double num)功能求不小于num的最小雙精度整數(shù)頭文件math.h函數(shù)12。cgets()讀字符串函數(shù)原形:char *cgets(char *str)功能:從控制臺(tái)讀入一個(gè)字符串,并將該字符串(和字符串長(zhǎng)度)存入有str所指向的地址中。注意:在調(diào)用cgets之前,必須將要讀入的字符串最大長(zhǎng)度存入str0中,返回時(shí)str1被設(shè)置為實(shí)際讀入的字符數(shù)。實(shí)際字符串內(nèi)容從str2開(kāi)始,以空字符(0)結(jié)尾。返回值:指向str2的指針。頭文件:

溫馨提示

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

評(píng)論

0/150

提交評(píng)論