




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 PAGE30 / NUMPAGES37 分類號(hào):TP311.1 UDC:D10621-408-(2007)5720-0密 級(jí):公 開 編 號(hào):2003215048信息工程學(xué)院學(xué)位論文基于J2ME的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文 申請(qǐng)學(xué)位專業(yè):網(wǎng)絡(luò)工程申請(qǐng)學(xué)位類別:工學(xué)學(xué)士指導(dǎo)教師(職稱):論文提交日期:畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說(shuō)明原創(chuàng)性聲明本人重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作與取得的成果。盡我所知,除文中特別加以標(biāo)注和致的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過(guò)的研究成果,也不包含我為獲得與其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過(guò)的材料。對(duì)本研究
2、提供過(guò)幫助和做出過(guò)貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說(shuō)明并表示了意。作 者 簽 名:日 期:指導(dǎo)教師簽名: 日期:使用授權(quán)說(shuō)明本人完全了解大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝?、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉咳?。作者簽名: 日 期:學(xué)位論文原創(chuàng)性聲明本人重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的容外,本論文不包含任何其他個(gè)人或集
3、體已經(jīng)發(fā)表或撰寫的成果作品。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。作者簽名: 日期: 年 月 日學(xué)位論文使用授權(quán)書本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)大學(xué)可以將本學(xué)位論文的全部或部分容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。作者簽名:日期: 年 月 日導(dǎo)師簽名: 日期: 年 月 日基于J2ME的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘 要當(dāng)今,人類社會(huì)已步入信息時(shí)代,信
4、息化革命給所有領(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)通過(guò)對(duì)城市公交系統(tǒng)的調(diào)研,提出了基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣的公交換
5、乘算法和上下矩陣算法;以J2ME作為開發(fā)工具,將其移植到用戶手機(jī)上,借助于無(wú)線互聯(lián)網(wǎng),能為客戶隨時(shí)隨地提供公交信息的查詢;通過(guò)測(cè)試與分析,證實(shí)了該系統(tǒng)的可行性與實(shí)用價(jià)值。關(guān)鍵詞:公交查詢;站點(diǎn)優(yōu)先級(jí);公交換乘算法;手機(jī);無(wú)線互聯(lián)網(wǎng)Design and Implementation of City-bus Information Inquiry System Based on J2MEAbstractAt present, the human society marches into the information time; the information revolution has bro
6、ught the unprecedented revolutionfor 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 hands
7、et 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 thatth
8、e 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 th
9、e users often are confused, whichbrings many inconvenient to people, buthandset 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
10、 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 pract
11、ical value.Key words:City Bus Inquiry; Stand Priority; City Bus Exchanging Algorithm; Handset; Wireless Internet目 錄論文總頁(yè)數(shù):27頁(yè) TOC o 1-3 h z u HYPERLINK l _Toc1707043251引言 PAGEREF _Toc170704325 h 1HYPERLINK l _Toc1707043261.1課題背景 PAGEREF _Toc170704326 h 1HYPERLINK l _Toc1707043271.2國(guó)外研究現(xiàn)狀 PAGEREF _Toc
12、170704327 h 1HYPERLINK l _Toc1707043281.3本課題研究的意義 PAGEREF _Toc170704328 h 2HYPERLINK l _Toc1707043291.4本軟件的開發(fā)方法 PAGEREF _Toc170704329 h 2HYPERLINK l _Toc1707043301.5本文的主要工作 PAGEREF _Toc170704330 h 3HYPERLINK l _Toc1707043311.5.1研究的主要容 PAGEREF _Toc170704331 h 3HYPERLINK l _Toc1707043321.5.2各章節(jié)的安排 PAG
13、EREF _Toc170704332 h 3HYPERLINK l _Toc1707043332手機(jī)公交查詢的需求分析和開發(fā)工具介紹 PAGEREF _Toc170704333 h 3HYPERLINK l _Toc1707043342.1用戶的原始需求 PAGEREF _Toc170704334 h 3HYPERLINK l _Toc1707043352.2手機(jī)公交查詢系統(tǒng)功能模塊與流程圖 PAGEREF _Toc170704335 h 4HYPERLINK l _Toc1707043362.3開發(fā)工具介紹 PAGEREF _Toc170704336 h 5HYPERLINK l _Toc1
14、707043373手機(jī)公交查詢系統(tǒng)的設(shè)計(jì) PAGEREF _Toc170704337 h 5HYPERLINK l _Toc1707043383.1手機(jī)公交查詢系統(tǒng)算法的設(shè)計(jì) PAGEREF _Toc170704338 h 5HYPERLINK l _Toc1707043393.1.1直達(dá)的算法設(shè)計(jì) PAGEREF _Toc170704339 h 5HYPERLINK l _Toc1707043403.1.2一次換乘的算法設(shè)計(jì) PAGEREF _Toc170704340 h 6HYPERLINK l _Toc1707043413.1.3二次換乘的算法設(shè)計(jì) PAGEREF _Toc1707043
15、41 h 7HYPERLINK l _Toc1707043423.2手機(jī)公交查詢數(shù)據(jù)庫(kù)的設(shè)計(jì) PAGEREF _Toc170704342 h 7HYPERLINK l _Toc1707043433.2.1數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì) PAGEREF _Toc170704343 h 7HYPERLINK l _Toc1707043443.2.2數(shù)據(jù)庫(kù)的物理設(shè)計(jì) PAGEREF _Toc170704344 h 8HYPERLINK l _Toc1707043454手機(jī)公交查詢系統(tǒng)功能詳細(xì)實(shí)現(xiàn) PAGEREF _Toc170704345 h 10HYPERLINK l _Toc1707043464.1服務(wù)器端的
16、實(shí)現(xiàn) PAGEREF _Toc170704346 h 10HYPERLINK l _Toc1707043474.1.1基類(Base Class)的實(shí)現(xiàn) PAGEREF _Toc170704347 h 11HYPERLINK l _Toc1707043484.1.2輔助類(Help Class)的實(shí)現(xiàn) PAGEREF _Toc170704348 h 12HYPERLINK l _Toc1707043494.1.3業(yè)務(wù)邏輯類(Logic Class)的實(shí)現(xiàn) PAGEREF _Toc170704349 h 13HYPERLINK l _Toc1707043504.1.4服務(wù)器對(duì)外接口(Servle
17、t)的實(shí)現(xiàn) PAGEREF _Toc170704350 h 16HYPERLINK l _Toc1707043514.2WEB端的實(shí)現(xiàn) PAGEREF _Toc170704351 h 16HYPERLINK l _Toc1707043524.3WAP端的實(shí)現(xiàn) PAGEREF _Toc170704352 h 18HYPERLINK l _Toc1707043534.4手機(jī)客戶端的實(shí)現(xiàn) PAGEREF _Toc170704353 h 20HYPERLINK l _Toc1707043544.4.1客戶端界面的實(shí)現(xiàn) PAGEREF _Toc170704354 h 20HYPERLINK l _Toc
18、1707043554.4.2客戶端工作原理 PAGEREF _Toc170704355 h 20HYPERLINK l _Toc1707043564.4.3手機(jī)網(wǎng)絡(luò)設(shè)置 PAGEREF _Toc170704356 h 22HYPERLINK l _Toc1707043575手機(jī)公交查詢系統(tǒng)測(cè)試與分析 PAGEREF _Toc170704357 h 22HYPERLINK l _Toc1707043585.1測(cè)試環(huán)境 PAGEREF _Toc170704358 h 22HYPERLINK l _Toc1707043595.2運(yùn)行與測(cè)試 PAGEREF _Toc170704359 h 22HYPE
19、RLINK l _Toc1707043605.3測(cè)試結(jié)果 PAGEREF _Toc170704360 h 24HYPERLINK l _Toc170704361結(jié)論 PAGEREF _Toc170704361 h 24HYPERLINK l _Toc170704362參考文獻(xiàn) PAGEREF _Toc170704362 h 25HYPERLINK l _Toc170704363致 PAGEREF _Toc170704363 h 26HYPERLINK l _Toc170704364聲明 PAGEREF _Toc170704364 h 27引言課題背景作為關(guān)系國(guó)計(jì)民生的社會(huì)公益事業(yè),城市公共交通
20、一直都是政府工作的重點(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)便捷。國(guó)外研究現(xiàn)狀從有關(guān)的文獻(xiàn)看, 如今全世界可以支持J2ME的手
21、持設(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)
22、上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ó)來(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支持 ,MIDP2.0則增加了對(duì) S、報(bào)文、socket通信以與串口通信的支持。另外,MIDP2.0還支 持服務(wù)
23、器Push體系架構(gòu),這樣,你的手機(jī)能夠收到來(lái)自服務(wù)器的報(bào)警、消息或者廣播,根據(jù)要求啟動(dòng)手機(jī)上的應(yīng)用程序進(jìn)行操作。支持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)被
24、眾多技術(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í)信息解決方案中不可或缺的一部分。本課題研究的意義在我國(guó),隨著城市化的快速發(fā)展,市公交系統(tǒng)也隨之迅速擴(kuò)大,且更加復(fù)雜化,找不到合適的乘車路線的事情經(jīng)常發(fā)生。當(dāng)前,復(fù)雜的公交系統(tǒng)使得用戶往往處于迷惑的狀態(tài),給出行帶來(lái)諸多不便,在另一個(gè)方面,我國(guó)城市的手機(jī)普與率已經(jīng)非常高了,如果能把這兩種情況
25、結(jié)合起來(lái),開發(fā)出一種基于手機(jī)的公交查詢軟件,將會(huì)給用戶帶來(lái)便捷?;谝陨显?,本系統(tǒng)通過(guò)對(duì)城市公交系統(tǒng)的調(diào)研,提出了基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣的公交換乘算法和上下矩陣算法;以J2ME作為開發(fā)工具,將其移植到用戶手機(jī)上,借助于無(wú)線互聯(lián)網(wǎng),能為客戶隨時(shí)隨地提供公交信息的查詢。本軟件的開發(fā)方法由于公交數(shù)據(jù)相對(duì)比較龐大和繁瑣,同時(shí)設(shè)計(jì)換乘時(shí)對(duì)系統(tǒng)處理的性能要求也比較高,故本系統(tǒng)采用在服務(wù)器上進(jìn)行計(jì)算,結(jié)果通過(guò)無(wú)線網(wǎng)絡(luò)傳輸?shù)娇蛻舳说男问竭M(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ā)。通過(guò)J2ME和
26、J2EE技術(shù)的結(jié)合,采用C/S模式和B/S模式共同存在的方式,服務(wù)器端采用Mysql+Tomcat/Weblogic,通過(guò)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é)約用戶流量。本文的主要工作研究的主要容本設(shè)計(jì)采用B/S和C/S結(jié)合的結(jié)構(gòu),綜合運(yùn)用以前所學(xué)的專業(yè)知識(shí),設(shè)計(jì)開發(fā)一個(gè)功能較完善的基于手機(jī)的公交查詢系統(tǒng),具體包括以下容:(1)研究并掌握TCP/IP等傳輸協(xié)議、數(shù)據(jù)庫(kù)操作等的基本原理。(2)學(xué)習(xí)并掌握J(rèn)2E
27、E,J2ME等相關(guān)知識(shí)。(3)以前面的研究為基礎(chǔ),編程實(shí)現(xiàn)服務(wù)器與手機(jī)客戶端線路查詢,按站查詢,站站查詢并且實(shí)現(xiàn)手機(jī)無(wú)線網(wǎng)絡(luò)通信等功能。各章節(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é)。最后,是作者通過(guò)對(duì)本系統(tǒng)的研究和設(shè)計(jì)總
28、結(jié)出的系統(tǒng)特點(diǎn)以與研究心得。手機(jī)公交查詢的需求分析和開發(fā)工具介紹用戶的原始需求作為關(guān)系國(guó)計(jì)民生的社會(huì)公益事業(yè),城市公共交通一直都是政府工作的重點(diǎn)。就市而言,調(diào)研結(jié)果中的另一個(gè)數(shù)據(jù),市乘客以公交方式出行的比例為23.36%,可見城市公交的重要性。但是從客觀上說(shuō),公交硬件建設(shè)跟不上城市建設(shè)的步伐,是全國(guó)大城市尤其是特大城市都正在遭遇的發(fā)展瓶頸。也常常造成人們的出行不便。本系統(tǒng)通過(guò)對(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)過(guò)站數(shù)的多少直接決
29、定了公交線路的長(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條的換乘信息,如果用戶使用按站查詢線路,系統(tǒng)也提供了一定的模糊查詢,比如用戶查詢“百腦匯”,系統(tǒng)能自動(dòng)辨認(rèn)出當(dāng)?shù)卣军c(diǎn)“磨子橋”。同時(shí),用戶在手機(jī)上可以通過(guò)J2ME手機(jī)客戶端和WAP的方式進(jìn)行查詢,在電腦上可以通過(guò)訪問(wèn)WEB站點(diǎn)的方式進(jìn)行查詢。手機(jī)公交查詢系統(tǒng)功能模塊與流程圖通過(guò)對(duì)需求分析
30、的調(diào)研,得出了經(jīng)過(guò)用戶確認(rèn)的手機(jī)公交查詢系統(tǒng)的系統(tǒng)邏輯模型。根據(jù)手機(jī)公交查詢系統(tǒng)的業(yè)務(wù)流程圖,明確了整個(gè)系統(tǒng)的流程。(1)WEB和WAP功能模塊,如圖1所示。圖1WEB和WAP功能模塊圖圖2 手機(jī)客戶端流程圖(2)J2ME手機(jī)客戶端的系統(tǒng)流程圖,如圖2所示。用戶查詢流程分為查詢?nèi)葸x擇、查詢信息輸入和信息接收3個(gè)步驟。從該流程圖中可以看出,按起點(diǎn)終點(diǎn)查詢是整個(gè)系統(tǒng)最重要的一部分,也是本系統(tǒng)最能體現(xiàn)算法的一部分,經(jīng)過(guò)對(duì)公交系統(tǒng)的觀察和分析,本系統(tǒng)提出了一次換乘時(shí)采用基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣的公交換乘算法,如果第一次換乘沒有可以換乘的方案,則采用上下矩陣算法,得出二次換乘信息,同時(shí)把得到的方案緩存到
31、數(shù)據(jù)庫(kù)中,下個(gè)用戶查詢一樣起點(diǎn)終點(diǎn)時(shí)就直接從數(shù)據(jù)庫(kù)中提取緩存信息,大大的節(jié)約了用戶的時(shí)間和系統(tǒng)資源。開發(fā)工具介紹JAVA語(yǔ)言是目前Internet上大型的WEB應(yīng)用和手機(jī)程序開發(fā)時(shí)使用得最熱門的編程語(yǔ)言,而目前國(guó)銷售的大多數(shù)手機(jī)都支持JAVA,同時(shí)J2ME和J2EE因?yàn)槎际腔贘AVA技術(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ù)。MySQ
32、L具有強(qiáng)大且簡(jiǎn)單易用的特點(diǎn),而且運(yùn)行速度極快,能夠處理企業(yè)數(shù)據(jù)庫(kù)絕大多數(shù)的應(yīng)用需求。Eclipse 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(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ì)(ApacheSoftwareFoundation)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其他一些公司與個(gè)人共同開發(fā)而成。由于有了Su
33、n的參與和支持,最新的Servlet和JSP規(guī)總是能在Tomcat中得到體現(xiàn),Tomcat5支持最新的Servlet2.4和JSP2.0規(guī)。因?yàn)門omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器。手機(jī)公交查詢系統(tǒng)的設(shè)計(jì)手機(jī)公交查詢系統(tǒng)算法的設(shè)計(jì)直達(dá)的算法設(shè)計(jì)現(xiàn)有A,B兩個(gè)公交站,通過(guò)數(shù)據(jù)庫(kù)查詢語(yǔ)句“select * from businfo” 獲得全部公交線路信息,再把每一路車的信息依次迭代出來(lái),判斷A站和B站是否同時(shí)在該線路中,如結(jié)果為true,則可以直達(dá),同時(shí)將直達(dá)方案存入一個(gè)集合中,繼續(xù)向下遍歷,如果結(jié)果
34、為false,則該車不能直達(dá),繼續(xù)向下遍歷。一次換乘的算法設(shè)計(jì)一次換乘采用基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣的公交換乘算法,現(xiàn)在A,B兩個(gè)公交站,通過(guò)數(shù)據(jù)庫(kù)查詢語(yǔ)句查找出經(jīng)過(guò)A站的所有公交車集合Collection1,再通過(guò)數(shù)據(jù)庫(kù)查詢語(yǔ)句查找出經(jīng)過(guò)B站的所有公交車集合Collection2,判斷Collection1和Collection2是否有交集,若有,則得到一次換乘方案,存放在結(jié)果集合中。判斷結(jié)束后,再按照經(jīng)過(guò)站點(diǎn)總數(shù)對(duì)換乘方案進(jìn)行排序,因?yàn)閾Q乘結(jié)果往往數(shù)以百計(jì),所以只取結(jié)果集的前N條記錄展現(xiàn)給用戶。若判斷結(jié)束后沒有找到一次換乘的方案,則執(zhí)行2次換乘算法。一次換乘算法,如圖3所示。圖3 一次換乘算
35、法示意圖圖4 二次換乘算法示意圖二次換乘的算法設(shè)計(jì)二次換乘采用上下矩陣算法,現(xiàn)有A,B兩個(gè)公交站,先通過(guò)數(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所示。手機(jī)公交查詢數(shù)據(jù)庫(kù)的設(shè)計(jì)數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì) 圖5 數(shù)據(jù)庫(kù)主要E-R圖準(zhǔn)確了解與分析用戶需求(包括
36、數(shù)據(jù)與處理)是整個(gè)設(shè)計(jì)過(guò)程的基礎(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ù)。通過(guò)對(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)生一個(gè)存放查詢結(jié)果的緩存信息。由上述可以確認(rèn)該算法所關(guān)系到的數(shù)據(jù)表。根據(jù)上述分析,可以得出公交信息模型的E-R圖,如圖5所示。公交信息相關(guān)數(shù)據(jù)庫(kù)
37、的數(shù)據(jù)字典,如表1所示。表1 公交信息相關(guān)的數(shù)據(jù)字典序 號(hào)數(shù) 據(jù) 項(xiàng) 名 稱數(shù) 據(jù) 項(xiàng) 容1.公交線路信息公交線路的信息匯總1.1線路ID公交線路的ID1.2線路NO公交線路的名稱,如502A1.3經(jīng)過(guò)站點(diǎn)公交線路經(jīng)過(guò)的站點(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附近
38、標(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)志性建筑物或者地段的名稱數(shù)據(jù)庫(kù)的物理設(shè)計(jì)(1)公交線路信息表負(fù)責(zé)存放公交線路信息,考慮到部分公交車存在上行和下行不一致的情況,表中添加了是否上下行的字段,以供算法確認(rèn)。如表2所示。表2公交線路信息表公交線路信息表(businfo)字段名注釋Busid公交車的idBusno公交車的車號(hào)stop1第1個(gè)站的站名stop2第2個(gè)站的站名stop50第50個(gè)站的站名Time公交車的發(fā)車收車時(shí)間Startend公交車的起點(diǎn)
39、和終點(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)志1near2附近標(biāo)志2near3附近標(biāo)志3near4附近標(biāo)志4near5附近標(biāo)志5near6附近標(biāo)志6near7附近標(biāo)志7near8附近標(biāo)志8near9附近標(biāo)志9near10附近標(biāo)志10Stoppic臃余字段,為以后功能預(yù)先留出(3) 站點(diǎn)附近標(biāo)志匯總表負(fù)責(zé)存放站點(diǎn)周圍標(biāo)志建筑或地名的匯總信息,本表為站點(diǎn)信息表的near集合自動(dòng)生成。如表4所示。表4站點(diǎn)附
40、近標(biāo)志匯總表站點(diǎn)附近標(biāo)志匯總表(stopinfo)字段名注釋Id標(biāo)志的idNearname標(biāo)志的名字(4) 用戶公告表負(fù)責(zé)存放本系統(tǒng)的公告信息。如表5所示。表5用戶公告表用戶公告表(notify)字段名注釋Id消息的idContent消息容Date消息發(fā)布日期(5) 查詢統(tǒng)計(jì)表負(fù)責(zé)統(tǒng)計(jì)用戶查詢和下載量。如表6所示。表6查詢統(tǒng)計(jì)表查詢統(tǒng)計(jì)表(jishuqi)字段名注釋IdidFangwen查詢量Xiazai客戶端下載量手機(jī)公交查詢系統(tǒng)功能詳細(xì)實(shí)現(xiàn)經(jīng)過(guò)上面的描述,已經(jīng)明確了手機(jī)公交查詢系統(tǒng)需要實(shí)現(xiàn)的功能以與如何去完成這些功能。下面將具體的闡述如何實(shí)現(xiàn)這些功能。服務(wù)器端的實(shí)現(xiàn)本系統(tǒng)遵照J(rèn)2EE 3、
41、4層結(jié)構(gòu),使用了MVC、AO等設(shè)計(jì)模式,組織結(jié)構(gòu)圖如圖6所示。圖6 系統(tǒng)組織結(jié)構(gòu)圖基類(Base Class)的實(shí)現(xiàn)采用AO模式,將數(shù)據(jù)庫(kù)相關(guān)方法封裝到一個(gè)基類中,由業(yè)務(wù)邏輯繼承該基類。數(shù)據(jù)庫(kù)連接(Connection)通過(guò)配置WEB服務(wù)器上的連接池,同時(shí)將數(shù)據(jù)源綁定到JNDI,程序直接通過(guò)JNDI Name獲取,實(shí)現(xiàn)了數(shù)據(jù)源的可配置性和高度可移植性。獲取JNDI Name方法如下: Javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup(dsName) ; /從數(shù)據(jù)源得到連接 conn = ds.getConnection()
42、; 因?yàn)楹竺嫘枰啻握{(diào)用關(guān)閉數(shù)據(jù)庫(kù)連接,故關(guān)閉連接封裝到一個(gè)方法中,具體實(shí)現(xiàn)如下:/關(guān)閉數(shù)據(jù)庫(kù)連接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();輔助類(Help Class)的實(shí)現(xiàn)輔助類主要為業(yè)務(wù)類提供一些輔助功能,盡量實(shí)現(xiàn)功能的分離和高度封裝。同時(shí)為了加快運(yùn)行速度,減
43、少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=insertinto zhuan
44、cheng(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ù): String sql1=selec
45、t * 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);業(yè)務(wù)邏輯類(Logic Class)的實(shí)現(xiàn)(1)查詢公交線路該方法比較簡(jiǎn)單,通過(guò)“select * f
46、rom businfo where busno=+busno”即可得到符合條件的公交車,同時(shí)返回用戶需要的數(shù)據(jù)。(2)按站查詢經(jīng)過(guò)的公交線路,步驟如下: 通過(guò)輔助類判斷用戶輸入的站名或者附近標(biāo)志名,并找到對(duì)應(yīng)的公交站名。 通過(guò)Sql語(yǔ)句找到經(jīng)過(guò)該站的公交車,存放在一個(gè)集合中并返回。(3)按起點(diǎn)終點(diǎn)查找乘坐方案這是本系統(tǒng)中最復(fù)雜的一塊,通過(guò)前面提到的基于站點(diǎn)優(yōu)先級(jí)和鄰接矩陣的公交換乘算法和上下矩陣算法來(lái)實(shí)現(xiàn),具體實(shí)現(xiàn)方法如下: 通過(guò) start=tool.getbusstop(start); end=tool.getbusstop(end);來(lái)確定起點(diǎn)和終點(diǎn)的公交站名。 檢驗(yàn)站名是否存在,存在則
47、繼續(xù)往下,不存在則返回提示信息。 若站名存在,則嘗試從數(shù)據(jù)庫(kù)中取得直達(dá)緩存信息,如數(shù)據(jù)庫(kù)中沒有直達(dá)信息,則查找換乘信息。 若數(shù)據(jù)庫(kù)中沒有緩存,則開始查找有無(wú)直達(dá)線路,找到后把結(jié)果存入數(shù)據(jù)庫(kù)。 如果沒有直達(dá)方案,則開始查找1次換乘方案,找到后按照經(jīng)過(guò)站數(shù)排序,站數(shù)少的排前面,由于換乘方案過(guò)多,故只返回前幾條。由于一次換乘結(jié)果可能成百上千,故只給用戶前幾條換乘方案進(jìn)行選擇,先將全部換乘方案按經(jīng)過(guò)車站數(shù)進(jìn)行排序,再取前4條返回給用戶。排序類為一個(gè)實(shí)現(xiàn)了Serializable和Comparable的工具類,具體排序方法在compareTo方法中實(shí)現(xiàn),通過(guò)compareTo(Object b)來(lái)定義如
48、何排序,代碼如下: 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,zhuanchengresult2,zhuanchengresult3);如果找不到一次換乘(這種情況非常渺茫),而用戶又非常執(zhí)著的要繼續(xù)找公交車,就不得不使用二次換乘,算法在3.3節(jié)已有說(shuō)
49、明,下面列出具體做法:首先查找出經(jīng)過(guò)起點(diǎn)站和終點(diǎn)站的線路,再通過(guò)線路找到該站能直達(dá)的所有站點(diǎn),以起點(diǎn)站為例: Collection stop1bus=findbusnobystop(stop1);/經(jīng)過(guò)stop1的公交車 Collection stop2bus=findbusnobystop(stop2);/經(jīng)過(guò)stop2的公交車 Iterator itr=stop1bus.iterator(); while(itr.hasNext()Iterator initr1=searchbusline(String)itr.next().iterator();while(initr1.hasNext(
50、)String stopname=(String)initr1.next(); map1.put(stopname,rubbish);這里使用HashMap的KEY作為存放站名的容器,因?yàn)閺囊粋€(gè)站臺(tái)輻射出去的公交線路經(jīng)過(guò)的站點(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 k
51、ey2= map2.keySet().iterator(); while(key1.hasNext() while(key2.hasNext() if(zhida.isEmpty() String sop1=(String)key1.next(); String sop2=(String)key2.next(); zhida=zhida(sop1,sop2); /層break if(!zhida.isEmpty() System.out.println(找到中途換乘+zhida.size(); break; /外層break if(!zhida.isEmpty() System.out.pri
52、ntln(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.print
53、ln(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()+到+ huanchengstop2+站轉(zhuǎn)+busno2+到+stop2; twohg.add(result); System.out.p
54、rintln(find one); catch(Exception e) e.printStackTrace(); return twohg;本算法采用了3個(gè)bean來(lái)保存3段路線的信息,每個(gè)bean中分別有start,end,busno3個(gè)屬性,使得算法條理更加清晰化。至此站站查詢?nèi)客瓿伞7?wù)器對(duì)外接口(Servlet)的實(shí)現(xiàn)本系統(tǒng)采用Servlet作為和手機(jī)通訊的接口,采用 的應(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_T
55、YPE); 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();有過(guò)開發(fā)經(jīng)驗(yàn)的人都知道,在做JAVA開發(fā)時(shí)傳輸中文常常遇到亂碼現(xiàn)象,這里我在CONTENT_TYPE里面編碼方式設(shè)置成GB2312,并且在
56、客戶端發(fā)送數(shù)據(jù)時(shí)也把編碼設(shè)置成GB2312,同時(shí)采用writeUTF方法,成功解決中文問(wèn)題。Web端的實(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作為中央控制器,通過(guò)參數(shù)關(guān)鍵字判斷是那種查詢,同時(shí)查詢頁(yè)面和結(jié)果頁(yè)面為同一頁(yè)面,在Action中查詢完畢后統(tǒng)一放入Collection中傳遞到結(jié)果頁(yè)面中,使得頁(yè)面重用性大大提高。首頁(yè)顯示圖7所示。圖7 首頁(yè)圖樣查詢頁(yè)面顯示如圖8所示。圖8 查詢頁(yè)面Action作為中央控制器負(fù)責(zé)執(zhí)行判斷用戶輸入
57、和查詢,以線路查詢?yōu)槔?,核心代碼如下:判斷用戶提交容:/如果用戶按公交車號(hào)查詢if (busno != null)try busnoresult = dealbus.searchbusline(busno) ; ServletRequest.setAttribute(buslineresult , busnoresult) ; dealActionForm.setBusno(null); busno=null; result=null;/返回“buslineresult”對(duì)應(yīng)的頁(yè)面,具體配置在struts-configure里面設(shè)置return (actionMapping.findForwa
58、rd(buslineresult) ; catch (Exception e) /將錯(cuò)誤信息放到request中傳遞到錯(cuò)誤頁(yè)面 ServletRequest.setAttribute(errorMsg, e.getMessage(); e.printStackTrace() ;return (actionMapping.findForward(error) ; WAP端的實(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 Mark
59、up 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ī),如圖10所示。圖10 客戶端下載頁(yè)面詳細(xì)原理以線路查詢?yōu)槔?,線路查詢提交代碼
60、如下: 其中$(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+(St
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 同行合作合同范本
- 綠化苗木栽植合同范本
- 廠區(qū)圍網(wǎng)維修合同范本
- 合同違約金合同范本-
- 業(yè)務(wù)變更合同范本
- 木門及木飾面制作安裝合同范本
- 健身公司合同范本
- 卡丁車加盟合同范本
- 吊車司機(jī)聘用合同范本
- 合同范例主播
- 課題申報(bào)書:“四新”建設(shè)與創(chuàng)新創(chuàng)業(yè)人才培養(yǎng)基本范式研究
- 春季高考高職單招數(shù)學(xué)模擬試題七套含答案
- 2024-2025學(xué)年陜西省寶雞市高三上學(xué)期高考模擬檢測(cè)(一)英語(yǔ)試題(含解析)
- 2025年企業(yè)的演講稿例文(2篇)
- 電瓶三輪車安全培訓(xùn)
- 擺攤合伙經(jīng)營(yíng)合同范例
- 山東省安全員《B證》考試題庫(kù)及答案
- 造船廠有限空間作業(yè)安全措施方案
- 人教版三年級(jí)下冊(cè)數(shù)學(xué)第一單元 位置與方向(一)(單元練習(xí))
- 大數(shù)據(jù)安全與隱私保護(hù)考核試卷
- DB31-T 255-2020 集中式空調(diào)(中央空調(diào))系統(tǒng)節(jié)能運(yùn)行和管理技術(shù)要求
評(píng)論
0/150
提交評(píng)論