畢業(yè)論文-基于Android的北京公交離線查詢系統(tǒng)設(shè)計_第1頁
畢業(yè)論文-基于Android的北京公交離線查詢系統(tǒng)設(shè)計_第2頁
畢業(yè)論文-基于Android的北京公交離線查詢系統(tǒng)設(shè)計_第3頁
畢業(yè)論文-基于Android的北京公交離線查詢系統(tǒng)設(shè)計_第4頁
畢業(yè)論文-基于Android的北京公交離線查詢系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、目錄目 錄摘要i引言1第一章 緒論11.1問題的提出及研究意義11.2國內(nèi)研究現(xiàn)狀21.3 本論文組織結(jié)構(gòu)2第二章 關(guān)鍵技術(shù)概述22.1 android平臺相關(guān)內(nèi)容介紹22.2 系統(tǒng)實現(xiàn)工具及運行環(huán)境5第三章 系統(tǒng)需求53.1 用戶需求53.2 系統(tǒng)設(shè)計的原則5第四章 概要設(shè)計64.1系統(tǒng)體系結(jié)構(gòu)64.2 模塊設(shè)計64.3 功能模塊對照表7第五章 詳細設(shè)計75.1 地圖相關(guān)功能模塊75.2 公交查詢功能模塊105.3 公交數(shù)據(jù)下載模塊155.4 數(shù)據(jù)更新模塊175.5 地圖圖存模塊17第六章 公交查詢系統(tǒng)的實現(xiàn)186.1 系統(tǒng)環(huán)境的搭建186.2 軟件組成186.3 android系統(tǒng)虛擬手機

2、196.4 軟件安裝206.5 軟件運行21致 謝23參考文獻24abstract25附錄:程序部分26基于android的北京公交離線查詢系統(tǒng)基于android的北京公交離線查詢系統(tǒng)摘要 在目前已有的公交系統(tǒng)中,存在數(shù)據(jù)更新較慢、不準確等問題?;诎沧康谋本┕浑x線查詢系統(tǒng)還沒有被推廣成為成熟的軟件,本文在分析總結(jié)一些問題的基礎(chǔ)上,設(shè)計并實現(xiàn)了基于安卓的公交離線查詢系統(tǒng)。系統(tǒng)運行于android平臺,使用谷歌地圖,sqlite數(shù)據(jù)庫,主要采用java語言編程。實現(xiàn)了當前位置定位、在地圖中快速查找任一位置,車次查詢、站點查詢、站站查詢、換乘查詢等功能。該公交查詢系統(tǒng)實現(xiàn)了查詢結(jié)果的文本與電子地

3、圖的同時顯示,使系統(tǒng)更直觀、方便。整個查詢過程中,只有谷歌地圖功能需要連接網(wǎng)絡(luò)獲取網(wǎng)絡(luò)數(shù)據(jù),其余功能均能離線執(zhí)行。關(guān)鍵詞:公交查詢;android平臺;sqlite;谷歌地圖;java;eclipsei引 言android是一個真正意義上的開放性移動設(shè)備綜合平臺,它包括操作系統(tǒng)、用戶界面、中間件和一些關(guān)鍵的平臺應(yīng)用,擁有移動電話工作所需的全部軟件。android最大特點在于它是一個開放的體系架構(gòu),具有非常好的開發(fā)和調(diào)試環(huán)境,而且還支持各種可擴展的用戶體驗,android里面具有非常豐富的圖形系統(tǒng)、對多媒體的支持功能和非常強大的瀏覽器。當然,提到android就不得不說手機開放聯(lián)盟(openha

4、ndsetalliance),它是一個由33家手機制造商、軟件商和電信業(yè)組成的推廣android平臺的聯(lián)合會。android平臺的開放性等特點既能促進技術(shù)(包括平臺自身)的創(chuàng)新,又有助于降低開發(fā)成本,還可以使運營商能非常方便地制定特色化的產(chǎn)品,以形成自己的競爭優(yōu)勢,這對于手機制造商來說,具有很強的吸引力。因此,它具有很大的市場發(fā)展?jié)摿ΑS捎谑謾C價格低廉,使用方便,它已成為人們獲得在生活工作上等各種信息服務(wù)的最佳選擇。借助于無線互聯(lián)網(wǎng),基于手機的公交查詢系統(tǒng)能為客戶隨時隨地提供公交信息。鑒于本文做的是關(guān)于北京公交信息離線查詢的系統(tǒng)軟件,固然必須要有存放北京公交信息的數(shù)據(jù)庫,關(guān)于數(shù)據(jù)庫的搜集方面沒

5、有做好,所以在軟件運行階段不能直接實現(xiàn)公交的查詢,試運行階段主要實現(xiàn)了軟件的運行界面及相關(guān)功能的演示。第一章 緒論 1.1問題的提出及研究意義城市公交其覆蓋面廣、經(jīng)濟快捷的特點,目前任然是絕大數(shù)出行者的首選方式,也是各地城市政府大力發(fā)展的一種交通方式。針對目前的實際情況,大力發(fā)展城市公共交通,鼓勵并吸引市民選擇乘公交出行,將會大大減弱交通壓力,從極大程度改善交通狀況。影響城市公交服務(wù)水平的因素主要有四個方面:方便性、迅捷性、經(jīng)濟性、舒適性。改善公交服務(wù),就必須從著四個方面綜合考慮;,一般各城市采取的措施有:(1) 合理布設(shè)公交線路網(wǎng)。(2) 改善公共交通設(shè)施。(3) 提高公交車速。(4) 將設(shè)

6、智能公交系統(tǒng)。同時在建立在線網(wǎng)絡(luò)查詢公交信息的同時也支持離線查詢,即使在沒有網(wǎng)絡(luò)連接更新的情況下可以利用已經(jīng)下載存儲在手機里的地圖使用,并且能對手機里的地圖做進一步的更新,從而使得信息具有實時性和準確性。1.2國內(nèi)研究現(xiàn)狀我國的公交事業(yè)發(fā)展比較落后,公交智能化水平比較低,絕大部分是沿襲舊的運營體制。目前我國的城市公交查詢系統(tǒng)還處于一個相對落后的水平,廣大乘客可以獲得信息的方式很少,公交線路和站點信息的完整性和準確性得不到保證。雖然手機憑借小巧可人的身材、n合一的功能特色,成為數(shù)碼時代人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?,目前大多?shù)基于手機的公交查詢系統(tǒng)都是采用短消息的形式,雖然基于短消息的查詢不受空

7、間約束,但是可能受到運營商的一些約束:硬件方面,如果遇到服務(wù)器、網(wǎng)絡(luò)繁忙時段或信號盲區(qū),導(dǎo)致用戶請求長時間得不到響應(yīng)。1.3 本論文組織結(jié)構(gòu)各章內(nèi)容安排如下:第1章 緒論:本章主要講述設(shè)計題目的研究目的、意義以及現(xiàn)狀,相對于軟件工程的問題定義和可行性研究部分。第2章 關(guān)鍵技術(shù)概述:本章主要介紹了系統(tǒng)所采用的關(guān)鍵技術(shù),這些技術(shù)是構(gòu)成系統(tǒng)的主要技術(shù)因素,并為系統(tǒng)的構(gòu)造提供了理論依據(jù)。第3章 系統(tǒng)需求:本章描述了公交查詢系統(tǒng)的基本用戶需求比如用戶界面等,同時介紹了本軟件的設(shè)計原則以及運行環(huán)境。第4章 概要設(shè)計:本章描述了系統(tǒng)的體系結(jié)構(gòu),詳細描述了系統(tǒng)的具體模塊劃分和模塊的層次結(jié)構(gòu),并詳細描述了各個模

8、塊的功能,為詳細設(shè)計做好鋪墊。第5章 詳細設(shè)計:本章詳細介紹了各個模塊的內(nèi)部處理流程,以及實現(xiàn)模塊的類,類中的函數(shù)以及變量。第6章 系統(tǒng)測試及運行結(jié)構(gòu)分析:本章屬于軟件測試環(huán)節(jié),對于該軟件的運行環(huán)境、運行情況進行詳細的說明,詳細說明軟件的特色和優(yōu)點。第二章 關(guān)鍵技術(shù)概述2.1 android平臺相關(guān)內(nèi)容介紹2.1.1 android操縱系統(tǒng)簡介android一詞的本義指“機器人”,同時也是google于2007年11月5日宣布的基于linux平臺的開源手機操作系統(tǒng),該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。android是基于linu

9、x內(nèi)核的操作系統(tǒng),早期由google開發(fā),后來由開放手機聯(lián)盟開發(fā)。它采用了軟件堆層的構(gòu)架,主要分為三部分。底層是以linux內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則有各公司自行開發(fā),以java作為編寫程序的一部分。另外,為了推廣此技術(shù),google和其他幾十個手機公司建立開放手機聯(lián)盟。2.1.2 android構(gòu)架圖2-1顯示的是android操作系統(tǒng)的主要組件,每個部分將會在下面具體描述。android同一個核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端、sms短消息程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等。所有的應(yīng)用程序都是用java編寫的。android應(yīng)用程序框架

10、開發(fā)者也完全可以訪問核心應(yīng)用程序所使用的api框架。該應(yīng)用程序框架用來簡化組建軟件的重用;任何一個應(yīng)用程序都可以發(fā)布它的功能塊并且任何其他的應(yīng)用程序都可以使用其所發(fā)布的功能塊。該應(yīng)用程序重用機制使得組件可以被用戶替代。 applicationhomecontactsphonebrowser application frameworkactivitymanagerwindowmanagercontentproviderviewsystemnotificationmanagerpackagemanagertelephonymanagerresourcemanagerlocationmanagerx

11、mppservice librariessurface managermedia frameworksqliteopengl|esfreetypewebkitsglssllibcandroid runtimecore librariesdalvik vmlinux kerneldisplaydrivercameradriverblueteethdriverflash memdriverbinder(ipc)driverusbdriverkeypaddriverwifidriveraduiodriverspowermanagement 圖2-1 android系統(tǒng)構(gòu)架 目前android應(yīng)用程序

12、都由一系列的服務(wù)和系統(tǒng)組成,包括:(1) 一個可擴展的視圖(view)可以用來建應(yīng)用程序,包括列表(list)、網(wǎng)格(grids)、文本框(textboxes)、按鈕(buttons),甚至包括一個可嵌入的web瀏覽器。(2) 內(nèi)容管理器(content providers)使得應(yīng)用程序可以訪問另一個應(yīng)用程序的數(shù)據(jù),或者共享它們自己的數(shù)據(jù)。(3) 一個資源管理者(resource manager)提供非代碼資源的訪問,如本地字符串、圖形和分層文件(layout files)。(4) 一個通知管理器(notification manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息。(5) 一

13、個活動類管理器(activity manager)用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。android程序庫-android包括一個被android系統(tǒng)中各種不同組建所使用的c/c+庫集。該庫通過android應(yīng)用程序框架為開發(fā)者提供服務(wù) 。以下是一些主要的核心庫:系統(tǒng)c庫-一個從bsd繼承來的標準c系統(tǒng)函數(shù)(libc),專門為基于embedded linux的設(shè)備定制。媒體庫-基于packetvideo opencore;改庫支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)印象文件包括mpeg4、h.264、mp3、aac、amr、jpg、png。surface manag

14、er-對顯示子系統(tǒng)的管理,并且為多個應(yīng)用程序提供3d和2d圖層的無縫融合。libwebcore-一個最新的web瀏覽器引擎用來支持android瀏覽器和一個可嵌入的web視圖。sgl-一個內(nèi)置的2d圖形引擎3d libraries-基于opengl es 1.0apis實現(xiàn);該庫可以使用硬件3d加速或者使用更高優(yōu)化的3d軟加速。freetype-位圖(bitmap)和向量(vector)字體顯示。sqlite-一個對于所有應(yīng)用程序可用功能強勁的輕型關(guān)系型數(shù)據(jù)庫引擎。android運行庫-android包括一個核心庫,該核心庫提供了java編程語言核心庫的大多數(shù)功能。每個android應(yīng)用程序都

15、在它自己的進程中運行,都擁有一個獨立的dalvik虛擬機實例。dalvik是針對于同時高效地運行多個vms來實現(xiàn)的。dalvik虛擬機執(zhí)行.dex的dalvik可執(zhí)行文件,該格式文件針對內(nèi)存最小使用做了優(yōu)化。該虛擬機是基于寄存器的,所有的類都經(jīng)由java匯編器編譯,然后通過sdk中的dx工具轉(zhuǎn)化成.dx格式由虛擬機執(zhí)行。dalvik虛擬機依賴于linux的一些功能,比如線程機制和底層內(nèi)存管理機制。linux內(nèi)核-android的核心系統(tǒng)服務(wù)依賴于linux2.6內(nèi)核,如安全性、內(nèi)存管理、進程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。linux內(nèi)核也同時作為軟件和硬件堆棧之間的硬件抽象層。 2.2 系統(tǒng)實現(xiàn)工

16、具及運行環(huán)境開發(fā)工具是:eclipse、androidsdk、adt。軟件運行環(huán)境:android操作系統(tǒng)。第三章 系統(tǒng)需求3.1 用戶需求越來越復(fù)雜的公交網(wǎng)絡(luò)使得人們經(jīng)常非常的困惑,為了解決這些問題,在android這個平臺上,設(shè)計開發(fā)一個公交信息查詢系統(tǒng)。系統(tǒng)應(yīng)該具有以下功能:(1) 實現(xiàn)地圖的顯示,并且能夠?qū)Φ貓D進行拖動、放大、縮小。(2) 用戶應(yīng)該能夠從服務(wù)器中下載公交數(shù)據(jù),當公交信息需要更新時,應(yīng)該由管理員在服務(wù)器端進行更改,手機用戶只需要下載新數(shù)據(jù)即可;數(shù)據(jù)庫應(yīng)該直接存在手機中,這樣就不必每次登陸服務(wù)器,提高查詢速度。(3) 系統(tǒng)應(yīng)該可以進行車次查詢,為用戶提供某一路公交的信息,并

17、在地圖中畫出路線。(4) 系統(tǒng)應(yīng)該能夠查詢到在兩個站點之間通車的所有公交車。(5) 系統(tǒng)應(yīng)該能夠進行站點查詢,顯示出經(jīng)過某個站點的所有公交信息。3.2 系統(tǒng)設(shè)計的原則3.2.1 實用性原則該原則主要體現(xiàn)的是所設(shè)計的系統(tǒng)能夠解決實際問題,是所有應(yīng)用系統(tǒng)設(shè)計最基本的最主要的原則,直接關(guān)系到系統(tǒng)成敗?;谑謾C的公交信息查詢系統(tǒng)可以隨時為人們解決出行時的公交選擇問題,使用戶方便的獲取真正想要獲得信息。3.2.2 可靠性原則可靠性是系統(tǒng)設(shè)計的立足點,若設(shè)計的系統(tǒng)故障頻繁,就不能滿足用戶的需求,設(shè)計的公交查詢系統(tǒng)應(yīng)該從以下幾個方面提高其可靠性:故障發(fā)生是應(yīng)該給出提示,提示用戶應(yīng)該如何操作來排除故障;通過測

18、試監(jiān)測系統(tǒng)漏洞,完善系統(tǒng)。3.2.3 易于更新和維護系統(tǒng)的設(shè)計能夠?qū)崿F(xiàn)有關(guān)空間數(shù)據(jù)和屬性數(shù)據(jù)的實時更新和維護。在系統(tǒng)維護時只需在服務(wù)器上維護即可,數(shù)據(jù)的更新和維護要簡單可行。3.2.4 操作簡單操作簡單是軟件設(shè)計過程中需要重視的問題,應(yīng)該精心設(shè)計用戶接口、使系統(tǒng)用戶界面友好,便于用戶理解。第四章 概要設(shè)計 4.1系統(tǒng)體系結(jié)構(gòu)手機客戶端通過無線網(wǎng)與服務(wù)器連接并請求數(shù)據(jù)。如圖4-1所示: 手機客戶端 internet服務(wù)器 圖4-1通信示意圖4.2 模塊設(shè)計4.2.1 程序模塊劃分地圖顯示模塊、gps定位模塊、查找定位模塊、公交查詢模塊、公交數(shù)據(jù)下載模塊、數(shù)據(jù)更新模塊、地圖圖層模塊。4.2.2 程

19、序模塊功能描述(1) 地圖顯示模塊該模塊的功能就是實現(xiàn)地圖的顯示,并且能夠?qū)Φ貓D進行拖動、放大、縮小。當用戶點擊主界面上列表中需要顯示地圖的item時,顯示谷歌地圖,單機地圖界面后能夠浮現(xiàn)出放大、縮小按鈕,每次單擊放大(縮?。┌粹o都能將地圖放大(縮小)一個級別,谷歌地圖共有24個級別,放大級別越高實現(xiàn)結(jié)果越詳細,按住屏幕不放就可以拖動地圖。(2) gps定位模塊本模塊利用系統(tǒng)中的gps服務(wù)實現(xiàn)定位,但是由于模擬器中沒有g(shù)ps模塊,所以需要通過ddms虛擬坐標,模擬衛(wèi)星獲得當前位置并發(fā)給手機的過程。獲得location以后就可以在地圖中找到這個位置,并將地圖更新,使這個location位于地圖中

20、央,并用紅色的圈圈表示出來。(3) 查找定位模塊本模塊實現(xiàn)的功能是在地圖中查找用戶要查找的點,并在地圖中用紅色圓圈標識出來。這個模塊從編輯框中捕獲用戶要查找的地點名以后根據(jù)這個地名字符串在地圖中查找最相近的location,找到之后更新地圖到相應(yīng)的geopoint。(4) 公交查詢模塊公交查詢模塊的主要功能分為三個:車次查詢、站點查詢、站站查詢。車次查詢是從數(shù)據(jù)庫中查詢某一路公交車的信息,包括起始時間,公交路線等,并且可以再地圖中畫出這路公交車的通車路線;站點查詢可以獲得經(jīng)過某個站點的所有公交車,查詢結(jié)果以列表的形式顯示,單擊一項會顯示該路公交車的詳細信息;站站查詢與站點查詢類似,是獲取在兩個

21、站點之間通車的公交車次。(5) 公交數(shù)據(jù)下載模塊本模塊通過http協(xié)議,與web服務(wù)器進行連接,并下載公交數(shù)據(jù)。手機上通過http協(xié)議來獲取網(wǎng)頁一般會有500ms的延遲,網(wǎng)頁請求過程是手機客戶端訪問網(wǎng)頁的最大瓶頸所在。該模塊通過指定url連接到tomcat服務(wù)器,從web服務(wù)器上獲取所選城市對應(yīng)的公交數(shù)據(jù)以數(shù)據(jù)流的方式下載到手機的sdcard上,為了減少處理時間,采用下載與存入數(shù)據(jù)庫并行的方式。該模塊中將獲得的公交數(shù)據(jù)分成公交車名、起始時間、公交路線三段后按照字段存入sqlite數(shù)據(jù)庫中。(6) 數(shù)據(jù)更新模塊本模塊實現(xiàn)管理員對于公交數(shù)據(jù)的管理更新。公交數(shù)據(jù)是存放在服務(wù)器上的,所以當公交數(shù)據(jù)需要

22、更新時,管理員在服務(wù)器端更新文件,手機用戶只需要從服務(wù)器重新獲取新數(shù)據(jù)即可。(7) 地圖圖層模塊該模塊主要功能;在谷歌地圖上增加圖層。例如;在地圖上畫出某一路公交車的行車路線,在地圖上用紅色圓圈標識要查找的地點等。4.3 功能模塊對照表 表4-1 功能模塊對照表模塊名稱 模塊功能地圖顯示模塊顯示地圖,實現(xiàn)地圖拖動、放大、縮小gps定位模塊定位當前位置查找定位模塊在地圖中查找指定位置,并標示出來公交查詢模塊車次查詢、站點查詢、站站查詢公交數(shù)據(jù)下載模塊從服務(wù)器下載公交數(shù)據(jù)并存入數(shù)據(jù)庫數(shù)據(jù)更新模塊管理員對公交數(shù)據(jù)的管理地圖圖層模塊在地圖上增加圖層第五章 詳細設(shè)計5.1 地圖相關(guān)功能模塊5.1.1 地

23、圖顯示模塊(1)模塊描述:該模塊的主要功能:顯示google地圖,并且能夠?qū)Φ貓D進行拖動、放大、縮小。主要變量:private mapview mapview:mapview對象。主要函數(shù): setcontentview(int layoutresid)功能:為界面設(shè)置布局,其中l(wèi)ayoutresid是布局文件。 setbuiltinzoomcontrols(boolean bool)功能:參數(shù)設(shè)置為true時,地圖可以控制,即可以進行拖動、放大、縮小。(2)具體實現(xiàn)android系統(tǒng)集成了googlemap功能,要在自己的系統(tǒng)中使用谷歌地圖首先要申請apikey,獲得apikey以后在清單文

24、件androidmanifest。xml里添加“”,另外,還需要添加3個權(quán)限access_fine_location,access_coarse_location和internet并且要在使用googlemap的layout中手動添加控件,最后就是繼承mapactivity,而不是單純的activity。(3)源文件說明用到地圖顯示的模塊有三個: map_browse.java: 實現(xiàn)地圖瀏覽功能 gpsl_location.java: 實現(xiàn)gps定位的類 searchlocation.java: 在地圖中查找指定的位置的類 showcurrentcity.java: 顯示當前城市的類5.1.

25、2 gps定位模塊(1)模塊描述主要功能:利用gps服務(wù)定位用戶的當前位置主要變量: private locationmanager mlocationmanager01:獲取系統(tǒng)中位置服務(wù)的變量 private mapview mmapview01:地圖視圖對象 private geopoint currentgeopoint:當前位置的geopoint,由經(jīng)緯度構(gòu)成。主要方法: private geopoint getgeobylocation(location location):傳入?yún)?shù)location,將這個location轉(zhuǎn)換成geopoint。 public void refre

26、shmapviewbygeopoint(geopoint gp,mapview mv,int zoomlevel.boolean bifsatellite):更新地圖mv到gp點,將地圖移至以gp為中心的位置,zoomlevel是地圖的放大級別,最后一個變量表示是否顯示衛(wèi)星圖。 private void processlocationupdate(location location):當手機收到位置更改,將location傳入geopoint及mapview,同時更新地圖到新的位置。(2)具體實現(xiàn)主要實現(xiàn)方法有:通過getsystemservice(context.location-servi

27、ce)開啟系統(tǒng)的gps服務(wù),通過getlocationprovider(locationmanager im)獲取到符合條件的位置,之后將獲取到的location轉(zhuǎn)化成經(jīng)緯度格式的geopoint ,然后調(diào)用refreshmapviewbygeopoint(geopoint gp , mapview mv , int zoomlevel , boolean bifsatellite)更新地圖到這個gp點。(3)文件說明gpslocation.java:實現(xiàn)gps定位的類。(4)流程邏輯如圖5-1 所示: 通過locationmanager開啟gps服務(wù)目標位置通過locationprovide

28、r獲取location將location轉(zhuǎn)化成geopoint更新地圖到geopoint在地圖中標注當前位置圖5-1 gps定位模塊流程邏輯5.1.3查找定位模塊(1)模塊描述主要功能以及方法如下:主要變量: private mapview mmap view01:地圖視圖對象 mapcontroller mmapcontroller01:控制地圖大小以及是否可以拖動的變量主要方法: setonclicklistener(new button.onclicklistener():對查詢按鈕單擊時間的監(jiān)聽,當用戶單擊查詢時進行響應(yīng)。 private geopoint getgeobyaddres

29、s(string strsearchaddress):以要查詢的地址為參數(shù),通過地址名在地圖中的查找這個地址的geopoint.(2) 具體實現(xiàn) 系統(tǒng)界面中用了三個控件:edittext,button , mapview . 用戶在edittext中輸入要查詢的地點名稱,單擊查詢按鈕以后調(diào)用getgeobyaddress(string strsearchaddress)函數(shù)進行查詢,將獲得的結(jié)果傳遞給refreshmapviewbygeopoint(geopoint gp,mapview mv,int zoomlevel,boolean bifsatellite),對顯示的地圖進行更新,更新至

30、查詢地點,并用紅色圓圈標注要查詢的地點。(3)文件說明 searchlocation.java:查詢定位的java源文件。(4)輸入項 所要地點名稱。(5)輸出項 將查詢的結(jié)果在地圖中標注出來。(6)處理流程如圖5-2所示: 將地圖移至這個geopoint并標注以地點名為參數(shù)獲取geopoint輸入要查詢的地點名稱 圖5-2 查找定位模塊處理流程5.2 公交查詢功能模塊5.2.1 車次查詢模塊(1)模塊描述該模塊的主要功能是:查詢某一路車的信息,包括公交車名,通車起始時間以及通車路線。模塊功能實現(xiàn)類:forbusinfo類。接口中用到的變量:private string busline:保存獲

31、得的公交的通車路線。forbusinfo類主要變量和方法如下:主要變量: private databsehhelper events:數(shù)據(jù)庫的輔助類對象,用來對數(shù)據(jù)庫進行操作 sqlitedatabase db:數(shù)據(jù)類的對象 cursor mcursor:從數(shù)據(jù)庫中查詢到的結(jié)果進行讀取、寫入的接口,存儲查詢結(jié)果列表主要方法:public viod ok():單擊確定后響應(yīng)的函數(shù),在數(shù)據(jù)庫中查詢edittext中的車次查詢,將查詢到的信息顯示在busdetailedinfo布局界面中。(2)具體實現(xiàn)點擊確定按鈕后判斷edittext是否為空,若為空給出提示,否則在數(shù)據(jù)庫中進行查詢,關(guān)鍵代碼:sq

32、litedatabase db=events.getreadabledatabase(); cursor mcursor=db.query(true,table_name,new string busnum,time, busline,”busnum=?”,new stringedit1.gettext().tostring(),null,null,null,null);查詢結(jié)果為空彈出對話框進行提示,若結(jié)果不為空九江查詢結(jié)果顯示在busdetailedinfo布局界面中,對于這個界面中的“在地圖中顯示”按鈕進行監(jiān)聽,單擊時則將所查到結(jié)果中的busline存入bundle中,以intent的方

33、式啟動drawline這個java類,將通車路線在地圖上畫出來。(3)文件說明forbusinfo.java:查詢某一路公交車的信息的類源文件。(4)輸入項要查詢的的公交車名。(5)輸出項該路公交車的詳細信息,如起始時間、通車路線等。(6)流程邏輯該流程邏輯如圖5-3所示: 在數(shù)據(jù)庫中進行查詢,返回cursor輸入要查詢的車次名稱車次為空cursor為null將查詢到的信息在界面中顯示車次查詢結(jié)束提示用戶輸入提示不存在yesnoyesno 圖5-3 車次查詢模塊流程邏輯5.2.2 站點查詢模塊(1)模塊描述該模塊的主要功能是:查詢經(jīng)過某個站點的所有公交車,查詢結(jié)果以列表的形式列出,列表每一項包

34、括公交車名,通車起始時間以及通車路線。焦點移到某一項時該路公交車的通車路線以走馬燈(文字從右向左滑動顯示)的效果顯示。點擊其中一項,會顯示這一路公交車的詳細信息。模塊功能實現(xiàn)類:busstopinfo,showstopinfo,showclick類。接口中用到的變量:public stopname保存要查詢的站點名稱。busstopinfo類主要變量和方法如下:主要變量:bundle bundle:將不同類型的變量映射到一個字符串,在這里將編輯框中的內(nèi)容映射到stopname中,以便與其他activity進行通信傳遞要查詢的站點名稱。showstopinfo類主要變量和方法如下:主要變量: p

35、rivate static stringfrom=busnum,time,busline;與后面的to數(shù)組相結(jié)合,顯示查詢結(jié)果,公交車名,起始時間,通車路線3個字段與他們的位置的映射關(guān)系。 private static in to=r.id.num,r.id.busline。 simplecursoradapter adapter:將查詢結(jié)果按照from,to的方式進行映射,顯示在列表中。主要方法:protected void onlistitemclick(listview arg(),view arg1,int arg2,long arg3): 單擊列表中某一項后相應(yīng)的函數(shù),根據(jù)arg2判

36、斷單擊的是哪一項,將這一路公交車的信息存入bundle中,將這些參數(shù)傳遞給showclick類,在showclick類中顯示公交車的詳細信息。(2)具體實現(xiàn)點擊確定按鈕后判斷edittext是否為空,若為空給出提示,否則在數(shù)據(jù)庫中進行查詢,關(guān)鍵代碼:sqlitedatabase db=events.getreadabledatabase();cursor c=db.query(table_name,new string _id,busnum,time,busline,“busline like?”,new string“%”+stopname+”%”,null,null,null);查詢結(jié)果為

37、空彈出對話框進行提示,如結(jié)果不為空就將查詢到的的結(jié)果顯示在stopinfo布局界面中。界面最上方的標題設(shè)置為“經(jīng)過”+stopname+“的公交車有:”.然后對單擊事件進行監(jiān)聽,單擊某一想以后將該項公交車信息傳遞給showclick類,在showclick類中完成公交車詳細信息的顯示。(3)文件說明busstopinfo.java:提示用戶輸入要查詢的站點名稱的類源文件;showstopinfo.java:對busstopinfo傳入的站點名稱進行查詢,并將查詢結(jié)果顯示在列表中;showclick.java:現(xiàn)實所單擊公交車的詳細信息。(4)輸入項要查詢的站點名稱(5)輸出項經(jīng)過該站點的所有公

38、交車,以及這些公交車的信息。(6)流程邏輯流程邏輯如圖5-4所示:在數(shù)據(jù)庫中進行查詢,返回cursor輸入要查詢的站點名稱站點為空cursor為null將查詢到的信息在界面中顯示站點查詢結(jié)束提示用戶輸入提示不存在yesnoyesno 圖5-4 站點查詢模塊流程邏輯5.2.3 站站查詢模塊(1)模塊描述該模塊的主要功能是:與站點查詢類似,查詢在兩個站點之間通車的所有公交車,查詢結(jié)果以列表的形式列出,列表的每一項包括公交車名,通車起始時間以及通車路線。焦點移到某一項時該路公交車的通車路線以走馬燈(文字從右向左滑動顯示)的效果顯示。點擊其中的一項,會顯示這一路公交車的詳細信息。模塊功能實現(xiàn)類:sto

39、p2stopresult,stop2stop,showclick類。主要變量方法等與站點查詢類似,在這里不再贅述。(2)具體實現(xiàn)點擊確定按鈕后判斷兩個edittext是否都為空,若有一個或者兩個為空給出提示,否則在數(shù)據(jù)庫中進行查詢,關(guān)鍵代碼:sqlitedatabase db=events.getreadabledatabase();cursor c=db.query(table_name,new string_id,busnum,time,busline,“busline like? or busline like?”,new string“%”+stopname+ “%”+stopname

40、2+“%”,“%”+stopname2+“%”+stopname+“%”,null,null,null);查詢結(jié)果為空彈出對話框進行提示,若不為空就將查詢結(jié)果顯示在stopinfo布局界面中。界面最上方的標題設(shè)置為“經(jīng)過”+stopname+“和”+stopname2+“的公交車有:”。然后對單擊事件進行監(jiān)聽,單擊某一項以后該項公交車信息傳遞給showclick類,在showclick類中完成公交車詳細信息的顯示。(3)文件說明 stop2stop.java:提示用戶輸入要查詢的兩個站點名稱的類源文件。 stop2stopresult.java:對stop2stop傳入的站點名進行查詢,并將查

41、詢結(jié)果顯示在列表中。 showclick.java:現(xiàn)實所單擊公交車的詳細信息。(4)輸入項要查詢的兩個站點名稱(5)輸出項在這兩個站點之間通車的所有公交車,以及這些公交車的信息。(6)流程邏輯流程邏輯如圖5-5所示:在數(shù)據(jù)庫中進行查詢,返回cursor輸入要查詢的站點名稱兩個站點都不為空cursor為null將查詢到的信息在界面中顯示站站查詢結(jié)束提示用戶輸入提示不存在yesnoyesno 圖5-5 站站查詢模塊流程邏輯5.3 公交數(shù)據(jù)下載模塊(1)模塊描述該模塊功能:點擊更新公交數(shù)據(jù)時,彈出選擇城市對話框,用戶點擊選擇后連接tomcat服務(wù)器,下載公交數(shù)據(jù)文件,同時存入sqlite數(shù)據(jù)庫。模

42、塊功能實現(xiàn)類:download,select2download,databse,databsehelper類主要變量和方法有:變量: download load:定義一個下載的變量,用來下載文件。 private url url:資源定位符。 private urlconnection uc:一個具有特定協(xié)議類型的url交換數(shù)據(jù)通信鏈路。方法: public void start():從服務(wù)器中下載數(shù)據(jù)器然后寫入文件。 public string getfilename(string str):獲得url對應(yīng)的文件名,在sdcard中以相同的名稱存放。 public void devideto

43、item(string filename):將原先的文本文件中的內(nèi)容切分成段,將每個字段假如數(shù)據(jù)庫中。 private void addevent(string string,string string1,string string2): 向數(shù)據(jù)庫中添加一行。(2)具體實現(xiàn)用戶點擊更新公交數(shù)據(jù)時,彈出選擇城市對話框,用戶點擊確定后連接tomcat服務(wù)器,調(diào)用download類中的函數(shù)start()開始下載公交數(shù)據(jù)文件,下載同時保存選擇的城市名,傳遞城市名給databse類,在databse類的oncreate()函數(shù)中調(diào)用devidetoitem(filename)函數(shù),將文件中的每一輛公交車

44、的信息切分成三段,并調(diào)用addevent(string string,string string1,string string2)函數(shù)將這三段按照字段存入數(shù)據(jù)庫。數(shù)據(jù)庫中實體及屬性如圖5-7所示:公交數(shù)據(jù)公交車名起始時間通車路線 圖5-7 數(shù)據(jù)庫中的公交車實體及屬性圖(3)文件說明 download.java:從服務(wù)器下載文件到sdcard. select2download.java:供用戶選擇要下載公交數(shù)據(jù)的城市名。 databse.java:數(shù)據(jù)庫操作類,將文件中的內(nèi)容分段,然后存入數(shù)據(jù)庫。 databsehhelper.java:數(shù)據(jù)庫輔助類,實現(xiàn)數(shù)據(jù)庫的建立、更新等。(4)輸入項要下載

45、公交數(shù)據(jù)的城市名。(5)輸出項存有該城市的公交數(shù)據(jù)的數(shù)據(jù)庫event.db。(6)公交數(shù)據(jù)下載模塊流程邏輯流程邏輯如圖5-8所示: download.start()從服務(wù)器下載選擇用戶要下載的公交數(shù)據(jù)devidetoitem(filename)addevent()向數(shù)據(jù)庫中add添加完成,得到event.db 圖5-8 公交數(shù)據(jù)下載模塊流程邏輯5.4 數(shù)據(jù)更新模塊模塊描述服務(wù)器端公交數(shù)據(jù)以文本形式存在,當數(shù)據(jù)需要更新管理員只需要更新文件就可以了。5.5 地圖圖存模塊(1)模塊描述本模塊完成在地圖中添加圖存的工作,例如在地圖上畫紅色的圓圈來標識要查找的地點,在地圖上畫公交路線等。這個模塊實現(xiàn)的類

46、:overlay,myoverlay類,兩個類均繼承overlay,overlay是android提供的存在地圖上添加圖層的基類,只要重載其中的draw函數(shù)就可以在地圖上畫出不同的標志。(2)文件說明 overlay.java:畫出紅色圓圈來指定位置。 myoverlay.java:在某一路公交車的每個途徑站點畫藍色的圓圈,相鄰兩個站點之間畫藍色的線。第六章 公交查詢系統(tǒng)的實現(xiàn)6.1 系統(tǒng)環(huán)境的搭建 eclipse是一種多功能的集成開發(fā)環(huán)境,能開發(fā)java相關(guān)的軟件,在windows系統(tǒng)下需要安裝android sdk,eclipse和adt插件。6.2 軟件組成如圖6-1: 圖6-1 軟件組

47、成 在eclipse集成環(huán)境下創(chuàng)建一個android的應(yīng)用軟件并命名為“and”,會生成幾個文件夾。文件夾src中主要存放大量的java源程序,文件夾res中主要存放界面設(shè)計需要的xml文檔、界面圖片和數(shù)據(jù)庫文件。公交車的活動類主要在busactivity.java程序中,軟件界面設(shè)計主要在main.xml文檔中。6.3 android系統(tǒng)虛擬手機 圖6-2 虛擬手機 android的虛擬手機等同于現(xiàn)實世界中的android機器,但是沒有現(xiàn)實生活中手機那么操作簡單,由于該虛擬手機的輸入法中只有英文跟日文的輸入方法,固然不能實現(xiàn)北京的公交的直接查詢,所以在該虛擬手機上又安裝了搜狗拼音輸入法,不但

48、實現(xiàn)了公交查詢的實現(xiàn),還實現(xiàn)了站點的查詢。6.4 軟件安裝 圖6-3 軟件安裝后系統(tǒng)菜單軟件安裝之后會在模擬手機的軟件菜單中發(fā)現(xiàn)北京公交離線查詢的快捷方式,跟電腦中的軟件一樣,點擊這個快捷方式就會運行該軟件,而且為該虛擬手機安裝的搜狗輸入法可以協(xié)助公交查詢系統(tǒng)實現(xiàn)站點查詢功能,輸入一個北京公交數(shù)據(jù)庫中存在的站點名稱,就會出現(xiàn)經(jīng)過該站點的所有公交。6.5 軟件運行 圖6-4 軟件運行界面從軟件的運行界面中可以看出,實現(xiàn)的功能有線路查詢、站點查詢,軟件的界面是北京地圖的部分截圖,同時說明查詢結(jié)果的顯示位置。點擊menu按鈕會有“幫助”“聯(lián)系我”“退出”按鈕。 圖6-5 線路查詢輸入公交的線路點擊“

49、搜索信息”就會出現(xiàn)1路公交車經(jīng)過的所有站點名稱,在站點查詢中輸入站點名稱,就會顯示經(jīng)過該站點的所有公交,如果不存在該路公交或者不存在該站點名稱,則輸出“沒有您要找的信息”。致 謝論文完成之際,首先向我的指導(dǎo)老師胡哲老師致以深深的敬意和由衷的感謝。從畢業(yè)論文選題和整個論文完成期間,胡哲老師在研究思路方面和論文寫作上給予了我悉心的指導(dǎo)。同時得益于胡老師所帶的操作系統(tǒng)、計算機網(wǎng)絡(luò)、java程序設(shè)計和數(shù)據(jù)結(jié)構(gòu),使得我的論文能順利的完成。感謝我的輔導(dǎo)員楊俊仙老師,感謝她在這四年中對我學(xué)習(xí)上和生活上的幫助,感謝她為全班所做的一切。同時,對理學(xué)院的所有老師致以衷心的感謝和崇高的敬意。生活在信息與計算科學(xué)專業(yè)

50、的大家庭中,感到無比的光榮,特別感謝在論文的格式和程序調(diào)試上給予我?guī)椭耐瑢W(xué)。在安徽農(nóng)業(yè)大學(xué)學(xué)習(xí)的四年中結(jié)識的各位摯友,是我人生中最大的一筆財富。在此,對他們表示衷心感謝。 全文共45頁,第44頁參考文獻參考文獻1陶佩楓 城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn),萬方中文數(shù)據(jù)庫。2. ed burnette.hello,android.美國,isbn-10:1-934356-17-14.3. 于小平,楊國東;城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)j.吉林大學(xué)學(xué)報。4. mark l.murphy.beginningandroid.isbn-13(pbk):978-1-4302-2419-8.5. 張帥 基于its的

51、智能乘客信息系統(tǒng)研究河北工業(yè)大學(xué)碩士論文6. 蓋索林 王世江. google android 開發(fā)入門指南 人民郵電出版社7. 于志龍 anaroid sdk開發(fā)大全 人民郵電出版社8. 彭小偉、胡子祥 城市公交服務(wù)質(zhì)量乘客評價的實證研究. 西南交大學(xué)報9. 李剛 瘋狂android講義 電子工業(yè)出版社10. 王貴彬 劉家蘭 java大學(xué)教程 清華大學(xué)出版社abstractabstract in the exsiting system of public transportation query,there are still some problems, such as slow updat

52、ing and inaccurate data. the beijing bus off-line query system based on the android is not being popularized to a molding software now. after analysing and summurizing several problems,the bus off-line query system based on android is designed as well as implemented.system,running on the android pla

53、tform, using google maps and sqlite database, mainly use java language programing to achieve its function,which includes current location,searching any position quick ly,trips inquiries,station inquiries,site transfer inquiries and so on. to make the system more intuitive and convenient,the public transportation inquiry system achieves the show of the text result and electronic map at the same time, in the entire query proces

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論