畢業(yè)設(shè)計(jì)-基于J2ME的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文.doc_第1頁(yè)
畢業(yè)設(shè)計(jì)-基于J2ME的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文.doc_第2頁(yè)
畢業(yè)設(shè)計(jì)-基于J2ME的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文.doc_第3頁(yè)
畢業(yè)設(shè)計(jì)-基于J2ME的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文.doc_第4頁(yè)
畢業(yè)設(shè)計(jì)-基于J2ME的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文.doc_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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)介

畢畢 業(yè)業(yè) 設(shè)設(shè) 計(jì)計(jì)( 論論 文文) 基于基于 j2me 的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 論論文作者姓名:文作者姓名: 申申請(qǐng)請(qǐng)學(xué)位學(xué)位專業(yè)專業(yè): : 申申請(qǐng)請(qǐng)學(xué)位學(xué)位類別類別: : 指指導(dǎo)導(dǎo)教教師師姓姓名名( (職職稱稱) ): : 論論文提交日期:文提交日期: 基于基于 j2me 的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 摘摘 要要 當(dāng)今,人類社會(huì)已步入信息時(shí)代,信息化革命給所有領(lǐng)域帶來(lái)了前所未有 的變革。電腦、手機(jī)等信息工具的普及,人們獲取信息變得更加完善、快捷。 而隨著信息技術(shù)的飛速發(fā)展,手機(jī)所蘊(yùn)藏的無(wú)限商機(jī),正在被人們逐步發(fā)掘, 它不再僅僅局限于通信這一單一功能,正在朝著手提電腦甚至更完善的方向發(fā) 展。由于手機(jī)價(jià)廉物美,它已成為人們獲得在生活工作上等各種信息服務(wù)的最 佳選擇。 在我國(guó),隨著城市化的快速發(fā)展,城市公交系統(tǒng)也隨之迅速擴(kuò)大,且更加 復(fù)雜化,找不到合適的乘車路線的事情經(jīng)常發(fā)生。當(dāng)前,復(fù)雜的公交系統(tǒng)使得 用戶往往處于迷惑的狀態(tài),給出行帶來(lái)諸多不便,而手機(jī)公交查詢系統(tǒng)的選題 也正是基于該背景。本系統(tǒng)通過對(duì)城市公交系統(tǒng)的調(diào)研,提出了基于站點(diǎn)優(yōu)先 級(jí)和鄰接矩陣的公交換乘算法和上下矩陣算法;以 j2me 作為開發(fā)工具,將其 移植到用戶手機(jī)上,借助于無(wú)線互聯(lián)網(wǎng),能為客戶隨時(shí)隨地提供公交信息的查 詢;通過測(cè)試與分析,證實(shí)了該系統(tǒng)的可行性及實(shí)用價(jià)值。 關(guān)鍵詞關(guān)鍵詞:公交查詢;站點(diǎn)優(yōu)先級(jí);公交換乘算法;手機(jī);無(wú)線互聯(lián)網(wǎng) design and implementation of city-bus information inquiry system based on j2me abstract at present, the human society marches into the information time; the information revolution has brought the unprecedented revolution for all domains. with the popularization of information tool as like computer, handset and so on, obtaining the information is more and more perfectly and quickly. but along with the rapid development of information technology, the infinite opportunity that the handset contains is being gradually excavated by the people, it no longer merely limits to this sole function of communication, is facing to the development of portable computer or even more perfect aspect. as a result of the low-price and high-quality of the handset, it has become the best choice that the people obtain each kind of information service in life. in our country, along with urbanized fast development, city bus system also rapidly expands, and even becomes more complex. so, finding city bus route becomes more difficult. presently, the complex city bus system causes the condition which the users often are confused, which brings many inconvenient to people, but handset city bus inquiry system is also based on this background. firstly, the author investigates the city bus system, provides “the algorithm based on the stand priority and the next linking matrix” and “the algorithm based on upward and downward matrix”. secondly, these algorithms are transplanted to the handset by j2me, which can provide the inquiry for city bus at any time and any where by the aid of to the wireless internet. finally, through testing and analyzing, it confirms this system is some feasibility and practical value. key words: city bus inquiry; stand priority; city bus exchanging algorithm; handset; wireless internet 目目 錄錄 論文總頁(yè)數(shù):27 頁(yè) 1引言1 1.1課題背景1 1.2國(guó)內(nèi)外研究現(xiàn)狀1 1.3本課題研究的意義2 1.4本軟件的開發(fā)方法2 1.5本文的主要工作3 1.5.1研究的主要內(nèi)容3 1.5.2各章節(jié)的安排3 2手機(jī)公交查詢的需求分析和開發(fā)工具介紹3 2.1用戶的原始需求3 2.2手機(jī)公交查詢系統(tǒng)功能模塊及流程圖4 2.3開發(fā)工具介紹5 3手機(jī)公交查詢系統(tǒng)的設(shè)計(jì)5 3.1手機(jī)公交查詢系統(tǒng)算法的設(shè)計(jì)5 3.1.1直達(dá)的算法設(shè)計(jì)5 3.1.2一次換乘的算法設(shè)計(jì)6 3.1.3二次換乘的算法設(shè)計(jì)7 3.2手機(jī)公交查詢數(shù)據(jù)庫(kù)的設(shè)計(jì)7 3.2.1數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)7 3.2.2數(shù)據(jù)庫(kù)的物理設(shè)計(jì)8 4手機(jī)公交查詢系統(tǒng)功能詳細(xì)實(shí)現(xiàn)10 4.1服務(wù)器端的實(shí)現(xiàn)10 4.1.1基類(base class)的實(shí)現(xiàn)11 4.1.2輔助類(help class)的實(shí)現(xiàn)12 4.1.3業(yè)務(wù)邏輯類(logic class)的實(shí)現(xiàn).13 4.1.4服務(wù)器對(duì)外接口(servlet)的實(shí)現(xiàn) 16 4.2web 端的實(shí)現(xiàn)16 4.3wap 端的實(shí)現(xiàn)18 4.4手機(jī)客戶端的實(shí)現(xiàn)20 4.4.1客戶端界面的實(shí)現(xiàn)20 4.4.2客戶端工作原理20 4.4.3手機(jī)網(wǎng)絡(luò)設(shè)置22 5手機(jī)公交查詢系統(tǒng)測(cè)試與分析22 5.1測(cè)試環(huán)境22 5.2運(yùn)行與測(cè)試22 5.3測(cè)試結(jié)果24 結(jié) 論24 參考文獻(xiàn)25 致 謝26 聲 明27 第 1 頁(yè) 共 27 頁(yè) 1 引言引言 1.1 課題背景課題背景 作為關(guān)系國(guó)計(jì)民生的社會(huì)公益事業(yè),城市公共交通一直都是政府工作的重 點(diǎn)。就武漢市而言,調(diào)研數(shù)據(jù)顯示,武漢市乘客以公交方式出行的比例為 23.36%, 可見城市公交的重要性。但是從客觀上說(shuō),公交硬件建設(shè)跟不上城市建設(shè)的步 伐,是全國(guó)大城市尤其是特大城市都正在遭遇的發(fā)展瓶頸。也常常造成人們的 出行不便。 在我國(guó),隨著城市化的快速發(fā)展,市公交系統(tǒng)也隨之迅速擴(kuò)大,且更加復(fù) 雜化,找不到合適的乘車路線的事情經(jīng)常發(fā)生。當(dāng)前,復(fù)雜的公交系統(tǒng)使得用 戶往往處于迷惑的狀態(tài),給出行帶來(lái)諸多不便,在另一個(gè)方面,我國(guó)城市的手 機(jī)普及率已經(jīng)非常高了,如果能把這兩種情況結(jié)合起來(lái),開發(fā)出一種基于手機(jī) 的公交查詢軟件,將會(huì)給用戶帶來(lái)便捷。 1.2 國(guó)內(nèi)外研究現(xiàn)狀國(guó)內(nèi)外研究現(xiàn)狀 從有關(guān)的文獻(xiàn)看, 如今全世界可以支持 j2me 的手持設(shè)備如今已經(jīng)達(dá)到了 七千五百萬(wàn),有 34 個(gè)運(yùn)營(yíng)商在使用 j2me 技術(shù); 傳統(tǒng)手機(jī)在出廠之后,功能(通訊錄、游戲、商務(wù)應(yīng)用)就已經(jīng)固化,用 戶將無(wú)法刪除無(wú)用的功能,同樣也不能增加新的功能。即使用戶找到提供新功 能的程序,也往往由于程序和手機(jī)平臺(tái)無(wú)法兼容而不能使用。這成為了手機(jī)行 業(yè)發(fā)展的瓶頸,而 java 在移動(dòng)終端領(lǐng)域的出現(xiàn)改變了這一局面。java 以其 可移植性,資源重用性,安全性,移動(dòng)性以及強(qiáng)大的網(wǎng)絡(luò)功能迅速占領(lǐng)了全球 手機(jī)市場(chǎng),未來(lái)的手機(jī)出貨將主要以 java 手機(jī)為主。 據(jù)美國(guó)高科技研究公司 strategies unlimited 日前發(fā)表的2.5g 和 3g 手機(jī) 性能:2002-2006 全球分析與市場(chǎng)預(yù)測(cè)的報(bào)告稱,市場(chǎng)上 java 手機(jī)的數(shù)量預(yù) 計(jì)將每年翻一番,到 2006 年將從 2001 年的 1,910 萬(wàn)部增長(zhǎng)到 5.53 億部。硬件 中加快集成 java 預(yù)計(jì)將進(jìn)一步促進(jìn) java 在市場(chǎng)中的普及,j2me 將成為事實(shí)上 的標(biāo)準(zhǔn)。到 2006 年,java 手機(jī)預(yù)計(jì)將占全部手機(jī)出貨量的 83%。 就國(guó)內(nèi)來(lái)說(shuō),java 是未來(lái)無(wú)線數(shù)據(jù)服務(wù)的主流方向,也開始采用基于開 放應(yīng)用平臺(tái)的移動(dòng)增值服務(wù)架構(gòu)。從 2003 年起,移動(dòng)、聯(lián)通均已開通無(wú)線 java 業(yè)務(wù)。java 手機(jī)已經(jīng)成為絕大多數(shù)用戶選購(gòu)手機(jī)時(shí)的必要考慮條件。 在 j2me 通信方面,midp1.0 支持 http,midp2.0 則增加了對(duì) https、 報(bào)文、socket 通信以及串口通信的支持。另外,midp2.0 還支 持服務(wù)器 push 體系架構(gòu),這樣,你的手機(jī)能夠收到來(lái)自服務(wù)器的報(bào)警、消息或者廣播,根據(jù) 要求啟動(dòng)手機(jī)上的應(yīng)用程序進(jìn)行操作。 第 2 頁(yè) 共 27 頁(yè) 支持 over-the-air (ota) provisioning 是 midp2.0 的一個(gè)重要的新特點(diǎn),它 使得用戶能夠動(dòng)態(tài)地部署和更新移動(dòng)設(shè)備上的應(yīng)用程序。新版的 midp 規(guī)范中 規(guī)定了如何在移動(dòng)設(shè)備上發(fā)現(xiàn)、安裝、更新和刪除 midlet 套件;同時(shí),提供應(yīng) 用程序下載的服務(wù)提供商還能夠判斷該 midlet 套件是否能夠運(yùn)行在申請(qǐng)下載的 設(shè)備上,并且從設(shè)備上獲取安裝、更新和刪除的信息。midp ota provisioning 模型為移動(dòng)服務(wù)提供商提供了單一、標(biāo)準(zhǔn)的部署 midp 應(yīng)用程序的途徑。該模 型已經(jīng)被眾多技術(shù)領(lǐng)先的移動(dòng)設(shè)備制造商和服務(wù)提供商所采納。 j2me 針對(duì)嵌入式和移動(dòng)設(shè)備,提供了開發(fā)和運(yùn)行應(yīng)用程序的平臺(tái),隨著 新的規(guī)范的不斷推出和眾多制造商、軟件開發(fā)商的支持,j2me 正在飛速向前 發(fā)展。jtwi 將保證 j2me 應(yīng)用程序在不同制造商的產(chǎn)品上的兼容性。今后 j2me 將借助 web services 的力量,真正成為企業(yè)級(jí)信息解決方案中不可或缺 的一部分。 1.3 本課題研究的意義本課題研究的意義 在我國(guó),隨著城市化的快速發(fā)展,市公交系統(tǒng)也隨之迅速擴(kuò)大,且更加復(fù) 雜化,找不到合適的乘車路線的事情經(jīng)常發(fā)生。當(dāng)前,復(fù)雜的公交系統(tǒng)使得用 戶往往處于迷惑的狀態(tài),給出行帶來(lái)諸多不便,在另一個(gè)方面,我國(guó)城市的手 機(jī)普及率已經(jīng)非常高了,如果能把這兩種情況結(jié)合起來(lái),開發(fā)出一種基于手機(jī) 的公交查詢軟件,將會(huì)給用戶帶來(lái)便捷。基于以上原因,本系統(tǒng)通過對(duì)城市公 交系統(tǒng)的調(diào)研,提出了基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣的公交換乘算法和上下矩陣 算法;以 j2me 作為開發(fā)工具,將其移植到用戶手機(jī)上,借助于無(wú)線互聯(lián)網(wǎng), 能為客戶隨時(shí)隨地提供公交信息的查詢。 1.4 本軟件的開發(fā)方法本軟件的開發(fā)方法 由于公交數(shù)據(jù)相對(duì)比較龐大和繁瑣,同時(shí)設(shè)計(jì)換乘時(shí)對(duì)系統(tǒng)處理的性能要 求也比較高,故本系統(tǒng)采用在服務(wù)器上進(jìn)行計(jì)算,結(jié)果通過無(wú)線網(wǎng)絡(luò)傳輸?shù)娇?戶端的形式進(jìn)行開發(fā)。又由于當(dāng)前絕大多數(shù)手機(jī)都支持 java,而 j2ee 和 j2me 因?yàn)橥鲆婚T,具備先天性無(wú)縫銜接的優(yōu)勢(shì),故本系統(tǒng)采用 j2me 和 j2ee 結(jié)合的方式進(jìn)行開發(fā)。 通過 j2me 和 j2ee 技術(shù)的結(jié)合,采用 c/s 模式和 b/s 模式共同存在的方式, 服務(wù)器端采用 mysql+tomcat/weblogic,通過 servlet 實(shí)現(xiàn)對(duì)外服務(wù)器通信,同時(shí) 前臺(tái)開發(fā)出 web 模塊和 wap 模塊,web 模塊采用 mvc 模式,使用 struts 框架。手機(jī)客戶端采用 j2me 編程,使用線程技術(shù)實(shí)現(xiàn)和服務(wù)器的網(wǎng)絡(luò)通信, 并且在從服務(wù)器取得數(shù)據(jù)后自動(dòng)斷開連接,節(jié)約用戶流量。 第 3 頁(yè) 共 27 頁(yè) 1.5本文的主要工作本文的主要工作 .1 研究的主要內(nèi)容研究的主要內(nèi)容 本設(shè)計(jì)采用 b/s 和 c/s 結(jié)合的結(jié)構(gòu),綜合運(yùn)用以前所學(xué)的專業(yè)知識(shí),設(shè)計(jì) 開發(fā)一個(gè)功能較完善的基于手機(jī)的公交查詢系統(tǒng),具體包括以下內(nèi)容: (1)研究并掌握 tcp/ip 等傳輸協(xié)議、數(shù)據(jù)庫(kù)操作等的基本原理。 (2)學(xué)習(xí)并掌握 j2ee,j2me 等相關(guān)知識(shí)。 (3)以前面的研究為基礎(chǔ),編程實(shí)現(xiàn)服務(wù)器及手機(jī)客戶端線路查詢,按站 查詢,站站查詢并且實(shí)現(xiàn)手機(jī)無(wú)線網(wǎng)絡(luò)通信等功能。 .2 各章節(jié)的安排各章節(jié)的安排 本文章詳細(xì)介紹了該系統(tǒng)的分析和實(shí)現(xiàn)各個(gè)流程。在文章的引言中,主要 介紹了該系統(tǒng)面臨的背景,研究意義和開發(fā)方法等,使讀者對(duì)本文有全面的了 解。在接下來(lái)的第二章里,對(duì)系統(tǒng)的需求分析和與之對(duì)應(yīng)的開發(fā)工具介紹。在 第三章里,對(duì)系統(tǒng)開發(fā)涉及的算法進(jìn)行了介紹和對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)給出了詳細(xì)的說(shuō) 明。第四章是系統(tǒng)功能具體實(shí)現(xiàn)的介紹其中包括了關(guān)鍵的編程技術(shù),功能的代 碼說(shuō)明。第五章是對(duì)系統(tǒng)的測(cè)試和分析,包括代碼測(cè)試和功能測(cè)試,并對(duì)測(cè)試 分析總結(jié)。最后,是作者通過對(duì)本系統(tǒng)的研究和設(shè)計(jì)總結(jié)出的系統(tǒng)特點(diǎn)以及研 究心得。 2手機(jī)公交查詢的需求分析手機(jī)公交查詢的需求分析和開發(fā)工具介紹和開發(fā)工具介紹 2.1用戶的原始需求用戶的原始需求 作為關(guān)系國(guó)計(jì)民生的社會(huì)公益事業(yè),城市公共交通一直都是政府工作的重 點(diǎn)。就武漢市而言,調(diào)研結(jié)果中的另一個(gè)數(shù)據(jù),武漢市乘客以公交方式出行的 比例為 23.36%,可見城市公交的重要性。但是從客觀上說(shuō),公交硬件建設(shè)跟不 上城市建設(shè)的步伐,是全國(guó)大城市尤其是特大城市都正在遭遇的發(fā)展瓶頸。也 常常造成人們的出行不便。 本系統(tǒng)通過對(duì)城市公交查詢用戶需求的調(diào)研,發(fā)現(xiàn)用戶在查找公交信息的 時(shí)候一般只有 3 種方式,即按線路進(jìn)行查找,按站進(jìn)行查找線路,按起點(diǎn)站和 終點(diǎn)站查找乘坐方案。同時(shí)由于城市公交系統(tǒng)在規(guī)劃的時(shí)候是以站作為單位進(jìn) 行規(guī)劃的,故經(jīng)過站數(shù)的多少直接決定了公交線路的長(zhǎng)短和時(shí)間。 因此,在本系統(tǒng)的設(shè)計(jì)中提出以下方案: 用戶在使用本系統(tǒng)的時(shí)候,可以按照線路進(jìn)行公交查詢,或者按起點(diǎn)終點(diǎn) 進(jìn)行查詢,系統(tǒng)自動(dòng)按照換乘篩選算法提供出最佳換乘方案,該算法根據(jù)用戶 輸入的站名,查找全部可以直達(dá)的方案,如無(wú)直達(dá)方案,則找出全部換乘方案 并按照站點(diǎn)優(yōu)先級(jí)進(jìn)行排序,返回給用戶線路最短的前 n 條的換乘信息,如果 第 4 頁(yè) 共 27 頁(yè) 用戶使用按站查詢線路,系統(tǒng)也提供了一定的模糊查詢,比如用戶查詢“百腦 匯” ,系統(tǒng)能自動(dòng)辨認(rèn)出當(dāng)?shù)卣军c(diǎn)“磨子橋” 。同時(shí),用戶在手機(jī)上可以通過 j2me 手機(jī)客戶端和 wap 的方式進(jìn)行查詢,在電腦上可以通過訪問 web 站點(diǎn) 的方式進(jìn)行查詢。 2.2手機(jī)公交查詢系統(tǒng)功能模塊及流程手機(jī)公交查詢系統(tǒng)功能模塊及流程圖圖 通過對(duì)需求分析的調(diào)研,得出了經(jīng)過用戶確認(rèn)的手機(jī)公交查詢系統(tǒng)的系統(tǒng) 邏輯模型。根據(jù)手機(jī)公交查詢系統(tǒng)的業(yè)務(wù)流程圖,明確了整個(gè)系統(tǒng)的流程。 (1)web 和 wap 功能模塊,如圖 1 所示。 圖 1 web 和 wap 功能模塊圖 第 5 頁(yè) 共 27 頁(yè) 圖 2 手機(jī)客戶端流程圖 (2)j2me 手機(jī)客戶端的系統(tǒng)流程圖,如圖 2 所示。 用戶查詢流程分為查詢內(nèi)容選擇、查詢信息輸入和信息接收 3 個(gè)步驟。 從該流程圖中可以看出,按起點(diǎn)終點(diǎn)查詢是整個(gè)系統(tǒng)最重要的一部分,也 是本系統(tǒng)最能體現(xiàn)算法的一部分,經(jīng)過對(duì)成都公交系統(tǒng)的觀察和分析,本系統(tǒng) 提出了一次換乘時(shí)采用基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣的公交換乘算法,如果第一 次換乘沒有可以換乘的方案,則采用上下矩陣算法,得出二次換乘信息,同時(shí) 把得到的方案緩存到數(shù)據(jù)庫(kù)中,下個(gè)用戶查詢相同起點(diǎn)終點(diǎn)時(shí)就直接從數(shù)據(jù)庫(kù) 中提取緩存信息,大大的節(jié)約了用戶的時(shí)間和系統(tǒng)資源。 2.3開發(fā)工具介紹開發(fā)工具介紹 java 語(yǔ)言是目前 internet 上大型的 web 應(yīng)用和手機(jī)程序開發(fā)時(shí)使用得最 熱門的編程語(yǔ)言,而目前國(guó)內(nèi)銷售的大多數(shù)手機(jī)都支持 java,同時(shí) j2me 和 j2ee 因?yàn)槎际腔?java 技術(shù),可以進(jìn)行無(wú)縫連接,所以本系統(tǒng)選用 j2me 和 j2ee 做為開發(fā)語(yǔ)言,同時(shí)在 web 端應(yīng)用相關(guān)的 struts 框架,并完成一個(gè)基于 這 2 種技術(shù)結(jié)合的手機(jī)無(wú)線公交查詢系統(tǒng)。 本系統(tǒng)采用的開發(fā)工具為 mysql+eclipse+tomcat/weblogic,mysql 是一 個(gè)廣受 linux 社區(qū)人們喜愛的半商業(yè)的數(shù)據(jù)庫(kù)。mysql 具有強(qiáng)大且簡(jiǎn)單易用的 特點(diǎn),而且運(yùn)行速度極快,能夠處理企業(yè)數(shù)據(jù)庫(kù)絕大多數(shù)的應(yīng)用需求。eclipse 是一個(gè)開放源代碼的、基于 java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是 一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,eclipse 附 帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 java 開發(fā)工具(java development tools,jdt) 。 tomcat 服務(wù)器是一個(gè)免費(fèi)的開放源代碼的 web 應(yīng)用服務(wù)器,它是 apache 軟件 基金會(huì)(apache software foundation)的 jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由 apache、sun 和其他一些公司及個(gè)人共同開發(fā)而成。由于有了 sun 的參與和支 持,最新的 servlet 和 jsp 規(guī)范總是能在 tomcat 中得到體現(xiàn),tomcat5 支持最 新的 servlet 2.4 和 jsp 2.0 規(guī)范。因?yàn)?tomcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi), 因而深受 java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流 行的 web 應(yīng)用服務(wù)器。 3手機(jī)公交查詢系統(tǒng)的設(shè)計(jì)手機(jī)公交查詢系統(tǒng)的設(shè)計(jì) 3.1手機(jī)公交查詢系統(tǒng)算法的設(shè)計(jì)手機(jī)公交查詢系統(tǒng)算法的設(shè)計(jì) .1 直達(dá)的算法設(shè)計(jì)直達(dá)的算法設(shè)計(jì) 現(xiàn)有 a,b 兩個(gè)公交站,通過數(shù)據(jù)庫(kù)查詢語(yǔ)句“select * from businfo” 獲得 全部公交線路信息,再把每一路車的信息依次迭代出來(lái),判斷 a 站和 b 站是否 第 6 頁(yè) 共 27 頁(yè) 同時(shí)在該線路中,如結(jié)果為 true,則可以直達(dá),同時(shí)將直達(dá)方案存入一個(gè)集合 中,繼續(xù)向下遍歷,如果結(jié)果為 false,則該車不能直達(dá),繼續(xù)向下遍歷。 .2 一次換乘的算法設(shè)計(jì)一次換乘的算法設(shè)計(jì) 一次換乘采用基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣的公交換乘算法,現(xiàn)在 a,b 兩個(gè) 公交站,通過數(shù)據(jù)庫(kù)查詢語(yǔ)句查找出經(jīng)過 a 站的所有公交車集合 collection1,再 通過數(shù)據(jù)庫(kù)查詢語(yǔ)句查找出經(jīng)過 b 站的所有公交車集合 collection2,判斷 collection1 和 collection2 是否有交集,若有,則得到一次換乘方案,存放在結(jié) 果集合中。判斷結(jié)束后,再按照經(jīng)過站點(diǎn)總數(shù)對(duì)換乘方案進(jìn)行排序,因?yàn)閾Q乘 結(jié)果往往數(shù)以百計(jì),所以只取結(jié)果集的前 n 條記錄展現(xiàn)給用戶。若判斷結(jié)束后 沒有找到一次換乘的方案,則執(zhí)行 2 次換乘算法。 一次換乘算法,如圖 3 所示。 圖 3 一次換乘算法示意圖 第 7 頁(yè) 共 27 頁(yè) 圖 4 二次換乘算法示意圖 .3 二次換乘的算法設(shè)計(jì)二次換乘的算法設(shè)計(jì) 二次換乘采用上下矩陣算法,現(xiàn)有 a,b 兩個(gè)公交站,先通過數(shù)據(jù)庫(kù)查詢語(yǔ) 句和程序業(yè)務(wù)邏輯得到 a 站能直達(dá)的所有站點(diǎn),放在集合 collection1 中,再按 照 a 站的方法找出 b 站能知道的所有站點(diǎn),放在集合 collection2 中,再判斷是 否有公交車可以從 collection1 中的站點(diǎn)直達(dá) collection2 中的站點(diǎn),如果,則將 方案存放到結(jié)果集合中。至此為止,根據(jù)公交線路設(shè)計(jì)的理論,是肯定可以找 到二次換乘的方案的,故不再考慮 3 次換乘方案。 二次換乘算法,如圖 4 所示。 3.2手機(jī)公交查詢數(shù)據(jù)庫(kù)的設(shè)計(jì)手機(jī)公交查詢數(shù)據(jù)庫(kù)的設(shè)計(jì) .1 數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì) 圖 5 數(shù)據(jù)庫(kù)主要 e-r 圖 準(zhǔn)確了解與分析用戶需求(包括數(shù)據(jù)與處理)是整個(gè)設(shè)計(jì)過程的基礎(chǔ)。而 根據(jù)用戶需求設(shè)計(jì)合適的數(shù)據(jù)庫(kù)以及選擇恰當(dāng)?shù)臄?shù)據(jù)庫(kù)以確保系統(tǒng)能高速穩(wěn)定 的運(yùn)行則是數(shù)據(jù)庫(kù)設(shè)計(jì)的根本目地。 由于本系統(tǒng)涉及到大量數(shù)據(jù)的讀取,并且對(duì)安全性要求不高,故選用占用 系統(tǒng)資源較少并且速度相對(duì)較快的 mysql 作為本系統(tǒng)的數(shù)據(jù)庫(kù)。 通過對(duì)用戶需求的分析以及對(duì)系統(tǒng)本身應(yīng)用背景的研究,可以看出本系統(tǒng) 需要有以下數(shù)據(jù)支持:公交線路信息,公交站點(diǎn)信息,站點(diǎn)附近標(biāo)志信息,用 戶通知信息,同時(shí)考慮到節(jié)約系統(tǒng)資源,在用戶進(jìn)行完站站查詢后還會(huì)產(chǎn)生一 第 8 頁(yè) 共 27 頁(yè) 個(gè)存放查詢結(jié)果的緩存信息。由上述可以確認(rèn)該算法所關(guān)系到的數(shù)據(jù)表。 根據(jù)上述分析,可以得出公交信息模型的 e-r 圖,如圖 5 所示。 公交信息相關(guān)數(shù)據(jù)庫(kù)的數(shù)據(jù)字典,如表 1 所示。 表 1 公交信息相關(guān)的數(shù)據(jù)字典 序 號(hào)數(shù) 據(jù) 項(xiàng) 名 稱數(shù) 據(jù) 項(xiàng) 內(nèi) 容 1.公交線路信息公交線路的信息匯總 1.1線路 id公交線路的 id 1.2線路 no公交線路的名稱,如 502a 1.3經(jīng)過站點(diǎn)公交線路經(jīng)過的站點(diǎn) 1.4收發(fā)車時(shí)間公交車的收發(fā)車時(shí)間 1.5是否上下行判斷該公交車是否有上下行 2.公交站點(diǎn)信息公交站點(diǎn)相關(guān)信息 2.1公交站名該站點(diǎn)的站名 2.2附近標(biāo)志 1附近標(biāo)志 1 的名字 2.3附近標(biāo)志 2附近標(biāo)志 2 的名字 2.4附近標(biāo)志 3附近標(biāo)志 3 的名字 2.5附近標(biāo)志 4附近標(biāo)志 4 的名字 2.6附近標(biāo)志 5附近標(biāo)志 5 的名字 2.7附近標(biāo)志 6附近標(biāo)志 6 的名字 2.8附近標(biāo)志 7附近標(biāo)志 7 的名字 2.9附近標(biāo)志 8附近標(biāo)志 8 的名字 2.10附近標(biāo)志 9附近標(biāo)志 9 的名字 2.11附近標(biāo)志 10附近標(biāo)志 10 的名字 3.站點(diǎn)附近標(biāo)志匯總站點(diǎn)附近標(biāo)志性建筑物或者地名的匯總 3.1標(biāo)志 id標(biāo)志編號(hào) 3.2標(biāo)志名稱站點(diǎn)附近標(biāo)志性建筑物或者地段的名稱 .2 數(shù)據(jù)庫(kù)的物理設(shè)計(jì)數(shù)據(jù)庫(kù)的物理設(shè)計(jì) (1)公交線路信息表 負(fù)責(zé)存放公交線路信息,考慮到部分公交車存在上行和下行不一致的情況, 表中添加了是否上下行的字段,以供算法確認(rèn)。如表 2 所示。 表 2公交線路信息表 公交線路信息表(businfo) 第 9 頁(yè) 共 27 頁(yè) 字段名注釋 busid公交車的 id busno公交車的車號(hào) stop1第 1 個(gè)站的站名 stop2第 2 個(gè)站的站名 stop50第 50 個(gè)站的站名 time公交車的發(fā)車收車時(shí)間 startend公交車的起點(diǎn)和終點(diǎn) updown是否有上下行 (2) 站點(diǎn)信息表 負(fù)責(zé)存放站點(diǎn)相關(guān)信息,并且存放一定的周圍標(biāo)志建筑和地名的信息,以 供算法進(jìn)行模糊查詢。如表 3 所示。 表 3站點(diǎn)信息表 站點(diǎn)信息表(stopinfo) 字段名注釋 stopname公交站站名 near1附近標(biāo)志 1 near2附近標(biāo)志 2 near3附近標(biāo)志 3 near4附近標(biāo)志 4 near5附近標(biāo)志 5 near6附近標(biāo)志 6 near7附近標(biāo)志 7 near8附近標(biāo)志 8 near9附近標(biāo)志 9 near10附近標(biāo)志 10 stoppic臃余字段,為以后功能預(yù)先留出 (3) 站點(diǎn)附近標(biāo)志匯總表 負(fù)責(zé)存放站點(diǎn)周圍標(biāo)志建筑或地名的匯總信息,本表為站點(diǎn)信息表的 near 集合自動(dòng)生成。如表 4 所示。 第 10 頁(yè) 共 27 頁(yè) 表 4站點(diǎn)附近標(biāo)志匯總表 站點(diǎn)附近標(biāo)志匯總表(stopinfo) 字段名注釋 id標(biāo)志的 id nearname標(biāo)志的名字 (4) 用戶公告表 負(fù)責(zé)存放本系統(tǒng)的公告信息。如表 5 所示。 表 5用戶公告表 用戶公告表(notify) 字段名注釋 id消息的 id content消息內(nèi)容 date消息發(fā)布日期 (5) 查詢統(tǒng)計(jì)表 負(fù)責(zé)統(tǒng)計(jì)用戶查詢和下載量。如表 6 所示。 表 6 查詢統(tǒng)計(jì)表 查詢統(tǒng)計(jì)表(jishuqi) 字段名注釋 idid fangwen查詢量 xiazai客戶端下載量 4手機(jī)公交查詢系統(tǒng)功能手機(jī)公交查詢系統(tǒng)功能詳細(xì)實(shí)現(xiàn)詳細(xì)實(shí)現(xiàn) 經(jīng)過上面的描述,已經(jīng)明確了手機(jī)公交查詢系統(tǒng)需要實(shí)現(xiàn)的功能以及如何 去完成這些功能。下面將具體的闡述如何實(shí)現(xiàn)這些功能。 4.1 服務(wù)器端的實(shí)現(xiàn)服務(wù)器端的實(shí)現(xiàn) 本系統(tǒng)遵照 j2ee 3、4 層結(jié)構(gòu),使用了 mvc、ao 等設(shè)計(jì)模式,組織結(jié)構(gòu)圖如 圖 6 所示。 第 11 頁(yè) 共 27 頁(yè) 圖 6 系統(tǒng)組織結(jié)構(gòu)圖 .1 基類(基類(base class)的實(shí)現(xiàn))的實(shí)現(xiàn) 采用 ao 模式,將數(shù)據(jù)庫(kù)相關(guān)方法封裝到一個(gè)基類中,由業(yè)務(wù)邏輯繼承該 基類。 數(shù)據(jù)庫(kù)連接(connection)通過配置 web 服務(wù)器上的連接池,同時(shí)將數(shù)據(jù) 源綁定到 jndi,程序直接通過 jndi name 獲取,實(shí)現(xiàn)了數(shù)據(jù)源的可配置性和 高度可移植性。獲取 jndi name 方法如下: javax.sql.datasource ds = (javax.sql.datasource) ctx.lookup(dsname) ; /從數(shù)據(jù)源得到連接 conn = ds.getconnection() ; 因?yàn)楹竺嫘枰啻握{(diào)用關(guān)閉數(shù)據(jù)庫(kù)連接,故關(guān)閉連接封裝到一個(gè)方法中, 具體實(shí)現(xiàn)如下: /關(guān)閉數(shù)據(jù)庫(kù)連接 第 12 頁(yè) 共 27 頁(yè) public void close(resultset rs,preparedstatement ps,connection con) try if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(con!=null) con.close(); catch(exception e) e.printstacktrace(); .2 輔助類(輔助類(help class)的實(shí)現(xiàn))的實(shí)現(xiàn) 輔助類主要為業(yè)務(wù)類提供一些輔助功能,盡量實(shí)現(xiàn)功能的分離和高度封裝。 同時(shí)為了加快運(yùn)行速度,減少 jvm 編譯負(fù)擔(dān),采用 preparedstatement。部分方 法如下: (1)獲得公交總數(shù) 一般查找總數(shù)用”select count(*) from businfo”,但這樣因?yàn)槭琼樞虮闅v,一直 要遍歷到最后一條,效率不高,此處使用 sqlrst.last();使游標(biāo)直接指向最后一條 記錄,再用 buscount = sqlrst.getrow();記錄最后一條記錄的行號(hào),從而得到了 總行數(shù),比起前一個(gè)方法更快而且節(jié)約系統(tǒng)資源。 (2)插入數(shù)據(jù)庫(kù)緩存,使得下一個(gè)用戶查詢?cè)摲桨笗r(shí)可以直接從數(shù)據(jù)庫(kù)中 獲取結(jié)果,從而大大的節(jié)約了用戶時(shí)間和系統(tǒng)資源。實(shí)現(xiàn)方法如下: string sql=“insert into zhuancheng(id,result1,result2,result3,result4) values(?,?,?,?,?)“; ps1 = conn.preparestatement(sql) ; ps1.setstring(1,start+end); ps1.setstring(2,result1); ps1.setstring(3,result2); ps1.setstring(4,result3); ps1.setstring(5,result4); ps1.executeupdate(); 用戶查詢時(shí)若數(shù)據(jù)庫(kù)中已有緩存數(shù)據(jù),則調(diào)用以下方法獲取緩存的換乘數(shù) 據(jù): 第 13 頁(yè) 共 27 頁(yè) string sql1=“select * from zhuancheng where id=“+“+start+end+“; ps1 = conn.preparestatement(sql1) ; rs1 = ps1.executequery() ; while(rs1.next() result1=rs1.getstring(“result1“); result2=rs1.getstring(“result2“); result3=rs1.getstring(“result3“); result4=rs1.getstring(“result4“); .3 業(yè)務(wù)邏輯類(業(yè)務(wù)邏輯類(logic class)的實(shí)現(xiàn))的實(shí)現(xiàn) (1)查詢公交線路 該方法比較簡(jiǎn)單,通過“select * from businfo where busno=“+busno”即可 得到符合條件的公交車,同時(shí)返回用戶需要的數(shù)據(jù)。 (2)按站查詢經(jīng)過的公交線路,步驟如下: 通過輔助類判斷用戶輸入的站名或者附近標(biāo)志名,并找到對(duì)應(yīng)的公 交站名。 通過 sql 語(yǔ)句找到經(jīng)過該站的公交車,存放在一個(gè)集合中并返回。 (3)按起點(diǎn)終點(diǎn)查找乘坐方案 這是本系統(tǒng)中最復(fù)雜的一塊,通過前面提到的基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣 的公交換乘算法和上下矩陣算法來(lái)實(shí)現(xiàn),具體實(shí)現(xiàn)方法如下: 通過 start=tool.getbusstop(start); end=tool.getbusstop(end);來(lái)確定起點(diǎn)和 終點(diǎn)的公交站名。 檢驗(yàn)站名是否存在,存在則繼續(xù)往下,不存在則返回提示信息。 若站名存在,則嘗試從數(shù)據(jù)庫(kù)中取得直達(dá)緩存信息,如數(shù)據(jù)庫(kù)中沒有 直達(dá)信息,則查找換乘信息。 若數(shù)據(jù)庫(kù)中沒有緩存,則開始查找有無(wú)直達(dá)線路,找到后把結(jié)果存入 數(shù)據(jù)庫(kù)。 如果沒有直達(dá)方案,則開始查找 1 次換乘方案,找到后按照經(jīng)過站數(shù) 排序,站數(shù)少的排前面,由于換乘方案過多,故只返回前幾條。 由于一次換乘結(jié)果可能成百上千,故只給用戶前幾條換乘方案進(jìn)行選擇,先將 全部換乘方案按經(jīng)過車站數(shù)進(jìn)行排序,再取前 4 條返回給用戶。 排序類為一個(gè)實(shí)現(xiàn)了 serializable 和 comparable 的工具類,具體排序方法在 compareto 方法中實(shí)現(xiàn),通過 compareto(object b)來(lái)定義如何排序,代碼如下: 第 14 頁(yè) 共 27 頁(yè) public int compareto(object b) sortbean sort=(sortbean)b; return (this.length-sort.length) ; 換乘得到結(jié)果后放入 collection 中返回。 最后把找到的結(jié)果集寫入到數(shù)據(jù)庫(kù)緩存中。 tool.insertdb(start,end,zhuanchengresult0,zhuanchengresult1,zhuanchengres ult2,zhuanchengresult3); 如果找不到一次換乘(這種情況非常渺茫) ,而用戶又非常執(zhí)著的要繼續(xù) 找公交車,就不得不使用二次換乘,算法在 3.3 節(jié)已有說(shuō)明,下面列出具體做 法: 首先查找出經(jīng)過起點(diǎn)站和終點(diǎn)站的線路,再通過線路找到該站能直達(dá)的所 有站點(diǎn),以起點(diǎn)站為例: collection stop1bus=findbusnobystop(stop1);/經(jīng)過stop1的公交車 collection stop2bus=findbusnobystop(stop2);/經(jīng)過 stop2 的公交車 iterator itr=stop1bus.iterator(); while(itr.hasnext() iterator initr1=searchbusline(string)itr.next().iterator(); while(initr1.hasnext() string stopname=(string)initr1.next(); map1.put(stopname,“rubbish“); 這里使用 hashmap 的 key 作為存放站名的容器,因?yàn)閺囊粋€(gè)站臺(tái)輻射出 去的公交線路經(jīng)過的站點(diǎn)往往有重復(fù),而 hashmap 在 key 重復(fù)的時(shí)候只是重 新設(shè)置了 value 值,key 值則無(wú)法重復(fù)插入,故選用 hashmap。 在分別找到起點(diǎn)和終點(diǎn)能直達(dá)的站點(diǎn)集合后,就開始進(jìn)行循環(huán)查找,開始 檢驗(yàn)起點(diǎn)能直達(dá)的站點(diǎn)中是否有能直達(dá)終點(diǎn)能直達(dá)站點(diǎn)的站點(diǎn),如有,則證明 可以進(jìn)行二次換乘。 iterator key1= map1.keyset().iterator(); iterator key2= map2.keyset().iterator(); while(key1.hasnext() while(key2.hasnext() if(zhida.isempty() string sop1=(string)key1.next(); 第 15 頁(yè) 共 27 頁(yè) string sop2=(string)key2.next(); zhida=zhida(sop1,sop2); /內(nèi)層 break if(!zhida.isempty() system.out.println(“找到中途換乘“+zhida.size(); break; /外層 break if(!zhida.isempty() system.out.println(“break2“+zhida.size(); break; 找到一條可行的線路后,再開始查找起點(diǎn)到轉(zhuǎn)乘點(diǎn) 1 的線路和轉(zhuǎn)乘點(diǎn) 2 到 重點(diǎn)的線路,并放到一個(gè) string 中: /第 1 站到第 2 站的車號(hào) while(one2two.iterator().hasnext() system.out.println(“step3“); nonstop2=(nonstop)one2two.iterator().next(); busno1+=nonstop2.getbusno()+“,“; /第 3 站到第 4 站的車號(hào) while(three2four.iterator().hasnext() system.out.println(“step4“); nonstop3=(nonstop)three2four.iterator().next(); busno2+=nonstop3.getbusno()+“,“; 最后把起點(diǎn)到第一換乘站,第一換乘站到第二換乘站,第二換乘站到終點(diǎn) 站 3 段線路連接到一個(gè) string 中并將改 string 添加到集合中,最后返回該集合: result=“從“+stop1+“站出發(fā),乘坐“+busno1+“到“+huanchengstop1+“站轉(zhuǎn) “+nonstop.getbusno()+“到“+ 第 16 頁(yè) 共 27 頁(yè) huanchengstop2+“站轉(zhuǎn)“+busno2+“到“+stop2; twohg.add(result); system.out.println(“find one“); catch(exception e) e.printstacktrace(); return twohg; 本算法采用了 3 個(gè) bean 來(lái)保存 3 段路線的信息,每個(gè) bean 中分別有 start,end,busno3 個(gè)屬性,使得算法條理更加清晰化。 至此站站查詢?nèi)客瓿伞?.4 服務(wù)器對(duì)外接口(服務(wù)器對(duì)外接口(servlet)的實(shí)現(xiàn))的實(shí)現(xiàn) 本系統(tǒng)采用 servlet 作為和手機(jī)通訊的接口,采用 http 的應(yīng)答機(jī)制,免去 了自己寫應(yīng)答的麻煩,系統(tǒng)在執(zhí)行了一次查詢后在服務(wù)器的 log 中記錄一次, 同時(shí)數(shù)據(jù)庫(kù)中負(fù)責(zé)記錄查詢次數(shù)的計(jì)數(shù)器加 1。發(fā)送信息關(guān)鍵代碼如下: response.setcontenttype(content_type); dataoutputstream dos = new dataoutputstream(response.getoutputstream(); iterator itr=coll.iterator() ; while (itr.hasnext() result = result+(string) itr.next() ; result+=“n“+tool.getmessage(); dos.writeutf(result); dos.close(); 有過開發(fā)經(jīng)驗(yàn)的人都知道,在做 java 開發(fā)時(shí)傳輸中文常常遇到亂碼現(xiàn)象, 這里我在 content_type 里面編碼方式設(shè)置成 gb2312,并且在客戶端發(fā)送 數(shù)據(jù)時(shí)也把編碼設(shè)置成 gb2312,同時(shí)采用 writeutf 方法,成功解決中文問題。 4.2 web 端的實(shí)現(xiàn)端的實(shí)現(xiàn) 本系統(tǒng) web 端采用 struts 框架,嚴(yán)格遵循 mvc 模式,用戶提交信息后先 放到 formbean 中暫存,然后在 action 中實(shí)現(xiàn)業(yè)務(wù)方法的調(diào)用,實(shí)現(xiàn)代碼的高 度封裝性和分離性。本系統(tǒng)只采用了一個(gè) action 作為中央控制器,通過參數(shù)關(guān) 鍵字判斷是那種查詢,同時(shí)查詢頁(yè)面和結(jié)果頁(yè)面為同一頁(yè)面,在 action 中查詢 第 17 頁(yè) 共 27 頁(yè) 完畢后統(tǒng)一放入 collection 中傳遞到結(jié)果頁(yè)面中,使得頁(yè)面重用性大大提高。 首頁(yè)顯示圖 7 所示。 圖 7 首頁(yè)圖樣 查詢頁(yè)面顯示如圖 8 所示。 圖 8 查詢頁(yè)面 action 作為中央控制器負(fù)責(zé)執(zhí)行判斷用戶輸入和查詢,以線路查詢?yōu)槔?核心代碼如下: 判斷用戶提交內(nèi)容: /如果用戶按公交車號(hào)查詢 if (busno != null) try busnoresult = dealbus.searchbusline(busno) ; 第 18 頁(yè) 共 27 頁(yè) httpservletrequest.setattribute(“buslineresult“ , busnoresult) ; dealactionform.setbusno(null); busno=null; result=null; /返回“buslineresult”對(duì)應(yīng)的頁(yè)面,具體配置在struts-configure里面設(shè)置 return (actionmapping.findforward(“buslineresult“) ; catch (exception e) /將錯(cuò)誤信息放到request中傳遞到錯(cuò)誤頁(yè)面 httpservletrequest.setattribute(“errormsg“, e.getmessage(); e.printstacktrace() ; return (actionmapping.findforward(“error“) ; 4.3 wap 端的實(shí)現(xiàn)端的實(shí)現(xiàn) wap 端采用 wml(wireless markup language - 無(wú)線標(biāo)記語(yǔ)言)編寫,無(wú) 限標(biāo)記語(yǔ)言 wml(wireless markup language)是一種基于擴(kuò)展標(biāo)記語(yǔ)言 xml(extension markup language)的語(yǔ)言,是 xml 的子集。它可以顯示各種文 字、圖像等數(shù)據(jù),是由 wap 論壇()提出并專為無(wú)線 設(shè)備用戶提供交互界面而設(shè)計(jì)的,目前版本為 1.1 版。這些無(wú)線設(shè)備包括移動(dòng) 電話,呼機(jī)和個(gè)人數(shù)字助理 pda(personal digital assistants)等。 wap 模塊主要有首頁(yè),功能選擇頁(yè)面,線路查詢頁(yè)面,站站查詢頁(yè)面等組 成,部分頁(yè)面顯示如下: 功能選擇頁(yè)面,讓用戶選擇使用哪種方式進(jìn)行查詢,如圖 9 所示。 圖 9 功能選擇頁(yè)面 客戶端下載頁(yè)面,有 jar 和 jad 可供選擇,以兼容支持不同的手機(jī),如圖 第 19 頁(yè) 共 27 頁(yè) 10 所示。 圖 10 客戶端下載頁(yè)面 詳細(xì)原理以線路查詢?yōu)槔?,線路查詢提交代碼如下: 其中$(busno:n)為變量的表示方法,:n 的意思為變量中沒有 escape 字符, 即不需要進(jìn)行 escape 八進(jìn)制轉(zhuǎn)碼。 服務(wù)器端處理代碼(selectnumber.jsp)如下: if(busno!=null) try tool.fangwen();/用戶查詢計(jì)數(shù)器加1 dealbus dealbus=new dealbus(); coll =dealbus.searchbusline(busno);/調(diào)用業(yè)務(wù)處理方法 iterator itr=coll.iterator() ; /將結(jié)果輸出到一個(gè)string中 while (itr.hasnext() result = result+(string) itr.next() ; 然后將結(jié)果顯示在用戶手機(jī)上: 第 20 頁(yè) 共 27 頁(yè) 返回 返回首頁(yè) 4.4 手機(jī)客戶端的實(shí)現(xiàn)手機(jī)客戶端的實(shí)現(xiàn) .1 客戶端界面的實(shí)現(xiàn)客戶端界面的實(shí)現(xiàn) 界面使用了內(nèi)部類技術(shù),整個(gè)界面是一個(gè)大類,里面的每一個(gè)選項(xiàng)都是一 個(gè)內(nèi)部類,并且部署監(jiān)聽器,實(shí)現(xiàn)按鍵事件監(jiān)聽??丶砑尤缦吕荆?/定義控件 mainlist = new list(“請(qǐng)選擇功能“, choice.implicit, listitem, null); mainnokcommand = new command(“確定“, command.ok, 1); string listitem = “查詢公交線路“, “查詢乘坐方案“, “按站查公交“, “網(wǎng) 絡(luò) 設(shè) 置“, “系 統(tǒng) 說(shuō) 明“ ; exitcommand = new command(“退出“, command.exit, 1); cancelcommand = new command(“取消“, command.cancel, 1); /添加控件 mainlist.addcommand(exitcommand); mainlist.addcommand(mainnokcommand); /添加監(jiān)聽器 mainlist.setcommandlistener(this); /把該面板顯示到屏幕上 display.setcurrent(mainlist); .2 客戶端工作原理客戶端工作原理 下面以線路查詢功能為例,詳細(xì)說(shuō)明 j2me 手機(jī)客戶端工作原理。 界面控件代碼如下: searchfield=new textfield(“請(qǐng)輸入查詢線路“,“,3,textfield.numeric); backcommand1=new command(“返回“,command.back,1);/返回按鈕 okcomman

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論