




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、校園導(dǎo)航系統(tǒng)課程設(shè)計報告姓 名: 蔣小文 學(xué) 號:110236100123 班 級: 1班 專 業(yè): 網(wǎng)絡(luò)工程 指導(dǎo)教師:唐軼媛 蔣榮萍時 間:2012年7月5日 信息科學(xué)與工程學(xué)院目 錄摘要.1目的.2要求2題目.2任務(wù) .2 1).需求分析.3 2).概要設(shè)計.4 3).詳細(xì)設(shè)計.5 4).調(diào)試分析.8課設(shè)總結(jié).18附錄源代碼.19 目的 數(shù)據(jù)結(jié)構(gòu)是計算機(jī)專業(yè)的核心課程,是一門實(shí)踐性很強(qiáng)的課程。課程設(shè)計是加強(qiáng)學(xué)生實(shí)踐能力的一個強(qiáng)有力手段,要求學(xué)生掌握數(shù)據(jù)結(jié)構(gòu)的應(yīng)用、算法的編寫、類C語言的算法轉(zhuǎn)換成C(C+)程序并上機(jī)調(diào)試的基本方法,還要求學(xué)生在完成程序設(shè)計的同時能夠?qū)懗霰容^規(guī)范的設(shè)計報告。
2、 要求 2.1 課程設(shè)計時間為2周;2.2 設(shè)計語言C(C+)不限;2.3 課余時間完成源程序和課程設(shè)計報告等文檔書寫工作,上機(jī)時間只能做調(diào)試工作。上機(jī)時帶上源程序、數(shù)據(jù)結(jié)構(gòu)教材、C語言教材。2.4 上機(jī)任務(wù)(1)選擇并定義合適的數(shù)據(jù)結(jié)構(gòu);(2)根據(jù)程序所要完成的基本要求,設(shè)計出完整的算法;(3)設(shè)計出主程序(main函數(shù)),使其成為完整的程序。 2.5 上機(jī)時間:上午8:30-11:30,下午3:00-5:30 題目題目:校園導(dǎo)航系統(tǒng)設(shè)計一個校園導(dǎo)游程序,后臺操作:3.1、操作員信息管理如修改密碼等3.2、能根據(jù)學(xué)校的規(guī)模進(jìn)行添加景點(diǎn)信息、修改景點(diǎn)信息等功能,3.3、若臨時有交通管制,能進(jìn)行
3、交通管制的設(shè)置和撤銷(如某某時間段那條路進(jìn)行那個方向的交通管制等)3.4、前臺為來訪的客人提供各種信息查詢服務(wù): 3.4.1、設(shè)計學(xué)校的校園平面圖,所含景點(diǎn)不少于10個。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關(guān)信息。 3.4.2、為來訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。 3.4.3、提供途中任意景點(diǎn)問路查詢,即求任意兩個景點(diǎn)間的一條最短的簡單路徑。任務(wù)4.1 需求分析 此系統(tǒng)使用者分為訪客與管理員,訪客按要求可直接使用本系統(tǒng)所具有的查詢兩景點(diǎn)間的最短距離,查詢景點(diǎn)的相關(guān)信息.管理員按要求在輸入密碼的情況下,可修改登錄密碼,修改景點(diǎn)信息,添加景
4、點(diǎn),添加景點(diǎn)信息,交通管制,撤銷交通管制,以及新建路徑.4.1.1 登錄:訪客無需登錄,首先將密碼存在一個文件中,當(dāng)輸入的密碼與從文件cipher.txt讀取的密碼相同,管理員方可進(jìn)入后臺管理員操作界面,4.1.2 修改登錄密碼:管理員進(jìn)入后臺操作管理員操作界面,若需改動當(dāng)前的登錄密碼,首先必須要輸入原密碼,以確定是管理員自己修改密碼.在原密碼輸入正確的情況下輸入新密碼,為了管理員更好的確人自己的新密碼,必須兩次輸入的新密碼一致(password1=password2)才可以修改成功.4.1.3 添加新的結(jié)點(diǎn):若校園有新的景點(diǎn)出現(xiàn),管理員須將新的景點(diǎn)的相關(guān)信息加入系統(tǒng),將景點(diǎn)編號,名字,景點(diǎn)介
5、紹這些信息寫入存儲景點(diǎn)信息的文件當(dāng)中.原來已經(jīng)有G.vernum個景點(diǎn),是一個G.vernum行G.vernum列的矩陣,加一個景點(diǎn)后便是一個G.vernum+1行G.vernum+1列的矩陣,將新結(jié)點(diǎn)與其他存在的直接路徑的結(jié)點(diǎn)之間的路徑權(quán)值.存入鄰接矩陣中,沒有直接路徑值的存一個無窮大的數(shù)(此系統(tǒng)用10000)于矩陣中,使得訪客可以查詢到新景點(diǎn)的相關(guān)信息和到達(dá)新景點(diǎn)的最短路徑.4.1.4 修改景點(diǎn)信息:若學(xué)校某景點(diǎn)的信息有改變,管理員進(jìn)入系統(tǒng)對景點(diǎn)的信息進(jìn)行修改,從文件information.txt.中讀取出景點(diǎn)信息,修改之后,再把信息存入information.txt中,使訪客了解最新的景
6、點(diǎn)信息.4.1.5 交通管制路徑:當(dāng)學(xué)校舉辦大型活動,或者大型考試的時候,對路進(jìn)行交通管制,以確保活動的正常舉行,從connect.txt 讀取景點(diǎn)之間的鄰接矩陣,將需要進(jìn)行進(jìn)行交通管制的路徑賦值為一個無窮大的數(shù)(此系統(tǒng)用10000)來進(jìn)行對路徑的屏蔽作用.訪客要到達(dá)目的地需要繞道而行.4.1.6 恢復(fù)撤銷路徑:在活動或者考試結(jié)束后,管理員需要對之前進(jìn)行交通管制的路徑進(jìn)行撤銷交通管制,此功能的實(shí)現(xiàn)過程與交通管制功能的實(shí)現(xiàn)過程剛好相反,將需要撤銷的路徑,將其路徑值有10000改成其真實(shí)路徑值,恢復(fù)正常的交通秩序.4.1.7 新建景點(diǎn)路徑:學(xué)??赡芸紤]為了廣大老師和學(xué)生的方面,可能會新建一些路徑,
7、例如國教樓和四坡食堂所建的風(fēng)雨橋,管理員便需要把新建的路徑加入系統(tǒng),此功能的實(shí)現(xiàn)代碼與撤銷交通管制的路徑完全相同,將景點(diǎn)的兩路徑值賦值為其真實(shí)值,存入connect.txt文件中.使得訪客能夠走最短的路徑到達(dá)目的地,節(jié)省時間體力,減少不必要的麻煩.4.1.8 查詢最短路徑:訪客無需密碼可直接使用本系統(tǒng),最為訪客,總是希望以最少的時間和路程到達(dá)自己的目的地,利用弗洛伊德算法,求出最短路徑,三維數(shù)組用來存儲量景點(diǎn)最短路徑的中間景點(diǎn),二維數(shù)組用于存放兩頂點(diǎn)間的路徑長度.訪客在輸入自己的出發(fā)地點(diǎn)(或者當(dāng)前所在地點(diǎn)),再輸入目的地,方可在屏幕上顯示出出發(fā)地點(diǎn)到達(dá)目的地的最短路徑.4.1.9 查詢景點(diǎn)信息
8、:當(dāng)訪客進(jìn)入廣西民族大學(xué)時,當(dāng)不知道該去哪個景點(diǎn)時,可利用本功能進(jìn)行查詢各景點(diǎn)的信息,從information.txt中將文件讀取出來,然后將我們需要的景點(diǎn)信息顯示出來,訪客根據(jù)顯示的信息選擇自己感興趣的景點(diǎn).4.2概要設(shè)計1). 數(shù)據(jù)對象V:V具有相同特性的數(shù)組元素的集合,稱為頂點(diǎn)集2). 數(shù)據(jù)關(guān)系R:R=VR VR=|P(x,y)(x,y屬于V)ADT Graph 數(shù)據(jù)對象V:一個集合,該集合中的所有元素具有相同的特性 數(shù)據(jù)關(guān)系R:R=VR VR=|P(x,y)(x,y屬于V). 基本操作:1.Void main()2.void Welcome();/開始?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();/密碼錯誤提示20.void Time();/時間停留21.void Goodbye();/退出系統(tǒng)4.3詳細(xì)設(shè)計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)信息的編號,名稱,信息存入number name information中;利用C+里的ios:app,在文件末尾追加信
12、息/交通管制 void DeletPath()首先確定進(jìn)行交通管制的路徑相關(guān)聯(lián)的兩個景點(diǎn)編號i,j;讀取矩陣文件connect.txt文件,將信息讀取到二維數(shù)組中,對應(yīng)于景點(diǎn)編號的位置的路徑權(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)過程與進(jìn)行交通管制的實(shí)現(xiàn)方式正好相反,確定于取消路徑相關(guān)聯(lián)的兩個景點(diǎn)標(biāo)
13、號,i j;路徑長度weight;cinweight;G.adjarcsij.adj=G.adjarcsji.adj=weight;/新建路徑void NewPath()實(shí)現(xiàn)代碼與取消交通管制代碼完全一致;/修改景點(diǎn)信息void CorrectInformation()從information中讀取景點(diǎn)的編號,名稱,介紹的相關(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)和目的地的編號:k, jif(kG-vernum|jG-vernum)景點(diǎn)編號不存在!請重新輸入出發(fā)點(diǎn)和目的地的編號:k, j if(k=0&k=0&j頂點(diǎn)數(shù)目) flag=0; 逐個輸出最短路徑上的景點(diǎn)名字以及總路線長/查詢景點(diǎn)信息void SearchInformation()從information將全部的數(shù)據(jù)讀取出來請輸入要查詢的景點(diǎn)編號n;if(nG.vernum)該景點(diǎn)不存在,請重新輸入:else 根據(jù)編
15、號輸出對應(yīng)的景點(diǎn)信息;4.4調(diào)試分析4.1.密碼輸入正確:4.2.密碼修改成功:例:(將原密碼wwww改為aaaa)4.3.添加景點(diǎn)和景點(diǎn)信息:例:把八坡側(cè)門加入景點(diǎn)添加前:添加過程:添加后,information.txt和connect.txt里面的內(nèi)容自動修改為:景點(diǎn)和景點(diǎn)信息添加成功4.4.交通管制:例:(對2(大禮堂)4(圖書館)的路進(jìn)行管制)交通管制前:管制過程:管制之后:4.5撤銷交通管制:例(撤銷(2大禮堂)-4(大禮堂)的路徑管制)恢復(fù)前:撤銷管制過程:撤銷管制之后:4.6新建路徑:例:(在1(南門)5(科技館)新建一條長300米的路徑)新建前:connect.txt的內(nèi)容:新
16、建過程:新建后:4.7修改景點(diǎn)信息:例:(將0(東門)的信息改為相思湖大酒店)4.8.查詢景點(diǎn)信息:(例:查找剛剛新修改的0相思湖大酒店信息)4.9.查詢最短路徑:例:(查詢1(南門)-9(9坡)的最短路徑:課設(shè)總結(jié): 這是第二次做課程設(shè)計了,但卻使我感到什么是真正的編程,如何做一個項目,如何開始,如何進(jìn)行,如何高效率的完成它。這次指導(dǎo)老師對我們十分的嚴(yán)格,要求我們按照軟件工程的要求來,雖然一開始我們十分的不適應(yīng),可是我們最終堅持下來了,經(jīng)歷了這個過程,對這門學(xué)科有了更深入得了解。 要做好一個項目,從需求分析到數(shù)據(jù)采集到概要設(shè)計到詳細(xì)設(shè)計,都要求在我的腦海里有個大概并清晰地思路和想法。同時,在
17、這次程序設(shè)計中,我基本上能夠按照正確的流程進(jìn)行,沒有一開始就寫程序,這也是自我感覺進(jìn)步最大的地方了,拿到題目的那一個早上的時間我用來整理出正確的邏輯思路,然后再進(jìn)行詳細(xì)的程序設(shè)計:先進(jìn)行需求分析,然后概要設(shè)計,然后詳細(xì)設(shè)計,最后寫程序,然后調(diào)試程序。我越來越感覺到一個優(yōu)秀的程序員,一定要有十分扎實(shí)的基本功,這次課程設(shè)計,我發(fā)現(xiàn)自己還有很多地方不是很熟練,多次查閱書本、從最基本的定義著手才完成了它。通過本次課程設(shè)計,我對圖的概念有了一個新的認(rèn)識,在學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機(jī)中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點(diǎn)個數(shù)等,這也就說
18、明了想要把生活中的信息轉(zhuǎn)化到計算機(jī)中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點(diǎn)之間的聯(lián)系。 數(shù)據(jù)結(jié)構(gòu)是一門基礎(chǔ)課,今后很多的學(xué)科都要用到它,通過這次課程設(shè)計,我發(fā)現(xiàn)它又對我們的編程能力要求很高,因此我認(rèn)為要真正的學(xué)好它,就要經(jīng)常地上機(jī),不斷地練習(xí),只有這樣,才有可能完全掌握它?,F(xiàn)在,我才發(fā)現(xiàn)老師這一學(xué)期為什么對我們這么的嚴(yán)格,每次實(shí)驗(yàn)要求按時上交,并獨(dú)立完成,而且每次上交實(shí)驗(yàn)的時候也是按照課程設(shè)計的要求,會詢問我們一些有關(guān)實(shí)驗(yàn)的問題,對于不懂的地方,就會指出,要求我們自己查閱資料完成之后再上交,容不得半點(diǎn)馬虎,我想就是因?yàn)槔蠋熃o了我們這么多機(jī)會和作業(yè),我們在做課程設(shè)計時才沒感
19、到束手無策。 剛開始學(xué)的時候確實(shí)有很多地方我很不理解,每次上課時老師都會給我們出不同的設(shè)計題目,對于我們一個初學(xué)者來說,無疑是一個具大的挑戰(zhàn),撞了幾次壁之后,我決定靜下心來,仔細(xì)去寫程序。老師會給我們需要編程的內(nèi)容一些講解,順著老師的思路,來完成自己的設(shè)計,我們可以開始運(yùn)行自己的程序,可是好多處的錯誤讓人看的可怕,還看不出到底是哪里出現(xiàn)了錯誤,但是程序還是得繼續(xù)下去,我多次請教了老師和同學(xué),逐漸能自己找出錯誤,并加以改正。其實(shí)現(xiàn)在想起來,收獲還真是不少,雖然說以前非常不懂這門語言,在它上面花費(fèi)了好多心血,覺得它很難,是需用花費(fèi)了大量的時間編寫出來的?,F(xiàn)在真正的明白了一些代碼的應(yīng)用,每個程序都有
20、一些共同點(diǎn),通用的結(jié)構(gòu),相似的格式。只要努力去學(xué)習(xí),就會靈活的去應(yīng)用它。 這次課程設(shè)計,自己熟悉了很多的東西,在編寫程序的過程中,自己發(fā)現(xiàn)了很多的問題,并通過查閱資料,反復(fù)實(shí)踐予以解決,這就使得自己發(fā)現(xiàn)問題、解決問題的能力得到了提升。課程設(shè)計多做幾次,我想它就不是那么陌生、那么可怕了,自己會在這個過程中不斷上手。正如一位偉人說的那樣,自己的知識越多,越是感到未知越多。這次課程設(shè)計,我發(fā)現(xiàn)了很多過去遺留的問題,和有待解決的問題。這些問題在期末考試中沒有涉及,可并不代表我們真正掌握了。還是親自動手可以發(fā)現(xiàn)問題解決問題。很多時候不親自動手,就會忽略很多的問題。其實(shí)自己現(xiàn)在掌握的東西還是很少的,這次課
21、程設(shè)計,我查閱了很多的書籍,發(fā)現(xiàn)要學(xué)好這門課并真正掌握它,絕非一朝一夕之事,還要下功夫?qū)W習(xí)其他相關(guān)知識。為了擴(kuò)充自己的知識,更好地掌握軟件專業(yè)的知識,增加知識的深度和寬度,不斷完備知識的儲備。除此之外,我還要學(xué)習(xí)其他與之相關(guān)的知識,只有牢牢地掌握這些,才會有更多的發(fā)展空間。 我現(xiàn)在越來越喜歡這門學(xué)科了,認(rèn)為自己兩年前的選擇是沒有錯的,這個專業(yè)也是很有前途的,我相信只要自己的基本功扎實(shí),就會獲益匪淺。在這次課程設(shè)計中,我還是發(fā)現(xiàn)了自己的很多不足,我發(fā)現(xiàn)自己的效率不是很高,很多優(yōu)秀的同學(xué)沒用到半周就完成的差不多了,而自己卻要用到6天左右的時間。還有一點(diǎn)就是,自己的耐心不足,遇到問題以解決不了,就心
22、煩氣躁,往往一下午沒有很大的進(jìn)展。這些暴露的問題我會在以后的學(xué)習(xí)和生活中逐漸解決,希望在以后的學(xué)習(xí)和生活中老師可以嚴(yá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)在的時間是 ctime(&now); Welcome();Select();return 0;/歡迎void Welcome() /cout現(xiàn)在的時間是 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);/開始頁面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;/后臺 輸入密碼,加景點(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自動跳轉(zhuǎn)中.;Time();system(cls); Administer(); else coutendl;cout密碼錯誤!endl;coutendl;cout還有2-m次機(jī)會endl;coutendl;m+;cout自動跳轉(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)航主頁 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密碼更改成功,登錄時請用更改后的密碼endl;elsecout兩次輸入的密碼不相同endl;elsecout原密碼輸入錯誤endl;cout自動跳轉(zhuǎn)中.endl;Time(); system(cls);Administer();void Remeber()coutendl;cout你已經(jīng)連續(xù)三次輸入密碼錯誤了endl;coutendl; cout請認(rèn)真核對密碼,稍后再試!
32、endl;coutendl;Time();cout自動返回主菜單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)個數(shù)為1個;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)備添加一個新結(jié)點(diǎn)endl;coutendl; cout請輸入此景點(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自動跳轉(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你想對哪兩個結(jié)點(diǎn)間的路徑進(jìn)行管制?endl;int here,that;couthere;coutthat;cout請問你是刪除單項的還是雙向的路徑:;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輸入錯誤endl;DeletPath(); break; case 2: G.adjarcsherethat.adj=G.adjarcsthathere.adj=10000; break; default: cout輸入錯誤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ù)的路的兩個端點(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新修建的路的兩個端點(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 感謝你對本校園導(dǎo)航系統(tǒng)的使用 endl; coutendl;cout 如對本校不懂的地方,你可繼續(xù)使用本系統(tǒng) endl;
45、coutendl;cout 祝君在我校有個美好的觀光經(jīng)歷 endl;coutendl;exit(0);/跳轉(zhuǎn)時間控制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;/前臺 導(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(請輸入起始景點(diǎn)編號:n); scanf(%d,&v0); if(v0G.vernum) printf(景點(diǎn)編號不存在!); printf(請輸入終止景點(diǎn)編號:n); scanf(%d,&v1); if(v1G.vernum) printf(景點(diǎn)編號不存在!); 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路徑長度:G.adjarcsv0v1.adj; elsecoutn路徑長度: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語言程序設(shè)計.北京:中國鐵道出版社2007.P280-P2903 杜茂康.C+面向?qū)ο蟪绦蛟O(shè)計(第二版).北京:電子工業(yè)出版社.2001.P50-P55 附 錄另起一頁。附錄的有無根據(jù)說明書(設(shè)計)情況而定,內(nèi)容一般包括正文內(nèi)不便列出的冗長公式推導(dǎo)、符號說明(含縮寫)、計算機(jī)程序等?!案健薄颁洝敝虚g空兩格、四號字
53、、黑體、居中。附錄中的內(nèi)容一般也取為五號宋體。附錄中有程序源代碼的因篇幅限制可酌情考慮內(nèi)容的字號和行距。附錄資料:不需要的可以自行刪除語言的常用庫函數(shù)函數(shù)1。absread()讀磁盤絕對扇區(qū)函數(shù)原形:int absread(int drive,int num,int sectnum,void *buf)功能:從drive指定的驅(qū)動器磁盤上,sectnum指定的邏輯扇區(qū)號開始讀取(通過DOS中斷0 x25讀取)num個(最多64K個)扇區(qū)的內(nèi)容,儲存于buf所指的緩沖區(qū)中。參數(shù):drive=0對應(yīng)A盤,drive=1對應(yīng)B盤。返回值:0:成功;-1:失敗。頭文件:dos.h函數(shù)2。abswrit
54、e()寫磁盤絕對扇區(qū)函數(shù)原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驅(qū)動器)、1(B驅(qū)動器)、nsects=要寫的扇區(qū)數(shù)(最多64K個);lsect=起始邏輯扇區(qū)號;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格式為:符號數(shù)字.數(shù)字E符號數(shù)字返回值:字符串的轉(zhuǎn)換值。頭文件:math.h、stdlib.h函數(shù)4。atoi()將字符串轉(zhuǎn)換成整型數(shù)的函數(shù)原形:int atoi(const char *s)功能:把s所指向的字符串轉(zhuǎn)換成int類型。s格式為:符號數(shù)字返回值:字符串的轉(zhuǎn)換值。若出錯則返回0。頭文件:stdlib.h函數(shù)5。atol()將字符串轉(zhuǎn)換成長整型數(shù)的函數(shù)原形:long atol(const char *s)功能:把s所指向的字符串轉(zhuǎn)換成long int類型。s格式為:符號數(shù)字返回值:字符串的轉(zhuǎn)換值。若出錯則返回0。頭文件:stdlib.
56、h函數(shù)6。bcd()把一個數(shù)轉(zhuǎn)換成對應(yīng)的BCD碼的函數(shù)原形:bcd bcd(int x)bcd bcd(double x)bcd bcd(double x,int decimals)注意:BCD碼的精度可達(dá)17位。參數(shù)decimals是可選的,用來指定轉(zhuǎn)換后小數(shù)點(diǎn)后的位數(shù)。頭文件:bcd.h函數(shù)7。bdos()原形int bdos(int fnum,unsigned dx,unsigned al)其中fnum是系統(tǒng)調(diào)用號;dx是傳給寄存器DX的值;al是傳給寄存器AL的值;功能DOS系統(tǒng)調(diào)用(INT21H)返回值A(chǔ)X中的值函數(shù)8。biosdisk()調(diào)用BIOS磁盤驅(qū)動程序函數(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-對扇區(qū)進(jìn)行數(shù)據(jù)校驗(yàn)。6-格式化一個磁盤并對化扇區(qū)設(shè)置化標(biāo)志。8-返回當(dāng)前驅(qū)動器參數(shù)在buffer的前4個字節(jié)中。10-長讀,每扇區(qū)讀入512字節(jié)加上額外的4個字節(jié)。11-長寫,每扇區(qū)寫
58、入512字節(jié)加上額外的4個字節(jié)。(2)drive:0-第一個軟驅(qū);1-第二個軟驅(qū);0 x80-第一個硬驅(qū)(3)head:磁頭(4)track:磁道(5)sector:扇區(qū)(6)nsects:扇區(qū)數(shù)(7)buffer:數(shù)據(jù)緩沖區(qū),定義為unsigned char buffer;返回值:0 x00-操作成功0 x01-錯誤命令0 x03-企圖寫具有寫保護(hù)的磁盤0 x07-驅(qū)動器參數(shù)設(shè)置錯誤0 x10-磁盤讀/CRC/ECC錯誤頭文件:bios.h注:對于硬盤主引導(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)功能:通過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è)備超時);位3(I/O出錯);位4(打印機(jī)已選擇);位5(沒紙);位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)存的指針。空間不夠則返回NULL。頭文件:stdlib.h、calloc.h函數(shù)11。ceil()原形double ceil(double num)功能求不小于num的最小雙精度整數(shù)頭文件math.h函數(shù)12。cgets()讀字符串函數(shù)原形:char *cgets(char *str)功能:從控制臺讀入一個字符串,并將該字符串(和字符串長度)存入有str所指向的地址中。注意:在調(diào)用cgets之前,必須將要讀入的字符串最大長度存入str0中,返回時str1被設(shè)置為實(shí)際讀入的字符數(shù)。實(shí)際字符串內(nèi)容從str2開始,以空字符(0)結(jié)尾。返回值:指向str2的指針。頭文件:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年衛(wèi)生資格考試的必修課程試題及答案
- 廣東中煙筆試試題2024
- 外科護(hù)理要點(diǎn)試題及答案列表
- 藥學(xué)研究與執(zhí)業(yè)藥師考試的新方向及試題及答案
- 卓越衛(wèi)生資格考試試題及答案
- 2025年衛(wèi)生資格考試的考生群體分析與試題及答案
- 行政管理工作效率試題及答案2025年
- 精準(zhǔn)識別2025年執(zhí)業(yè)藥師考題風(fēng)格試題及答案
- 航空液壓系統(tǒng)維護(hù)試題及答案
- 中國文學(xué)中的價值觀傳達(dá)及其意義試題及答案
- 2025-2030中國船舶行業(yè)發(fā)展分析及發(fā)展前景與投資研究報告
- 耐藥菌耐藥性監(jiān)測策略-全面剖析
- 北京市通州區(qū)2025年初中學(xué)業(yè)水平模擬考試(一模)英語試卷(含答案)
- 手術(shù)中大出血搶救流程
- 2025重慶武工工業(yè)技術(shù)研究院有限公司招聘15人筆試參考題庫附帶答案詳解
- 輸液導(dǎo)管相關(guān)靜脈血栓形成中國專家共識 課件
- 光伏電站面試題庫及答案
- 2024年泉州實(shí)驗(yàn)中學(xué)初一新生入學(xué)考試數(shù)學(xué)試卷
- 車間技能矩陣管理制度
- 陶藝店管理制度
- 2025-2030中國儲能電站行業(yè)市場深度分析及前景趨勢與投資研究報告
評論
0/150
提交評論