數(shù)字城市查詢系統(tǒng)設(shè)計(jì)及數(shù)據(jù)庫(kù)設(shè)計(jì)_第1頁(yè)
數(shù)字城市查詢系統(tǒng)設(shè)計(jì)及數(shù)據(jù)庫(kù)設(shè)計(jì)_第2頁(yè)
數(shù)字城市查詢系統(tǒng)設(shè)計(jì)及數(shù)據(jù)庫(kù)設(shè)計(jì)_第3頁(yè)
數(shù)字城市查詢系統(tǒng)設(shè)計(jì)及數(shù)據(jù)庫(kù)設(shè)計(jì)_第4頁(yè)
數(shù)字城市查詢系統(tǒng)設(shè)計(jì)及數(shù)據(jù)庫(kù)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)字城市查詢系統(tǒng)設(shè)計(jì)及數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)字城市查詢系統(tǒng)設(shè)計(jì)及數(shù)據(jù)庫(kù)設(shè)計(jì) 摘要摘要 本設(shè)計(jì)以 embests3ceb2410(arm9)開(kāi)發(fā)板為硬件底層,在 linux 操作系統(tǒng) 平臺(tái)的基礎(chǔ)上,利用開(kāi)源 qt 圖形用戶應(yīng)用程序框架,基于 sqlite 數(shù)據(jù)庫(kù),開(kāi) 發(fā)出軟硬件一體化的便攜式嵌入式電子地圖,功能包括數(shù)字建筑物的查詢,以 及相關(guān)公交系統(tǒng)查詢的地圖信息查詢系統(tǒng)。本系統(tǒng)具有可擴(kuò)展性好,實(shí)用性強(qiáng)、 可移動(dòng)的特點(diǎn),易于移植到不同的硬件平臺(tái)和其他操作系統(tǒng)軟件環(huán)境。 關(guān)鍵詞:關(guān)鍵詞:embests3ceb2410(arm9) , sqlite , qt ,linux digital city for s

2、ystem design and database design abstract the design take embests3ceb2410(arm9) development board as the hardware first floor, in the linux operating system platforms foundation, uses the source qt graph user application procedure frame, based on the sqlite database, develop the software and hardwar

3、e integration the portable embedded electronic map, the function including the digital buildings inquiry, as well as related public transportation system inquiry map information referral system. this system has the specialty such as the extendibility to be good, usability strong, transportable chara

4、cteristic, easy to transplant to the different hardware platform and other operating system software environment. key words:rembests3ceb2410(arm9), sqlite, qt,linux 目錄目錄 目錄目錄.4 1引言引言.5 1.1項(xiàng)目簡(jiǎn)要介紹.5 1.2項(xiàng)目背景.5 1.3項(xiàng)目的創(chuàng)新點(diǎn).6 1.4相關(guān)技術(shù).7 1.4.1基于 arm 處理器的硬件開(kāi)發(fā)平臺(tái) .7 1.4.2嵌入式數(shù)據(jù)庫(kù).8 1.4.3嵌入式操作系統(tǒng).9 1.4.4qt 開(kāi)發(fā)語(yǔ)言.10

5、1.5定義.12 2系統(tǒng)需求分析系統(tǒng)需求分析.12 2.1系統(tǒng)需求.12 2.2開(kāi)發(fā)環(huán)境.13 2.2.1硬件平臺(tái).13 2.2.2軟件開(kāi)發(fā)平臺(tái).13 2.2.3開(kāi)發(fā)語(yǔ)言.13 2.3運(yùn)行環(huán)境.13 3系統(tǒng)概要設(shè)計(jì)系統(tǒng)概要設(shè)計(jì).14 3.1總體設(shè)計(jì).14 3.2系統(tǒng)數(shù)據(jù)流圖.15 4系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì).16 4.1數(shù)據(jù)表.16 5系統(tǒng)詳細(xì)設(shè)計(jì)系統(tǒng)詳細(xì)設(shè)計(jì).17 5.1功能模塊劃分.17 5.2核心算法描述.18 6sqlite 數(shù)據(jù)庫(kù)配置數(shù)據(jù)庫(kù)配置.19 6.1sqlite 下載.19 6.2安裝 sqlite.19 6.3測(cè)試數(shù)據(jù)庫(kù).19 7部分功能代碼部分功能代碼.20 7.1數(shù)

6、據(jù)庫(kù)操作模塊代碼.20 7.2請(qǐng)求響應(yīng)模塊的函數(shù)集合.21 7.3顯示相關(guān)信息功能模塊函數(shù)集合.23 8參考資料參考資料.31 9致謝致謝.31 10附錄附錄.31 1 引言引言 1.1 項(xiàng)目簡(jiǎn)要介紹項(xiàng)目簡(jiǎn)要介紹 隨著時(shí)代的進(jìn)步,人們的活動(dòng)領(lǐng)域不斷地?cái)U(kuò)大,地理環(huán)境的不熟悉程度越來(lái)越大,人 們迫切需要有一種方便快捷的地理信息查詢工具。本項(xiàng)目的目的在于開(kāi)發(fā)出價(jià)格更低廉、 功能更實(shí)用、可移動(dòng)性強(qiáng)、運(yùn)行速度更快更穩(wěn)定、軟件移植性好、界面友好的電子地圖信 息查詢系統(tǒng)嵌入作品,方便廣大的用戶,給用戶最實(shí)用的功能。項(xiàng)目是以 embests3ceb2410(arm9)開(kāi)發(fā)板為硬件底層,是以 linux 為操作

7、系統(tǒng),是以 sqlite 為數(shù)據(jù) 庫(kù),是以 c+為開(kāi)發(fā)語(yǔ)言,是以 qt 來(lái)支撐 c+圖形用戶界面應(yīng)用程序框架。最終開(kāi)發(fā)出 軟硬件一體化的地圖信息查詢系統(tǒng)。本系統(tǒng)具有實(shí)用性強(qiáng)、可移動(dòng)性好的等特點(diǎn)。本項(xiàng)目 就是為了滿足廣大用戶的需要具有在陌生的環(huán)境下尋找各個(gè)地點(diǎn),并快速察看目的地的地 理位置,查詢到達(dá)目的地的行走路線。使用戶處在一個(gè)陌生的環(huán)境里不會(huì)迷失方向。 1.2 項(xiàng)目背景項(xiàng)目背景 在當(dāng)前數(shù)字信息技術(shù)和網(wǎng)絡(luò)技術(shù)高速發(fā)展的后 pc(post-pc)時(shí)代,嵌入 式系統(tǒng)已經(jīng)廣泛地滲透到科學(xué)研究、工程設(shè)計(jì)、軍事技術(shù)、各類產(chǎn)業(yè)和商業(yè)文 化藝術(shù)以及人們的日常生活等方方面面中。隨著國(guó)內(nèi)外各種嵌入式產(chǎn)品的進(jìn)一

8、步開(kāi)發(fā)和推廣,嵌入式技術(shù)越來(lái)越和人們的生活緊密結(jié)合。linux 從 1991 年問(wèn) 世到現(xiàn)在,短短的十幾年時(shí)間已經(jīng)發(fā)展成為功能強(qiáng)大、設(shè)計(jì)完善的操作系統(tǒng)之 一;越來(lái)越多的企業(yè)和研發(fā)機(jī)構(gòu)都轉(zhuǎn)向嵌入式 linux 的開(kāi)發(fā)和研究上,在新興 的嵌入式操作系統(tǒng)領(lǐng)域內(nèi)也獲得了飛速發(fā)展。 地圖已成為人們?nèi)粘9ぷ?、學(xué)習(xí)、旅行經(jīng)常利用的工具!一張普通地圖綜 合反映地面上物體和現(xiàn)象一般特征的地圖,內(nèi)容包括各種自然地理要素(地形、 水系、植被等)和社會(huì)經(jīng)濟(jì)要素(居民點(diǎn)、行政區(qū)劃、交通線路等) 。從古至今, 人們已經(jīng)形成一個(gè)意識(shí):地圖用來(lái)查找地理位置。 生活中常常會(huì)遇到這樣一個(gè)問(wèn)題:不知道想要去的目的地具體在什么地方,

9、 即問(wèn)路問(wèn)題。在以前,人們一般有兩種解決方法。1、去問(wèn)人;2、查找地圖。 第一種方式,實(shí)際效果并不是很理想;在大城市中,如廣州,即使一個(gè)長(zhǎng) 年居住在那里的人也不能對(duì)該城市每一個(gè)地方都清楚;如果知道那個(gè)地方,未 必能表述清楚,無(wú)法在詢問(wèn)者腦海中產(chǎn)生空間感、方位感??梢?jiàn)這種方式解決 給問(wèn)題,效果很一般。但是在目標(biāo)地區(qū)附近詢問(wèn)他人,關(guān)于目標(biāo)位置卻是十分 可行的辦法之一! 第二種方式,效果較好,但是很難提高查找效率;讀者會(huì)有這一個(gè)理性的 認(rèn)識(shí):地圖上所含的信息內(nèi)容多,要在地圖上找到需要的信息,并非易事。尤 其是找一些中小企業(yè)公司和后街小巷。在地圖上這樣相似信息多如牛毛。一般 需要幾分鐘到幾十分鐘,甚至

10、上一個(gè)小時(shí)來(lái)看地圖,找地方。 可見(jiàn)兩種傳統(tǒng)的解決方式都有諸多不便之處! 隨著計(jì)算機(jī)電子技術(shù)的飛速發(fā)展,現(xiàn)在為上述問(wèn)題提供了更方便的解決方 式-電子地圖。電子地圖的應(yīng)用從上個(gè)世紀(jì)九十年代初就已經(jīng)開(kāi)始,那個(gè)時(shí)候 的電子地圖大多被企業(yè)內(nèi)部所應(yīng)用,隨著它與網(wǎng)絡(luò)的逐步結(jié)合,開(kāi)始被諸多大 眾所接受和使用。2004 年年終 google 推出了電子地圖的服務(wù),2005 年電子地 圖與搜索引擎的緊密接觸,對(duì)電子地圖的發(fā)展產(chǎn)生了巨大的推動(dòng)作用,受眾群 體產(chǎn)生了巨大變化。從單純的通過(guò)網(wǎng)站查詢地圖位置,到手機(jī)、車(chē)載 gps 等各 種導(dǎo)航定位服務(wù),電子地圖與各種終端結(jié)合所產(chǎn)生的巨大價(jià)值,使其成為數(shù)字 時(shí)代的新熱點(diǎn)而被

11、廣泛關(guān)注起來(lái)。我們可以相信未來(lái)對(duì)電子地圖的應(yīng)用將更為 普及。 目前市面上使用的電子地圖基于網(wǎng)站查詢地圖位置,手機(jī)、車(chē)載 gps 等服務(wù) 和產(chǎn)品。這些服務(wù)和產(chǎn)品對(duì)人們提供了不少的便利是毋庸置疑的。每一種方式 都有其優(yōu)點(diǎn)和局限性。 網(wǎng)站查詢地圖位置。網(wǎng)絡(luò)依賴性強(qiáng),沒(méi)有網(wǎng)絡(luò)的支持無(wú)法服務(wù),查詢結(jié)果 返回的快慢很大程度與網(wǎng)速有關(guān);如果用個(gè)人 pc 機(jī)位查詢終端,可移動(dòng) 性差、成本高。一般人只能在固定地點(diǎn)使用電腦查詢地圖,如果出門(mén)在外, 這種方式不可行。優(yōu)點(diǎn):查詢速度快。 手機(jī) gps 產(chǎn)品。價(jià)格昂貴,手機(jī)產(chǎn)品能支持該功能或平臺(tái)的售價(jià)至少要 1500 元以上;手機(jī) gps 功能的開(kāi)通或使用也需要一筆費(fèi)用

12、。網(wǎng)絡(luò)依賴性強(qiáng), 如果沒(méi)有網(wǎng)絡(luò)的支持,功能無(wú)法實(shí)現(xiàn)。查詢速度慢,手機(jī) gps 必須通過(guò)無(wú) 線網(wǎng)絡(luò)進(jìn)行通信,數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸必定有時(shí)延,也會(huì)占用嵌入式系統(tǒng)有 限的資源。軟件的可移植性差,其軟件產(chǎn)品只能在手機(jī)平臺(tái)上使用。優(yōu)點(diǎn): 可移動(dòng)性。 車(chē)載 gps 產(chǎn)品。價(jià)格昂貴,產(chǎn)品售價(jià)一般 2000 元以上。網(wǎng)絡(luò)依賴性強(qiáng), 如果沒(méi)有網(wǎng)絡(luò)的支持,功能無(wú)法實(shí)現(xiàn)。查詢速度慢,車(chē)載 gps 同樣也必須 通過(guò)無(wú)線網(wǎng)絡(luò)進(jìn)行通信,數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸必定有時(shí)延,也會(huì)占用嵌入式 系統(tǒng)有限的資源。優(yōu)點(diǎn):可移動(dòng)性、軟件可移植性 我們的項(xiàng)目正是為了改進(jìn)上面所提出不足的。該項(xiàng)目的目的在于開(kāi)發(fā)出價(jià)格更 低廉、功能更實(shí)用、可移動(dòng)性強(qiáng)、無(wú)

13、網(wǎng)絡(luò)依賴性、運(yùn)行速度更快更穩(wěn)定、軟件 移植性好、界面友好的作品,方便廣大的用戶,給用戶最實(shí)用的功能。 1.3 項(xiàng)目的創(chuàng)新點(diǎn)項(xiàng)目的創(chuàng)新點(diǎn) 軟硬件相結(jié)合,軟硬件一體化,可移動(dòng)性好; 信息集成化,把最實(shí)用的功能集成到一起,地圖搜索、公交查詢、建筑介紹(歷史、 用途、娛樂(lè)服務(wù)內(nèi)容、特色飲食、聯(lián)系方式、營(yíng)業(yè)時(shí)間、火車(chē)汽車(chē)輪船客貨運(yùn)輸線路 班次等) ; 有輸入檢測(cè)功能,有含糊查詢功能; 查詢速度快,有顯示所需查詢時(shí)間; 查詢結(jié)果立體形象,圖文相結(jié)合。既有地圖標(biāo)示、劃線,也有文字信息; 具有聲音提示功能,查詢結(jié)果更形象立體; 人性化的人機(jī)交互界面,采用人們習(xí)慣的界面風(fēng)格(goolge 地圖界面風(fēng)格) ,界面

14、簡(jiǎn)單, 符合用戶使用的習(xí)慣,易上手便使用的特點(diǎn)。 軟件相對(duì)獨(dú)立性,軟件系統(tǒng)可移植在多個(gè)硬件平臺(tái)如:手機(jī)、mp4、個(gè)人 pc 機(jī)等,和 多個(gè)軟件平臺(tái)上運(yùn)行如: windows、linux 和 unix 系統(tǒng)軟件上使用 1.4 相關(guān)技術(shù)相關(guān)技術(shù) 1.4.1 基于基于 arm 處理器的硬件開(kāi)發(fā)平臺(tái)處理器的硬件開(kāi)發(fā)平臺(tái) 為一種 16/32 位的高性能、低成本、低功耗的嵌入式 risc 微處理器,arm 微處理器 目前已經(jīng)成為應(yīng)用最為廣泛的嵌入式微處理器。arm 技術(shù)還將不斷發(fā)展。在嵌入式領(lǐng)域, arm 已取得了極大的成功,造就了 ip 核商業(yè)化、市場(chǎng)化的神話,迄今為止,還沒(méi)有任何 商業(yè)化的 ip 核交

15、易和使用達(dá)到 arm 的規(guī)模。arm 系列芯片已經(jīng)被廣泛的應(yīng)用于移動(dòng)電 話、手持式計(jì)算機(jī)以及各種各樣的嵌入式應(yīng)用領(lǐng)域,成為世界上銷量最大的 32 位微處理器。 arm9 系列處理器是英國(guó) arm 公司設(shè)計(jì)的主流嵌入式處理器,主要包括 arm9tdmi 和 arm9e-s 等系列。新一代的 arm9 處理器,通過(guò)全新的設(shè)計(jì),采用了更多的晶體管, 能夠達(dá)到兩倍以上于 arm7 處理器的處理能力。這種處理能力的提高是通過(guò)增加時(shí)鐘頻率 和減少指令執(zhí)行周期實(shí)現(xiàn)的。 arm7 處理器采用 3 級(jí)流水線,而 arm9 采用 5 級(jí)流水線。增加的流水線設(shè)計(jì)提高了 時(shí)鐘頻率和并行處理能力。5 級(jí)流水線能夠?qū)⒚恳?/p>

16、個(gè)指令處理分配到 5 個(gè)時(shí)鐘周期內(nèi),在 每一個(gè)時(shí)鐘周期內(nèi)同時(shí)有 5 個(gè)指令在執(zhí)行。在同樣的加工工藝下,arm9 tdmi 處理器的 時(shí)鐘頻率是 arm7tdmi 的 1822 倍。 arm9 系列微最適合用于對(duì)價(jià)位和功耗要求較高的消費(fèi)類應(yīng)用。arm9 微處理器系列 具有如下特點(diǎn): 1)32bit 定點(diǎn) risc 處理器,改進(jìn)型 armthumb 代碼交織,增強(qiáng)性乘法器設(shè)計(jì)。 支持實(shí)時(shí)(real-time)調(diào)試; 2)片內(nèi)指令和數(shù)據(jù) sram,而且指令和數(shù)據(jù)的存儲(chǔ)器容量可調(diào); 3)片內(nèi)指令和數(shù)據(jù)高速緩沖器(cache)容量從 4k 字節(jié)到 1m 字節(jié); 4)設(shè)置保護(hù)單元(protcction u

17、nit),非常適合嵌入式應(yīng)用中對(duì)存儲(chǔ)器進(jìn)行分段和保護(hù); 5)采用 amba ahb 總線接口,為外設(shè)提供統(tǒng)一的地址和數(shù)據(jù)總線; 6)支持外部協(xié)處理器,指令和數(shù)據(jù)總線有簡(jiǎn)單的握手信令支持; 7)支持標(biāo)準(zhǔn)基本邏輯單元掃描測(cè)試方法學(xué),而且支持 bist(built-in-self-test); 8)支持嵌入式跟蹤宏單元,支持實(shí)時(shí)跟蹤指令和數(shù)據(jù)。 arm9 系列微處理器的主要應(yīng)用領(lǐng)域?yàn)椋簾o(wú)線網(wǎng)絡(luò)設(shè)備、pda 功能、移動(dòng)電話等多種 多媒體和嵌入式應(yīng)用. arm9 系列微處理器包括如下幾種類型的核: arm9tdmi,arm920t,arm940t,arm9e-s。 如何選擇開(kāi)發(fā)平臺(tái)(主要是指 cpu 和

18、操作系統(tǒng)以及開(kāi)發(fā)環(huán)境和工具)也是一個(gè)比較重 要的問(wèn)題,有時(shí)這不但影響進(jìn)度,產(chǎn)品質(zhì)量,可維護(hù)性等一般問(wèn)題,甚至涉及到方案的可 實(shí)現(xiàn)性。下面大概列出一些需要考慮的問(wèn)題: 從系統(tǒng)功能實(shí)現(xiàn)考慮: (1) 是否有開(kāi)發(fā)板配套的軟件模塊直接實(shí)現(xiàn)系統(tǒng)功能要求,包括驅(qū)動(dòng)。 (2) 價(jià)格。準(zhǔn)確的說(shuō)應(yīng)該是性價(jià)比,這要跟項(xiàng)目的需求與開(kāi)發(fā)板提供的功能進(jìn)行對(duì)比, 確定是否會(huì)有太多功能不項(xiàng)目需求不需要的,因?yàn)楣δ芏嗟拈_(kāi)發(fā)板自然價(jià)格也就 貴了。 (3) 功耗。如果功耗太高,對(duì)移動(dòng)設(shè)備而言,這一點(diǎn)可是致命的。 (4) 處理速度。關(guān)系到 cpu 指令周期,有沒(méi)有流水,有沒(méi)有并行,體系結(jié)構(gòu),有沒(méi) 有專用指令,對(duì)外部存儲(chǔ)器和外設(shè)的存

19、取速度等等。 (5) 外設(shè)硬件是否滿足項(xiàng)目需求。 從開(kāi)發(fā)者的角度考慮: (1) 是否有足夠的技術(shù)支持包括測(cè)試開(kāi)發(fā)工具等。 (2) 相關(guān)資源是否豐富。包括網(wǎng)上資源、書(shū)籍,第三方提供的工具幫助等。 系統(tǒng)的可移植性和可擴(kuò)展性。 1.4.2 嵌入式數(shù)據(jù)庫(kù)嵌入式數(shù)據(jù)庫(kù) 什么是嵌入式數(shù)據(jù)庫(kù)什么是嵌入式數(shù)據(jù)庫(kù) 通常我們采用數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)檢索等功能,像 mysql 這類基于 c/s 結(jié)構(gòu) 的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)雖然代表著目前數(shù)據(jù)庫(kù)應(yīng)用的主流,卻并不能滿足所有應(yīng)用場(chǎng)合的需 要。很多的應(yīng)用僅僅利用到了這些數(shù)據(jù)庫(kù)產(chǎn)品的基本特性而已。有時(shí)我們需要的可能只是 一個(gè)簡(jiǎn)單的基于磁盤(pán)文件的數(shù)據(jù)庫(kù)系統(tǒng)。這樣就不必安裝龐大

20、的數(shù)據(jù)庫(kù)服務(wù)器以簡(jiǎn)化數(shù)據(jù) 庫(kù)應(yīng)用程序的設(shè)計(jì),在某些特殊應(yīng)用場(chǎng)合,比如在嵌入式系統(tǒng)中,由于系統(tǒng)的硬件軟件資 源都有限,這些數(shù)據(jù)庫(kù)產(chǎn)品就明顯有一些臃腫甚至是不可實(shí)現(xiàn)的。在這些情況下嵌入式數(shù) 據(jù)庫(kù)的優(yōu)勢(shì)就特別明顯了。 嵌入式數(shù)據(jù)庫(kù)的名稱來(lái)自其獨(dú)特的運(yùn)行模式。這種數(shù)據(jù)庫(kù)嵌入到了應(yīng)用程序進(jìn)程中,消除 了與客戶機(jī)服務(wù)器配置相關(guān)的開(kāi)銷。嵌入式數(shù)據(jù)庫(kù)實(shí)際上是輕量級(jí)的,在運(yùn)行時(shí),它們需 要較少的內(nèi)存。它們是使用精簡(jiǎn)代碼編寫(xiě)的,對(duì)于嵌入式設(shè)備,其速度更快,效果更理想。 嵌入式運(yùn)行模式允許嵌入式數(shù)據(jù)庫(kù)通過(guò) sql 來(lái)輕松管理應(yīng)用程序數(shù)據(jù),而不依靠原始的 文本文件。 典型嵌入式數(shù)據(jù)庫(kù)比較典型嵌入式數(shù)據(jù)庫(kù)比較 目前,基

21、于嵌入式數(shù)據(jù)庫(kù)應(yīng)用的市場(chǎng)需求已經(jīng)進(jìn)入加速發(fā)展的階段,適用于嵌入式開(kāi) 發(fā)的嵌入式數(shù)據(jù)庫(kù)主要有 msql、berkeley db、sqlite 等。 (1) berkeley db berkeley db 是一個(gè)開(kāi)放源代碼的嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng),為許多編程語(yǔ)言提供了實(shí)用 的 api 接口,包括 c、c+、java、perl、tcl、python 和 php 等。它通過(guò)調(diào)用這些 api 來(lái) 完成對(duì)數(shù)據(jù)的保存、查詢、修改和刪除等操作,能夠用來(lái)管理多達(dá) 256tb 的數(shù)據(jù),并且在 許多方面的性能還能夠同商業(yè)級(jí)的 數(shù)據(jù)庫(kù)系統(tǒng)相抗衡。berkeley db 能夠很輕松地應(yīng)付幾 千個(gè)用戶同時(shí)訪問(wèn)同一個(gè)數(shù)據(jù)庫(kù)的

22、情況。 另外,由于其應(yīng)用程序和數(shù)據(jù)庫(kù)管理系統(tǒng)運(yùn)行在 相同的進(jìn)程空間當(dāng)中,進(jìn)行數(shù)據(jù)操作時(shí)可以避免繁瑣的進(jìn)程間通信,因此耗費(fèi)在通信上的 開(kāi)銷自然也就降低到了極低 程度。但是 berkeley db 不是關(guān)系型的數(shù)據(jù)庫(kù),不能應(yīng)用標(biāo)準(zhǔn)的 sql 語(yǔ)句對(duì)數(shù)據(jù)庫(kù)操作,缺少靈活性,而且學(xué)習(xí)起來(lái)有一定難度,必然會(huì)加大開(kāi)發(fā)成本。 (2) msql msql 是一種簡(jiǎn)化的 sql 數(shù)據(jù)庫(kù),體系結(jié)構(gòu)小巧,占用系統(tǒng)資源少,特別適合在嵌入 式 linux 系統(tǒng)中使用。同時(shí),msql 提供專門(mén)的 api 函數(shù),使得用 c 語(yǔ)言編寫(xiě)的 cgi 程序 可以與 msql 的數(shù)據(jù)庫(kù)引擎進(jìn)行通信。但它只有 30 天的使用期限,并非

23、完全的開(kāi)源。 (3) sqlite sqlite 是 d. richard hipp 用 c 語(yǔ)言編寫(xiě)的開(kāi)源嵌入式數(shù)據(jù)庫(kù),是同類產(chǎn)品中的后 起之秀,2005 年獲得了開(kāi)源大獎(jiǎng)。sqlite 可以在所有主要的操作系統(tǒng)上運(yùn)行,并且支持大 多數(shù)計(jì)算機(jī)語(yǔ) 言。sqlite 還非常健壯。其創(chuàng)建者保守地估計(jì) sqlite 可以處理每天負(fù)擔(dān) 多達(dá) 100,00 次點(diǎn)擊率的 web 站點(diǎn),并且 sqlite 有時(shí)候可以處理 10 倍于上述數(shù)字的負(fù) 載。sqlite 采用單文件存放數(shù)據(jù)庫(kù),速度又比 mysql 快上 12 倍,存儲(chǔ)量也不是問(wèn)題, 在操作語(yǔ)句上更類似關(guān)系型數(shù)據(jù)庫(kù)的使用,使用操作非常方便。 其主要的

24、特點(diǎn): 1.支持多數(shù) sql92 標(biāo)準(zhǔn) 2.acid 事務(wù)支持,甚至在數(shù)據(jù)庫(kù)崩潰和恢復(fù)時(shí)也支持 3.零配置無(wú)需安裝和管理 4.整個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)在單個(gè)文件中 5.支持?jǐn)?shù)據(jù)庫(kù)大小至 2tb 6.足夠小,大致 3 萬(wàn)行 c 代碼,250k 二進(jìn)制目標(biāo)代碼 7.大部分普通數(shù)據(jù)庫(kù)操比一些流行的數(shù)據(jù)庫(kù)還要快 8.提供簡(jiǎn)單、易用、多種語(yǔ)言的 api 9.完全獨(dú)立的,不具有外部依賴性 10. 作為一款嵌入式數(shù)據(jù)庫(kù),sqlite 與 berkely db 一樣,以庫(kù)的形式提供,通過(guò) c 函數(shù)直接操作數(shù)據(jù)庫(kù)文件(也支持其他的訪問(wèn)方式,比如 tcl) sqlite 不是 server,所以和 sqlserver 等不

25、同,它和程序運(yùn)行在同一進(jìn)程,中間沒(méi)有 進(jìn)程間通信,速度很快,而且體積小巧,易于分發(fā),非常適合運(yùn)行在單機(jī)環(huán)境和嵌入式環(huán) 境。 與 berkely db 相比, sqlite 功能雖較 berkeley db 略有遜色,但在開(kāi)源組織的推動(dòng)下差距 正在縮小。實(shí)際上,很多情況,特別是在嵌入式系統(tǒng)應(yīng)用中,并不需要存儲(chǔ)過(guò)程或復(fù)雜的 表之間的關(guān)聯(lián),這時(shí)會(huì)發(fā)現(xiàn) sqlite 在大小和功能之間找到了一個(gè)理想的平衡點(diǎn)。其次 sqlite 是關(guān)系型數(shù)據(jù)庫(kù),支持大部分 sql 語(yǔ)句,這是它比 berkely db 優(yōu)秀的地方。體積 也比 bdb 小一倍。更重要的是,sqliate 允許自由地用于任何目的甚至包括商業(yè)應(yīng)

26、用,故 能大大降低開(kāi)發(fā)成本。因此本項(xiàng)目嵌入式數(shù) 據(jù)庫(kù)將采用 sqlite。 1.4.3 嵌入式操作系統(tǒng)嵌入式操作系統(tǒng) 什么是嵌入式系統(tǒng)什么是嵌入式系統(tǒng) 工業(yè)設(shè)備、電子產(chǎn)品中專用的計(jì)算機(jī)大量涌現(xiàn)。這種計(jì)算機(jī)隱藏在各種產(chǎn)品和系統(tǒng) 中,嵌入式計(jì)算機(jī)由此而得名。 嵌入式計(jì)算機(jī)系統(tǒng)正式定義為以應(yīng)用為中心,軟硬件可裁減的,適應(yīng)應(yīng)用系統(tǒng)對(duì)功 能、可靠性、成本、體積、功耗等綜合性嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)主要 由嵌入式處理器、相關(guān)支撐硬件、嵌入式操作系統(tǒng)和應(yīng)用軟件等組成。 現(xiàn)在嵌入式系統(tǒng)可以說(shuō)無(wú)處不在,在數(shù)量上遠(yuǎn)遠(yuǎn)超過(guò)了各種能用計(jì)算機(jī),在工業(yè)流 水線控制、通訊、儀器儀表、汽車(chē)、運(yùn)輸、

27、軍事裝備、消費(fèi)產(chǎn)品等等。 嵌入式系統(tǒng)是面向用戶、面向產(chǎn)品、面向應(yīng)用的,是針對(duì)具體應(yīng)用的專用系統(tǒng)。它 的硬件和軟件都必須高效率地設(shè)計(jì)、量體裁衣去除冗余、力爭(zhēng)在同樣的硅片面積上實(shí)現(xiàn) 更高的性能。 經(jīng)典嵌入式系統(tǒng)的比較經(jīng)典嵌入式系統(tǒng)的比較 嵌入式操作系統(tǒng) eos(embedded operating system)是一種用途廣泛的系統(tǒng)軟件, eos 負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度作業(yè),控制、協(xié)調(diào)并發(fā)活動(dòng);它必須 體現(xiàn)其所在系統(tǒng)的特征,能夠通過(guò)裝卸某些模塊來(lái)達(dá)到系統(tǒng)所要求的功能。以下對(duì)比了幾 種最常用的嵌入式操作系統(tǒng)。 1.windows ce windows ce 是微軟

28、開(kāi)發(fā)的一個(gè)開(kāi)放的、可升級(jí)的 32 位嵌入式操作系統(tǒng),是基于掌上 型電腦類的電子設(shè)備操作。它是精簡(jiǎn)的 windows 95。windows ce 的圖形用戶界面相當(dāng)出 色。它的設(shè)計(jì)目標(biāo)是:模塊化及可伸縮性、實(shí)時(shí)性能好,通信能力強(qiáng)大,支持多種 cpu。 它不僅繼承了傳統(tǒng)的 windows 圖形界面,并且在 windows ce 平臺(tái)上可以使用 windows 95/98 上的編程工具(如 visual basic、visual c+等) 、使用同樣的函數(shù)、使用同樣的界面 網(wǎng)格,使絕大多數(shù)的應(yīng)用軟件只需簡(jiǎn)單的修改和移植就可以在 windows ce 平臺(tái)上繼續(xù)使 用。 2.palm os 這是一種

29、32 位的嵌入式操作系統(tǒng),主要運(yùn)用于移動(dòng)終端上。此系統(tǒng)最初由 3com 公司 的 palm computing 部開(kāi)發(fā),目前 palm computing 已經(jīng)獨(dú)立成一家公司。palm os 與同步軟 件 hotsync 結(jié)合可以使移動(dòng)終端與電腦上的信息實(shí)現(xiàn)同步,把臺(tái)式機(jī)的功能擴(kuò)展到了移動(dòng) 設(shè)備上。它更傾向于 pda 的操作系統(tǒng),在 pda 市場(chǎng)占有主導(dǎo)地位。在編寫(xiě)程序時(shí),palm os 充分考慮了掌上電腦內(nèi)存相對(duì)較小的情況,因此它只占有非常小的內(nèi)存。由于基于 palm os 編寫(xiě)的應(yīng)用程序占用的空間也非常小(通常只有幾十 kb) ,所以,基于 palm os 的掌上電腦(雖然只有幾 mb 的

30、 ram)可以運(yùn)行眾多應(yīng)用程序。 3.linux linux 是一個(gè)類似于 unix 的操作系統(tǒng)。它起源于芬蘭一個(gè)名為 linus torvalds 的業(yè)余 愛(ài)好,但是現(xiàn)在已經(jīng)是最為流行的一款開(kāi)放源代碼的操作系統(tǒng)。linux 從 1991 年問(wèn)世到現(xiàn) 在,短短 10 年的時(shí)間內(nèi)已發(fā)展成為一個(gè)功能強(qiáng)大、設(shè)計(jì)完善的操作系統(tǒng),伴隨網(wǎng)絡(luò)技術(shù)進(jìn) 步而發(fā)展起來(lái)的 linux os 已成為 microsoft 公司的 dos 和 windows 95/98 的強(qiáng)勁對(duì)手。 linux 系統(tǒng)不僅能夠運(yùn)行于 pc 平臺(tái),還在嵌入式系統(tǒng)方面大放光芒,在各種嵌入式 linux os 迅速發(fā)展的狀況下,linux os

31、 逐漸形成了可與 windows ce 等 eos 進(jìn)行抗衡的局面。 目前正在開(kāi)發(fā)的嵌入式系統(tǒng)中,49%的項(xiàng)目選擇 linux 作為嵌入式操作系統(tǒng)。linux 現(xiàn)已成 為嵌入式操作的理想選擇。 嵌入式 linux 操作系統(tǒng)與 windows ce 相比的優(yōu)點(diǎn):第一,linux 是開(kāi)放源代碼的, 不在存黑箱技術(shù),遍布全球的眾多 linux 愛(ài)好者都是 linux 開(kāi)發(fā)者的強(qiáng)大技術(shù)支持者;而 windows ce 是非開(kāi)放性 os,使第三方很難實(shí)現(xiàn)產(chǎn)品定制。第二,linux 的源代碼隨處可 得,注釋豐富,文檔齊全,易于解決各種問(wèn)題。第三,linux 的內(nèi)核小、效率高;而 windows ce 在這

32、方面是笨拙的,占用過(guò)多的 ram,應(yīng)用程序龐大。第四,linux 是開(kāi)放 源代碼的 os,在價(jià)格上極具競(jìng)爭(zhēng)力,適合中國(guó)國(guó)情。windows ce 的版權(quán)費(fèi)用是廠家不得 不考慮的因素。第五,linux 不僅支持 x86 芯片,還是一個(gè)跨平臺(tái)的系統(tǒng),移植容易實(shí)現(xiàn)。 第六,linux 內(nèi)核的結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,它提供了對(duì)包括十兆位、百兆位及千 兆位的以太網(wǎng)絡(luò),還有無(wú)線網(wǎng)絡(luò)、token ring(令牌環(huán))和光纖甚至衛(wèi)星的支持。第七, linux 的內(nèi)核結(jié)構(gòu)是高度可裁減的,windows ce 在內(nèi)核結(jié)構(gòu)的設(shè)計(jì)中并未考慮適應(yīng)系統(tǒng)的 高度可裁減性的要求。 palm os、windows ce、li

33、nux 這三種嵌入式操作系統(tǒng)各有不同的特點(diǎn),不同的用途; 但 linux 比 palm os 和 windows ce 更小、更穩(wěn)定,而且 linux 是開(kāi)放的 os,在價(jià)格上極 具競(jìng)爭(zhēng)力。 當(dāng)然嵌入式 linux 操作系統(tǒng)也有其明顯不足的地方:第一,是開(kāi)發(fā)難度較高,需要很高的技 術(shù)實(shí)力;第二,是核心調(diào)試工具不全,調(diào)試不太方便,尚沒(méi)有很好的用戶圖形界面。 1.4.4 qt 開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言 qt 是一個(gè)多平臺(tái)的 c+圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開(kāi)發(fā)者建立藝 術(shù)級(jí)的圖形用戶界面所需的所用功能。qt 是完全面向?qū)ο蟮暮苋菀讛U(kuò)展,并且允許真正地 組件編程。自從 1996 年早些時(shí)候,q

34、t 進(jìn)入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成 功的應(yīng)用程序的基礎(chǔ)。qt 也是流行的 linux 桌面環(huán)境 kde 的基礎(chǔ),kde 是所有主要的 linux 發(fā)行版的一個(gè)標(biāo)準(zhǔn)組件。 qt 支持所有 unix 系統(tǒng),當(dāng)然也包括 linux,還支持 windows 平臺(tái)。支持下述平臺(tái): ms/windows - 95、98、nt 4.0、me、和 2000 unix/x11 - linux、sun solaris、hp-ux、compaq tru64 unix、ibm aix、sgi irix 和其它很多 x11 平臺(tái) macintosh - mac os x embedded - 有幀緩沖(f

35、ramebuffer)支持的 linux 平臺(tái)。 qt 具有下列優(yōu)點(diǎn)具有下列優(yōu)點(diǎn): 1.優(yōu)良的跨平臺(tái)特性: qt 支持下列操作系統(tǒng): microsoft windows 95/98, microsoft windows nt, linux, solaris, sunos, hp-ux, digital unix (osf/1, tru64), irix, freebsd, bsd/os, sco, aix, os390,qnx 等等。 2.面向?qū)ο?qt 的良好封裝機(jī)制使得 qt 的模塊化程度非常高,可重用性較好,對(duì)于用戶開(kāi)發(fā)來(lái)說(shuō) 是非常 方便的。 qt 提供了一種稱為 signals/slo

36、ts 的安全類型來(lái)替代 callback,這使得各 個(gè)元件 之間的協(xié)同工作變得十分簡(jiǎn)單。 3.豐富的 api qt 包括多達(dá) 250 個(gè)以上的 c+ 類,還替供基于模板的 collections, serialization, file, i/o device, directory management, date/time 類。甚至還包括正則表達(dá)式的處理 功能。 4.支持 2d/3d 圖形渲染,支持 opengl 5.大量的開(kāi)發(fā)文檔 6.xml 支持 qt 把下面這些特性添加到了把下面這些特性添加到了 c+當(dāng)中:當(dāng)中: 一種關(guān)于無(wú)縫對(duì)象通訊被稱為信號(hào)和槽的非常強(qiáng)大的機(jī)制, 可查詢和可設(shè)計(jì)的屬

37、性, 強(qiáng)大的事件和事件過(guò)濾器, 根據(jù)上下文進(jìn)行國(guó)際化的字符串翻譯, 完善的時(shí)間間隔驅(qū)動(dòng)的計(jì)時(shí)器使得在一個(gè)事件驅(qū)動(dòng)的圖形界面程序中很好地集成許 多任務(wù)成為可能。 以一種自然的方式組織對(duì)象所有權(quán)的分層次和可查詢的對(duì)象樹(shù)。 被守護(hù)的指針,qguardedptr,當(dāng)參考對(duì)象被破壞時(shí),可以自動(dòng)地設(shè)置為無(wú)效,不 像正常的 c+指針在它們的對(duì)象被破壞的時(shí)候變成了“搖擺指針” 。 qt 的授權(quán)是分為兩條線,商業(yè)版和開(kāi)源版。如果使用商業(yè)版的 qt,那么開(kāi)發(fā)出的程序 可以是私有的和商業(yè)的;如果使用的是開(kāi)源版的 qt,由于其使用的是 gpl 協(xié)議(不是 lgpl) ,那么可發(fā)出的程序也必須是 gpl 的。 qt 自

38、由版是 qt 僅僅為了開(kāi)發(fā)自由和開(kāi)放源碼軟件 提供的 unix/x11 版本。在 q 公共 許可證和 gnu 通用公共許可證 下,它是免費(fèi)的。 qt/嵌入式自由版是 qt 為了開(kāi)發(fā)自由軟件提供的嵌入式版本。在 gnu 通用公共許可證 下,它是免費(fèi)的。 qt-embedded 和和 qtopia: qt 在剛出現(xiàn)的時(shí)候,對(duì)于 linux 和 unix 系統(tǒng),只有構(gòu)建于 xlib 之上的 x11 版。但隨 著 linux 操作系統(tǒng)在嵌入式領(lǐng)域的應(yīng)用日漸廣泛,qt 推出了嵌 入式的版本 qt- embedded(qte) 。由于嵌入式受限的硬件環(huán)境往往難以運(yùn)行龐大的 x 服務(wù)器,qt 的嵌入式 版跳

39、過(guò)了 xlib 和 xserver 直接 操作幀緩沖,可以在速度和體積上有很大的提高。 qtopia 最初是 上的一個(gè)開(kāi)源項(xiàng)目,全稱是 qt palmtop environment,是 構(gòu)建于 qte 之上一個(gè)類似桌面系統(tǒng)的應(yīng)用環(huán)境,包括了 pda 和手機(jī)等掌上系統(tǒng)常見(jiàn)的功能 如電話簿、日程表等。現(xiàn)在 qtopia 已經(jīng)成為了 trolltech 的又一個(gè)主打產(chǎn)品,為基于 linux 操作系統(tǒng)的 pda 和手機(jī)提供了一個(gè)完整的圖形環(huán)境。 值得特別注意的是 qte 和 qtopia 之間的關(guān)系。在版本 4 之前,qte 和 qtopia 是不同的 兩套程序,qte 是基礎(chǔ)類庫(kù),qtopia 是構(gòu)

40、建于 qte 之上的一系列應(yīng)用 程序。但從版本 4 開(kāi) 始,trolltech 將 qte 并入了 qtopia,并推出了新的 qtopia4。在該版中,原來(lái)的 qte 被稱為 qtopia core,作為嵌入式版本的核心,既可以與 qtopia 配合,也可以獨(dú)立使用。原來(lái)的 qtopia 則被分成幾層,核心的應(yīng)用框架和插件系統(tǒng)被稱為 qtopia platform,上層的應(yīng)用程 序則按照不同的目標(biāo)用戶分為不同的包,如 qtopai pda,qtopia phone。 1.5 定義定義 界面界面:直接和用戶交互的軟件結(jié)構(gòu)。 內(nèi)核內(nèi)核:完成核心功能的,與界面無(wú)關(guān)的軟件結(jié)構(gòu)。 硬件硬件:嵌入式系統(tǒng)

41、中各種設(shè)備的總稱。 嵌入式系統(tǒng):嵌入式系統(tǒng):根據(jù) ieee(國(guó)際電機(jī)工程師協(xié)會(huì))的定義,嵌入式系統(tǒng)是“控 制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”(原文為 devices used to control, monitor, or assist the operation of equipment, machinery or plants) 。國(guó) 內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件 硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求 的專用計(jì)算機(jī)系統(tǒng)。 qt:qt 是一個(gè)多平臺(tái)的 c+圖形用戶界面應(yīng)用程序框架。 sqlite :sqlite 是 d

42、. richard hipp 用 c 語(yǔ)言編寫(xiě)的開(kāi)源嵌入式數(shù)據(jù)庫(kù)。 2 系統(tǒng)需求分析系統(tǒng)需求分析 2.1 系統(tǒng)需求系統(tǒng)需求 1. 建筑定位: 地圖上標(biāo)示廣州主要建筑的位置,實(shí)現(xiàn)主要建筑搜索功能,顯示與 建筑相關(guān)信息(簡(jiǎn)介、歷史、用途;所在區(qū)、街道、公交地鐵情況) ,顯 示附近主要建筑情況(包括附近銀行、停車(chē)場(chǎng)) 。 2. 交通定位(公交;客運(yùn)站;碼頭;地鐵;火車(chē)站): 公交:查詢各路車(chē)的行車(chē)路線,同時(shí)顯示行車(chē)路線的站點(diǎn)。點(diǎn)擊站 點(diǎn),能在地圖上標(biāo)出該站點(diǎn)的位置,并顯示該站點(diǎn)的附近建筑情況;地 鐵:地鐵經(jīng)過(guò)的各路線,地鐵各出口,附近建筑。客運(yùn)站:顯示該客運(yùn) 到省內(nèi)外的線路;碼頭:顯示航班信息;火車(chē)

43、站:顯示該火車(chē)站到省內(nèi) 外的線路。 3.道路定位: 在地圖上標(biāo)示出該道路。 4. 酒店餐飲定位: 地圖上標(biāo)示酒店店餐的位置,顯示附近主要建筑情況,提供該目標(biāo) 的聯(lián)系方式、服務(wù)性質(zhì)等信息。 5. 二級(jí)地圖的顯示: 校園、公園等都有相關(guān)建筑分布地圖,系統(tǒng)能顯示其相關(guān)建筑分布 地圖,即二級(jí)地圖。 6. 地圖的縮放: 放大和縮小地圖。 7. 聲音提示功能: 能報(bào)讀出查詢的主要建筑的名稱。 8. 計(jì)算查詢所需時(shí)間: 顯示一次查詢所用的時(shí)間。 2.2 開(kāi)發(fā)環(huán)境開(kāi)發(fā)環(huán)境 2.2.1 硬件平臺(tái)硬件平臺(tái) 嵌入式開(kāi)發(fā)板e(cuò)mbests3ceb2410(arm9)開(kāi)發(fā)板+仿真器 2.2.2 軟件開(kāi)發(fā)平臺(tái)軟件開(kāi)發(fā)平臺(tái)

44、操作系:linux fedora core 6 , linux redhat9.0 windowsxp ,windows2000 工 具 :embestide cygwin 2.2.3 開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)語(yǔ)言 c c+ qt/embedded 2.3 運(yùn)行環(huán)境運(yùn)行環(huán)境 嵌入式機(jī)器+linux 操作系統(tǒng) pc 機(jī)+linux 操作系統(tǒng) 3 系統(tǒng)概要設(shè)計(jì)系統(tǒng)概要設(shè)計(jì) 3.1 總體設(shè)計(jì)總體設(shè)計(jì) embests3ceb2410(arm9) 硬件層硬件層 linux 2.4.18 操作系統(tǒng)層操作系統(tǒng)層 qt/embedded 圖形界面圖形界面 數(shù)據(jù)處理數(shù)據(jù)處理 sqlite3 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù) 應(yīng)用層應(yīng)用層 用用

45、 戶戶 圖 1 系統(tǒng)總體組成結(jié)構(gòu)圖 3.2 系統(tǒng)數(shù)據(jù)流圖系統(tǒng)數(shù)據(jù)流圖 用戶 查詢系統(tǒng) 查找請(qǐng)求 顯示查找結(jié)果 圖圖2 系系統(tǒng)統(tǒng)頂頂層層數(shù)數(shù)據(jù)據(jù)流流圖圖 1、請(qǐng)求響應(yīng)2、畫(huà)圖顯示 3、相關(guān)信息 顯示 查找請(qǐng)求坐標(biāo),文字信息、標(biāo)志位 坐標(biāo)文件 地圖顯示 id、坐標(biāo)、范圍 相關(guān)信息顯示 5、查詢結(jié)果 顯示 顯示查找結(jié)果 資料文件 無(wú)效關(guān)鍵字 4、播放聲音 id 聲音 圖 3 0 層數(shù)據(jù)流圖 1.1獲得請(qǐng)求數(shù) 據(jù) 1.3坐標(biāo)查找 查找請(qǐng)求 查找關(guān)鍵字 坐標(biāo)、文字信息、標(biāo)志位 坐標(biāo)文件 1.2字段匹配檢 測(cè) 有效關(guān)鍵字 無(wú)效關(guān)鍵字 坐標(biāo)文件 2.1標(biāo)志位檢 測(cè) 2.2地圖劃線 2.4文字標(biāo)注 2.5地圖

46、變化 顯示 坐標(biāo)組 坐標(biāo)、文字信息 坐標(biāo) 標(biāo)示地圖 2.6地圖組合 文字地圖 變化地圖 地圖顯示 坐標(biāo)、文字信息、 標(biāo)志位 3.1標(biāo)志位檢 測(cè) 3.2目標(biāo)資料 查詢 3.5關(guān)鍵字?jǐn)?shù)據(jù) 查詢 id、坐標(biāo)、范圍 坐標(biāo)文件 3.3范圍查詢 id 坐標(biāo)、范圍 資料文件 3.4信息組合 顯示 資料數(shù)據(jù) 顯示地理情況 相關(guān)信息顯示 無(wú)效關(guān)鍵字 查詢顯示 2.3箭頭標(biāo)識(shí) 坐標(biāo) 箭頭地圖 id、坐標(biāo)、范圍 id 圖 4 1 層數(shù)據(jù)流圖 4 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì) 4.1 數(shù)據(jù)表數(shù)據(jù)表 坐標(biāo)表 coordinate 列名數(shù)據(jù)類型說(shuō)明 編號(hào)longintid 9 位 x 坐標(biāo)intx y 坐標(biāo)inty 名稱

47、char*name 標(biāo)志位int(建筑 1) (公路 2) (公交站 3) (地鐵站 4) (公園 5) (公交地鐵線 6)sign 建筑表 building 列名數(shù)據(jù)類型說(shuō)明 編號(hào)longintid 9 位 地理說(shuō)明char*區(qū),街道,附近公交站點(diǎn),地鐵站點(diǎn) geographyshow 介紹char*歷史、用途等 explain 街道表 road 列名數(shù)據(jù)類型說(shuō)明 編號(hào)longintid 9 位 名稱char*name 備注char*remark(街道的線性坐標(biāo))eg:(xaybidc) 站點(diǎn)表 station 列名數(shù)據(jù)類型說(shuō)明 編號(hào)longintid 9 位 備注char*remark(站

48、點(diǎn)) eg: (學(xué)院站 商社) 公園表 park 列名數(shù)據(jù)類型說(shuō)明 編號(hào)longintid 9 位 地圖 idchar*remark(站點(diǎn)) eg: (學(xué)院站 商社) 地理說(shuō)明char*區(qū),街道,附近公交站點(diǎn),地鐵站點(diǎn) geographyshow 說(shuō)明char*remark(公園介紹,門(mén)票) 5 系統(tǒng)詳細(xì)設(shè)計(jì)系統(tǒng)詳細(xì)設(shè)計(jì) 5.1 功能模塊劃分功能模塊劃分 1、sqlite 數(shù)據(jù)庫(kù)連接,及數(shù)據(jù)庫(kù)操作函數(shù)集合數(shù)據(jù)庫(kù)連接,及數(shù)據(jù)庫(kù)操作函數(shù)集合 mapdb數(shù)據(jù)庫(kù) -sqlite3 * dbsqlite3 類指針 -int result數(shù)據(jù)庫(kù)操作的結(jié)果 -char * errmsg錯(cuò)誤信息返回 -int

49、 nrow查詢返回行數(shù)參數(shù) -int ncolumn;查詢返回列數(shù)參數(shù) -int index查詢結(jié)果游標(biāo) +select(char * chrsql,char * chrurl):int查詢數(shù)據(jù)庫(kù) +getclose()關(guān)閉連接:void +getrow():int獲得查詢的行數(shù) +getcolumn():int獲得查詢的列數(shù) +getresult():char*獲得查詢結(jié)果 + reset():int把游標(biāo)歸第一個(gè)記錄 2 2、請(qǐng)求響應(yīng)模塊的函數(shù)集合、請(qǐng)求響應(yīng)模塊的函數(shù)集合 respondforrequest請(qǐng)求響應(yīng) -struct findnode node; -struct lineno

50、delist list; +checkdata(char * chrdata):int關(guān)鍵字檢測(cè) +findcoordinate():findnode坐標(biāo)查找 + getlinenode(long id):linenodelist*獲得劃線 鏈表 3 3、顯示相關(guān)信息功能模塊函數(shù)集合、顯示相關(guān)信息功能模塊函數(shù)集合 showinformation相關(guān)信息顯示 +showsuggest(char * chrdata ):string相近關(guān)鍵字建議 +station(long id):string顯示公交、地鐵站點(diǎn) +selectinformation(long lngid):string顯示建筑詳

51、細(xì)信息 +range(findnode node):string 范圍查找,網(wǎng)頁(yè)格式返回 4 4、畫(huà)圖功能模塊函數(shù)集合、畫(huà)圖功能模塊函數(shù)集合 drawmap 畫(huà)圖 +drawline(linenodelist*list )劃線 +drawmark(long lngcoordinate)標(biāo)識(shí)箭頭 +drawletter(findnode node)標(biāo)文字 +changemap(findnode node) 地圖改變 5 5、畫(huà)圖鏈表數(shù)據(jù)結(jié)構(gòu)、畫(huà)圖鏈表數(shù)據(jù)結(jié)構(gòu) linenodelist畫(huà)圖鏈表數(shù)據(jù)結(jié)構(gòu) -long xx 坐標(biāo) -long y y 坐標(biāo) -long lngid 坐標(biāo) id,id=地圖

52、編號(hào)(4)+坐標(biāo)編號(hào)(5) -linenode *pnext 下一個(gè) linenode 5.2 核心算法描述核心算法描述 地圖范圍查找功能算法描述。 先介紹數(shù)據(jù)表:坐標(biāo)表(coordinate)=編號(hào)+ x 坐標(biāo)+ y 坐標(biāo)+名稱+標(biāo)志位。該表是 記錄了地圖上所有可查詢目標(biāo)的信息。字段“編號(hào)” ,是長(zhǎng)度為 9 位,前 4 位記錄了該點(diǎn)所 在的地圖信息,后 5 位是點(diǎn)的序號(hào);“名稱”是該點(diǎn)建筑物名稱。 “標(biāo)志位”記錄該建筑物 時(shí)屬于哪種類型,如建筑物、公交地鐵站、 公路、公園等。 如圖右圖所示,9 個(gè)方塊了系統(tǒng)裝載地 圖區(qū)域,虛線部分為實(shí)際界面顯示部分。范 圍查詢功能是把虛線部分地圖里的建筑信息

53、 查找處來(lái)。 實(shí)現(xiàn):(0,0)圖里的建筑必定查詢出來(lái), 只要通過(guò)中心點(diǎn)顯示目標(biāo)的“編號(hào)”的前 4 位查詢數(shù)據(jù)表就能實(shí)現(xiàn)。 (0,1)圖 y 坐標(biāo)為 0 到小地圖的邊界,0x 坐標(biāo) create table sensordata(one varchar(10), two smallint); sqlite insert into sensordata values(hello!,10); sqlite insert into sensordata values(goodbye, 20); sqlite select * from sensordata; hello!|10 goodbye|20

54、sqlite 安全退出 sqlite 的方法是 sqlite .quit 7 部分功能代碼部分功能代碼 7.1 數(shù)據(jù)庫(kù)操作模塊代碼數(shù)據(jù)庫(kù)操作模塊代碼 #include mapdb.h int mapdb:mapclose() sqlite3_free_table( dbresult );/到這里,不論數(shù)據(jù)庫(kù)查詢是否成功,都釋放 char* 查詢結(jié) 果,使用 sqlite 提供的功能來(lái)釋放 sqlite3_close( db );/關(guān)閉數(shù)據(jù)庫(kù) return 0; int mapdb:select(char * chrsql,char * chrurl) errmsg=0; result = sq

55、lite3_open( chrurl, if( result != sqlite_ok ) /數(shù)據(jù)庫(kù)打開(kāi)失敗 /printf( 查詢記錄失敗,錯(cuò)誤碼:%d,錯(cuò)誤原因:%sn, result, errmsg ); return -1; /數(shù)據(jù)庫(kù)操作代碼 /開(kāi)始查詢,傳入的 dbresult 已經(jīng)是 char *,這里又加了一個(gè) if( sqlite_ok = result ) index=ncolumn; return 0; else /到這里,不論數(shù)據(jù)庫(kù)查詢是否成功,都釋放 char* 查詢結(jié)果,使用 sqlite 提供的功能來(lái) 釋放 /printf(查詢記錄失敗,錯(cuò)誤碼:%d,錯(cuò)誤原因:%s

56、n, result, errmsg ); /sqlite3_free_table( dbresult ); return -1; 7.2 請(qǐng)求響應(yīng)模塊的函數(shù)集合請(qǐng)求響應(yīng)模塊的函數(shù)集合 #include respondforrequest.h int respondforrequest:checkdata(char * chrdata)/關(guān)鍵字檢測(cè) 0 為 無(wú)有效,1 建筑物,2 道路,3 公交,4 地鐵,5 公園 char chrsql200; int intresult=0; char* temp; sprintf(chrsql, select * from coordinaten wher

57、e name=%s;, chrdata); mapdb s; s.select( chrsql,mapdb.db); int row=s.getrow(); if(row=0) s.mapclose(); return 0; else node.lngid=atol(s.getresult();/char轉(zhuǎn) long node.x=atoi(s.getresult();/char轉(zhuǎn) int node.y=atoi(s.getresult();/char轉(zhuǎn) int =s.getresult(); node.make=atoi(s.getresult();/char轉(zhuǎn) int s

58、.mapclose(); return node.make; linenodelist* respondforrequest:getlinenode(long id)/獲得劃線 鏈表 char chrsql200; char chrkey20; int i=0,j=0; char lngtemp10; struct linenodelist * newp,*plist; /獲得 sql 查詢語(yǔ)句 sprintf(chrsql, select remark from roadn where id=%ld;,id); mapdb s;/類實(shí)例化 s.select( chrsql,mapdb.db)

59、;/查詢數(shù)據(jù)庫(kù) char * temp=s.getresult();/獲得查詢結(jié)果 newp=new linenodelist; plist=newp; int tmp; for(;i=strlen(temp);i+)/分解鏈表賦值 tmp=(int)tempi; if(tmp57/數(shù)據(jù)邊界檢測(cè) /cout數(shù)據(jù)有誤!class respondforrequest getlinenodenext=new linenodelist; newp=newp-next; newp-x=atoi(lngtemp); else if(tmp=98) /y 賦值 lngtempj=0; j=0; newp-y

60、=atoi(lngtemp); else if(tmp=99) /id 賦值 lngtempj=0; j=0; newp-lngid=atol(lngtemp); else lngtempj=tempi; j+; /end else /end for newp-next=null;/尾節(jié)點(diǎn) s.mapclose();/關(guān)閉數(shù)據(jù)庫(kù) /coutoutnext; 7.3 顯示相關(guān)信息功能模塊函數(shù)集合顯示相關(guān)信息功能模塊函數(shù)集合 #include showinformation.h string showinformation:showsuggest(char * chrdata)/顯示相近關(guān)鍵字建議

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論