基于Android的公交查詢系統_第1頁
基于Android的公交查詢系統_第2頁
基于Android的公交查詢系統_第3頁
基于Android的公交查詢系統_第4頁
基于Android的公交查詢系統_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、軟件下載http:/ Android 的公交查詢系統的設計與實現摘 要: 隨著經濟的快速發展,城市的公交系統也變得越來越龐大,并且線路網變得更加交錯復雜,對于一般的出行者來說,選擇一條適合自己的出行路線變得很困難。手機伴隨著電子產品的快速發展,智能化水平變得越來越高,操作起來更加的方便。Android 系統在手機市場中也占有接近一半的份額。本課題旨在設計并實現一款基于Android 的公交查詢系統,系統運行于 Android 平臺,主要采用 Java 語言編寫,數據庫使用 Android 自帶的輕型數據庫 SQLite。系統主要實現的功能有線路查詢、站點查詢和換乘查詢等。 關鍵詞: 公交查詢;

2、Android;SQLite Design and Implementation of the Public Transport Query System Based on AndroidAbstract: With the rapid development of the economy ,the system of the public transport has became more expanded and more complicated.It is difficult to find the right route for the travel by bus.Fortunatel

3、y,the mobile phone industry also develops very fast.Our mobile phones become more intelligentize,which is more comvenient for the users to use the phones.Android System is used in nearly half of the mobile phones sold in the market.The goal of this task is to design and achieve a public transport qu

4、ery system based on Android.The system runs on the Android platform,mainly uses the Java language.And the database of the system is the Android bringing light SQLite database .The main achievement of function are line query, site query and Transfer query, etc.Keywords: Bus inquiries;Android;SQLite I

5、目目 錄錄 第第 1 章章 緒論緒論.11.1 課題簡介.11.2 設計背景.11.3 課題研究現狀.11.3.1 國外研究現狀.11.3.2 國內研究現狀.11.4 本文研究內容及主要貢獻.2第第 2 章章 關鍵技術關鍵技術.32.1 平臺相關內容介紹.32.1.1 Android操作系統簡介.32.1.2 Android的系統架構.32.2 換乘技術介紹.32.3 本章小結.4第第 3 章章 需求分析需求分析.53.1 可行性研究.53.1.1 技術可行性.53.1.2 經濟可行性.53.1.3 操作可行性.53.2 系統的綜合需求.53.2.1 系統需求調查.53.2.2 功能需求.53

6、.2.3 性能需求.53.3 系統流程圖.53.4 數據流圖.63.4.1線路查詢的數據流圖.63.4.2 站點查詢的數據流圖.73.4.3換乘查詢的數據流圖.73.5 數據字典.73.6 開發環境.83.7 本章小結.8第第 4 章章 系統設計系統設計.94.1 總體設計.94.1.1 設計原則.94.1.2 模塊設計.94.2 數據庫設計.94.2.1 數據庫的E-R圖.104.2.2 城市路線表.10II4.2.3 區域表.114.3 詳細設計.114.3.1 功能模塊.114.3.2 人機界面設計.114.4 本章小結.13第第 5 章章 系統實現系統實現.145.1 線路查詢.145

7、.1.1 流程圖.145.1.2 核心代碼.145.2 站點查詢.175.2.1 流程圖.175.2.2 核心代碼.175.3 換乘查詢.195.3.1 流程圖.205.3.2 核心代碼.205.4 軟件運行環境.245.5 本章小結.24第第 6 章章 總結與展望總結與展望.256.1 總結.256.2 展望.25畢業設計體會畢業設計體會.26致謝致謝.27參考文獻參考文獻.28英文翻譯資料英文翻譯資料.291第第 1 章章 緒論緒論1.1 課題簡介課題簡介 一個城市公共交通的能力,在一定程度上反映了這個城市的經濟發展水平。高水平的公共交通能力,也能夠促使城市化水平的發展,越來越龐大的城市公

8、交系統不僅覆蓋面廣,而且很經濟,對于城市居民來說,乘坐公交車仍是最佳之擇。在現有的公共交通條件下,設計合理的公交出行路徑有助于人們確定出發時間、出發線路和換乘方案等1。然而對于大部分出行者來說,對一個城市的道路狀況并不是很清楚,往往不能夠選擇最適合自己的出行路線。本課題旨在開發一款離線的基于 Android 的城市公交查詢系統,能夠對城市公交系統進行線路查詢、公交站點查詢和換乘查詢,能夠方便且智能的給出理想的出行路線,且具有一定的選擇性。給乘客提供一個良好的乘車方案出行,以節約乘車時間,縮短到達目的地的乘坐距離,減少乘坐的票款成本,才是提高公交服務水平最值得關注的問題之一2。 1.2 設計背景

9、設計背景Android 是一種現今流行的操作系統,操作系統內核是基于 Linux 的,它的特點包括自由和開放源代碼,主要使用在手機等移動設備。Android 采用了 Linux 作為自己的內核,采用了獨特的優化的 Dalvik 虛擬機,并且攜帶特有的地圖模塊、XML 布局方案簡單快捷,擁有輕量級的數據庫 SQLite、高效優化的 2D 和 3D 圖形庫,還有豐富的多媒體技術等。現在 Android 系統占有手機系統的一半份額,也是深受手機等移動終端用戶喜愛的一款操作系統。很多開發者加入了 Android 這個大家庭,使得基于 Android的軟件種類越來越豐富,功能越來越趨于智能化。1.3 課

10、題研究現狀課題研究現狀1.3.1 國外研究現狀國外研究現狀在國外公交查詢系統的研究擁有較高的水平。他們通過向用戶提供及時的準確的信息,使更多的出行者在出行時選擇乘坐公共交通工具。這也成為公共交通的發展迅速的重要因素之一。國外的公交查詢有如下特點: (1)為出行者提供方便又快捷的咨詢服務。 (2)將全球定位技術巧妙運用在公交查詢系統中。 (3)在公共場合,使用電子觸摸屏技術。 (4)將公交查詢系統與因特網相結合。 (5)使用 google 等電子地圖。 現在,許多地方的城市交通查詢系統還借助了全球定位和地理信息系統,為車輛提供全天置、速度和信息管理等服務3。歐洲一些國家,近年來研究取得了較好的效

11、果。通過改善包括信息服務在內的公交服務,從而對解決城市交通問題,取得了明顯的社會經濟效益4。1.3.2 國內研究現狀國內研究現狀與國外的研究狀況相比,我們國家的公共交通事業起步時間較晚,發展速度也較慢,公交查詢系統的智能化水平也相對較低,絕大部分城市仍然使用老套的運營管理體制。乘客能夠獲取的信息很少,獲取的方式種類也不多。不能夠保證公交路線信息2和站點信息的數據完整性和準確性,我國公交系統研究狀況如下:(1)乘客獲取的關于乘車的信息量很少,而且獲取的方式也很簡單,基本上是通過公交站點附近的公交路線指示地圖獲得,或者向當地居民詢問。(2)公交的查詢方式大多數是基于網絡、基于 Web 的。在一些沒

12、有網絡的地方,根本無法使用。(3)我國的公交查詢系統的研究起步晚,研究水平不高,知道現在仍然處于初級階段。現在的查詢系統,大多數只能夠提供線路查詢、站點查詢和換乘查詢,對一個城市的比較出名的風景名勝、旅游景區等,沒有給出一些簡介,也沒有相應的查詢功能。1.4 本文研究內容及主要貢獻本文研究內容及主要貢獻本文研究的課題是開發并實現一款基于 Android 的離線的城市公交查詢系統,對于人們的日常生活的出行來說,是一款很有實用價值的系統,主要實現的功能有:線路查詢、站點查詢和換乘查詢。系統的核心部分為換乘查詢,采用鄰接矩陣的方法來存儲相關數據,繼而實現換乘思想。第 1 章 緒論:該章節簡單介紹本課

13、題的研究的意義、設計背景和課題研究背景。第 2 章 關鍵技術:該章節主要對本課題的所使用的關鍵技術進行詳細介紹,其中包括平臺語言 Android 的技術介紹和課題核心思想換乘技術的介紹。第 3 章 需求分析:該章節主要對系統的各種需求包括可行性分析進行解析,并通過系統流程圖,數據流圖和數據字典加以說明,最后對系統的開發環境進行相關介紹第 4 章 系統設計:該章節對系統的設計進行分批次分段落介紹,主要包括總體設計、數據庫設計和詳細設計三大部分。第 5 章 系統實現:該章節從系統的編碼、實現以及測試來進行介紹,其中在給出程序流程圖的基礎上,再以具體的各功能模塊的關鍵代碼來實現,并給出各部分模塊的實

14、現效果。第 6 章 總結與展望:本章節主要總結了該系統自設計初期至設計結束尚且存在的不足,并對完善系統提出展望。3第第 2 章章 關鍵技術關鍵技術對于一個系統而言,從系統的最初始設計到最后系統的完成,實現系統時所要用到的關鍵技術都是最重要的,只有真正的掌握系統所需要的關鍵技術,才能在系統的設計和實現中做到游刃有余,也才能將一個系統做出我們想要的結果。關鍵技術是一款系統永恒的靈魂。2.1 平臺相關內容介紹平臺相關內容介紹2.1.1 Android 操作系統簡介操作系統簡介Android 翻譯成中文的意思是“機器人”,但這里它是美國 Google 公司在 2007 年11 月 5 日發布的操作系統

15、,它是基于 Linux 的操作系統,它包含操作系統、用戶界面、中間件和應用軟件,Google 公司稱其為第一款真正源碼開放的手機系統。Android 的系統內核是基于 Linux 內核的,最初由 Google 開發并發布,后來 Google 公司與其他公司一起組建了開放手機聯盟,并交由手機聯盟開發,其他廠商也可以自行開發自己的系統。2.1.2 Android 的系統架構的系統架構 如圖 2.1 所示的是 Android 操作系統的架構。Android 是基于 Linux 的,把Android 按照功能劃分分為 4 層,從下往上分別是 Linux 內核層、中間件層、應用程序框架層還有應用程序層。

16、Android 的每一層都為上層提供接口,為下層進行封裝。 Linux 內核層: Android 平臺是運行在 Linux 之上的,內核層是一個抽象層,在手機軟件層與硬件層之間。內核已經為開發者和用戶提供了多項基本功能,其中包括顯示的驅動、攝像頭的驅動、Wi-Fi 的驅動和電源的管理等。 中間件層: Android 運行時和核心庫都屬于 Android 的中間件層,其中核心庫包括顯示系統管理、媒體框架、SQLite 數據庫、OpenGL、FreeType、Webkit、SGL、SSL 和 C 庫。Android 運行時包含運行時核心庫和 Dalvik 虛擬機。在 Android 中,應用程序都

17、有自己專用的 Dalvik 虛擬機,而且都在自己的進程中運行。 應用程序框架層: 應用程序框架是與開發者最直接相關的,為開發者提供了很多的接口。包括包管理器、Acitvity 管理器、Window 管理器、電話管理器、內容提供者、資源管理器、View 系統、定位管理器和消息管理器。 應用程序層: 一些常用的應用程序,Android 系統本身已經內置了,當然這些應用程序并不和開發人員自己開發的應用程序有太大的區別,本質上是并列的。用戶可以選擇使用。2.2 換乘技術介紹換乘技術介紹本課題開發的是公交查詢系統,它的核心模塊是換乘查詢。換乘方案的選擇是換乘查詢的核心,是基于最小的換乘代價的。那么在設計

18、換乘方案的時候,在直達的情況下不考慮換乘,一次換乘可以到達的情況下不考慮二次換乘。另外需要注意的是隨著公交系統的不斷完善,現在大中城市的公交系統中,任何兩個站點之間都可以通過一次換乘來實現。換乘模塊分兩種情況,一是可以直達的情況不需要轉車,二是需要4換乘。下面著重介紹換乘的情況。 (1)直達:搜索出經過起點 A 的所有線路集合記作 LA 和經過終點 B 的所有線路集合記作 LB。一一比較 LA 與 LB 中的元素,查看是否有相同的元素,如果存在則表明兩站點有相同的公交路線經過,表明站點 A 和站點 B 之間是直達的。 (2)換乘:如果不存在直達的線路,則生成鄰接矩陣 A,將 LA 中的每一個元

19、素和 LB 中的每一個元素進行匹配,查看這兩條線路是否存在相同的站點,如果存在相同的站點則鄰接矩陣 A 中的相應元素記為 1,否則記為 0 說明兩條線路不相交;生成鄰接矩陣 A 后,檢索 A 中的所有元素,如果元素為 1,則站點 A 和站點 B 之間可以換乘到達5。圖 2.1 Android 的系統架構2.3 本章小結本章小結本章節主要對涉及本課題研究的主要關鍵技術進行詳細的理論知識分析與介紹。包括對 Android 系統的一些簡單的介紹、系統分析和對換乘模塊核心思想的理論實現進行相信介紹。5第第 3 章章 需求分析需求分析開發一款系統,首先應該明白這款系統的開發需要做到哪些功能、需要滿足怎樣

20、的一些用戶還有收集系統要使用的一些數據資料,只有這樣,才能開發出令人滿意的產品,也必將是軟件去得成功的保證。3.1 可行性研究可行性研究3.1.1 技術可行性技術可行性本課題旨在開發一款基于 Android 的城市公交查詢系統,使用 Android 作為系統的運行平臺,Android 是運行在 Linux 內核上的操作系統。Android 經過多年的發展,技術也已經相當成熟。Android SDK 提供了開發時必需的工具和各種 API 接口,也有很多開發者致力于 Android 的研究。可以使用 Android 語言解決本課題,因此技術上是可行的。3.1.2 經濟可行性經濟可行性改革開放以來社

21、會經濟取得令世界矚目的發展,手機也逐步走進人們日常生活。由于手機體積較小且便于攜帶,運行速度也在不斷的得以提升。本課題所開發的城市公交查詢系統是基于 Android 操作系統的。Android 在移動終端市場中占有相當高的份額,市場前景開闊,只要使用 Android 系統的手機用戶皆可以安裝本系統。所以,在經濟上是可行的。3.1.3 操作可行性操作可行性本課題研究的系統操作方式簡單明了,界面清晰。擁有良好的人機交互界面,并不涉及較深層次的理論知識,只要按照系統指定的操作流程走,都可以很輕松使用本系統,因此在操作上是可行的。3.2 系統的綜合需求系統的綜合需求3.2.1 系統需求調查系統需求調查

22、人們出行的需求不斷增大,公交系統也在壯大。但滿足人們對出行路線進行相應查詢的方式卻不多,這在一定程度上是矛盾的。本課題旨在研究開發一款離線的公交查詢系統,可以對城市的所有公交路線進行查詢。在課題設計初期需對整個城市的公交路線進行收集,并進行相應的整理。3.2.2 功能需求功能需求本系統分為三大模塊,分別為線路查詢模塊、站點查詢模塊和換乘查詢模塊。線路查詢將實現對用戶所輸入的路線名進行查詢,并顯示這條路線上的所有站點,以及對線路的一些描述信息。站點查詢將實現對用戶所輸入的具體站點進行站點查詢,并列出所有通過該站點的所有線路名。換乘查詢將實現對用戶隨機輸入的兩個站點,給出具體的乘車方案。3.2.3

23、 性能需求性能需求一般市面上銷售的 Android 手機都可以運行本系統。63.3 系統流程圖系統流程圖系統流程圖顧名思義是整個系統的整體的流動情況,系統流程圖簡單明了的說明了這個系統可以實現什么樣的功能,每個功能將會以什么樣的形式呈現。每個功能之間是否存在一定的聯系也可以通過系統流程圖一眼看出來。系統流程圖是對整個系統功能調用的一個簡單地介紹。城市公交查詢系統的系統流程圖如圖 3.1城市公交查詢系統線路查詢站點查詢換乘查詢輸入線路名輸入站點名輸入始終站點判斷線路名是否正確判讀站點是否正確判斷始終站點是否正確查詢線路上的站點查詢經過這個站點是線路兩個站點的換乘顯示站點顯示路線顯示換乘方案選擇線

24、路中的某一個站點選擇某一條路線選擇某一種換乘方案YYYNNN線路反向反向換乘顯示詳細的換乘方案反向圖 3.1 系統流程圖3.4 數據流圖數據流圖數據流圖是系統的邏輯功能的圖形表示,是數據流向的一種直觀表現,可以通過數據流圖看出系統中所要使用到的數據在每個功能模塊中的流動情況。從一個業務中流進流出的數據發生了哪些變化,對數據做了哪些處理。設計數據流圖時只需考慮系統必須完成的基本邏輯功能,完全不需要考慮如何具體地實現這些功能,所以它也是軟件設計的很好的出發點6。本系統所需要是數據流有線路名、站點名等。其數據流圖如下:3.4.1 線路查詢的數據流圖線路查詢的數據流圖 線路查詢的數據流圖如圖 3.27

25、線路查詢D1 線路信息結果顯示獲取信息線路名線路名線路名站點D2 站點信息線路名站點P1檢索線路P2線路處理圖 3.2 線路查詢的數據流圖3.4.2 站點查詢的數據流圖站點查詢的數據流圖 站點查詢的數據流圖如圖 3.3 站點查詢D1 站點線路顯示站點信息站點信息準確站點站點名所有線路D2 線路信息站點名所有路線P2處理站點P1檢索站點圖 3.3 站點查詢的數據流圖3.4.3 換乘查詢的數據流圖換乘查詢的數據流圖 換乘查詢的數據流圖如圖 3.4換乘查詢D1 站點信息換乘顯示站點信息站點信息準確站點名站點換乘信息D2 區域信息站點區域P1獲取站點P2換乘處理D3 路線信息站點線路圖 3.4 換乘查

26、詢的數據流圖3.5 數據字典數據字典數據字典是系統的數據的信息集合,是用來對數據流圖中的使用到的數據進行解釋的。如果其他開發者對數據流圖中使用到的數據元素不了解,不明白這些數據表達什么意思,那么就可以通過數據字典了解它的用途。數據字典和數據流圖是相輔相成的。以下是本課題的數據字典:名稱:線路名 總編號:1-001別名:線路查詢信息 編 號:0018描述:標示線路,對用戶輸入的路線名進行線路查詢數據流來源:用戶輸入數據流去向:數據庫輸出數據流:在線路查詢模塊顯示名稱:站點名 總編號:1-002別名:站點查詢信息 編 號:002描述:對站點進行查詢數據流來源:用戶輸入數據流去向:數據庫輸出數據流:

27、在站點查詢模塊顯示名稱:換乘方案 總編號:1-003別名: 編 號:003描述:對用戶輸入的始末站點進行匹配換乘方案輸出數據流:在換乘查詢模塊顯示圖 3.5 數據字典3.6 開發環境開發環境本課題以在 Windows 平臺上,搭建 Android 為開發環境。Google 公司提供了完善的 Android SDK 開發包,并通過 Java 語言來進行開發。Android SDK(Software Development Kit)軟件開發包包含 Android 操作系統、Android 仿真器(AVD)、Eclipse 集成開發環境、Android 開發工具(Android Developmen

28、t Tools,ADT)、函數庫、應用程序平臺(Platform) API 和范例程序7。開發環境要求如下:Windows XP(32 位) 、Windows 7(32 位或 64 位)。內存:512MB 以上。硬盤:剩余 2GB 空間以上。CPU:P4 2.0GHZ 以上。顯示器分辨率:1024 768 以上。3.7 本章小結本章小結本章節主要對系統進行需求分析,其中設計到可行性分析,在系統軟件的開發初期,可行性分析是很有必要的,它解決了這個系統是否可以開發,是否值得開發。那么需求分析則準確的回答了開發這款系統我們必須要做什么,必要要實現怎么的功能。本章節對各種需求分析進行介紹,并結合系統流

29、程圖、每個功能模塊的數據流圖以及數據字典進行直觀的展現。最后對系統的開發環境進行簡單的介紹。9第第 4 章章 系統設計系統設計系統設計在軟件的設計實現中特別重要,是軟件設計的基礎,在一定程度上影響著系統的性能和成本。也直接影響著用戶對產品的滿意程度,在系統設計中,需要對系統的各個參數進行了解。4.1 總體設計總體設計通過總體設計,應該明白系統該怎么去實現,為實現目標系統應該做哪些工作。對實現系統的不同的方案進行篩選,最終確定哪一種方案為最佳方案。在總體設計中,需要對組成系統的物理元素進行劃分。4.1.1 設計原則設計原則 (1)實用性原則 實用性原則主要體現的是所涉及的系統能夠解決實際問題,是

30、所有應用系統設計最基礎的最主要的原則,直接關系到系統的成敗8。本課題研究的是基于 Android 的離線公交查詢系統,可以全天候為人們提供公交線路的選擇,用戶可以使用本系統獲取想要的線路信息、站點信息和換乘方案。 (2)可靠性原則 可靠性是系統設計的立足點,若設計的系統故障頻繁,就不能夠滿足用戶的要求9。如果系統運行時經常出現故障,那么就應該有友好的交互界面,提示用戶該怎么去操作。 (3)安全性原則 系統在設計實現時一定要遵循安全性原則,應該對用戶的合法身份有一定的驗證,應該拒絕合法用戶的不合法操作,也要杜絕不合法用戶對系統的操作。這有這樣才能保障系統的安全性。 (4)易于更新和維護 系統的設

31、計,能夠實現有關空間數據和屬性數據的實時更新和維護10。 (5)操作簡單 簡單的操作流程也是系統設計時應當注意的問題,使用系統的用戶不可能每個人都會很熟悉系統的功能,不可能每個人對系統的操作過程都很熟悉。因此系統的設計不應當有太復雜的操作,應該對用戶接口做精心設計,做到用戶一看就知道這個是做什么用的,將會實現什么功能。用戶輸入信息時,系統會給出提示信息;當用戶輸入信息有誤時,有信息提示;當沒有查到滿足條件的結果時會彈出對話框進行提示11。4.1.2 模塊設計模塊設計將整個系統按照系統的功能進行劃分,分成幾個小的功能模塊,將系統進行模塊化設計,每個模塊實現一個子功能,把所有的模塊再集合在一起構成

32、整個系統。對每一個功能模塊進行有針對性的設計,每個功能模塊都相對獨立,這樣可以加快系統的設計進程。每個功能模塊都有一個接口,直接調用接口就可以實現相應的功能。系統的功能模塊圖如圖 4.14.2 數據庫設計數據庫設計顧名思義數據庫是存儲數據的倉庫,在一個系統的設計中,數據庫設計顯得尤為重要,數據庫設計的好壞直接影響著一個系統的后期維護工作的工作量。在對數據庫10進行設計時,應該遵循數據庫設計的一些原則。數據庫是長期存儲數據的集合,本課題共有一個數據庫兩個表。公交查詢系統線路查詢站點查詢換乘查詢線路查詢線路反向查詢具體站點查詢站點查詢具體線路查詢換乘方案反向換乘方案具體方案查詢圖 4.1 系統的功

33、能模塊4.2.1 數據庫的數據庫的 E-R 圖圖 數據庫的 E-R 圖如圖 4.2經過路線站點路線名始末時間所屬區域站點名mn區域號區域所屬1區域站點n區域名 圖 4.2 E-R 圖4.2.2 城市路線表城市路線表 城市路線表 xuzhou 如表 4.1表 4.1 xuzhou 字段名說明類型長度是否主鍵允許空lname線路名varchar6是否labale返乘表識int 否否stations路徑text否否describe線路描述text否否114.2.3 區域表區域表 區域表 quyu 如表 4.2表 4.2 quyu字段名說明類型長度是否主鍵允許空num區域號int是否quname區域名

34、text 否否qu區域站點text否否4.3 詳細設計詳細設計4.3.1 功能模塊功能模塊在對系統進行設計時,一個系統的復雜程度在一定程度上來說是很大的,但系統的功能往往也是分開的,對系統按功能進行功能模塊的劃分,可以使系統變得清晰。分步驟實現各個功能。每個功能模塊只需給定特定的接口就可以直接調用,這也是系統可以順利完成的保證。(1)線路查詢模塊線路查詢模塊:接受用戶輸入的線路名,檢索線路名是否為空,如果不空提供相關線路名供用戶選擇,在選擇正確的線路名后,對數據庫進行檢索,將這條路線上的所有站點以及線路段描述信息在顯示窗口顯示。(2)站點查詢模塊站點查詢模塊:接受用戶輸入的站點名,判斷站點名是

35、否正確,列出相關站點以供用戶選擇。在選擇正確站點后,將對數據進行數據庫檢索,把所有經過這個站點的線路信息列舉出來,并在顯示窗口顯示。(3)換乘查詢模塊換乘查詢模塊:接受用戶輸入的始末站點,并對站點名進行判斷,將正確的站點進行算法運算,并最終給出換乘方案。4.3.2 人機界面設計人機界面設計 對于任意一款系統或者軟件來說,擁有良好的人機界面都是很重要的。人機界面的設計也存在很大的難度,很大程度上取決于設計者的設計經驗。設計者除了要對軟件的每一個控件做最完美的設計外,還要擁有一定的美工能力,這樣設計出來的系統才會擁有讓人滿意的界面,也會增加用戶的滿意度。 (1)歡迎界面圖 4.3 歡迎界面12 (

36、2)線路查詢主界面圖 4.4 線路查詢(3)站點查詢主界面圖 4.5 站點查詢 (4)換乘查詢主界面圖 4.6 換乘查詢134.4 本章小結本章小結本章節主要對系統的總體設計進行介紹,涉及三大部分分別為總體設計、數據庫設計和詳細設計。其中總體設計從系統的設計原則和模塊設計出發進行介紹。數據庫設計在系統的設計實現中尤為重要,本課題數據庫共有兩個表。詳細設計主要介紹了系統的各大功能模塊將要實現的功能和人機界面的設計。14第第 5 章章 系統實現系統實現 5.1 線路查詢線路查詢線路查詢實現的功能: (1)獲取用戶輸入的線路名,判斷是否正確; (2)查詢數據庫將于此線路相關的所有線路列舉出來; (3

37、)查詢數據庫,將這條線路上的所有站點和這條線路的起終時間羅列出來; (4)在線路顯示界面顯示; (5)用戶在顯示界面選擇任一個站點,可以查看通過該站點的所有線路。5.1.1 流程圖流程圖線路查詢流程圖如圖 5.1開始輸入線路不為空線路名正確列出相關線路找出確定線路上的所有站點顯示站點結束YYNN提示信息提示信息圖 5.1 線路查詢流程圖5.1.2 核心代碼核心代碼 列舉所有相關的路線列舉所有相關的路線 AlertDialog.Builder builder= new AlertDialog.Builder(LineActivity.this);/聲明并定義AlertDialog.

38、Builder 對象 builder.setTitle(選擇路線);/為對話框設置標題15 ArrayAdapter adapter=new ArrayAdapter (this,android.R.layout.simple_expandable_list_item_1,getMyData(); builder.setAdapter(adapter, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) /對 adapter中的元素進行監聽/ T

39、ODO Auto-generated method stub lname = linenamewhich; Intent intent=new Intent();/創建Intent 對象 Bundle bundle = new Bundle(); bundle.putString(lname,lname);intent.putExtras(bundle);intent.setClass(LineActivity.this, LineshowActivity.class); startActivity(intent);); dialog=builder.create();public List

40、getMyData()/創建List對象,并向其添加數據 int i=0; String line; int j= linename.length; List mylist = new ArrayList();/添加List對象,并向其添加數據 while(ij) line = linenamei; i+; mylist.add(line); return mylist; 運行效果圖如圖5.2圖5.2 路線選擇運行效果圖 顯示線路上的所有站點顯示線路上的所有站點 mylayout = (LinearLayout) this.findViewById(R.id.lineshow_l

41、inearlayout);/獲取LinearLayout對象 mylistview = new ListView(this);/創建ListView對象16 /創建SimpleAdapter對象,第三個參數為每一行的布局資源文件,第四個參數為HashMap中的關鍵字,第五個參數為listrow.xml中的idSimpleAdapter adapter = new SimpleAdapter(this,getMyData(),R.layout.listrow,new Stringnum,station,describe,new intR.id.listnum,R.id.listitem1,R.i

42、d.listitem2); mylistview.setAdapter(adapter);/為列表添加適配器 mylayout.addView(mylistview,listviewparam);/將 mylistview 添加到 mylayout 上,布局參數為listviewparam public ListMap getMyData()/獲取列表項顯示數據 String stations = temp.split(,);int i = 0;String station = ;int j= stations.length; Map map= new HashMap(); while(ij)

43、 station=stationsi; map= new HashMap(); i+; map.put(num, i+ ); map.put(station,station); / map.put(describe,describe);mylist.add(map); return mylist;運行效果如圖 5.317圖5.3 線路顯示運行效果圖5.2 站點查詢站點查詢站點查詢實現的功能:(1)獲取用戶輸入的站點名,判斷站點名是否正確;(2)查詢數據庫,將與此站點相關的所有站點列舉出來;(3)查詢數據庫,將通過該站點的所有線路找出來;(4)在顯示界面顯示;(5)用戶在顯示界面選擇一條線路將可

44、以查看通過該線路的所有站點。5.2.1 流程圖流程圖站點查詢流程圖如圖 5.4開始輸入站點不為空站點名正確列出相關站點找出通過該站點的所有線路顯示線路結束YYNN提示信息提示信息圖 5.4 站點查詢流程圖5.2.2 核心代碼核心代碼 列舉所有與該站點相關的站點列舉所有與該站點相關的站點AlertDialog.Builder builder = new AlertDialog.Builder(StationActivity.this);builder.setTitle(選擇站點);ArrayAdapter adapter = new ArrayAdapter(this, andro

45、id.R.layout.simple_expandable_list_item_1, getMyData();18dialog = builder.create();public List getMyData() int i = 0;String sta;int j = stationresult.length;List mylist = new ArrayList();/ 添加List對象,并向其添加數據while (i j) sta = stationresulti;i+;mylist.add(sta);return mylist;public String getDifferentSta

46、tions(String str)Set set = new HashSet();/聲明定義set變量for(int i =0; istr.length;i+)if(!set.contains(stri.trim() /如果set中不含有這個元素則添加set.add(stri.trim();String stations = set.toString();stations = (String) stations.substring(1, stations.indexOf();System.out.println(stations);String result =stations.split(,

47、);return result;運行效果如圖 5.5圖 5.5 站點選擇運行效果圖 顯示通過這個站點的所有路線顯示通過這個站點的所有路線 mylayout = (LinearLayout)this.findViewById(R.id.stationshow_linearlayout);/獲取布局資源中的LinearLayout mylistview = new ListView(this);/創建ListView對象 SimpleAdapter adapter = new SimpleAdapter(this,getMyData(),R.layout.listrow,new St

48、ringnum,lname,describe,new intR.id.listnum,R.id.listitem1,R.id.listitem2);19 cursor.close(); mylistview.setAdapter(adapter); mylayout.addView(mylistview,listviewparam);public ListMap getMyData() int i=1; Map map= new HashMap(); while( cursor.moveToNext() String lname=cursor.getString(0); String desc

49、ribe=cursor.getString(3); System.out.println(lname+lname); System.out.println(describe+describe); map= new HashMap(); /map.put(num, i+ );map.put(lname,lname);map.put(describe,describe);mylist.add(map);i+; return mylist;運行效果如圖 5.6圖 5.6 站點顯示運行效果圖5.3 換乘查詢換乘查詢換乘查詢實現的功能: (1)獲取用戶輸入的始末站點,判斷站點是否正確; (2)分別列出兩

50、個與兩個站點相關的所有站點,供用戶選擇;20 (3)給出兩個站點之間的換乘方案并顯示; (4)用戶選擇某一換乘方案時給出詳細的線路信息。5.3.1 流程圖流程圖 換乘查詢流程圖如圖 5.7開始輸入始終站點站點都不為空站點名都正確列出相關站點找出直達路線顯示乘車方案結束YYNN不在同一區域顯示信息不可直達找出換乘方案YYNN提示信息提示信息圖 5.7 換乘查詢流程圖5.3.2 核心代碼核心代碼 列舉所有與該站點相關的站點列舉所有與該站點相關的站點 列舉所有站點的算法和運行效果與以上站點查詢的相同,這里不再累加訴述。 換乘方案換乘方案(1)直達 int step=0;2

51、1 flag=new intgetLineNum(stationbegin,stationend); for(int i =0;iLbegin.length;i+)for(int j= 0;jLend.length;j+)if(Lbegini.equals(Lendj) int num = getTransfernum(Lbegini);fangan=fangan+Lbegini+,;transfernum = transfernum +共+String.valueOf(num)+站+,;transferstyle=transferstyle+直達+,;flagstep=num;step+;運

52、行效果如圖 5.8圖 5.8 直達方案效果圖 (2)一次換乘 alllinkcount=0;for(int i=0;iLbegin.length;i+)for(int j=0;j0)Aij=linkcount;/若存在交點,則鄰接矩陣的元素等于交點的個數 alllinkcount=alllinkcount+linkcount;/記錄所有的交點elseAij=0;22flag= new intalllinkcount;/flag 存放線路的所有交點,一共有alllinkcount種換乘方案tralinkstation = new Stringalllinkcount;/換乘中的中間站點int s

53、tep=0;for(int i =0;iLbegin.length ;i+)for(int j=0;j=1) stas=getlinkstation(Lbegini,Lendj);/兩條線路存在的交點數for(int k=0;kstas.length;k+) String sta = stask; int num1=getnum(Lbegini,stationbegin,sta);/起始站點與交點站點之間有多少站 int num2=getnum(Lendj,stationend,sta);/終點站點與交點站點之間有多少站 int num=num1+num2; flagstep=num; tra

54、linkstationstep=sta.trim(); fangan=fangan+Lbegini+Lendj+,; transfernum= transfernum+共+num+站+,; transferstyle=transferstyle+換乘一次(+sta+換乘)+,; step+; 運行效果如圖 5.9 圖 5.9 換乘方案效果圖(3)區域內換乘 alllinkcount=0;stop:for(int i=0;iLbegin.length ;i+)for(int j=0;jLend.length ;j+)23boolean s=false;String Sta1=getstation

55、byline(Lbegini);/取得這條路線上的所有站點String Sta2=getstationbyline(Lendj);for(int m=0;mSta1.length ;m+)for(int n=0;n0)nobus=false;運行效果圖如圖 5.10圖 5.10 區域內換乘方案效果圖(4)對列表中的元素進行監聽 mylistview.setOnItemClickListener(new OnItemClickListener()/對LIstView中的元素設置監聽器Overridepublic void onItemClick(AdapterView arg0, View ar

56、g1,int arg2, long arg3) String sty=mylist.get(arg2).get(trastyle).toString();String fa=mylist.get(arg2).get(trafangan).toString();24int i=sty.indexOf();int j=sty.indexOf(換乘);if(i=0&j=0)String stationmid=sty.substring(i+1, j);stationmid.trim();String lnames=fa.split();String lnameone=lnames0.trim

57、();String lnametwo=lnames1.trim();String stations=lnameone,stationbegin.trim(),stationmid.trim(),stationend.trim(),lnametwoString detail=;for(int k=0;kstations.length;k+)detail=detail+stationsk+,;System.out.println(stationsk);Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putString

58、Array(detail, stations);intent.putExtras(bundle);intent.setClass(TransfershowActivity.this,TransferdetailshowActivity.class);startActivity(intent););對換乘路線的詳細顯示如圖 5.11圖 5.11 換乘詳情效果圖5.4 軟件運行環境軟件運行環境Android 手機平臺。265.5 本章小結本章小結本章節主要對實現系統的代碼、各功能模塊的流程圖和運行結果進行詳細介紹。其中代碼部分只給出了核心代碼。27第第 6 章章 總結與展望總結與展望6.1 總結總

59、結進入 21 世紀以來,電子產品更新換代的步伐不斷加快,尤其最近幾年,手機行業發生翻天覆地的技術革新,無論是硬件還是軟件都取得了長足的發展,特別在手機等移動終端的操作系統上,由原來的獨霸手機系統塞班到現在幾大系統供用戶選擇,自Android 發布以來,Android 由其開放源碼的特性也取得了了不起的發展,在手機系統中占有接近一半的份額。伴隨著經濟的發展,城市化水平不斷提高,城市公交系統越來越龐大越來越復雜,選擇出行路線漸漸變得困難,公交查詢系統的開發以當前流行的 Android 系統作為運行平臺,可以滿足人們日常出行路線的選擇要求,其主要實現以下功能: (1)線路查詢:實現對用戶所需乘車路線

60、的查詢,并對整條路線進行顯示; (2)站點查詢:對某一個具體的站點,實現將通過該站點的所有路線的進行顯示; (3)換乘查詢:對于一些不清楚的站點或者路線,用戶根本不知道該如何從一個站點到達另一個站點,換乘查詢便可以很方便的為用戶列舉出所有的乘車方案。6.2 展望展望系統基本可以實現所有關鍵功能,但在一些地方還有待提高: (1)系統界面還顯粗糙,在以后我會把界面做的更加完美; (2)系統是一款離線的軟件,在系統更新上還存在一些問題; (3)系統現在僅限徐州市區,以后將會逐步完善其他城市的公交路線。28畢業設計體會畢業設計體會29致謝致謝參考文獻參考文獻1 陳曉東,公交線路最優選擇設計,科技經濟市場,2008 年,第 2 期,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論