【正文】
按照線路進行公交查詢,或者按起點終點進行查詢,系統(tǒng)自動按照換乘篩選算法提供出最佳換乘方案,該算法根據用戶輸入的站名,查找全部可以直達的方案,如無直達方案,則找出全部換乘方案并按照站點優(yōu)先級進行排序,返回給用戶線路最短的前 N 條的換乘信息,如果用戶使用按站查詢線路,系統(tǒng)也提供了一定的模糊查詢,比如用戶查詢“百腦匯”,系 第 4 頁 共 27 頁 統(tǒng)能自動辨認出當地站點“磨子橋”。 ( 1) WEB 和 WAP 功能模塊,如圖 1 所示。 開發(fā)工具介紹 JAVA 語言是目前 Inter 上大型的 WEB 應用和手機程序開發(fā)時使用得最熱門的編程語言,而目前國內銷售的大多數手機都支持 JAVA,同時 J2ME 和 J2EE因為都是基于 JAVA 技術,可以進行無縫連接,所以本系統(tǒng)選用 J2ME 和 J2EE做為開發(fā)語言, 同時在 WEB 端應用相關的 Struts 框架,并完成一個基于這 2 種技術結合的手機無線公交查詢系統(tǒng)。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。因為 Tomcat 技術先進、 性能穩(wěn)定,而且免費,因而深受 Java愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的 Web 應用服務器。若判斷結束后沒有找到一次換乘的方案,則執(zhí)行 2 次換乘算法。 二次換乘算法,如圖 4 所示。 通過對用戶需求的分析以及對系統(tǒng)本身應用背景的 研究,可以看出本系統(tǒng)需要有以下數據支持:公交線路信息,公交站點信息,站點附近標志信息,用戶通知信息,同時考慮到節(jié)約系統(tǒng)資源,在用戶進行完站站查詢后還會產生一個存放查詢結果的緩存信息。 表 1 公交信息相關的數據字典 序 號 數 據 項 名 稱 數 據 項 內 容 1. 公交線路信息 公交線路的信息匯總 線路 ID 公交線路的 ID 線路 NO 公交線路的 名稱,如 502A 經過站點 公交線路經過的站點 收發(fā)車時間 公交車的收發(fā)車時間 是否上下行 判斷該公交車是否有上下行 2. 公交站點信息 公交站點相關信息 公交站名 該站點的站名 附近標志 1 附近標志 1 的名字 附近標志 2 附近標志 2 的名字 附近標志 3 附近標志 3 的名字 附近標志 4 附近標志 4 的名字 附近標志 5 附近標志 5 的名字 附近標志 6 附近標志 6 的名字 附近標志 7 附近標志 7 的名字 附近標志 8 附近標志 8 的名字 附近標志 9 附近標志 9 的名字 附近標志 10 附近標志 10 的名字 3. 站點附近標志匯總 站點附近標志性建筑物或者地名的匯總 標志 ID 標志編號 標志名稱 站點附近標志性建筑物或者地段的名稱 數據庫的物理設計 ( 1)公交線路信息表 負責存放公交線路信息,考慮到部分公交車存在上行和下行不一致的情況,表中添加了是否上下行的字段,以供算法確認。 表 3 站點信息表 站點信息表 (stopinfo) 字段名 注釋 Stopname 公交站站名 near1 附近標志 1 near2 附近標志 2 near3 附近標志 3 near4 附近標志 4 near5 附近標志 5 near6 附近標志 6 near7 附近標志 7 near8 附近標志 8 near9 附近標志 9 near10 附近標志 10 Stoppic 臃余字段,為以后功能預先留出 (3) 站點附近標志匯總表 負責存放站點周圍標志建筑或地名的匯總信息,本表為站點信息表的 near集合自動生成 。 表 5 用戶公告表 用戶公告表 (notify) 字段名 注釋 Id 消息的 id Content 消息內容 Date 消息發(fā)布日期 (5) 查詢統(tǒng)計表 負責統(tǒng)計用戶查詢和下載量。 服務器端的實現(xiàn) 本系統(tǒng)遵照 J2EE 4 層結構 ,使用了 MVC、 AO 等設計模式 ,組織結構圖如圖 6 所示。 //從數據源得到連接 conn = () 。 } }catch(Exception e){ ()。使游標直接指向最后一條記錄,再用 buscount = ()。 ps1 = (sql) 。 (4,result3)。+start+end+39。 result2=(result2)。 ( 2)按站查詢經過的公交線路,步驟如下: ① 通過輔助類判斷用戶輸入的站名或者附近標志名,并找到對應的公交站名。來確定起點和終點的公交站名。 ⑤ 如果沒有直達方案,則開始查找 1 次換乘方案,找到后按照經過站數排序,站數少的排前面,由于換乘 方案過多,故只返回前幾條。 } ⑥ 換乘得到結果后放入 Collection 中返回。//經過 stop1的公交車 Collection stop2bus=findbusnobystop(stop2)。 (stopname,rubbish)。 Iterator key2= ().iterator()。 第 15頁 共 27頁 } //內層 break if(!()){ (找到中途換乘 +())。 } } 找到一條可行的線路后,再開始查找起點到轉乘點 1 的線路和轉乘點 2 到重點的線路 ,并放到一個 String 中: //第 1 站到第 2 站的車號 while(().hasNext()){ (step3)。 nonstop3=(Nonstop)().next()。 (find one)。 至此站站查詢全部完成。 Iterator itr=() 。 ()。首頁顯示圖 7 所示。 (null)。 } catch (Exception e) { //將錯誤信息放到 request中傳遞到錯誤頁面 (errorMsg, ())。它可以顯示各種文字、圖像等數據,是由 WAP 論壇( 備用戶提供交互界面而設計的,目前版本為 版。 第 19頁 共 27頁 圖 10 客戶端下載頁面 詳細原理以線路查詢?yōu)槔?,線路查詢提交代碼如 下: go href= method=post postfield name=busno value=$(busno:n)/ /go 其中 $(busno:n)為變量的表示方法,: n 的意思為變量中沒有 ESCAPE 字符,即不需要進行 ESCAPE 八進制轉碼。//調用業(yè)務處理方法 Iterator itr=() 。 mainnokCommand = new Command(確定 , , 1)。 //添加控件 (exitCommand)。 客戶端工 作原理 下面以線路查詢功能為例,詳細說明 J2ME 手機客戶端工作原理。//確定按鈕 //把控件添加到屏幕上 append(searchField)。 代碼顯示效果如圖 11 所示,其中 將用戶輸入鎖定為數字,起到了入口數據控制作用。 ()。//給用戶提示信息 //如果網絡情況是 CMNET,則直接進行連 接 if((true)){ = (HttpConnection) ( + cdbusapp/findline?busno= + no, , true)。 iStrm = ()。 } 手機 網絡設置 這里需要提到網絡設置問題,因為中國移動設置了 2 個網絡接入點 CMNET和 CMWAP,以 NOKIA 為代表的手機往往默認接入點是 CMNET,而摩托羅拉之類的手機的默認接入點常常是 CMWAP,所以本系統(tǒng)添加了網絡設置這個選項,以便讓用戶選擇自己的網絡情況,如果用戶不清楚,也可以在查詢出錯時看到提示。 圖 13 線路查詢結果界面 第 24頁 共 27頁 測試結果 本系統(tǒng)采用白盒和黑盒測試相結合的方法,非開發(fā)人員(測試用戶)隨意進行查詢,開發(fā)人員跟蹤服務器 LOG,觀察 Exception 出錯信 息,并做出判斷,經過一個月的測試,發(fā)現(xiàn)問題和解決方法總結如下: ( 1)最開始使用 EJB+Weblogic,用戶反映查詢換乘速度太慢。 解決方法:將成都市唯一兩路環(huán)城公交車 27 路和 34 路獨立出來,單獨處理。證實了該系統(tǒng)的可行性及實用價值 ,不足之處在于由于目前手機上網仍比較昂貴 ,用戶無法承擔大流量 ,故無法實現(xiàn)遠程地圖定位功能 . 結 論 本畢業(yè)設計采用 B/S 和 C/S 相結合的結構,綜合運用以前所學的專業(yè)知識,設計開發(fā)了一個功能較完善的基于手機的公 交查詢系統(tǒng),并且提出了基于站點優(yōu)先級和鄰接矩陣的公交換乘算法和上下矩陣算法。這對以后的專業(yè)發(fā)展是極其重要的。 手機網絡資源以其豐富的信息容量、良好的人機交互界面、隨時隨地的信息獲取 ,極大地滿足了人們日益增長的咨詢需求。 在論文完成過程中,本人還得到了其他老師和許多同學的熱心幫助,本人向他們表示深深的謝意! 最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝! 作者簡介 姓 名:劉應嘉 性別: 男 出生年月: 1984/05/25 民族:漢 Email: 第 27頁 共 27頁 聲 明 本論文的工作是 2021 年 2 月至 2021 年 6 月在成都信息工程學院網絡工程系完成的。 ( 2)學??梢圆捎糜坝 ⒖s印或其他復制方式保存學位論文。 除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學院。s about the only thing I wouldn39。t admit even to himself that there were some things other people could do better. If you kept beating him at anything you had to be cheating. He started a nasty argument over it one nightcould have gotten seriousbut Gerard and Caine broke it up. G ive Caine that. He took my part that time. Poor guy . . . Hell of a way to go, you know? His throat . . . Well, anyhow, there I was in Texorami, making music and women, winning at cards and jockeying around the sky. Palm trees and nightblooming wallflowers. Lots of good port smellsspices, coffee, tar, saltyou know. Gentlefolk, merchants, and peons the same straights as in most other places. Sailo。m good and I39。t wait. And the air currents were fabulous. I had a little red sail plane I used to go sky surfing in, every couple of days. It was the good life. I played drums till all hours in a basement spot up the river where the walls sweated almost as much as the customers and the smoke used to wash around the lights like streams of milk. When I was done playing I39。 ( 4)學??稍试S學位論文被查閱或借閱。除非另有說明,本文的工作是原始性工作。 參考文獻 [1] Ted Husted 著 . Struts in Action[M].美國. 亞馬遜出版社 . . [2] 耿祥義著 . JSP 實用教程 [M]. 北京. 清華大學出版社 . . [3] Erich Gamma 著.設計模式 [M].北京.機械工業(yè)出版社. . [4] 耿祥義著 . JAVA2 實用教程 [M].北京. 清華