freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于j2me的公交查詢系統的設計與實現學士學位論文(編輯修改稿)

2025-08-15 19:42 本頁面
 

【文章內容簡介】 2 手機客戶端流程圖 第 5 頁 共 27 頁 ( 2) J2ME 手機客戶端的系統流程圖,如圖 2 所示。 用戶查詢流程分為查詢內容選擇、查詢信息輸入和信息接收 3 個步驟。 從該流程圖中可以看出,按起點終點查詢是整個系統最重要的一部分,也是本系統最能體現算法的一部分,經過對成都公交系統的觀察和分析,本系統提 出了一次換乘時采用基于站點優(yōu)先級和鄰接矩陣的公交換乘算法,如果第一次換乘沒有可以換乘的方案,則采用上下矩陣算法,得出二次換乘信息,同時把得到的方案緩存到數據庫中,下個用戶查詢相同起點終點時就直接從數據庫中提取緩存信息,大大的節(jié)約了用戶的時間和系統資源。 開發(fā)工具介紹 JAVA語言是目前 Inter上大型的 WEB應用和手機程序開發(fā)時使用得最熱門的編程語言,而目前國內銷售的大多數手機都支持 JAVA,同時 J2ME 和 J2EE因為都是基于 JAVA 技術,可以進行無縫連接,所以本系統選用 J2ME 和 J2EE做為開發(fā)語言 ,同時在 WEB 端應用相關的 Struts 框架,并完成一個基于這 2 種技術結合的手機無線公交查詢系統。 本系統采用的開發(fā)工具為 MySQL+Eclipse+Tomcat/Weblogic, MySQL 是一個廣受 Linux 社區(qū)人們喜愛的半商業(yè)的數據庫。 MySQL 具有 強大 且 簡單易用 的特點 ,而且運行速度極快,能夠處理企業(yè)數據庫絕大多數的應用需求。 Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是, Eclipse 附帶了一個標準 的插件集,包括 Java 開發(fā)工具( Java Development Tools, JDT)。 Tomcat服務器是一個免費的開放源代碼的 Web 應用服務器,它是 Apache 軟件基金會( Apache Software Foundation)的 Jakarta 項目中的一個核心項目,由 Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了 Sun 的參與和支持,最新的Servlet 和 JSP 規(guī)范總是能在 Tomcat 中得到體現, Tomcat5 支持最新的 Servlet 和 JSP 規(guī)范。因為 Tomcat 技術先進 、性能穩(wěn)定,而且免費,因而深受 Java愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的 Web 應用服務器。 3 手機公交查詢系統的設計 手機公交查詢系統算法的設計 直達的算法設計 現有 A,B 兩個公交站,通過數據庫查詢語句“ select * from businfo” 獲得全部公交線路信息,再把每一路車的信息依次迭代出來,判斷 A 站和 B 站是否同時在該線路中,如結果為 true,則可以直達,同時將直達方案存入一個集合中, 第 6 頁 共 27 頁 繼續(xù)向下遍歷,如果結果為 false,則該車不能直達,繼續(xù)向下遍歷。 一次換乘的算法設計 一次換乘采用基于站點優(yōu)先級和鄰接矩陣的公交換乘算法,現在 A,B 兩個公交站,通過數據庫查詢語句查找出經過 A 站的所有公交車集合 Collection1,再通過數據庫查詢語句查找出經過 B 站的所有公交車集合 Collection2,判斷Collection1 和 Collection2 是否有交集,若有,則得到一次換乘方案,存放在結果集合中。判斷結束后,再按照經過站點總數對換乘方案進行排序,因為換乘結果往往數以百計,所以只取結果集的前 N 條記錄展現給用戶。若判斷結束后沒有找到一次換乘的方案,則執(zhí)行 2 次換乘算法。 一次換乘算法, 如圖 3 所示。 圖 3 一次換乘算法示意圖 圖 4 二次換乘算法示意圖 第 7 頁 共 27 頁 二次換乘的算法設計 二次換乘采用上下矩陣算法,現有 A,B 兩個公交站,先通過數據庫查詢語句和程序業(yè)務邏輯得到 A 站能直達的所有站點,放在集合 Collection1 中,再按照 A 站的方法找出 B 站能知道的所有站點,放在集合 Collection2 中,再判斷是否有公交車可以從 Collection1 中的站點直達 Collection2 中的站點,如果,則將方案存放到結果集合中。至此為止,根據公交線路設計的理論,是肯定可以找到二次換乘的方案的,故不再考 慮 3 次換乘方案。 二次換乘算法,如圖 4 所示。 手機公交查詢數據庫的設計 數據庫的邏輯設計 圖 5 數據庫主要 ER 圖 準確了解與分析用戶需求(包括數據與處理)是整個設計過程的基礎 。而根據用戶需求設計合適的數據庫以及選擇恰當的數據庫以確保系統能高速穩(wěn)定的運行則是數據庫設計的根本目地。 由于本系統涉及到大量數據的讀取,并且對安全性要求不高,故選用占用系統資源較少并且速度相對較快的 MySQL 作為本系統的數據庫。 通過對用戶需求的分析以及對系統本身應用背景 的研究,可以看出本系統需要有以下數據支持:公交線路信息,公交站點信息,站點附近標志信息,用戶通知信息,同時考慮到節(jié)約系統資源,在用戶進行完站站查詢后還會產生一個存放查詢結果的緩存信息。由上述可以確認該算法所關系到的數據表。 第 8 頁 共 27 頁 根據上述分析,可以得出公交信息模型的 ER 圖,如圖 5 所示。 公交信息相關數據庫的數據字典,如表 1 所示。 表 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)公交線路信息表 負責存放公交線路信息,考慮到部分公交車存在上行和下行不一致的情況,表中添加了是否上下行的字段,以供算法確認。如表 2 所示。 表 2 公交線路信息表 公 交線路信息表 (businfo) 字段名 注釋 第 9 頁 共 27 頁 Busid 公交車的 id Busno 公交車的車號 stop1 第 1 個站的站名 stop2 第 2 個站的站名 …… …… …… …… stop50 第 50 個站的站名 Time 公交車的發(fā)車收車時間 Startend 公交車的起點和終點 Updown 是否有上下行 ( 2) 站點信息表 負責存放站點相關信息,并且存放一定的周圍標志建筑和地名的信息,以供算法進行模糊查詢。如表 3 所示。 表 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集合自動生 成。如表 4 所示。 第 10頁 共 27頁 表 4 站點附近標志匯總表 站點附近標志匯總表 (stopinfo) 字段名 注釋 Id 標志的 id Nearname 標志的名字 (4) 用戶公告表 負責存放本系統的公告信息。如表 5 所示。 表 5 用戶公告表 用戶公告表 (notify) 字段名 注釋 Id 消息的 id Content 消息內容 Date 消息發(fā)布日期 (5) 查詢統計表 負責統計用戶查詢和下載量。如表 6 所示。 表 6 查詢統計表 查詢統計表 (jishuqi) 字段名 注釋 Id id Fangwen 查詢量 Xiazai 客戶端下載量 4 手機公交查詢系統功能詳細實現 經過上面的描述,已經明確了手機公交查詢系統需要實現的功能以及如何去完成這些功能。下面將具體的闡述如何實現這些功能。 服務器端的實現 本系統遵照 J2EE 4 層結構 ,使用了 MVC、 AO 等設計模式 ,組織結構圖如圖 6 所示。 第 11頁 共 27頁 圖 6 系統組織結構圖 基類( Base Class)的實現 采 用 AO 模式,將數據庫相關方法封裝到一個基類中,由業(yè)務邏輯繼承該基類。 數據庫連接( Connection) 通過配置 WEB 服務器上的連接池,同時將數據源綁定到 JNDI,程序直接通過 JNDI Name 獲取,實現了數據源的可配置性和高度可移植性。獲取 JNDI Name 方法如下: ds = () (dsName) 。 //從數據源得到連接 conn = () 。 因為后面需要多次調用關閉數據庫連接,故關閉連接封裝到一個方法中,具體實現如下: //關閉數據庫連接 第 12頁 共 27頁 public void close(ResultSet rs,PreparedStatement ps,Connection con){ try{ if(rs!=null){ ()。 } if(ps!=null){ ()。 } if(con!=null){ ()。 } }catch(Exception e){ ()。 } } 輔助類( Help Class)的實現 輔助類主要為業(yè)務類提供一些輔助功能,盡量實現功能的分離和高度封裝。同時為了加快運行速度,減少 JVM 編譯負擔,采用 PreparedStatement。部分方法如下: ( 1)獲得公交總數 一般查找總數用 ”select count(*) from businfo”,但這樣因為是順序遍歷,一直要遍歷到最后一條,效率不高,此處使 用 ()。使游標直接指向最后一條記錄,再用 buscount = ()。記錄最后一條記錄的行號,從而得到了總行數,比起前一個方法更快而且節(jié)約系統資源。 ( 2)插入數據庫緩存,使得下一個用戶查詢該方案時可以直接從數據庫中獲取結果,從而大大的節(jié)約了用戶時間和系統資源。實現方法如下: String sql=insert into zhuancheng(id,result1,result2,result3,result4) VALUES(?,?,?,?,?)。 ps1 = (sql) 。 (1,start+end)。 (2,result1)。 (3,result2)。 (4,result3)。 (5,result4)。 ()。 用戶查詢時若數據庫中已有緩存數據,則調用以下方法獲取緩存的換乘數據: 第 13頁 共 27頁 String sql1=select * from zhuancheng where id=+39。+start+end+39。 ps1 = (sql1) 。 rs1 = () 。 while(()){ result1=(result1)。 result2=(result2)。 result3=(result3)。 result4=(result4)。 業(yè)務邏輯類( Logic Class)的實現 ( 1)查詢公交線路 該方法比較簡單,通過“ select * from businfo where busno=+busno”即可得到符合條件的
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1