国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于安卓系統(tǒng)的西北地區(qū)旅游信息查詢(xún)系統(tǒng)

2014-04-29 16:08:42陳德武等
計(jì)算機(jī)時(shí)代 2014年1期
關(guān)鍵詞:S模式

陳德武等

摘 要: 為了方便快捷地為旅客提供旅游信息,設(shè)計(jì)并開(kāi)發(fā)了一個(gè)基于安卓操作系統(tǒng)的西北地區(qū)旅游信息查詢(xún)系統(tǒng)。該系統(tǒng)基于C/S模式,服務(wù)器端使用JSP語(yǔ)言和Struts2+Spring+Hibernate開(kāi)源框架編寫(xiě),實(shí)現(xiàn)旅游景點(diǎn)信息的瀏覽、添加、修改和刪除,同時(shí)為客戶(hù)端提供下載和更新數(shù)據(jù)的接口;客戶(hù)端為基于Android平臺(tái)的智能手機(jī),可以瀏覽、搜索旅游景點(diǎn)信息,也可以通過(guò)無(wú)線網(wǎng)絡(luò)從服務(wù)器端下載和更新旅游景點(diǎn)信息。實(shí)際應(yīng)用表明,該系統(tǒng)穩(wěn)定可靠,操作方便,應(yīng)用前景很廣。

關(guān)鍵詞: Android操作系統(tǒng); 旅游信息查詢(xún); C/S模式; Web Services; JSON

中圖分類(lèi)號(hào):TP315 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2014)01-74-04

0 引言

現(xiàn)在人們生活水平普遍提高,外出旅游成為日常生活的一部分。目前,游客獲取旅游信息的主要方式是咨詢(xún)旅行社或者上網(wǎng)查詢(xún),這種方式獲取的旅游信息比較粗略,不直觀,不靈活。隨著3G移動(dòng)網(wǎng)絡(luò)的飛速發(fā)展和安卓智能手機(jī)的普及,使游客在安卓智能手機(jī)上實(shí)現(xiàn)旅游信息方便快捷地查詢(xún)成為可能性。本文設(shè)計(jì)了一種基于安卓系統(tǒng)的西北地區(qū)旅游信息查詢(xún)系統(tǒng),并且進(jìn)行了編碼實(shí)現(xiàn),使用該系統(tǒng),只要在無(wú)線網(wǎng)絡(luò)覆蓋的范圍內(nèi),人們就可以通過(guò)安卓手機(jī)快捷實(shí)時(shí)地查詢(xún)旅游信息,從而為制定旅游計(jì)劃提供決策支持。

1 Android操作系統(tǒng)

Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)的名稱(chēng)[1]。Android操作系統(tǒng)采用了分層的架構(gòu),它分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層。

應(yīng)用程序?qū)佑梢幌盗蠥ndroid系統(tǒng)內(nèi)置的核心應(yīng)用程序和用戶(hù)開(kāi)發(fā)的應(yīng)用程序組成,這些應(yīng)用程序是開(kāi)發(fā)人員調(diào)用應(yīng)用程序框架層的API函數(shù)使用Java語(yǔ)言來(lái)開(kāi)發(fā)的。應(yīng)用程序框架層包含開(kāi)發(fā)應(yīng)用程序所使用的API框架,這些框架包括豐富而又可擴(kuò)展的視圖、內(nèi)容提供器、資源管理器、通知管理器和活動(dòng)管理器等,可以開(kāi)發(fā)出各式各樣的應(yīng)用。系統(tǒng)運(yùn)行庫(kù)層包含一些C/C++庫(kù),包括音頻視頻庫(kù)、2D和3D圖形庫(kù)、Web瀏覽器引擎等,這些庫(kù)能被Android系統(tǒng)中不同的組件使用,它們通過(guò)Android應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)[1]。Linux內(nèi)核層只用來(lái)提供基本功能,也就是系統(tǒng)的底層服務(wù),它添加了一個(gè)名為Goldfish的虛擬CPU以及Android 運(yùn)行所需的特定驅(qū)動(dòng)代碼,包括安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧及一系列的驅(qū)動(dòng)模塊[2]。

Android平臺(tái)的開(kāi)放性允許任何移動(dòng)終端廠商加入到Android聯(lián)盟中來(lái),從而不存在以往任何阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專(zhuān)有權(quán)障礙[2]。Android系統(tǒng)是一個(gè)對(duì)第三方軟件完全開(kāi)放的平臺(tái),其代碼完全開(kāi)源免費(fèi),并且開(kāi)發(fā)其應(yīng)用程序的Java語(yǔ)言也是開(kāi)源免費(fèi)的。

2 系統(tǒng)架構(gòu)設(shè)計(jì)

該系統(tǒng)采用C/S模式:客戶(hù)端為基于Android系統(tǒng)的智能手機(jī),支持無(wú)線上網(wǎng),用來(lái)從服務(wù)器端下載和更新旅游信息;服務(wù)器端為1臺(tái)PC,所使用的服務(wù)器軟件為Apache基金會(huì)的Tomcat,可以添加、刪除、修改、查詢(xún)旅游信息,并且為手機(jī)客戶(hù)端提供下載和更新旅游信息的服務(wù)。系統(tǒng)整體架構(gòu)如圖1所示。

為了減少手機(jī)上網(wǎng)次數(shù),節(jié)省移動(dòng)數(shù)據(jù)流量,使用手機(jī)客戶(hù)端Android系統(tǒng)自帶的SQLite數(shù)據(jù)庫(kù),存儲(chǔ)旅游信息。用戶(hù)使用系統(tǒng)時(shí),首先通過(guò)無(wú)線網(wǎng)絡(luò)和Internet向服務(wù)器發(fā)出下載請(qǐng)求,服務(wù)器從MySQL數(shù)據(jù)庫(kù)中查詢(xún)到所要下載的旅游信息,發(fā)送到手機(jī)客戶(hù)端,手機(jī)客戶(hù)端將這些旅游信息存儲(chǔ)到SQLite數(shù)據(jù)庫(kù)中;當(dāng)用戶(hù)瀏覽旅游信息時(shí),手機(jī)客戶(hù)端就可以從SQLite數(shù)據(jù)庫(kù)中讀取旅游信息,顯示在界面上;當(dāng)服務(wù)器端的旅游信息被修改時(shí),用戶(hù)也可以同步更新手機(jī)客戶(hù)端SQLite數(shù)據(jù)庫(kù)中所存儲(chǔ)的旅游信息。

3 系統(tǒng)軟件設(shè)計(jì)

3.1 服務(wù)器端軟件設(shè)計(jì)

服務(wù)器端主要實(shí)現(xiàn)旅游景點(diǎn)信息的瀏覽、添加、修改、刪除,同時(shí)為客戶(hù)端提供下載和更新數(shù)據(jù)的接口,服務(wù)器端主界面如圖2所示。服務(wù)器端軟件使用MyEclipse集成開(kāi)發(fā)工具,基于JSP語(yǔ)言和目前流行的Struts2+Spring+Hibernate開(kāi)源框架編寫(xiě),采用MVC開(kāi)發(fā)模式,分為DAO、Service和Action三層,如圖3所示。DAO層類(lèi)包含一些對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查的細(xì)粒度的方法,Service層類(lèi)的方法調(diào)用DAO層的方法實(shí)現(xiàn)業(yè)務(wù)邏輯的功能,Action層類(lèi)的方法調(diào)用Service層類(lèi)的業(yè)務(wù)邏輯方法對(duì)客戶(hù)端的請(qǐng)求進(jìn)行處理和響應(yīng)[3]。

存儲(chǔ)旅游景點(diǎn)信息的服務(wù)器端數(shù)據(jù)庫(kù)表結(jié)構(gòu)如圖4所示,手機(jī)客戶(hù)端數(shù)據(jù)表結(jié)構(gòu)中沒(méi)有更新標(biāo)記字段,其他字段與服務(wù)器端相同。其中,所在城市字段是通過(guò)省市聯(lián)動(dòng)的選擇方式獲取,圖片字段存儲(chǔ)的是十幅旅游景點(diǎn)圖片名稱(chēng)(相鄰兩幅圖片名稱(chēng)用#隔開(kāi)),經(jīng)緯度是通過(guò)在GoogleMap上點(diǎn)擊旅游景點(diǎn)所在的位置自動(dòng)獲取的(緯度和經(jīng)度用#分隔)。當(dāng)添加或修改旅游景點(diǎn)信息時(shí),圖片名稱(chēng)和其他字段數(shù)據(jù)保存到MySQL數(shù)據(jù)表里,圖片數(shù)據(jù)使用Struts2框架的多文件上傳方式保存到服務(wù)器應(yīng)用目錄的upload文件夾,供手機(jī)客戶(hù)端下載。更新標(biāo)記字段標(biāo)記旅游景點(diǎn)信息是否被修改,如果被修改,設(shè)置為1,否則設(shè)置為0。

服務(wù)器端為客戶(hù)端提供的下載和更新旅游信息的接口為InterestsAction類(lèi)的一些方法,手機(jī)客戶(hù)端通過(guò)訪問(wèn)這些方法便可得到所需要的旅游景點(diǎn)信息。

3.2 手機(jī)客戶(hù)端軟件設(shè)計(jì)

本系統(tǒng)手機(jī)客戶(hù)端的主要功能是用戶(hù)可以瀏覽、下載、更新和搜索旅游景點(diǎn)信息,如圖5所示。本系統(tǒng)客戶(hù)端采用Eclipse集成開(kāi)發(fā)工具下的Android 2.3模擬器插件進(jìn)行開(kāi)發(fā),調(diào)用了Android API的GUI組件類(lèi)庫(kù)。

當(dāng)用戶(hù)進(jìn)入主界面時(shí),手機(jī)客戶(hù)端從SQLite數(shù)據(jù)庫(kù)中將所有的旅游景點(diǎn)信息查詢(xún)出來(lái),用ExpendableListView組件分類(lèi)顯示,如圖6所示。當(dāng)用戶(hù)瀏覽某個(gè)旅游景點(diǎn)信息時(shí),客戶(hù)端根據(jù)該旅游景點(diǎn)的名稱(chēng)從SQLite數(shù)據(jù)庫(kù)中查詢(xún)到其詳細(xì)信息,將一些基本信息顯示到界面上,其他更詳細(xì)的信息可通過(guò)點(diǎn)擊用GridView組件實(shí)現(xiàn)的菜單按鈕來(lái)瀏覽,如圖7所示。其中天氣信息查詢(xún)使用Web Services技術(shù)從中國(guó)氣象局的天氣預(yù)報(bào)Web服務(wù)網(wǎng)站http://www.webxml.com.cn/上獲取,如圖8所示。景點(diǎn)地圖瀏覽使用的是GoogleMap API,可以以普通地圖視圖、衛(wèi)星視圖和混合視圖的形式顯示,如圖9所示。顯示景點(diǎn)圖片時(shí),客戶(hù)端根據(jù)旅游信息中的圖片名稱(chēng)字段從SDCard中動(dòng)態(tài)獲取圖片數(shù)據(jù),以畫(huà)廊的形式顯示出來(lái),用戶(hù)可以很方便地拖動(dòng)瀏覽。

用戶(hù)下載旅游景點(diǎn)信息的流程如圖10所示。

當(dāng)服務(wù)器端的旅游景點(diǎn)信息被修改時(shí),更新標(biāo)記字段updated被設(shè)置為1。用戶(hù)更新手機(jī)客戶(hù)端的旅游景點(diǎn)信息與服務(wù)器同步的流程如圖11所示。

3.3 技術(shù)難點(diǎn)

在用戶(hù)瀏覽旅游景點(diǎn)的天氣信息時(shí),使用的是Web Services技術(shù)。Web Services是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Services能與其他兼容的組件進(jìn)行互操作[4]。使用該技術(shù)可以進(jìn)行天氣預(yù)報(bào)、股票行情、火車(chē)飛機(jī)時(shí)刻表、郵政編碼以及IP地址等查詢(xún)。本系統(tǒng)調(diào)用Web Services使用的是ksoap2庫(kù),ksoap2是JAVA環(huán)境下的一個(gè)輕量級(jí)Web Services客戶(hù)端庫(kù),被設(shè)計(jì)用在Applets和J2ME中。KSOAP2-Android是其在Android平臺(tái)下的移植,它提供了一個(gè)高效的SOAP庫(kù),借助于ksoap2我們就能夠訪問(wèn)Web Services服務(wù)[5],本系統(tǒng)使用ksoap2庫(kù)查詢(xún)天氣信息的具體步驟如下(具體代碼略):

⑴ 導(dǎo)入ksoap2-Android的jar包ksoap2-android-assembly-

2.4-jar-with-dependencies.jar及其依賴(lài)庫(kù)到工程;

⑵ 指定WebService的命名空間和調(diào)用的方法名,然后設(shè)置調(diào)用方法的參數(shù)值;

⑶ 生成調(diào)用WebService方法的SOAP請(qǐng)求信息,該消息由SoapSerializationEnvelop對(duì)象描述;

⑷ 創(chuàng)建AndroidHttpTransport對(duì)象,并發(fā)送請(qǐng)求給服務(wù)器;

⑸ 接受服務(wù)器相應(yīng),并序列化SOAP消息,最后使用getResponse方法獲得WebService方法的返回結(jié)果;

⑹ 對(duì)返回結(jié)果進(jìn)行解析,得到詳細(xì)的天氣信息。

手機(jī)客戶(hù)端下載和更新每個(gè)旅游景點(diǎn)的信息,需要從服務(wù)器端下載十幅圖片的數(shù)據(jù),為了提高下載速度,節(jié)約下載時(shí)間,本系統(tǒng)采用多線程并行下載的方式。每次下載時(shí),運(yùn)行五個(gè)線程,每個(gè)線程下載兩幅圖片。下載線程使用HttpURLConnection連接對(duì)象獲得服務(wù)器端圖片數(shù)據(jù)的InputStream輸入流,然后從該輸入流中讀取字節(jié)數(shù)據(jù)以RandomAccessFile對(duì)象的方式寫(xiě)到SDCard的文件中。

當(dāng)下載旅游景點(diǎn)的詳細(xì)信息時(shí),從服務(wù)器端向客戶(hù)端傳輸?shù)氖锹糜尉包c(diǎn)信息表的一些記錄組成的字符串。為了減少這些字符串所占用的字節(jié)數(shù),并且便于生成和解析,這里使用目前最流行的JSON數(shù)據(jù)格式來(lái)表示。JSON(JavaScript Object Notation)是一種輕量級(jí)的完全獨(dú)立于語(yǔ)言的數(shù)據(jù)交換格式,易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成。它有兩種基礎(chǔ)結(jié)構(gòu):對(duì)象結(jié)構(gòu)和數(shù)組結(jié)構(gòu)。對(duì)象結(jié)構(gòu)表示為將一些鍵值對(duì)用逗號(hào)隔開(kāi)并將它們用“{}”括起來(lái),數(shù)組結(jié)構(gòu)是將一些字段值用“[]”括起來(lái)的表示形式,使用對(duì)象、數(shù)組這兩種基礎(chǔ)結(jié)構(gòu)就可以組合成復(fù)雜的數(shù)據(jù)結(jié)構(gòu)了。本系統(tǒng)傳輸旅游景點(diǎn)詳細(xì)信息所使用的JSON數(shù)據(jù)格式表示為:{"旅游景點(diǎn)信息": [{"旅游景點(diǎn)1": [{"名稱(chēng)": "名稱(chēng)1", "類(lèi)別": "類(lèi)別1", "所在城市": "所在城市1", …, "圖片名稱(chēng)": "圖片名稱(chēng)1", "經(jīng)緯度": "經(jīng)緯度1" }], "旅游景點(diǎn)2": [{ "名稱(chēng)": "名稱(chēng)2", "類(lèi)別": "類(lèi)別2", "所在城市": "所在城市2", …, "圖片名稱(chēng)": "圖片名稱(chēng)2", "經(jīng)緯度": "經(jīng)緯度2"}],... }]}。

3.4 測(cè)試結(jié)果

將本系統(tǒng)客戶(hù)端的apk文件安裝到一部某國(guó)產(chǎn)安卓手機(jī)(雙核1GHz主頻的CPU,512M RAM),服務(wù)器端部署到一臺(tái)PC的Tomcat服務(wù)器軟件上,在無(wú)線網(wǎng)絡(luò)覆蓋的區(qū)域,用客戶(hù)端進(jìn)行旅游景點(diǎn)信息的瀏覽、下載和更新測(cè)試。結(jié)果表明,整個(gè)系統(tǒng)運(yùn)行流暢,下載和更新旅游信息的速度也比較快,達(dá)到了預(yù)期效果。

4 結(jié)束語(yǔ)

在目前3G移動(dòng)網(wǎng)絡(luò)飛速發(fā)展的條件下,針對(duì)普及的安卓智能手機(jī)設(shè)計(jì)并開(kāi)發(fā)了一款西北地區(qū)旅游信息查詢(xún)系統(tǒng)。測(cè)試結(jié)果表明,該系統(tǒng)運(yùn)行流暢,操作簡(jiǎn)便,具有很高的可用性和可靠性,并且本系統(tǒng)客戶(hù)端基于Android平臺(tái)開(kāi)發(fā),還可以移植到裝有安卓操作系統(tǒng)的平板電腦、智能電視等終端上,這種跨平臺(tái)的可移植性拓寬了其應(yīng)用范圍。

參考文獻(xiàn):

[1] 冷威龍.android_百度百科[EB/OL].百度百科.

[2] 李 琴,陳立定,任志剛.基于Android智能手機(jī)遠(yuǎn)程視頻監(jiān)控系統(tǒng)的

設(shè)計(jì)[J].電視技術(shù),2012.36(7):134

[3] 符鈺.基于Struts2+Hibemate3+Spring3框架的Web應(yīng)用研究[J].

金華職業(yè)技術(shù)學(xué)院學(xué)報(bào),2013.13(3):61

[4] 張和平.web services_百度百科[EB/OL].百度百科.

[5] 彭海文.Android Web Services應(yīng)用研究[J].電腦知識(shí)與技術(shù),2011.7

(12):2851

猜你喜歡
S模式
學(xué)生考勤系統(tǒng)開(kāi)發(fā)
基于Web的畢業(yè)設(shè)計(jì)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
以B/S模式為基礎(chǔ)的網(wǎng)絡(luò)題庫(kù)平臺(tái)建設(shè)
明日博客系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
基于B_S模式的游戲化學(xué)習(xí)系統(tǒng)研究
科技視界(2016年25期)2016-11-25 20:45:58
集團(tuán)公司OA系統(tǒng)的研究與開(kāi)發(fā)
S模式空管二次雷達(dá)詢(xún)問(wèn)與監(jiān)視技術(shù)研究
鋁材B2B電子商務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 
基于ASP.NET的就業(yè)見(jiàn)習(xí)管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于B/S模式的數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)平臺(tái)設(shè)計(jì)
考試周刊(2016年44期)2016-06-21 20:10:03
昌宁县| 景德镇市| 临沧市| 安多县| 元阳县| 鹰潭市| 金川县| 固镇县| 宜宾市| 北辰区| 吉首市| 雅安市| 昭觉县| 仪陇县| 陇西县| 武功县| 广安市| 东乡县| 射阳县| 乌鲁木齐县| 吉林省| 黔西| 旬邑县| 渑池县| 吉安县| 南华县| 建湖县| 永顺县| 长顺县| 潜山县| 砚山县| 交城县| 达州市| 板桥市| 唐山市| 和龙市| 无为县| 临沭县| 邵武市| 霍林郭勒市| 孙吴县|