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

正文內(nèi)容

基于j2me的公交查詢系統(tǒng)的設(shè)計與實現(xiàn)學(xué)士學(xué)位論文(編輯修改稿)

2024-07-15 14:48 本頁面
 

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