




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.畢業(yè)設(shè)計(jì)(論文)設(shè)計(jì)論文題目:基于Android平臺(tái)的實(shí)時(shí)公交查詢系統(tǒng)學(xué)生:學(xué)生學(xué)號(hào):專業(yè)班級(jí):學(xué)院名稱:指導(dǎo)老師:學(xué)院院長(zhǎng):2015 年5 月 30 . v.基于Android平臺(tái)的實(shí)時(shí)公交查詢系統(tǒng)摘要目前公交已經(jīng)成為了城市必不可缺交通工具,豐富交錯(cuò)的公交車線路網(wǎng)絡(luò)讓人們的出行,上下班獲得了巨大的方便和實(shí)惠。然而,因?yàn)楣痪€路的錯(cuò)綜復(fù)雜,而且信息來(lái)源較為缺乏,使得人們難以便捷地獲得準(zhǔn)確的公交信息,這樣對(duì)一些人的出行就會(huì)產(chǎn)生一定的影響。隨著信息技術(shù)的高速發(fā)展,互聯(lián)網(wǎng)已經(jīng)融入到千千萬(wàn)萬(wàn)的家庭中,為他們帶來(lái)了很大便利。在如今4G時(shí)代,智能手機(jī)必將成為出行者導(dǎo)航、信息查詢的良好終端。本課題將研究城
2、市公交的實(shí)時(shí)運(yùn)行線路及乘客的需求狀況,目的在于幫助出行者隨時(shí)隨地快速選擇正確的乘車線路。實(shí)現(xiàn)的方式將通過(guò)Android平臺(tái)設(shè)計(jì)出相應(yīng)的方案,做出能夠運(yùn)行在Android系統(tǒng)的手機(jī)客戶端。實(shí)時(shí)分析的基本思想是將公路上的人流信息以唯一標(biāo)識(shí)、時(shí)間、位置為屬性進(jìn)行統(tǒng)計(jì)分析,找出每天每個(gè)人在公路上在特定時(shí)間的流動(dòng)規(guī)律,以此推斷公交的到站時(shí)間,并在手機(jī)app中顯示,以此作為乘客的候車依據(jù),從而實(shí)現(xiàn)“實(shí)時(shí)”。為了完成這個(gè)應(yīng)用的開(kāi)發(fā),以C/S作為開(kāi)發(fā)模式,需要開(kāi)發(fā)客戶端用戶交互界面、數(shù)據(jù)的獲取與分析處理以及基于B/S結(jié)構(gòu)的后臺(tái)管理系統(tǒng)。關(guān)鍵詞:Java;手機(jī)公交查詢;Android;SQLiteReal-ti
3、me Public Transportation Query System Based on Android platformAbstractCurrently the bus has become indispensable urban transport, rich staggered bus line network to let people travel, commuting was a great convenience and benefits. However, since the bus lines are complex, but more a lack of source
4、s of information, making it difficult to easily obtain accurate public information, so some people will have to travel a certain impact. With the rapid development of information technology, the Internet has been integrated into millions of homes, as they bring a lot of convenience. In today's e
5、ra of 4G smart phones will become the travelers navigate, good information inquiry terminal. This paper will examine the needs of real-time status of city bus routes and passengers, is designed to help travelers anywhere quickly choose the right car lines. The way to achieve through the Android plat
6、form design the appropriate solutions to make the system to run on Android mobile client. The basic idea of real-time analysis of the flow of information is on the road to uniquely identify, time, location of property for statistical analysis to identify everyone on the roads every day flow pattern
7、within a specific time, in order to infer the arrival time of the bus, and displayed in the phone app as a passenger waiting basis, in order to achieve "real time." To accomplish this the development of applications to C / S as a development mode, we need to develop a client user interface
8、, data acquisition and analysis process, and based on B / S structure of the back office systems.Keywords: Java; Mobile and querying traffic; Android; SQLite.目錄第一章 緒論11.1 課題背景11.2 研究容11.3 工作容2第二章 需求分析與概要設(shè)計(jì)32.1 需求分析32.1.1 總體需求分析32.1.2 系統(tǒng)數(shù)據(jù)庫(kù)需求分析32.1.3 服務(wù)器端需求分析32.1.4 客戶端需求分析42.1.5 開(kāi)發(fā)環(huán)境及工具需求分析62.2 概要設(shè)計(jì)6
9、2.2.1 開(kāi)發(fā)流程62.2.2 系統(tǒng)數(shù)據(jù)流圖6第三章 模式設(shè)計(jì)83.1 C/S模式簡(jiǎn)介83.2 B/S模式簡(jiǎn)介83.3 B/S-C/S模式93.3.1 B/S-C/S模式定義93.3.2 B/S-C/S模式特點(diǎn)10第四章 數(shù)據(jù)庫(kù)設(shè)計(jì)124.1 數(shù)據(jù)庫(kù)結(jié)構(gòu)124.2 服務(wù)器數(shù)據(jù)庫(kù)設(shè)計(jì)124.2.1 Oracle簡(jiǎn)介124.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)134.3 客戶端數(shù)據(jù)庫(kù)設(shè)計(jì)154.3.1 SQLite簡(jiǎn)介154.3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)16第五章 服務(wù)器端詳細(xì)設(shè)計(jì)195.1 后臺(tái)管理模式195.2 查詢簡(jiǎn)析205.2.1 線路查詢215.2.2 站點(diǎn)查詢215.2.3 用戶軌跡225.2.4 用戶管理23
10、5.3 數(shù)據(jù)庫(kù)同步235.3.1 Servlet235.3.2 DAO23第六章 客戶端詳細(xì)設(shè)計(jì)246.1 簡(jiǎn)述246.2 什么是Android246.3 Android系統(tǒng)架構(gòu)簡(jiǎn)介256.3.1 應(yīng)用程序(APPLICATIONS)256.3.2 應(yīng)用程序框架(APPLICATION FRAMEWORK)266.3.3 Android 運(yùn)行時(shí)(RUNTIME)266.3.4 系統(tǒng)庫(kù)(LIBRARIES)266.3.5 Linux276.4 實(shí)現(xiàn)客戶端數(shù)據(jù)庫(kù)276.4.1 SQL語(yǔ)言276.4.2 創(chuàng)建數(shù)據(jù)庫(kù)276.4.3 客戶端數(shù)據(jù)庫(kù)操作286.5 客戶端功能模塊實(shí)現(xiàn)296.5.1 用戶登錄
11、注冊(cè)296.5.2 換乘、線路、站點(diǎn)查詢(離線模式)306.5.3 換乘查詢(在線模式)316.5.4 數(shù)據(jù)下載316.5.5 選擇城市33第七章 結(jié)論34致 35參 考 文 獻(xiàn)36. v.第一章 緒論1.1課題背景隨著我國(guó)社會(huì)經(jīng)濟(jì)、科技的高速發(fā)展,城市規(guī)模的擴(kuò)大,人們上班、上學(xué)、出游等活動(dòng)量也隨之增長(zhǎng),導(dǎo)致部分城市嚴(yán)重?fù)矶?,比如、這樣的大城市,公交線路系統(tǒng)龐大,車輛眾多,交通擁堵不斷加劇,給出行帶來(lái)諸多不便。智能公交的發(fā)展對(duì)于廣大出行者來(lái)說(shuō)顯得越來(lái)越重要1。然而現(xiàn)有公交系統(tǒng)存在諸多問(wèn)題,人們?nèi)ス徽军c(diǎn)乘公交車常常會(huì)遇到以下幾種情況:(1)馬上就要到公交站點(diǎn)了,卻眼看著公交車剛剛開(kāi)走。(2)在
12、公交站點(diǎn)等了很長(zhǎng)時(shí)間也沒(méi)來(lái)車,猶豫著是改用其它交通工具還是再等一等。(3)換乘站點(diǎn)有多路車可供選擇,有的離目的地近,但是車次間隔長(zhǎng);有的離目的地稍遠(yuǎn),但是車次間隔短,不知乘哪一路 更好。(4)對(duì)于外地人員或者對(duì)某些地區(qū)不太熟悉的人員不知乘坐什么線路公交車才能到達(dá)目的地。隨著移動(dòng)3G、4G網(wǎng)絡(luò)的發(fā)展的日漸成熟,目前大部分智能手機(jī)都能通過(guò)應(yīng)用客戶端從互聯(lián)網(wǎng)獲取大量信息,基于智能手機(jī)平臺(tái)開(kāi)發(fā)的實(shí)時(shí)公交查詢系統(tǒng)就是通過(guò)從服務(wù)器獲取公交線路信息、地理位置分析乘車方案及公交實(shí)時(shí)到站信息。目前很多手機(jī)軟件,如“高德地圖”,“百度地圖“,”車來(lái)了“,”無(wú)線城市“,”掌上公交等,都具備公交查詢和路線選擇功能,然
13、而他們多數(shù)是基于靜態(tài)數(shù)據(jù)的查詢,無(wú)法反映實(shí)時(shí)交通路況,解決不了以上問(wèn)題,當(dāng)然也有少數(shù)一些具備實(shí)時(shí)查詢功能,但卻并不完善,存在信息不全、信息不穩(wěn)、系統(tǒng)不穩(wěn)等問(wèn)題c。1.2研究容本課題通過(guò)調(diào)研城市實(shí)際交通狀況、查閱相關(guān)文獻(xiàn)資料,根據(jù)自己所學(xué)知識(shí),開(kāi)發(fā)一個(gè)基于android平臺(tái)的實(shí)時(shí)公交查詢手機(jī)應(yīng)用。實(shí)時(shí)分析的基本思想是將公路上的人流信息以唯一標(biāo)識(shí)、時(shí)間、位置為屬性進(jìn)行統(tǒng)計(jì)分析,找出每天每個(gè)人在公路上在特定時(shí)間的流動(dòng)規(guī)律,以此推斷公交的到站時(shí)間,并在手機(jī)app中顯示,以此作為乘客的候車依據(jù),從而實(shí)現(xiàn)“實(shí)時(shí)”。研究容主要分為三個(gè)部分:公交線路、站點(diǎn)數(shù)據(jù),手機(jī)客戶端,PC服務(wù)器端。公交線路、站點(diǎn)數(shù)據(jù)方面
14、,從互聯(lián)網(wǎng)資源獲取各城市的公交信息,并存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中,以便手動(dòng)更新及客戶端的調(diào)用。手機(jī)客戶端方面,先設(shè)計(jì)好簡(jiǎn)潔、美觀的顯示和操作界面,根據(jù)從服務(wù)器下載下來(lái)離線公交信息,為用戶提供合適的外出乘車方案,并能隨時(shí)隨地離線查詢公交線路、站點(diǎn)信息。PC服務(wù)器端方面,根據(jù)公交查詢系統(tǒng)的功能需求,設(shè)計(jì)服務(wù)器與手機(jī)客戶端之間的交互流程和通信機(jī)制,管理各個(gè)城市的公交線路、站點(diǎn)數(shù)據(jù),實(shí)現(xiàn)公交數(shù)據(jù)的增、刪、改、查。根據(jù)用戶乘車方案以上傳的實(shí)時(shí)位置信息,分析公交的實(shí)時(shí)位置信息,預(yù)計(jì)公交到站時(shí)間。1.3工作容在整個(gè)課題設(shè)計(jì)中,使用了數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)、WEB系統(tǒng)實(shí)現(xiàn)、Android應(yīng)用開(kāi)發(fā)技術(shù),其中包括SSH框架、JS
15、P、HTML、CSS、JavaScript等技術(shù)。具體工作容,包括以下四五個(gè)部分:1 設(shè)計(jì)系統(tǒng)的整體框架和交互機(jī)制,包括客戶端與服務(wù)器之間的通信機(jī)制、通信接口的設(shè)計(jì),在系統(tǒng)各個(gè)實(shí)體之間的交互流程的設(shè)計(jì)、服務(wù)器各組件間交互設(shè)計(jì);2 數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)及具體城市公交數(shù)據(jù)獲?。? 服務(wù)器、客戶端功能的代碼實(shí)現(xiàn);4 模擬數(shù)據(jù)的生成、系統(tǒng)測(cè)試. v.第二章 需求分析與概要設(shè)計(jì)2.1需求分析2.1.1 總體需求分析基于Android平臺(tái)的手機(jī)實(shí)時(shí)公交線路查詢軟件最基本的功能是能夠有效的為用戶提供查詢服務(wù),在最短的時(shí)間給用戶一條或多條到達(dá)目標(biāo)地的路徑,并且能夠提示公交何時(shí)到站。整個(gè)查詢過(guò)程中,公交線路數(shù)據(jù)是預(yù)
16、先通過(guò)服務(wù)器下載到手機(jī)本地的,所以查詢算在本地實(shí)現(xiàn),而公交的到站時(shí)間是通過(guò)服務(wù)器實(shí)時(shí)獲取的。實(shí)時(shí)信息的獲取是通過(guò)對(duì)公交運(yùn)行狀態(tài)(某時(shí)間點(diǎn)下對(duì)應(yīng)的地理位置)的歷史統(tǒng)計(jì)數(shù)據(jù)來(lái)建立對(duì)應(yīng)的模型和分析,根據(jù)分析結(jié)果預(yù)測(cè)公交車在未來(lái)某個(gè)時(shí)間點(diǎn)的運(yùn)行狀態(tài),綜合當(dāng)前實(shí)時(shí)運(yùn)行信息與歷史交通流量模型,實(shí)時(shí)預(yù)測(cè)公交車位置和公交車到站時(shí)間,以此作為依據(jù)向用戶推薦計(jì)算出來(lái)的實(shí)時(shí)公交出行方案2。乘車方案查詢是計(jì)算用戶請(qǐng)求的兩點(diǎn)之間符合用戶要求的綜合最優(yōu)的實(shí)時(shí)公交出行方案。查詢算法包括直達(dá)算的和一次換乘算法。2.1.2 系統(tǒng)數(shù)據(jù)庫(kù)需求分析實(shí)時(shí)公交查詢系統(tǒng)以公交信息數(shù)據(jù)為基礎(chǔ),公交數(shù)據(jù)又分為靜態(tài)和動(dòng)態(tài)數(shù)據(jù),其中靜態(tài)數(shù)據(jù)包括公
17、交車的線路信息、站點(diǎn)信息、公交的線路軌等,動(dòng)態(tài)數(shù)據(jù)包括公交車的實(shí)時(shí)位置數(shù)據(jù)、實(shí)時(shí)路況等3。本系統(tǒng)的靜態(tài)公交數(shù)據(jù)通過(guò)相關(guān)網(wǎng)絡(luò)資源獲取,根據(jù)這些原始數(shù)據(jù)的數(shù)據(jù)庫(kù)和編碼規(guī)則,將這些信息完整有效地、完整地組織起來(lái)并存儲(chǔ)到本地SQLite數(shù)據(jù)庫(kù)中,并能夠進(jìn)行數(shù)據(jù)的增、刪、改、查操作。在動(dòng)態(tài)公交數(shù)據(jù)方面,主要是用戶上傳到服務(wù)器的實(shí)時(shí)位置信息,只要設(shè)計(jì)出相應(yīng)的能存儲(chǔ)用戶名、對(duì)應(yīng)的位置和時(shí)間信息的表即可。2.1.3服務(wù)器端需求分析服務(wù)器作為后臺(tái),需要專業(yè)人員對(duì)服務(wù)器操作和維護(hù),一般情況可由非專業(yè)人員借助管理軟件對(duì)服務(wù)器進(jìn)行常規(guī)維護(hù)。服務(wù)器可以通過(guò)數(shù)據(jù)庫(kù)同步,為客戶端數(shù)據(jù)庫(kù)提供數(shù)據(jù)。通過(guò)仔細(xì)分析服務(wù)器需求之后,
18、服務(wù)器端要完成以下功能:1、服務(wù)器后臺(tái)管理功能服務(wù)器后臺(tái)管理是針對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,具有增、刪、改、查功能。2、數(shù)據(jù)同步功能。采用Servlet技術(shù),響應(yīng)客戶端請(qǐng)求,返回給客戶端一端數(shù)據(jù)流,該數(shù)據(jù)流按照Xml語(yǔ)言規(guī)寫入數(shù)據(jù)流。服務(wù)器端功能模塊劃分如圖2.1所示。圖 2.1 服務(wù)器端功能模塊圖2.1.4客戶端需求分析客戶端主要是手機(jī),用戶無(wú)法通過(guò)手機(jī)對(duì)本地?cái)?shù)據(jù)庫(kù)進(jìn)行操作,也無(wú)法對(duì)服務(wù)器數(shù)據(jù)庫(kù)操作,管理員可以通過(guò)手機(jī)瀏覽器登錄到服務(wù)器管理員頁(yè)面對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,可以使用一些功能。該軟件應(yīng)滿足若干要求,比如能夠隨時(shí)掌握公交信息,動(dòng)態(tài)更新最新數(shù)據(jù)等。也要考慮作為手機(jī)軟件可能會(huì)出現(xiàn)查詢速度慢,數(shù)據(jù)流量過(guò)大
19、,過(guò)度依賴服務(wù)器等問(wèn)題。通過(guò)仔細(xì)分析用戶需求之后,該軟件要完成以下功能:1、 登錄注冊(cè)功能用戶可以注冊(cè)個(gè)人賬號(hào),用戶登錄系統(tǒng)。2、線路查詢功能獲得線路經(jīng)過(guò)的每個(gè)站點(diǎn)信息以及線路的票價(jià)信息和發(fā)車時(shí)間信息。3、站點(diǎn)查詢功能根據(jù)輸入的具體站點(diǎn),能夠獲得包含該站點(diǎn)的所有公交線路。4、換乘查詢功能輸入起點(diǎn)和終點(diǎn),能夠快速得出乘車方案,并存“查詢歷史”中,方便下次直接獲取。5、數(shù)據(jù)下載功能根據(jù)客戶端輸入的城市名,服務(wù)響應(yīng)查詢結(jié)果并返回該城市公交線路數(shù)據(jù)庫(kù)文件,客戶端可點(diǎn)擊下載到本地??蛻舳斯δ苣K劃分如圖2.2所示。圖2.2 客戶端功能模塊圖2.1.5 開(kāi)發(fā)環(huán)境及工具需求分析服務(wù)器端開(kāi)發(fā)環(huán)境,以windo
20、ws7操作系統(tǒng)為開(kāi)發(fā)平臺(tái),用Tomcat6.0做為服務(wù)器,ORACLE和SQLite作為數(shù)據(jù)源,Myeclipse8.6作為開(kāi)發(fā)工具,SSH作為開(kāi)發(fā)框架,運(yùn)行在一般的PC機(jī)上即可??蛻舳碎_(kāi)發(fā)環(huán)境,以Android手機(jī)操作系統(tǒng)為開(kāi)發(fā)平臺(tái),用Android手機(jī)操作系統(tǒng)自帶的SQLite作為數(shù)據(jù)源。ADT(Android Development Tools)作為開(kāi)發(fā)工具,Java語(yǔ)言和Xml語(yǔ)言作為開(kāi)發(fā)語(yǔ)言,實(shí)體安卓手機(jī)作為測(cè)試工具。整個(gè)Android手機(jī)操作系統(tǒng)是在Android SDK提供的虛擬機(jī)中運(yùn)行,該虛擬機(jī)運(yùn)行在windows7操作系統(tǒng)上,所以客戶端的開(kāi)發(fā)是在windows7操作系統(tǒng)上運(yùn)行
21、的Android操作系統(tǒng)中進(jìn)行的二次開(kāi)發(fā)4。2.2 概要設(shè)計(jì)2.2.1 開(kāi)發(fā)流程開(kāi)發(fā)流程如圖2.3所示。運(yùn)行測(cè)試調(diào)試程序編寫程序確定功能調(diào)查研究?jī)?yōu)化完善圖2.3 開(kāi)發(fā)流程圖2.2.2系統(tǒng)數(shù)據(jù)流圖系統(tǒng)數(shù)據(jù)流程如圖2.4所示。圖2.4 系統(tǒng)數(shù)據(jù)流圖第三章 模式設(shè)計(jì)3.1 C/S模式簡(jiǎn)介C/S模式是一種三層結(jié)構(gòu)的系統(tǒng),第一層在客戶機(jī)上安裝了客戶機(jī)應(yīng)用程序,第二層在服務(wù)器上安裝服務(wù)器管理程序,第三層是數(shù)據(jù)訪問(wèn)層。在C/S模式的工作過(guò)程中,客戶機(jī)程序向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器程序接收客戶機(jī)程序提出的請(qǐng)求并且作出相應(yīng)處理,然后向客戶機(jī)返回處理結(jié)果5。C/S模式特點(diǎn):(1)C/S模式將應(yīng)用與服務(wù)分離,使系統(tǒng)具
22、有更高穩(wěn)定性和靈活性(2)C/S模式配備的是點(diǎn)對(duì)點(diǎn)的適用于局域網(wǎng)的結(jié)構(gòu)模式,具有可靠的安全性(3)由于客戶端與服務(wù)器端之間沒(méi)有中間環(huán)節(jié),實(shí)現(xiàn)了直接連接, ,因此響應(yīng)速度快(4)在C/S模式中,作為客戶機(jī)的計(jì)算機(jī)都必須安裝客戶端程序,一旦軟件系統(tǒng)升級(jí),每臺(tái)客戶機(jī)都要重新安裝升級(jí)后的客戶端應(yīng)用程序,因此C/S模式在系統(tǒng)升級(jí)和系統(tǒng)維護(hù)方面顯得較為復(fù)雜。3.2 B/S模式簡(jiǎn)介B/S模式是一種從傳統(tǒng)的二層C/S(客戶/服務(wù))模式基礎(chǔ)上而發(fā)展起來(lái)的新的網(wǎng)絡(luò)結(jié)構(gòu)模式,其本質(zhì)可以說(shuō)是三層網(wǎng)絡(luò)結(jié)構(gòu)的C/S模式。只要在用戶的計(jì)算機(jī)上安裝如IE、火狐、谷歌等瀏覽器軟件,將相關(guān)數(shù)據(jù)存放在服務(wù)器上并且在服務(wù)器上安裝服務(wù)
23、應(yīng)用程序,服務(wù)器分為WEB服務(wù)器、服務(wù)器和文件服務(wù)器等。用戶可以通過(guò)已經(jīng)安裝好的瀏覽器軟件來(lái)訪問(wèn)服務(wù)器,進(jìn)行互聯(lián)網(wǎng)信息瀏覽、電子傳遞和文件傳輸?shù)确?wù)6。B/S模式特點(diǎn):(1)系統(tǒng)開(kāi)發(fā)、維護(hù)、升級(jí)方便 每當(dāng)服務(wù)器應(yīng)用程序需要進(jìn)行升級(jí)時(shí),只需升級(jí)服務(wù)器上的應(yīng)用程序即可,而不需要修改用戶計(jì)算機(jī)上的瀏覽器軟件,從而讓系統(tǒng)開(kāi)發(fā)、升級(jí)和維護(hù)更加方便。(2)B/S模式具有很強(qiáng)的開(kāi)放性 在B/S模式下,用戶通過(guò)通用的瀏覽器軟件進(jìn)行訪問(wèn),極增強(qiáng)了系統(tǒng)的開(kāi)放性。(3)B/S模式的結(jié)構(gòu)易于擴(kuò)展由于Web的平臺(tái)無(wú)關(guān)性,B/S模式的結(jié)構(gòu)可以進(jìn)行任意的擴(kuò)展,可以由僅包含一臺(tái)服務(wù)器和幾個(gè)用戶的小型系統(tǒng),擴(kuò)展成為包含成千上萬(wàn)
24、個(gè)用戶的大型系統(tǒng)。(4)用戶使用方便 B/S模式的應(yīng)用軟件一般都是基于Web瀏覽器的,而不同Web瀏覽器的界面都是相似的,對(duì)于用戶未登錄系統(tǒng)的相關(guān)功能頁(yè)面,用戶所接觸到的界面都是一致的,從而讓用戶使用更加方便。3.3 B/S-C/S模式3.3.1 B/S-C/S模式定義B/S-C/S模式是將B/S模式和C/S模式組合而來(lái)的,吸取這兩種模式的優(yōu)點(diǎn),達(dá)到互補(bǔ)的作用。B/S模式和C/S模式都是三層結(jié)構(gòu),B/S模式第一層是表現(xiàn)層,第二層是業(yè)務(wù)邏輯層,第三層是數(shù)據(jù)訪問(wèn)層。C/S模式三層結(jié)構(gòu)中第一層是客戶端與B/S模式中的第一層不一樣,其余兩層相同。在B/S模式和C/S模式數(shù)據(jù)訪問(wèn)過(guò)程和業(yè)務(wù)邏輯處理過(guò)程中
25、是在服務(wù)器端完成,用戶只需接受服務(wù)器返回的結(jié)果。在B/S-C/S模式中,一部分?jǐn)?shù)據(jù)訪問(wèn)過(guò)程和業(yè)務(wù)邏輯處理過(guò)程在客戶端完成,另外一部分?jǐn)?shù)據(jù)訪問(wèn)過(guò)程和業(yè)務(wù)邏輯處理過(guò)程在服務(wù)器端完成。本手機(jī)公交線路查詢軟件一部分功能只要依靠手機(jī)本地?cái)?shù)據(jù)庫(kù)就可以實(shí)現(xiàn),令外一部分功能需要借助互聯(lián)網(wǎng)實(shí)現(xiàn)7。目前不論是手機(jī)硬件還是計(jì)算機(jī)硬件,更新速度很快,而且硬件的配置水平也越來(lái)越高,在硬件條件允許的情況下把一部分業(yè)務(wù)處理、數(shù)據(jù)訪問(wèn)的過(guò)程放在客戶端去完成,那么對(duì)服務(wù)器的硬件要求就會(huì)低一些,甚至一些高性能的PC機(jī)就可以作為服務(wù)器。從整個(gè)作業(yè)量來(lái)看,本質(zhì)上是把作業(yè)量往客戶端多分?jǐn)傄徊糠郑档头?wù)器的作業(yè)量,因此,對(duì)客戶端的硬件
26、要比較高的。B/S-C/S模式結(jié)構(gòu)如圖3.1 所示。圖3.1 B/S-C/S模式結(jié)構(gòu)圖本軟件系統(tǒng)采用B/S-C/S模式,系統(tǒng)框架如圖3.2所示。圖3.2 系統(tǒng)框架圖3.3.2 B/S-C/S模式特點(diǎn)B/S-C/S模式在繼承了B/S模式和C/S模式的優(yōu)點(diǎn)之后,還具有以下特點(diǎn):(1) 可靠性高1、客戶端不必完全依賴于服務(wù)器,即便脫離服務(wù)器,還有手機(jī)數(shù)據(jù)庫(kù)的支持,可以繼續(xù)使用一部分功能。2、客戶端的數(shù)據(jù)丟失的時(shí)候,可以采用數(shù)據(jù)庫(kù)同步的方式從服務(wù)器獲得新的數(shù)據(jù)信息。(2) 省資源一部分作業(yè)在客戶端完成,服務(wù)器的訪問(wèn)量和作業(yè)量都會(huì)減少,省資源,維護(hù)起來(lái)會(huì)更加方便。第四章 數(shù)據(jù)庫(kù)設(shè)計(jì)4.1 數(shù)據(jù)庫(kù)結(jié)構(gòu)服務(wù)
27、器數(shù)據(jù)庫(kù)為總數(shù)據(jù)源,每一個(gè)客戶端都擁有獨(dú)立的小型數(shù)據(jù)庫(kù)??蛻舳藬?shù)據(jù)庫(kù)信息從服務(wù)器端同步獲得。服務(wù)器的數(shù)據(jù)庫(kù)是基于Oracle和SQLite建立,客戶端數(shù)據(jù)庫(kù)是基于SQLite建立。數(shù)據(jù)庫(kù)體系結(jié)構(gòu)如圖4.1所示。圖4.1 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)圖4.2 服務(wù)器數(shù)據(jù)庫(kù)設(shè)計(jì)4.2.1 Oracle簡(jiǎn)介ORACLE數(shù)據(jù)庫(kù)系統(tǒng)是美國(guó)ORACLE公司(甲骨文)提供的以分布式數(shù)據(jù)庫(kù)為核心的一組軟件產(chǎn)品,是目前最流行的客戶/服務(wù)器(CLIENT/SERVER)或B/S體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)之一8。比如SilverStream就是基于數(shù)據(jù)庫(kù)的一種中間件。ORACLE數(shù)據(jù)庫(kù)是目前世界上使用最為廣泛的數(shù)據(jù)庫(kù)管理系統(tǒng),作為一個(gè)通用
28、的數(shù)據(jù)庫(kù)系統(tǒng),它具有完整的數(shù)據(jù)管理功能;作為一個(gè)關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫(kù)它實(shí)現(xiàn)了分布式處理功能。但它的所有知識(shí),只要在其中一種機(jī)型上學(xué)習(xí)了ORACLE知識(shí),便能在其它各種類型的機(jī)器上使用它。Oracle數(shù)據(jù)庫(kù)目前的最新版本為Oracle Database 12c。一個(gè)新的多承租方架構(gòu)被引入Oracle數(shù)據(jù)庫(kù)12c,使用這種多承租方架構(gòu)可輕松地對(duì)數(shù)據(jù)庫(kù)進(jìn)行云部署和管理。此外,一些創(chuàng)新特性可以讓資源的使用率和靈活性得到最大限度地提高,如Oracle Multitenant可進(jìn)行快速整合多個(gè)不同的數(shù)據(jù)庫(kù),而Automatic Data Optimization和Heat
29、Map能以更高的壓縮率來(lái)壓縮數(shù)據(jù)和更高密度對(duì)數(shù)據(jù)進(jìn)行分層。這些獨(dú)一無(wú)二的技術(shù)進(jìn)步,再加上在安全性、可用性大數(shù)據(jù)支持方面的主要增強(qiáng),使得Oracle數(shù)據(jù)庫(kù)12c 成為公有云和私有云部署的理想平臺(tái)9。4.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)E-R關(guān)系如圖4.2所示。圖4.2 服務(wù)器數(shù)據(jù)E-R圖根據(jù)上面的E-R圖,本軟件服務(wù)器端定義的數(shù)據(jù)庫(kù)設(shè)計(jì)了以7表:站點(diǎn)表:site(表4.2)、線路表:bus(表4.3)、公交詳情表表: bus_intro(表4.4)、城市表:city(表4.5)、管理員表:user(表 4.6)、用戶表:uuser(表 4.7)、用戶軌跡表:userlocation(表 4.8)本軟件服務(wù)器數(shù)
30、據(jù)庫(kù)所包含的表的描述如表4.1。表4.1 數(shù)據(jù)庫(kù)概況表表名描述主要字段site(站點(diǎn)表)保存站點(diǎn)信息site_id,site_bus_id,site_order,site_namebus(線路表)保存線路信息bus_id,bus_type,bus_name,bus_site_numbus_intro(公交詳情表)介紹公交相關(guān)信息intro_id,intro_bus_id,intro_textcity(城市表)user(管理員表)uuser(用戶表)userlocation(用戶軌跡表)保存城市公交數(shù)據(jù)源保存管理員信息保存用戶信息保存用戶軌跡信息cityId,cityName,dbUrluser
31、Id,username,passworduserId,username,realName,passwordulId,userId,site,city,currentTime表4.2 站點(diǎn)表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述site_idintPK站點(diǎn)idsite_bus_idsite_ordersite_nameintintvarchar255FK線路id站點(diǎn)順序站點(diǎn)名稱表4.3 線路表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述bus_idintPK線路idbus_typebus_namebus_site_numberintvarcharint255線路類型線路名稱站點(diǎn)數(shù)量表4.4 公交詳情表
32、字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述intro_idintPKidintro_bus_idintFK線路idintro_texttext介紹信息表4.5 城市表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述cityIdintPK城市idcityNamevarchar255城市名稱dbUrlvarchar255數(shù)據(jù)存放地址dataSizevarchar20數(shù)據(jù)大小表4.6 管理員表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述userIdintPK管理員id,自增userNamevarchar255管理名passwordvarchar255登錄密碼表4.7 用戶表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述user
33、IdintPK用戶id,自增userNamevarchar255用戶名passwordvarchar255登錄密碼realNamevarchar255真實(shí)表4.8 用戶軌跡表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述ulIdintPKId,自增userIdintFK用戶idsitevarchar255站點(diǎn)名cityvarchar城市名currentTimedate時(shí)間4.3客戶端數(shù)據(jù)庫(kù)設(shè)計(jì)4.3.1 SQLite簡(jiǎn)介Android數(shù)據(jù)庫(kù)使用的是SQLiteDatabase,我們來(lái)簡(jiǎn)單的介紹下Android平臺(tái)上的SQLiteDatabase 。SQLite是一款輕型的數(shù)據(jù)庫(kù),是一種遵守ACID關(guān)聯(lián)
34、式的數(shù)據(jù)庫(kù)管理系統(tǒng),嵌入式是它的設(shè)計(jì)目標(biāo),而且目前SQLite已經(jīng)在很多嵌入式的產(chǎn)品中被使用,它所占用硬件資源很低,在大多嵌入式設(shè)備中,可能只需要僅僅幾百K的存就足夠了。它能夠支持Windows/Unix/Linux等等大多數(shù)主流的操作系統(tǒng),同時(shí)能夠跟Tcl、Java、PHP等很多程序語(yǔ)言相結(jié)合,還有ODBC接口,同樣比起PostgreSQL、Mysql這兩款世界著名的開(kāi)源數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,SQLite數(shù)據(jù)庫(kù)的處理速度比他們還更快10。該軟件數(shù)據(jù)庫(kù)的建立是完全在Android平臺(tái)上執(zhí)行Java代碼,通過(guò)DVM編譯來(lái)建立的,沒(méi)有什么輔助工具,由于整個(gè)SQLite數(shù)據(jù)庫(kù)是非可視化操作,所有對(duì)數(shù)據(jù)
35、庫(kù)的操作都是通過(guò)執(zhí)行Java代碼實(shí)現(xiàn),在完成其查詢功能的時(shí)候沒(méi)有使用數(shù)據(jù)庫(kù)高級(jí)編程,較為麻煩的關(guān)節(jié)是在如何有機(jī)的將客戶端數(shù)據(jù)庫(kù)整體結(jié)構(gòu)實(shí)現(xiàn)出來(lái),實(shí)現(xiàn)過(guò)程是無(wú)可視界面,也沒(méi)有數(shù)據(jù)庫(kù)輔助工具情況下,整個(gè)過(guò)程很抽象。且表的設(shè)計(jì)應(yīng)盡量簡(jiǎn)單,不要有錯(cuò)綜復(fù)雜的關(guān)系,每表都是獨(dú)立的,不存在任何約束,數(shù)據(jù)庫(kù)也是獨(dú)立數(shù)據(jù)庫(kù),不采用Android特有的可共享數(shù)據(jù)庫(kù)。4.3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)E-R關(guān)系如圖4.3所示。圖4.3 客戶端數(shù)據(jù)庫(kù)E-R圖根據(jù)上面的E-R圖,本軟件客戶端定義的數(shù)據(jù)庫(kù)中包含以下4表:站點(diǎn)表:site (表4.10)、線路表:bus(表4.11)、公交詳情表:bus_intro(表4.12)、歷史
36、查詢表:history(表4.13)、城市查詢表:setting(表4.14)。本軟件服務(wù)器數(shù)據(jù)庫(kù)所包含的表的描述如表4.9。表4.9 數(shù)據(jù)庫(kù)概況表表名描述主要字段site(站點(diǎn)表)保存站點(diǎn)信息site_id,site_bus_id,site_order,site_namebus(線路表)保存線路信息bus_id,bus_type,bus_name,bus_site_numbus_intro(公交詳情表)介紹公交相關(guān)信息intro_id,intro_bus_id,intro_texthistory(歷史查詢表)保存歷史查詢信息id,city,start,endsetting(城市設(shè)置表)保存城
37、市選擇信息id,city表4.10 站點(diǎn)表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述site_idintPK站點(diǎn)idsite_bus_idsite_ordersite_nameintintvarchar255FK線路id站點(diǎn)順序站點(diǎn)名稱表4.11 線路表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述bus_idintPK線路idbus_typebus_namebus_site_numberintvarcharint255線路類型線路名稱站點(diǎn)數(shù)量表4.12 公交詳情表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述intro_idintPKidintro_bus_idintFK線路idintro_texttext介紹
38、信息表4.13 歷史查詢表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述idintPKid,自增citytextFK城市名稱starttext起點(diǎn)endtext終點(diǎn)表4.14 城市設(shè)置表字段名數(shù)據(jù)類型長(zhǎng)度主鍵/外鍵默認(rèn)值描述idintPKid,自增citytext城市名稱第五章 服務(wù)器端詳細(xì)設(shè)計(jì)5.1 后臺(tái)管理模式后臺(tái)使用SSH框架實(shí)現(xiàn)?;竟芾砹鞒倘鐖D5.1所示。圖5.1 管理流程圖通過(guò)輸入管理員用戶名、密碼,驗(yàn)證通過(guò),進(jìn)入后臺(tái)系統(tǒng)。登錄界面如圖5.2所示。圖5.2 添加線路頁(yè)面通過(guò)管理員模式進(jìn)入查詢、新增、修改、刪除線路頁(yè)面,可以對(duì)已經(jīng)添加成功的公交線路信息修改并保存,也可以直接在該頁(yè)面刪除數(shù)據(jù)。
39、查詢、新增、刪除線路頁(yè)面如圖5.3所示,具體修改頁(yè)面如圖5.4所示。圖5.3 查詢,新增、修改,刪除頁(yè)面圖5.4 具體修改頁(yè)面5.2 查詢簡(jiǎn)析查詢方式與數(shù)據(jù)存儲(chǔ)格式有關(guān),線路名稱、站點(diǎn)名稱的存儲(chǔ)為字符串,且線路、站點(diǎn)兩個(gè)表的設(shè)計(jì)滿足第二式,查詢時(shí)根據(jù)主鍵、外鍵的對(duì)應(yīng)關(guān)系進(jìn)檢索:圖5.5 線路表圖5.6 站點(diǎn)表5.2.1線路查詢線路查詢可按線路名稱、編號(hào)兩種方式查詢(圖5.7),如1路、2路,編號(hào)1、2,服務(wù)器后臺(tái)會(huì)進(jìn)行模糊搜索,能夠返回包含該輸入字符的線路信息。圖5.7 查詢方式5.2.2站點(diǎn)查詢?cè)谡军c(diǎn)查詢頁(yè)面設(shè)置一個(gè)線路選擇域,可以查詢出該線路的所有站點(diǎn),如圖5.8所示。而頁(yè)面下方設(shè)置了一個(gè)
40、輸入文本域,可以根據(jù)輸入的站點(diǎn)名稱,查詢出包含該站的所有線路,如圖5.9所示。圖5.8 通過(guò)線路查詢所有站點(diǎn)圖5.9 查詢方式5.2.3用戶軌跡用戶軌跡模塊可以顯示所有用戶在某個(gè)時(shí)間點(diǎn)所在位置,用于分析公交車的實(shí)時(shí)位置信息,如圖5.8所示。圖5.8 用戶軌跡5.2.4用戶管理 用戶管理分為管理員信息管理和用戶信息管理,管理員是指登錄“實(shí)時(shí)公交后臺(tái)管理系統(tǒng)的“擁用管理權(quán)限的角色,用戶是指登錄手機(jī)客戶端的使用者角色,如圖5.9和較長(zhǎng)5.10所示。圖5.9 管理員信息圖5.10 用戶信息5.3 數(shù)據(jù)庫(kù)同步5.3.1 Servlet客戶端發(fā)出一個(gè)請(qǐng)求,服務(wù)器接收后并且響應(yīng)返回一段流??蛻舳私邮蘸笤俑鶕?jù)
41、服務(wù)器端返回流的格式來(lái)解析數(shù)據(jù)11。5.3.2 DAODAO是Data Access Object數(shù)據(jù)訪問(wèn)接口,數(shù)據(jù)訪問(wèn):故名思義就是與數(shù)據(jù)庫(kù)打交道。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)資源中間。在此使用DAO模式中封裝數(shù)據(jù)的方法,將這些數(shù)據(jù)封裝后按照一定的格式寫成數(shù)據(jù)流12。第六章 客戶端詳細(xì)設(shè)計(jì)6.1 簡(jiǎn)述在互聯(lián)網(wǎng)迅速發(fā)展的形式下,我們不得不考慮,是否還真的有必要將公交線路查詢軟件緊緊局限于PC機(jī)上,每次查詢都要找個(gè)PC機(jī)然后再記錄下來(lái),那樣雖然達(dá)到了查詢的目的,但是這種方式是否就能夠滿足用戶的需求了,那如果在沒(méi)有PC機(jī)的環(huán)境呢,或者說(shuō)總不能隨身帶個(gè)PC機(jī)或者筆記本電腦出門,只為了查詢公交線路,很明顯這種
42、方法意義不大。但是我們可以換種思維去考慮,既然PC機(jī)可以迷你成筆記本,那么也肯定有一定的辦法將其的部分功能放到更小型的“PC”上面去,比如手機(jī)。其實(shí)隨著硬件設(shè)備的逐漸發(fā)展,不少的高端手機(jī)甚至可以沖當(dāng)一臺(tái)計(jì)算機(jī)使用,如今沒(méi)電腦的人可能不在少數(shù),但是放眼望去,有幾個(gè)沒(méi)有手機(jī)呢。此次設(shè)計(jì)的主要目的是實(shí)用,讓人們使用起來(lái)會(huì)更加簡(jiǎn)便。目前主流手機(jī)操作系統(tǒng)有Mac OS, Windows Mobile,Android,Symbian,分別由蘋果公司,微軟,谷歌,諾基亞推出,而本次設(shè)計(jì)是在Android平臺(tái)下進(jìn)行開(kāi)發(fā)。在此就不分別一一介紹每一個(gè)手機(jī)軟件開(kāi)發(fā)平臺(tái),主要對(duì)Android進(jìn)行介紹。6.2 什么是A
43、ndroidAndroid是首個(gè)基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),該平臺(tái)由操作系統(tǒng)中間件、用戶界面和應(yīng)用軟件組成,并且號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的軟件13。Android一詞的本義指“機(jī)器人”,2003年美國(guó)有一家以Android為名的小公司成立,開(kāi)發(fā)手機(jī)平臺(tái)。Google收購(gòu)Android之后,于07年11月5日發(fā)布了開(kāi)源的Android平臺(tái)一款包括操作系統(tǒng)(基于Linux核)、中間件和關(guān)鍵應(yīng)用的手機(jī)平臺(tái),并組建了開(kāi)放手機(jī)聯(lián)盟(Open Handset Alliance),包括Google、中國(guó)移動(dòng)、T-Mobile、宏達(dá)、高通、摩托羅拉等領(lǐng)軍企業(yè)14。2008年9月22日
44、,美國(guó)運(yùn)營(yíng)商T-Mobile USA在紐約正式發(fā)布第一款Google手機(jī)T-Mobile G1。該款手機(jī)為宏達(dá)電制造,是世界上第一部使用Android操作系統(tǒng)的手機(jī)14。6.3Android系統(tǒng)架構(gòu)簡(jiǎn)介從軟件分層的角度來(lái)看,Android平臺(tái)由應(yīng)用程序,應(yīng)用程序框架,Android運(yùn)行時(shí),庫(kù)以及Linux核共5部分構(gòu)成15。如圖6.1所示。圖6.1 整體結(jié)構(gòu)6.3.1 應(yīng)用程序(APPLICATIONS)Android平臺(tái)默認(rèn)包含了一系列核心應(yīng)用程序,包括電子、短信、日歷、地圖、瀏覽器、聯(lián)系人管理程序等,這些程序都以java 程序語(yǔ)言編寫,你也可以用自己便攜的應(yīng)用程序來(lái)替換Android提供的
45、應(yīng)用程序,這個(gè)替換的機(jī)制實(shí)際是由應(yīng)用程序框架來(lái)保證的16。如圖6.2所示。圖6.2 應(yīng)用層6.3.2 應(yīng)用程序框架(APPLICATION FRAMEWORK)應(yīng)用程序框架是我們進(jìn)行Android開(kāi)發(fā)的基礎(chǔ)應(yīng)用程序框架層包含了視圖系統(tǒng),容提供器,窗口管理器,活動(dòng)管理器,通知管理器,位置管理器,資源管理器,管理器和包管理器9大部分17。如圖6.3所示。圖6.3 中間件層6.3.3 Android 運(yùn)行時(shí)(RUNTIME)Android 雖然采取Java程序語(yǔ)言來(lái)編寫應(yīng)用程序,但不使用J2ME執(zhí)行Java程序,而是用Android自有的Android運(yùn)行時(shí)(RunTime).Android 運(yùn)行時(shí)
46、包括核心庫(kù)和Dalvik虛擬機(jī)兩部分18。如圖6.4所示。圖6.4 核心庫(kù),虛擬機(jī)6.3.4 系統(tǒng)庫(kù)(LIBRARIES)應(yīng)用程序框架是貼近于應(yīng)用程序的軟件組件服務(wù),而更底層則是Android的函數(shù)庫(kù),這一部分是應(yīng)用程序框架的支撐,其架構(gòu)如圖6.5所示。19圖6.5系統(tǒng)庫(kù)6.3.5 LinuxAndroid平臺(tái)是開(kāi)放,采用Linux核則是Android平臺(tái)開(kāi)放性的基礎(chǔ)。Android平臺(tái)中的操作系統(tǒng)采用了Linux2.6版的核,它包括了顯示驅(qū)動(dòng)、攝像頭驅(qū)動(dòng)、Flash存驅(qū)動(dòng)、Binder(IPC)驅(qū)動(dòng)、鍵盤驅(qū)動(dòng)、wifi驅(qū)動(dòng)、Audio驅(qū)動(dòng)以及電源管理部分。Linux核層為我們?cè)谲浖雍陀布?/p>
47、建立了一個(gè)抽象層,使得應(yīng)用程序開(kāi)發(fā)人員無(wú)需關(guān)心硬件細(xì)節(jié)。對(duì)于手機(jī)的開(kāi)發(fā)商而言,如果想要Android平臺(tái)運(yùn)行到自己的硬件平臺(tái)上就必須通過(guò)對(duì)Linux層進(jìn)行修改,通常要做的工作就是為自己的硬件便攜驅(qū)動(dòng)程序。206.4 實(shí)現(xiàn)客戶端數(shù)據(jù)庫(kù)6.4.1 SQL語(yǔ)言結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)簡(jiǎn)稱SQL(發(fā)音:/es kju el/ "S-Q-L"),是一種特殊目的的編程語(yǔ)言,是一種用于程序設(shè)計(jì)和數(shù)據(jù)庫(kù)查詢的語(yǔ)言,用于存取數(shù)據(jù)以及管理、更新、查詢關(guān)系數(shù)據(jù)庫(kù)系統(tǒng);同時(shí)它還是數(shù)據(jù)庫(kù)腳本文件的擴(kuò)展名。結(jié)構(gòu)化查詢語(yǔ)言是允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作的高級(jí)的
48、非過(guò)程化編程語(yǔ)言。它不需要用戶了解具體的數(shù)據(jù)存放方式,也不要求用戶指定對(duì)數(shù)據(jù)的存放方法,所以它可以使用相同的結(jié)構(gòu)化查詢語(yǔ)言作為數(shù)據(jù)輸入與管理的接口,即使它具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫(kù)系統(tǒng)。結(jié)構(gòu)化查詢語(yǔ)言語(yǔ)句可以使用嵌套編寫,這使得它具有極大的靈活性和強(qiáng)大的功能。6.4.2 創(chuàng)建數(shù)據(jù)庫(kù)在Android平臺(tái)上,不能像Mysql一樣通過(guò)啟動(dòng)mysqld來(lái)進(jìn)入數(shù)據(jù)庫(kù)進(jìn)行操作,Android平臺(tái)上的數(shù)據(jù)庫(kù)操作只有通過(guò)執(zhí)行Java代碼,將有效的SQL語(yǔ)句傳入后臺(tái),來(lái)進(jìn)行有效操作。這種訪問(wèn)數(shù)據(jù)庫(kù)的方式,是目前唯一在Android平臺(tái)上訪問(wèn)數(shù)據(jù)庫(kù)的途徑。數(shù)據(jù)庫(kù)創(chuàng)建代碼如下:public SQLiteDat
49、abase DatabaseonCreate() SQLiteDatabase db = null;try /數(shù)據(jù)庫(kù)名arashmen,文件格式.dbdb = this.openOrCreateDatabase("arashmen.db", MODE_WORLD_WRITEABLE,null); catch (Exception e) e.printStackTrace();return db;6.4.3 客戶端數(shù)據(jù)庫(kù)操作1.DBHelper類,是數(shù)據(jù)庫(kù)操作類:public MyDataBase(Context context)this.context = context;
50、dbHelper = new DatabaseHelper(context);db = dbHelper.getWritableDatabase();2.createSettingTable()方法是創(chuàng)建表:publicvoidcreateSettingTable()/創(chuàng)建表String sql = "CREATE TABLE IF NOT EXISTS setting (_id INTEGER PRIMARY KEY AUTOINCREMENT," +"city TEXT NOT NULL)"trydb.execSQL(sql);/需要異常捕獲catc
51、h(Exception e)Log.i("create table setting fail", e.getMessage();3.selectSettingTable()方法是讀取城市記錄信息:publicvoidselectSettingTable()/讀取記錄Cursor cursor = db.query("setting", null, null, null, null, null, null); cursor.moveToFirst();if(!cursor.isAfterLast()cityName = cursor.getString(c
52、ursor.getColumnIndex("city");if(cityName = null)cityName = "cursor.close();3.updateSettingTable()方法是更改城市數(shù)據(jù):publicvoidupdateSettingTable(String city)/更改城市數(shù)據(jù)db.delete("setting", null, null);ContentValues c = new ContentValues();c.put("city", city);db.insert("set
53、ting", null, c);cityName = city;6.5 客戶端功能模塊實(shí)現(xiàn)6.5.1 用戶登錄注冊(cè)用戶可注冊(cè)自己的個(gè)人,用于登錄系統(tǒng),如圖6.6所示。圖(a) 圖(b)圖6.6 用戶注冊(cè)、登錄頁(yè)面6.5.2 換乘、線路、站點(diǎn)查詢(離線模式)用戶進(jìn)入手機(jī)公交查詢頁(yè)面,可以用按照線路名查詢和按照站點(diǎn)名查詢相關(guān)公交信息,線路查詢和站點(diǎn)查詢界面如圖6.7所示。圖(a)圖(b)圖6.7 線路查詢和站點(diǎn)查詢頁(yè)面在離線模式(用戶未登錄)下,換乘查詢、查詢結(jié)果復(fù)制和短信發(fā)送、查詢歷史界面如圖6.8所示。圖(a) 圖(b) 圖(c)圖6.8 換乘查詢和查詢頁(yè)面6.5.3 換乘查詢(在線
54、模式)在線模式(用戶已登錄)下,用戶輸入起點(diǎn)和終點(diǎn),系統(tǒng)返回乘車方案,并顯示公交車的實(shí)時(shí)位置和預(yù)計(jì)到站時(shí)間,如圖6.10。圖6.7 換乘查詢(在線)頁(yè)面6.5.4 數(shù)據(jù)下載數(shù)據(jù)下載功能,從服務(wù)器直接下載SQLite數(shù)據(jù)庫(kù)并存入手機(jī)文件系統(tǒng),操作界面如圖6.9,實(shí)現(xiàn)代碼如下:publicvoidstartDown(int i)URL dataUrl = new URL(d_url);HttpURLConnection con2 = (HttpURLConnection)dataUrl.openConnection();con2.setReadTimeout(5000);con2.setRequestMethod("GET");InputStream is = con2.getInputStream();FileOutputStream out = new FileOutputStream(downFile);byte buf = newbyte1024;int sum = 0;int numread =
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB3709T 039-2025 泰山靈芝-羊肚菌周年輪作栽培技術(shù)規(guī)程
- 福建裝配式鋼板倉(cāng)施工方案
- 進(jìn)入自然保護(hù)區(qū)施工方案
- 氧氣管道脫脂施工方案
- 采光井加陽(yáng)光房施工方案
- 街道巷口硬化施工方案
- 吉林展會(huì)裝潢施工方案
- 耐高溫超輕硅酸鈣隔熱保濕材料項(xiàng)目風(fēng)險(xiǎn)識(shí)別與評(píng)估綜合報(bào)告
- 智研咨詢發(fā)布:中國(guó)城市礦產(chǎn)行業(yè)市場(chǎng)現(xiàn)狀及投資前景分析報(bào)告
- 2025年2月上海市高三聯(lián)考高考調(diào)研英語(yǔ)試題(答案詳解)
- 2024-2025學(xué)年六年級(jí)上學(xué)期數(shù)學(xué)第三單元3.1-搭積木比賽(教案)
- DeepSeek從入門到精通
- 植保機(jī)械技術(shù)培訓(xùn)課件
- 2024年水利工程建設(shè)行業(yè)市場(chǎng)發(fā)展監(jiān)測(cè)及投資潛力預(yù)測(cè)報(bào)告
- 醫(yī)保電子憑證培訓(xùn)
- 施工現(xiàn)場(chǎng)交叉作業(yè)安全防護(hù)管理措施
- 特殊學(xué)生檔案
- 2024年02月浙江2024年蕭山農(nóng)商銀行春季校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 高中地理興趣小組活動(dòng)方案
- 立案委托書撰寫指南讓法律更簡(jiǎn)單3篇
評(píng)論
0/150
提交評(píng)論