黃秋鳳 廖明惠 李孟歡 楊麗 高茂蘭
(安順學(xué)院電子與信息工程學(xué)院 貴州省安順市 561000)
《校園智能導(dǎo)游系統(tǒng)》(以安順學(xué)院為例)的整體概念設(shè)計(jì)目的是為幫助新入學(xué)的同學(xué)和來校訪問的客人,提供一個更加方便的參觀平臺,并且它是區(qū)別于普通導(dǎo)航軟件的計(jì)算方式和區(qū)域顯示,這個系統(tǒng)能夠在短時間內(nèi)計(jì)算出兩個地方的最短路徑,和能夠很好的了解區(qū)域建筑及構(gòu)造,系統(tǒng)也使用單頁面的形式能夠讓用戶更方便直觀感受和了解。
本系統(tǒng)是將學(xué)校的校園平面圖抽象為數(shù)據(jù)結(jié)構(gòu)中的圖,校園平面圖所含景點(diǎn)10-15 個。圖中頂點(diǎn)表示校園內(nèi)各景點(diǎn)(教學(xué)樓),存放景點(diǎn)(教學(xué)樓)名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關(guān)信息。
本系統(tǒng)主要從數(shù)據(jù)庫表、實(shí)體類、Dao 層、Service 層、測試Service 層代碼、Controller 層、頁面編寫等幾個方面來設(shè)計(jì)開發(fā),數(shù)據(jù)庫設(shè)計(jì)主要是使用MySQL 存儲數(shù)據(jù),持久層設(shè)計(jì)主要是使用Spring Data JPA 框架實(shí)現(xiàn),服務(wù)器端主要是使用的是Spring Boot整合Spring MVC 實(shí)現(xiàn),瀏覽器端主要是使用jQuery 異步訪問服務(wù)器,然后在頁面上生成SVG 展示圖形實(shí)現(xiàn),詳細(xì)設(shè)計(jì)如下:
系統(tǒng)的數(shù)據(jù)存儲使用MySQL 數(shù)據(jù)庫,將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就提高了數(shù)據(jù)訪問的速度及靈活性。
在數(shù)據(jù)庫中使用兩個表保存圖的數(shù)據(jù)(表1、表2):t_node保存頂點(diǎn)信息、t_edge 保存邊信息。把所有的頂點(diǎn)和所有的邊的數(shù)據(jù)取出并放在兩個集合中,這兩個集合就表示圖。

表1:頂點(diǎn)表t_node

表2:邊表t_edge
持久層采用Spring Data JPA 框架實(shí)現(xiàn),Spring Data JPA 是Spring 基于ORM 框架、JPA 規(guī)范的基礎(chǔ)上封裝的一套JPA 應(yīng)用框架,可以使開發(fā)者使用極簡的代碼實(shí)現(xiàn)對數(shù)據(jù)庫的訪問和操作。它提供了包括增刪改查等在內(nèi)的基本功能,且易于擴(kuò)展。
訪問數(shù)據(jù)庫采用ORM,這樣可以把對數(shù)據(jù)庫的操作轉(zhuǎn)變?yōu)閷ava 對象的操作只需關(guān)注業(yè)務(wù)邏輯,不需關(guān)注數(shù)據(jù)庫細(xì)節(jié)。
服務(wù)器端用Spring Boot 整合Spring MVC 實(shí)現(xiàn),Spring Boot 是一個基于Java 的開源框架,用于創(chuàng)建微服務(wù)。用于構(gòu)建獨(dú)立的生產(chǎn)就緒Spring 應(yīng)用。
Spring MVC 是一個模型-視圖-控制器(MVC)Web 框架,建立在中央前端控制器servlet,它負(fù)責(zé)發(fā)送每個請求到合適的處理程序,使用視圖來最終返回響應(yīng)結(jié)果的。Spring MVC 是Spring 產(chǎn)品組合的一部分,它享有Spring IoC 容器緊密結(jié)合Spring 松耦合等特點(diǎn),因此它有Spring 的所有優(yōu)點(diǎn)。
瀏覽器端采用jQuery 異步訪問服務(wù)器,然后在頁面上生成SVG 展示圖形;jQuery 是一個快速、簡潔的JavaScript 框架,它封裝JavaScript 常用的功能代碼,提供一種簡便的JavaScript 設(shè)計(jì)模式,優(yōu)化HTML 文檔操作、事件處理、動畫設(shè)計(jì)和Ajax 交互。
SVG 是W3C 推出的基于XML 的二維矢量圖形標(biāo)準(zhǔn)。SVG 可以提供高質(zhì)量的矢量圖形渲染,同時由于支持JavaScript 和文檔對象模型,SVG 圖形通常具有強(qiáng)大的交互能力。另一方面,SVG 作為W3C 所推薦的基于XML 的開放標(biāo)準(zhǔn),能夠與其他網(wǎng)絡(luò)技術(shù)進(jìn)行無縫集成。
本系統(tǒng)的目的是尋找校園內(nèi)任意兩點(diǎn)之間的最短路徑,采用的是Dijkstra 算法。首先,在圖上確定起點(diǎn)和終點(diǎn),并把起點(diǎn)進(jìn)行標(biāo)記;其次,在所有已標(biāo)記頂點(diǎn)的相鄰未標(biāo)記頂點(diǎn)中,依次計(jì)算起點(diǎn)到頂點(diǎn)的權(quán),查找距離起點(diǎn)最近的頂點(diǎn)并標(biāo)記,不斷重復(fù)以上步驟;最后,當(dāng)終點(diǎn)被標(biāo)記,則找到從指定起點(diǎn)到終點(diǎn)之間的最短路徑。
本系統(tǒng)使用Dijkstra 算法,基于Spring Boot 三層架構(gòu),通過Spring Data JPA 框架訪問數(shù)據(jù)庫,Spring Boot 整合Spring MVC 完成的。在瀏覽器端,使用jQuery 異步訪問服務(wù)器,然后在頁面上生成SVG 展示圖形來實(shí)現(xiàn)的。實(shí)現(xiàn)效果圖如圖1。

圖1:系統(tǒng)實(shí)現(xiàn)效果圖
測試方法:采用JUnit 測試Service 類中的方法,利用雙重for循環(huán)把所有的起止點(diǎn)都測試一遍。頂點(diǎn)數(shù)據(jù)如表3。

表3:頂點(diǎn)數(shù)據(jù)
測試結(jié)果(如表4):第一列為起點(diǎn)頂點(diǎn)id,第一行為終點(diǎn)頂點(diǎn)id,數(shù)據(jù)單位為分鐘。

表4:測試結(jié)果
大多數(shù)的導(dǎo)航系統(tǒng),它的規(guī)劃區(qū)域范圍太廣,對于一些特定區(qū)域做不到實(shí)際的分析路徑,而本系統(tǒng)的開發(fā),彌補(bǔ)了這一缺陷,它能夠更好的服務(wù)于小型區(qū)域,讓用戶更詳細(xì)的對這塊區(qū)域進(jìn)行查看和了解。單頁面的形式,更好的讓用戶使用,簡單易操作的方式也更適合多類型人群的使用和多年齡層段的人使用。系統(tǒng)的實(shí)現(xiàn)幫助新入校的學(xué)生及來校訪問客人用最短的時間熟悉校園環(huán)境、欣賞校園風(fēng)光的同時;系統(tǒng)還可以推廣到求一個旅游風(fēng)景區(qū)任意兩個景點(diǎn)的最短路徑、一個城市中任意兩個不同地點(diǎn)之間的最短路徑、多個城市中任意兩個城市之間的最短路徑,具體一定的實(shí)際意義及使用價值,能夠成為大多數(shù)人的使用。