城市公交查詢系統(tǒng)設計及_第1頁
城市公交查詢系統(tǒng)設計及_第2頁
城市公交查詢系統(tǒng)設計及_第3頁
城市公交查詢系統(tǒng)設計及_第4頁
城市公交查詢系統(tǒng)設計及_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

-z.PAGE1JIUJIANGUNIVERSITY畢業(yè)論題目城市公交查詢系統(tǒng)的設計與實現(xiàn)英文題目CityPublicTransportQuerySystemDesignandImplementation院系信息科學與技術學院專業(yè)計算機科學與技術姓名付文林班級**A081135指導教師邵君二○一二年五月-z.-z.摘要公交查詢系統(tǒng)是城市道路交通的重要組成局部,是城市開展的必然產物,是聯(lián)系國民生活、社會生產和流通領域的關鍵環(huán)節(jié)。我國城市公交查詢系統(tǒng)的開展處于一個較落后的水平,人們可以獲得信息的方式很少,隨著Internet的普及,開發(fā)一種基于JSP的公交查詢系統(tǒng)更加適應現(xiàn)代社會的要求,這樣可以很大程度的方便人們出門乘坐公交車。論文詳細介紹了該公交查詢系統(tǒng)所要實現(xiàn)的功能。首先,實現(xiàn)多種查詢功能,包括根據(jù)商廈名稱、公交車號、日常站點和任意兩個站點查詢乘車路線。其次,采用最短路徑算法查找任意兩個站點之間的最短乘車路線,這也算是一個小小的亮點。最后,提供了用戶留言的功能、管理員留言管理功能和后臺車次管理功能。用戶留言功能主要是收集用戶的留言信息,可以根據(jù)用戶提供的留言信息中提出的建議,對系統(tǒng)進展修改和完善;管理員留言管理功能主要是回復和刪除用戶的一些留言;后臺車次管理功能主要包含添加車次和站點功能、更新車次和站點功能、刪除車次和站點功能,這樣做到系統(tǒng)實時更新,為用戶查詢提供更為準確的信息。關鍵詞:最短路徑算法,公交查詢AbstractBusinquiriessystemisanimportantpartoftheurbanroadtraffic,theinevitableouteofurbandevelopmentistocontactthenationallife,thekeyaspectsofsocialproductionandcirculation.ThedevelopmentofChina'surbanpublictransportquerysysteminalessadvancedlevel,veryfewpeoplecangetinformation,withthepopularityoftheInternet,todevelopaJSP-basedpublictransportquerysystemmoreresponsivetotherequirementsofmodernsociety,soalargee*tenttheconvenienceofpeopleouttotakethebus.Thepaperdetailsthefunctionstobeachievedbythequerysystemofthebus.First,toachieveavarietyofqueryfunctions,includingquerybusroutesunderthemercialname,busnumber,dailysiteandanytwosites.Second,usingtheshortestpathalgorithmtofindtheshortestbusroutebetweenanytwosites,itwouldbeasmallbrightspot.Finally,itprovidesthefunctionalityoftheusermessagethewebmastermanagementcapabilitiesandbackgroundtripsmanagementfunctions.Guestmainfunctionistocollecttheuser'smessage,accordingtotheremendationsmadeinthemessageprovidedbytheusertomodifyandimprovethesystem;thewebmastermainfunctionistoreplytoanddeletetheuser'smessage;backgroundtripsmanagementfunctionsIncludeaddtripsandsitefeatures,updatestripsandsitefeatures,deletetripsandsitefeatures,sodothesystemsupdatedinrealtimetoprovidemoreaccurateinformationfortheuserquery.Keywords:Shortestpathalgorithm,publictransportinquiry目錄摘要IAbstractII1緒論1.1系統(tǒng)研究的背景(1)1.2系統(tǒng)研究的意義(2)1.3系統(tǒng)的開發(fā)的目的(2)1.4系統(tǒng)相關技術簡介(2)1.5論文構造(3)2需求分析2.1需求的任務(4)2.2系統(tǒng)數(shù)據(jù)流程分析(5)2.3系統(tǒng)的E-R圖(5)2.4系統(tǒng)的功能需求分析(7)2.5系統(tǒng)的環(huán)境需求分析(7)2.6本章小結(9)3系統(tǒng)設計3.1系統(tǒng)的總體設計(10)3.2系統(tǒng)的總體功能圖(10)3.3系統(tǒng)的流程圖(11)3.4系統(tǒng)的數(shù)據(jù)庫設計(13)3.5本章小結(16)4系統(tǒng)實現(xiàn)4.1系統(tǒng)功能簡介(17)4.2功能模塊實現(xiàn)(17)4.3本章小結(34)5系統(tǒng)測試5.1測試序號(35)5.2測試模塊與運行(35)5.3本章小結(42)總結與展望(43)致(44)參考文獻(45)-z.1緒論1.1系統(tǒng)研究的背景20多年來,我國經(jīng)濟得到了持續(xù)、快速、穩(wěn)定、安康地開展。城市經(jīng)濟開展,城市規(guī)模越來越大,相應的城市公交系統(tǒng)也越來越龐大。城市交通網(wǎng)絡在城市開展中占有至關重要的地位。它不僅是城市的一個重要組成局部,同時也決定了城市中居民的生活方式。長期以來,交通問題已成為困擾城市開展的重要問題。世界各國都面臨著日益嚴重的城市交通問題,如交通擁擠、車輛行駛緩慢、交通事故頻繁及其由于交通堵塞造成的大量空氣污染等,由此而帶來大量的經(jīng)濟損失和人員傷亡。許多興旺國家逐漸認識到,欲有效地解決這些問題,僅僅依靠道路建立、擴大路網(wǎng)規(guī)模是遠遠不夠的,交通問題的解決必須依賴現(xiàn)在信息技術與管理技術的有機結合[1]。許多新建小區(qū)大量出現(xiàn),公交線路也日漸增多,給人們的出行帶來了極大便利,但是由于城市規(guī)模的不斷開展,給人們選擇出行乘車線路造成了一定的困難。即使一個在城市生活多年的人,給他任意兩個地點,要他說出這兩個地點之間的乘車方案,他往往也是很難說出來的。但是如果給他一交通地圖之后,他可以很快地找出圖上的任意兩點之間的乘車方案,所找出的方案即使不是最優(yōu)的,也是一條可供參考的備選方案。但是這樣的查詢效率是相當?shù)偷?,所以需要提供一個高效的查詢系統(tǒng),才是問題更本所在。而基于JSP的公交查詢系統(tǒng),就是利用B/S構造開發(fā)出來的查詢系統(tǒng),它通過利用數(shù)據(jù)構造當中的最短路徑算法,可以查出任意兩個地點之間最短的乘車方案。它不僅可以用于公交公司管理系統(tǒng)中,也可以單獨作為公交管理系統(tǒng)的一個模塊存在,并可以制作成公交信息系統(tǒng)查詢網(wǎng),放置于城市的主要場所。這樣不僅可以表達出一個城市的智能公交系統(tǒng)的水平,更顯示出城市的數(shù)字化,信息化水平。工程研究的基于JSP的公交查詢系統(tǒng),讓人們通過互聯(lián)網(wǎng)很快的查出該城市任意兩站點之間的最短乘車路線。1.2系統(tǒng)研究的意義目前,我國眾多大城市普遍存在交通擁擠,延誤人們平時上班時間。甚至影響了城市旅游業(yè)經(jīng)濟的可持續(xù)開展。所以為了切實的改善公交車擁擠狀況,適當增加發(fā)車次數(shù)以縮短乘客等車時間,但是能夠準確為人們提供最短的乘車線路才是得到解決的最好方法,這樣大大的縮短了人們的乘車時間。近十幾年來,隨著地理信息系統(tǒng)技術的快速開展,地理信息系統(tǒng)的各種應用在城市規(guī)劃、管理方面越來越起到不可低估的作用。在眾多有關城市地理信息的應用中,城市交通地理信息系統(tǒng)的開展越來越受到地理學者、城市管理者的矚目。交通數(shù)據(jù)的種類繁多〔包括屬性數(shù)據(jù)、空間數(shù)據(jù)、影像數(shù)據(jù)等〕,數(shù)據(jù)量大,操作復雜,人工管理難度大[2]。工程研究的基于JSP的公交查詢系統(tǒng),讓人們通過互聯(lián)網(wǎng)很快的查出該城市任意兩站點之間的最短乘車路線。系統(tǒng)是從城市交通現(xiàn)狀出發(fā),根據(jù)人們的出行規(guī)律,設計了一個完整的基于JSP體系的公交車查詢系統(tǒng)。該系統(tǒng)可以根據(jù)商廈名稱,公交車號,日常站點和站點之間為查詢條件分別進展查詢,解決了市民出行乘坐公交車時經(jīng)常遇到的困難。1.3系統(tǒng)的開發(fā)的目的本系統(tǒng)主要是為了人們出行的方便以及節(jié)約人們乘坐公交車所用的時間,現(xiàn)在網(wǎng)上的公交車查詢系統(tǒng)都有漂亮的網(wǎng)頁和完善的功能,所以本系統(tǒng)運用HTML、JSP等技術來編輯網(wǎng)頁,并運用JDBC技術把數(shù)據(jù)庫和動態(tài)網(wǎng)頁相關聯(lián)。本系統(tǒng)自己設計數(shù)據(jù)庫,使得公交車信息、站點信息、商廈信息等能夠及時的添加、刪除以及更新,人們還可以留言發(fā)表一些合理的建議使得本系統(tǒng)更加的完美。1.4系統(tǒng)相關技術簡介〔1〕JSP的概念JSP程序是一個效勞端頁面腳本程序,可以在這個腳本中直接編寫客戶端瀏覽器需要顯示的HTML文檔容,當然也可以依照JSP規(guī)將Java程序代碼嵌入腳本。JSP腳本規(guī)提供了假設干部對象來簡化JSP程序和瀏覽器之間的輸入輸出處理。由于JSP程序是從HTML頁面添加Java動態(tài)處理代碼而來,因此,JSP程序又稱為動態(tài)JSP頁面[3]。〔2〕JavaBean的概念JavaBean是一種JAVA語言寫成的可重用組件,用戶可以使用JavaBean將功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以用Java代碼創(chuàng)造的對象進展打包,并且其他的開發(fā)者可以通過部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。這個對J2EE業(yè)務邏輯層處理具有相當重要的局部[4]?!?〕JavaServletJavaServlet使用的是一種請求/響應機制,也就是說通過特定的Java程序設計技術,由該Servlet動態(tài)產生的響應向*一特定的請求做出響應。Servlet所能應用的請求/響應場合很多,但常用的還是在Web應用程序中用于產生超文本傳輸協(xié)議響應〔HTTP〕。據(jù)此,Servlet可能取代其他類型的HTTP請求/響應機制,譬如通用網(wǎng)關接口〔CGI〕腳本[5]?!?〕Session對象Session對象是類java*.servlet.Httpsession的一個對象,是用來保存每個用戶信息〔以會話的形式直接保存在WEB效勞器端〕,以便跟蹤每個用戶的操作狀態(tài)[6]。1.5論文構造論文分為以下構造:第一章:緒論,介紹系統(tǒng)研究的背景及意義,系統(tǒng)研究的工作。第二章:需求分析,對系統(tǒng)的功能需求以及數(shù)據(jù)需求進展分析。第三章:系統(tǒng)設計,對系統(tǒng)的數(shù)據(jù)庫和功能進展設計與實現(xiàn)。第四章:系統(tǒng)實現(xiàn),對系統(tǒng)的一些功能進展實現(xiàn),保證系統(tǒng)沒有出現(xiàn)錯誤,對有錯誤的地方進展修改及完善。第五章:系統(tǒng)測試,對系統(tǒng)進展測試,保證系統(tǒng)完整運行。2需求分析需求分析是介于系統(tǒng)分析和軟件設計階段之間的重要橋梁[7]。一方面,需求分析以系統(tǒng)規(guī)格說明和工程規(guī)劃為分析活動的根本出發(fā)點,并從軟件角度對它們進展檢查與調整;另一方面,需求規(guī)格說明又是軟件設計、實現(xiàn)、測試的主要根底。良好的分析活動有助于防止或盡早剔除早期錯誤,從而提高軟件生產率,降低開發(fā)本錢,改良軟件質量。2.1需求的任務軟件需求分析的任務是:深入描述軟件的功能和性能,確定軟件設計的約束和軟件同其他系統(tǒng)元素的接口細節(jié),定義軟件的其他有效性需求,借助于當前系統(tǒng)的邏輯模型導出目標系統(tǒng)邏輯模型,解決目標系統(tǒng)“做什么〞的問題。需求提出主要集中于描述系統(tǒng)目的。需求提出和分析僅僅集中在使用者對系統(tǒng)的觀點上。用戶、開發(fā)人員和用戶確定一個問題領域,并定義一個描述該問題的系統(tǒng)。這樣的定義稱作系統(tǒng)規(guī)格說明,并且它在用戶和開發(fā)人員之間充當合同。在問題分析階段分析人員的主要任務是:對用戶的需求進展鑒別、綜合和建模,去除用戶需求的模糊性、歧義性和不一致性,分析系統(tǒng)的數(shù)據(jù)要求,為原始問題及目標軟件建立邏輯模型[8]。分析人員要將對原始問題的理解與軟件開發(fā)經(jīng)歷結合起來,以便發(fā)現(xiàn)哪些要由于用戶的片面性或短期行為所導致的不合理要求,哪些是用戶尚未提出但具有真正價值的潛在需求[8]。在需求評審階段,分析人員要在用戶和軟件設計人員的配合下對自己生成的需求規(guī)格說明和初步的用戶手冊進展復核,以確保軟件需求的完整[9]、準確、清晰、具體,并使用戶和軟件設計人員對需求規(guī)格說明和初步的用戶手冊的理解達成一致。一旦發(fā)現(xiàn)遺漏或模糊點,必須盡快更正,再行檢查。公交查詢系統(tǒng)需要滿足幾個方面的需求,一是用戶公交查詢的需求;二是用戶留言的需求;三是管理員車次及站點信息管理的需求;四是管理員留言管理的需求。在界面需求上要做到美觀、操作方便[10],給用戶和管理員一個舒適簡便的公交查詢系統(tǒng),管理員能夠及時的添加、刪除以及更新車次和站點的信息,使用戶能夠及時的了解公交車的信息,不會耽誤用戶乘坐相關的公交車。2.2系統(tǒng)數(shù)據(jù)流程分析數(shù)據(jù)流圖是一種圖形化技術,它描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)過的變換[11]。在數(shù)據(jù)流圖中沒有任何的物理部件,它只是描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程。因為數(shù)據(jù)流圖是邏輯系統(tǒng)的圖形表示,即使不是專業(yè)的計算機技術人員也容易理解,所以是極好的通信工具[12]。此外設計數(shù)據(jù)流圖紙需要考慮系統(tǒng)必須完成的根本邏輯功能,完全不需要考慮如何具體地實現(xiàn)這些功能[13]。公交查詢系統(tǒng)數(shù)據(jù)流圖如圖2-1所示。留言信息庫留言信息庫線路信息庫站點信息庫車次信息庫管理員登錄車次管理站點管理線路管理公交車查詢留言用戶圖2-1系統(tǒng)數(shù)據(jù)流圖2.3系統(tǒng)的E-R圖通過對公交車查詢系統(tǒng)的數(shù)據(jù)分析,得出系統(tǒng)的E-R圖,然后系統(tǒng)的E-R圖可以分為管理員實體及屬性、留言板實體及屬性和車次與站點之間關系,分別如圖2-2,圖2-3,圖2-4所示。管理員管理員名密碼管理員管理員名密碼圖2-2管理員實體及屬性留言板留言板留言人留言時間留言標題留言內容留言ID管理員留言回復圖2-3留言板實體及屬性nnm車次信息站點信息經(jīng)過車子檔次起點站終點站票價站點號車號票價檔次站點次序站點號車號站點名稱圖2-4車次與站點之間關系2.4系統(tǒng)的功能需求分析系統(tǒng)具有以下根本功能:〔1〕公交查詢:用戶可以通過4種查詢方式查詢公交車,分別是商廈查詢、線路查詢、站點查詢以及站點之間查詢。〔2〕用戶留言:用戶可以對系統(tǒng)不完善的地方以及對系統(tǒng)管理員或是工作人員提出合理的建議在留言上,使系統(tǒng)更加完善?!?〕管理員對車次及站點管理:管理員要及時添加、刪除以及更新公交車車次和各個站點的根本信息,使用戶可以更好的使用系統(tǒng)?!?〕管理員留言管理:管理員需要及時的查看用戶所留的一些合理的留言并且給予回復,對一些不合理的留言可以進展刪除。2.5系統(tǒng)的環(huán)境需求分析2.5.1開發(fā)平臺系統(tǒng)開發(fā)選用的平臺是Struts2+JavaServerPage(簡稱JSP)和Mysql數(shù)據(jù)庫,它適應于Windows操作系統(tǒng)并能很好的與其應用程序結合,而且Mysql數(shù)據(jù)庫也易操作。具體如下:〔1〕采用了Internet架構,Bowser/Server模式?!?〕Web效勞器采用Tomcat5.5效勞器,數(shù)據(jù)庫管理系統(tǒng)為Mysql?!?〕采用了jdk1.6的環(huán)境2.5.2系統(tǒng)開發(fā)工具本系統(tǒng)是基于Struts2+JSP+Mysql數(shù)據(jù)庫技術實現(xiàn)的,現(xiàn)對JSP技術和Mysql數(shù)據(jù)庫以及Struts2框架作簡要的介紹。2.5.3開發(fā)語言JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。JavaBean是JSP的技術根底,而且大型的Web應用程序的開發(fā)需要JavaBean和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且平安可靠,主要面向因特網(wǎng)等特點。JSP的技術的優(yōu)勢:〔1〕一次編寫,到處運行。在這一點上Java比PHP更出色,除了系統(tǒng)之外,代碼不需要做任何更改?!?〕系統(tǒng)的多平臺支持。根本上可以在所有平臺上的任意環(huán)境中開發(fā),在任意環(huán)境中進展系統(tǒng)部署,在任意環(huán)境中擴展。相比ASP/PHP的局限性是顯而易見的?!?〕JSP技術是用Java語言作為腳本語言的。Java語言是成熟的、強大的、易擴大的編程語言?!?〕高效性與平安性。JSP在執(zhí)行前先被編譯成字節(jié)碼,字節(jié)碼由Java虛擬機解釋執(zhí)行,比源碼解釋效率高?!?〕可維護性。由于JSP技術是一種開放的、跨平臺的構造,因此Web效勞器、平臺及其他組件能很容易升級或切換,且不會影響JSP根本的應用程序?!?〕多樣化和功能強大的開發(fā)工具支持。Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費得到,并且其中許多已經(jīng)可以順利的運行于多種平臺之下。2.5.4數(shù)據(jù)庫Mysql是Oracle公司的一款數(shù)據(jù)庫產品,因為其小巧亦操作,卻十分穩(wěn)定,成為一些中小型工程和我們學習中最常用的數(shù)據(jù)庫,在這里便使用了這款成熟穩(wěn)定的數(shù)據(jù)庫。2.5.5框架在Struts2出現(xiàn)之前,Struts1就是一個非常有名的框架,它實現(xiàn)了MVC模式。之后出現(xiàn)的WebWork框架也是一個很優(yōu)秀的框架,隨著時間的開展,Struts1漸漸淘汰,有人用WebWork的核心并包裝上Struts1,由此產生了更先進的技術—Struts2。Struts2是經(jīng)典的MVC構造框架,將顯示,控制,邏輯很好的別離,可以使我們開發(fā)起來更具延展性。2.6本章小結本章首先介紹了需求分析的作用,其次介紹了數(shù)據(jù)流程分析,把系統(tǒng)的數(shù)據(jù)流圖畫出來,接著介紹系統(tǒng)的功能需求分析,講述系統(tǒng)的一些功能,最后介紹系統(tǒng)的環(huán)境需求分析,本章主要就是為了讓大家理解系統(tǒng)的一些需求,結合實際來合理的開發(fā)使用公交查詢系統(tǒng)。3系統(tǒng)設計3.1系統(tǒng)的總體設計公交查詢系統(tǒng)的功能模塊可以分為以下模塊:〔1〕管理員登陸功能模塊:管理員登陸要輸入正確的管理員名、密碼以及賬號,否則登陸失敗?!?〕站點和車次查詢模塊:用戶可以直接以4種查詢方式查詢公交車的站點和車次信息,分別是商廈查詢、線路查詢、站點查詢以及站點之間查詢,其中站點之間查詢還可以告訴你2個站點之間的最短路勁以及相應的換乘車次和站點?!?〕用戶留言模塊:用戶可以對系統(tǒng)的進展留言,對系統(tǒng)的一些缺乏之處提出合理建議給管理員,是系統(tǒng)更加的完善?!?〕管理員操作模塊:管理可以對公交車站點和車次信息進展添加、刪除以及更新,使廣闊用戶能夠及時的查看最新的公交車站點和車次信息,不耽誤廣闊用戶乘坐公交車?!?〕管理員管理留言模塊:管理員可以查看用戶的留言并對用戶的留言進展回復以及刪除,對用戶對本系統(tǒng)提出的一些合理的意見給予感。3.2系統(tǒng)的總體功能圖城市公交查詢系統(tǒng)從功能上可以分為用戶查詢公交車信息、用戶留言、管理員對公交車信息管理操作、管理員留言管理5局部。具體功能構造圖如圖3-1所示。3.3系統(tǒng)的流程圖城市公交查詢系統(tǒng)中用戶可以用4種查詢方式查詢公交車信息,分別是商廈查詢、線路查詢、站點查詢、站點之間查詢;用戶可以留言以及查看留言;管理員公交車信息操作,對公交車信息進展添加、刪除以及更新;管理員留言管理,對用戶的留言進展回復或是刪除,每一個都有不一樣的流程,對應有各自的流程圖,具體的系統(tǒng)流程圖如下。〔1〕用戶查詢公交車信息工作流程如圖3-2所示。城市公交查詢城市公交查詢用戶公交車查詢用戶留言公交車信息管理留言管理商廈查詢線路查詢站點查詢站點之間查詢留言查看留言站點和車次添加站點和車次刪除站點和車次更新刪除留言回復留言圖3-1系統(tǒng)功能構造圖首頁首頁商廈查詢線路查詢站點查詢站點之間查詢圖3-2用戶查詢流程圖〔2〕用戶留言以及查看留言工作流程如圖3-3所示。是是否首頁留言查看留言是否填寫留言主題和內容留言成功圖3-3用戶留言流程圖〔3〕管理員公交車信息操作工作流程如圖3-4所示。否是否是開場管理員登陸驗證管理員名和密碼是否正確站點與車次添加站點與車次刪除站點與車次更新退出〔4〕管理員留言管理工作流程如圖3-5所示。否否是開場管理員登陸驗證管理員名和密碼是否正確刪除留言回復留言退出圖3-5管理員留言管理流程圖3.4系統(tǒng)的數(shù)據(jù)庫設計本系統(tǒng)數(shù)據(jù)庫采用Mysql5數(shù)據(jù)庫,系統(tǒng)數(shù)據(jù)庫名稱為bus,共包含7表?!?〕管理員表administrator如表3-2所示。表3-2管理員信息字段名數(shù)據(jù)類型長度允許空adminiIDVarchar50NotnulladminipasswordVarchar50NotnulladminiID:管理員名adminipassword:密碼〔2〕車次信息表BusInfo如表3-3所示。表3-3車次信息表字段名數(shù)據(jù)類型長度允許空BusNumInt4NotnullBeginStVarchar50NotnullEndStVarchar50NotnullTicketNoteVarchar50nullBusLevelVarchar50nullNoteVarchar50nullBusNum:車號BeginSt:起點站EndSt:終點站TicketNote:票價BusLevel:車子檔次Note:票檔次〔3〕站點信息表StInfo如表3-4所示。表3-4站點信息表字段名數(shù)據(jù)類型長度允許空StIDInt4NotnullStNamevarchar50NotnullStID:站點號StName:站點名稱〔4〕車次與站點關系表BusSt如表3-5所示。表3-5車次與站點關系表字段名數(shù)據(jù)類型長度允許空BusNumInt4NotnullStIDInt4NotnullStOrderInt4NotnullBusNum:車號StID:站點號StOrder:站點次序〔5〕商廈信息表publicplace如表3-6所示。表3-6商廈信息表字段名數(shù)據(jù)類型長度允許空PlacesidInt4NotnullPlacesnamevarchar50nullPlacesid:商廈號Placesname:商夏名稱〔6〕站點與商廈關系表stplace如表3-7所示。表3-7站點與商廈關系表字段名數(shù)據(jù)類型長度允許空StIdInt4NotnullPlaceIdInt4NotnullStId:站點號PlaceId:商廈號〔7〕留言信息表message如表3-8所示。表3-8留言信息表字段名數(shù)據(jù)類型長度允許空UsernameVarchar50NotnullMessagedateDatetime8NotnullTopicVarchar50NotnullMessagete*tVarchar200NotnullIdInt4NotnullReplyVarchar200nullUsername:用戶名Messagedate:留言日期Topic:留言主題Messagete*t:留言容Id:留言序號Reply:回復3.5本章小結本章節(jié)主要就是介紹系統(tǒng)的功能還有數(shù)據(jù)庫的設計,系統(tǒng)的功能不是一個人可以完善的,需要很多人的意見結合起來才可以做成一個完美的系統(tǒng),所以加了留言系統(tǒng)讓廣闊用戶對系統(tǒng)提出意見來進一步的完善系統(tǒng);數(shù)據(jù)庫是一個工程的核心,所有的數(shù)據(jù)都要存儲在數(shù)據(jù)庫中,將這些數(shù)據(jù)設計好不是很好做的事情,需要根據(jù)業(yè)務來設計,數(shù)據(jù)庫的設計讓我對數(shù)據(jù)庫有了進一步的理解。4系統(tǒng)實現(xiàn)系統(tǒng)實現(xiàn)是軟件工程開發(fā)過程中的主要局部,在系統(tǒng)實現(xiàn)中要有簡潔、美觀、可讀性好、整體統(tǒng)一等準則。4.1系統(tǒng)功能簡介城市公交查詢系統(tǒng)從功能上可以分為管理員登陸模塊、站點和車次查詢模塊、管理員操作模塊、用戶留言模塊、管理員管理留言模塊5局部。管理員登陸管理:對是否輸入正確的管理員名以及密碼進展驗證,正確的話進入管理員操作界面,失敗的話繼續(xù)管理員登陸界面。站點和車次查詢:用戶可以使用商廈查詢、線路查詢、站點查詢以及站點之間查詢來了解公交車的站點和車次信息,方便用戶乘坐合理的公交車。管理員操作管理:管理員必須及時的添加、刪除以及更新公交車的站點和車次信息,是廣闊用戶能夠及時的知道最新的公交車的信息,不會誤導用戶乘坐公交車。用戶留言管理:用戶可以再留言板上進展留言,對本系統(tǒng)提出一些合理的建議。管理員留言管理:管理員查看用戶留言,對一些留言進展回復,對一些無用的留言進展刪除或者不回復。4.2功能模塊實現(xiàn)管理員登錄實現(xiàn)管理員登錄主要是為了讓系統(tǒng)更好的管理,讓一個管理員可以及時的添加、刪除以及更新車次及站點信息,是廣闊用戶能夠及時準確的了解最新的公交車及站點信息,不會使廣闊用戶乘坐錯誤的公交車耽誤用戶的時間,使用戶能夠更舒服的享受本系統(tǒng)帶給用戶的方便。管理員登陸后輸入正確的管理員名、密碼以及驗證碼后就可以進入到管理員操作界面,在操作界面中可以對一些用戶留言進展回復以及刪除。管理員登錄界面如圖4-1所示。圖4-1管理員登錄界面相應核心代碼:privatevoidlogin(HttpServletRequestrequest,HttpServletResponseresponse){Connectionconn=null;Statementstmt=null;ResultSetrs=null;HttpSessionsession=request.getSession(true);//如果用戶session為空重新分配一個新的session給用戶DBConnection2db=DBConnection2.getInstance();Stringadminname=request.getParameter("adminname")==null?"":request.getParameter("adminname");adminname=e*Change(adminname);//字符串亂碼處理Stringpassword=request.getParameter("password")==null?"":request.getParameter("password");password=e*Change(password);//字符串亂碼處理Stringsql="";Stringrand=(String)session.getAttribute("rand");Stringinput=request.getParameter("vaild");intn=0;try{conn=db.getConnection();stmt=conn.createStatement();sql="select*fromadministratorwhereadminiID='"+adminname+"'andadminipassword='"+password+"'";rs=stmt.e*ecuteQuery(sql);if(rs.ne*t()&&rs!=null){n++;}if(n>0&&input.equals(rand)){session.setAttribute("adminname",adminname);session.setAttribute("adminpassword",password);session.removeAttribute("rand");response.sendRedirect("loginSuccess.jsp");}else{response.sendRedirect("error.jsp");}}catch(E*ceptione){e.printStackTrace();}finally{try{if(stmt!=null){stmt.close();}db.freeConnection(conn);}catch(E*ceptione{e.printStackTrace();}}}站點和車次查詢〔1〕商廈查詢:商廈查詢是為用戶提供按具體的名稱(如:派拉蒙)查詢,并顯示到這個地點所有公交車車次的相關信息(如:車號,站點名稱,票價,車子的檔次和這個商廈的名稱等信息)。商廈信息查詢結果如圖4-2所示。圖4-2商廈查詢相應核心代碼:publicArrayListqueryPlace(StringplaceName,Stringpage){ArrayListarrayList=newArrayList();DBConnection2db=DBConnection2.getInstance();Connectionconn=null;Statementstmt=null;ResultSetrs=null;Stringsql="";try{if(placeName!=null){if(!placeName.equals("")){placeName=e*Change(placeName);//字符串轉碼intm=(Integer.parseInt(page)-1)*pageSize;inti=0;sql="selectbusinfo.busnum,stinfo.stname,ticketnote,buslevel,notefromstinfo,businfo,busstwherebusst.stid=stinfo.stidandbusinfo.busnum=busst.busnumandbusst.stidin(selectstidfromstplacewhereplacesidin(selectplacesidfrompublicplacewhereplacesname='"+placeName+"'))";conn=db.getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.e*ecuteQuery(sql);if(rs.first()){rs.absolute(m+1);//將游標放到指定位置再加1〔也是開場的第一條記錄的序號〕while(i<pageSize&&rs!=null&&!rs.isAfterLast()){HashMaphashMap=newHashMap();hashMap.put("busnum",""+rs.getInt("busnum"));//將從數(shù)據(jù)庫中查出的值放入hashMap.put("stname",rs.getString("stname"));hashMap.put("ticketnote",rs.getString("ticketnote"));hashMap.put("buslevel",rs.getString("buslevel"));hashMap.put("note",rs.getString("note"));arrayList.add(hashMap);//將所有的hashmap放入arrayListrs.ne*t();i++;}}}}}catch(E*ceptione){e.printStackTrace();}finally{try{if(stmt!=null){stmt.close();}db.freeConnection(conn);}catch(E*ceptione){e.printStackTrace();}}returnarrayList;}〔2〕線路查詢:線路查詢是為用戶提供一個按公交車的車號(如:1路)查詢,并顯示該公交車的相關信息〔如:公交車的起點站、終點站、票價和車子的檔次等信息〕。線路查詢結果如圖4-3所示。圖4-3車次信息查詢相應核心代碼:publicArrayListstatisticsByBusInfo(StringbusNum,intpage){ArrayListarrayList=newArrayList();DBConnection2db=DBConnection2.getInstance();Connectionconn=null;Statementstmt=null;ResultSetrs=null;Stringsql="";try{intm=(1)*pageSize;//計算游標的位置inti=0;busNum=e*Change(busNum);//字符串轉碼if(busNum.equals("")||busNum==null){sql="select*frombusInfo";}else{busNum=e*Change(busNum);//字符串轉碼sql="select*frombusInfowherebusnum='"+Integer.parseInt(busNum)+"'";}conn=db.getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.e*ecuteQuery(sql);if(rs.first()){rs.absolute(m+1);//將游標放到指定位置再加1〔也是開場的第一條記錄的序號〕while(i<pageSize&&!rs.isAfterLast()&&rs!=null){HashMaphashMap=newHashMap();hashMap.put("BusNum",""+rs.getInt("busnum"));將從數(shù)據(jù)庫中查出的值放入hashmap中hashMap.put("BeginSt",rs.getString("beginst"));hashMap.put("EndSt",rs.getString("endst"));hashMap.put("TicketNote",rs.getString("ticketnote"));hashMap.put("BusLevel",rs.getString("buslevel"));hashMap.put("Note",rs.getString("note"));arrayList.add(hashMap);//將所有的hashmap放入arrayListrs.ne*t();i++;}}}catch(E*ceptione){e.printStackTrace();}finally{try{if(stmt!=null){stmt.close();}db.freeConnection(conn);}catch(E*ceptione){e.printStackTrace();}}returnarrayList;}〔3〕站點查詢:站點查詢是為用戶提供按公交車*一個站點查詢到該站點需要乘坐公交車的車號。站點信息查詢結果如圖4-4所示。圖4-4站點信息查詢相應核心代碼:publicArrayListqueryStInfo(Stringstname){ArrayListarrayList=newArrayList();DBConnection2db=DBConnection2.getInstance();Connectionconn=null;Statementstmt=null;ResultSetrs=null;Stringsql="";try{stname=e*Change(stname);//字符串轉碼conn=db.getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);sql="selectbusInfo.busnum,busInfo.BeginSt,busInfo.EndSt,busInfo.TicketNote,stInfo.stnamefrombusInfo,stInfo,busstwherestnamelike'%"+stname+"%'andstInfo.stid=busst.stidandbusst.busnum=busInfo.busnum";rs=stmt.e*ecuteQuery(sql);while(rs.ne*t()&&rs!=null){HashMaphashMap=newHashMap();hashMap.put("BusNum",""+rs.getInt("busnum"));//將從數(shù)據(jù)庫中查出的值放入hashmap中hashMap.put("BeginSt",rs.getString("BeginSt"));hashMap.put("EndSt",rs.getString("EndSt"));hashMap.put("TicketNote",rs.getString("TicketNote"));hashMap.put("StName",rs.getString("stname"));arrayList.add(hashMap);//將所有的hashmap放入arrayList}}catch(E*ceptione){e.printStackTrace();}finally{try{if(stmt!=null){stmt.close();}db.freeConnection(conn);}catch(E*ceptione){e.printStackTrace();}}returnarrayList;}〔4〕站點之間查詢:輸入任意2個站點就可以查詢這2個站點之間的最短乘車線路以及相應的所要換乘的車號。任意兩個站點間查詢結果頁面如圖4-5所示。圖4-5任意兩個站點間查詢結果〔5〕廣度優(yōu)先遍歷概念給定一個起點,廣度優(yōu)先遍歷首先訪問起點與起點的鄰接點,然后分別考察每一個鄰接點并訪問它們的鄰接點。遍歷使用一個隊列存放頂點的未被訪問鄰接點,每當從隊列中刪除一個頂點,就將這個頂點的未訪問鄰接點插入隊列,遍歷的順序即為頂點插入這個隊列的順序。最短路徑算法原理圖如圖4-6所示。圖4-6最短路徑算法原理圖最短路徑算法原理描述:①將頂點A入隊,同時將頂點A設置為已經(jīng)被訪問。②判斷隊列是否為空,如果不是則頂點A出隊,同時判斷頂點A的鄰接頂點B、E、D是否已經(jīng)被訪問,如果沒有,則將頂點B、E、D入隊,并分別設置為已經(jīng)被訪問,接著將入隊頂點B、E、D分別指向他們的前置頂點A,并分別判斷頂點B、E、D是否為目的頂點I,不是則進入下一步3。③判斷隊列是否為空,如果不是則頂點B出隊,同時判斷頂點B的鄰接頂點E是否已經(jīng)被訪問。判斷可知頂點B的鄰接頂點E已經(jīng)被訪問,則頂點E不用指向他的前置頂點B。接著進入下一步4。④判斷隊列是否為空,如果不是則頂點E出隊,同時判斷頂點E的鄰接頂點F、H是否已經(jīng)被訪問,如果沒有,則將頂點F、H入隊,并分別設置為已經(jīng)被訪問,接著將入隊頂點F、H分別指向他們的前置頂點E,并分別判斷頂點F、H是否為目的頂點I,不是則進入下一步5。⑤判斷隊列是否為空,如果不是則頂點D出隊,同時判斷頂點D的鄰接頂點G是否已經(jīng)被訪問,如果沒有,則將頂點G入隊,并分別設置為已經(jīng)被訪問,接著將入隊頂點G分別指向他們的前置頂點D,并分別判斷頂點G是否為目的頂點I,不是則進入下一步6。⑥判斷隊列是否為空,同時判斷入隊的頂點F是否是目的頂點I。如果不是則頂點F出隊,同時判斷頂點F的鄰接頂點C是否已經(jīng)被訪問,如果沒有,則將頂點C入隊,并分別設置為已經(jīng)被訪問,接著將入隊頂點C分別指向他們的前置頂點F。并分別判斷頂點C是否為目的頂點I,不是則進入下一步7。⑦判斷隊列是否為空,如果不是則頂點H出隊,同時判斷頂點H的鄰接頂點I是否已經(jīng)被訪問,如果沒有,則將頂點I入隊,并分別設置為已經(jīng)被訪問,接著將入隊頂點I指向他們的前置頂點H,并分別判斷頂點I是否為目的頂點I,可以判斷頂點I就是目的頂點,將頂點I入堆棧,進入下一步8。⑧判斷I的前置頂點是否為空,如果不是則將前置頂點入堆棧,循環(huán)判斷前置頂點的前置頂點,如果不為空,則入堆棧,直到循環(huán)判斷到空為止。這樣堆棧中的所有頂點出堆棧,出堆棧的頂點A->E->H->I就是查詢出來最短路徑。最短路徑算法相應的代碼〔利用廣度優(yōu)先遍歷算法查找最短路徑〕:publicStackgetShortestPath2(Objectbegin,Objectend){this.resetVertices();booleandone=false;ArrayListverte*Queue=newArrayList();Verte*beginVerte*=(Verte*)vertices.get(begin);Verte*endVerte*=(Verte*)vertices.get(end);beginVerte*.visit();verte*Queue.add(beginVerte*);while(!done&&!verte*Queue.isEmpty()){Verte*frontVerte*=(Verte*)verte*Queue.get(0);verte*Queue.remove(0);Ieratoredges=frontVerte*.getNeighborIterator();while(!done&&edges.hasNe*t()){edgeedgeToNe*tNeighbor=(Edge)edges.ne*t();verte*ne*tNeighbor=edgeToNe*tNeighbor.getEndVerte*();if(!ne*tNeighbor.isVisited()){ne*tNeighbor.visit();ne*tNeighbor.setPredecessor(frontVerte*);verte*Queue.add(ne*tNeighbor);}if(ne*tNeighbor.equals(endVerte*)){done=true;}}}Stackpath=newStack();path.push(endVerte*);while(endVerte*.getPredecessor()!=null){endVerte*=endVerte*.getPredecessor();path.push(endVerte*);}returnpath;}4.2.3管理員操作實現(xiàn)〔1〕添加車次:添加車次功能主要是增加一個車次詳細信息,其中包括:車次號,起點站,終點站,票價,汽車檔次,票價類型。需要注意,在添加起點站和終點站的時候,數(shù)據(jù)都是從站點庫獲得然后添加到起點站和終點站中去。因為添加車次它只涉及到車次的詳細信息,如果要想添加站點,則需要在添加站點功能頁面中進展相應的操作。添加車次頁面如圖4-7所示。圖4-7添加車次〔2〕添加站點:在添加站點的文本框中輸入要添加的站點名稱。提供了一個站點重名的查找功能,該功能可以對你輸入添加的站點名稱進展名稱查重,通過查詢站點編碼表,顯示這個站點是否已經(jīng)存在。如果不存在,則將此新增站點名稱插入到站點編碼表中,如果存在,則不需將此站點名稱插入到站點編碼表中。通過下拉選擇框選擇新增站點所對應的車次號。如果查詢站點總數(shù)在文本框中顯示為“0〞,則需要將起點站和終點站同新增的站點一起插入車次和站點的關系表中。如果查詢站點總數(shù)在文本框中顯示不為“0〞,則只需將新增的站點插入車次和站點關系表中即可。添加站點頁面如圖4-8所示。圖4-8添加站點〔3〕刪除車次:分頁列出車次信息表中所有的車次信息,選擇操作中的刪除,就可以將對應的車次信息刪除,但是在刪除車次信息的時候需要先刪除車次與站點關系表中所有對應該車次的信息。如果不先刪除就會出現(xiàn)違反數(shù)據(jù)庫完整性。刪除車次頁面如圖4-9所示。圖4-9刪除車次〔4〕刪除站點:通過車次的下拉選擇框選擇車次,進展查詢列出該車次的所有站點信息,然后點擊刪除操作就可以刪除該站點。需要注意:因為在車次中從起點站到終點站計算,其所有的站點是一個有次序的排列,所以刪除一個站點,則它的下個站點次序號依次減少一位。刪除站點頁面如圖4-10所示。圖4-10刪除站點〔5〕更新站點:通過車號的下拉選擇框選擇車次,進展查詢流出該車次的所有站點信息,然后點擊更新操作就可以更新該站點。需要注意的是,在更新起點站〔或是終點站〕的時候,也要同時更新車次表中的起點站〔或是終點站〕。更新站點頁面如圖4-11所示?!?〕更新車次:點擊更新車次,然后查看需要更新哪個車次選擇更新,更新的車次會顯示更新成功,然后更新后的車次信息就會及時的出現(xiàn)在最新的界面中,用戶就可以查看最新的車次信息了。更新車次頁面如圖4-12所示。圖4-11更新站點圖4-12更新車次4.2.4用戶留言實現(xiàn)〔1〕發(fā)表留言是公交查詢系統(tǒng)的一個新增的功能,主要是收集用戶的留言信息,可以根據(jù)用戶提供的留言信息或是提出的建議,對系統(tǒng)進展修改和完善。使得系統(tǒng)更加趨于成熟完整。發(fā)表留言頁面如圖4-13所示。〔2〕查看留言很簡單為用戶提供了一個查看發(fā)表過的留言以及管理員回復的留言用戶可以根據(jù)管理員回復的留言信息進展新的留言,可以進一步的對系統(tǒng)的一些不完善的地方提出一些合理的建議,讓系統(tǒng)更加的人性化,更加的完美,讓廣闊用戶可以更舒服的運用本系統(tǒng),享受公交查詢系統(tǒng)帶來的方便,讓廣闊用戶再不用坐錯公交車而耽誤大家的時間。查看留言如圖4-14所示。圖4-13發(fā)表留言圖4-14查看留言4.2.5管理員留言管理實現(xiàn)〔1〕刪除留言功能只有管理員才能查看并操作,在刪除的顯示頁面中會將所有的用戶留言信息及用戶名顯示出來。刪除留言頁面如圖4-15所示。圖4-15刪除留言4.3本章小結本章節(jié)主要就是講述系統(tǒng)的功能以及對這些功能的實現(xiàn),這個系統(tǒng)最主要的就是站點之間查詢那個最短路徑的算法問題,公交查詢系統(tǒng)主要就是為了方便大家能夠乘坐最方便的公交車,而廣度優(yōu)先遍歷算法就是解決這個問題關鍵。5系統(tǒng)測試5.1測試序號表5-1測試序號表序號測試名稱描述說明1用戶查詢公交車信息不同的查詢方式查詢不同的結果2管理員登陸登陸3管理員操作添加、刪除、更新系統(tǒng)中公交車的信息4留言操作用戶留言,管理員管理留言5.2測試模塊與運行用戶查詢公交車信息用戶查詢公交車信息如表5-2所示表5-2用戶查詢公交車信息測試表步驟測試描述說明預期結果實際結果和測試數(shù)據(jù)1商廈查詢根據(jù)商廈查詢公交車的信息測試結果:正確2線路查詢根據(jù)線路查詢公交車的信息測試結果:正確3站點查詢根據(jù)站點查詢公交車的信息測試結果:正確4站點之間查詢根據(jù)站點之間查詢公交車的信息測試結果:正確〔1〕商廈查詢結果如圖5-1所示。圖5-1商廈查詢結果〔2〕線路查詢結果如圖5-2所示。圖5-2線路查詢結果〔3〕站點查詢結果如圖5-3所示。圖5-3站點查詢結果〔4〕站點之間查詢結果如圖5-4所示。圖5-4站點之間查詢結果5.2.2管理員登陸管理員登陸如表5-3所示。表5-3管理員登陸測試表步驟測試描述說明預期結果實際結果和測試數(shù)據(jù)1管理員登陸管理員名及密碼正確進入管理員操作界面測試結果:正確管理員登陸頁面如圖5-5所示。圖5-5管理員登陸頁面5.2.3管理員操作〔1〕管理員操作如表5-4所示。表5-4管理操作測試表步驟測試描述說明預期結果實際結果和測試數(shù)據(jù)1添加車次和站點信息公交車信息添加測試結果:正確2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論