公交線路查詢系統(tǒng)_第1頁
公交線路查詢系統(tǒng)_第2頁
公交線路查詢系統(tǒng)_第3頁
公交線路查詢系統(tǒng)_第4頁
公交線路查詢系統(tǒng)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

摘要隨著南京交通的迅速發(fā)展,城市道路多樣化,城市公交線路查詢系統(tǒng)日益成為城市交通網(wǎng)絡(luò)不可分割的重要組成部分。本系統(tǒng)旨在提供南京市公交線路查詢服務(wù),簡便快捷,方便廣大市民使用本系統(tǒng)運用Java作為開發(fā)語言,以Eclipse為開發(fā)平臺,結(jié)合MySQL數(shù)據(jù)庫,將公交線路等信息導(dǎo)入數(shù)據(jù)庫,并添加了按多種方式查詢及信息增刪等,主要完成以下功能模塊:查詢功能:按線路查詢,按站點查詢,按起點終點查詢;換乘查詢;線路信息的添加、刪除、修改等功能。從而構(gòu)成一個簡便、實用的本地公交查詢系統(tǒng)。關(guān)鍵詞:java;公交查詢系統(tǒng);Eclipse;MySQL數(shù)據(jù)庫AbstractWiththerapiddevelopmentofNanjingtraffic,cityroadtobediversified.Thecitybuslinequerysystembecomesanimportantpartofcitytrafficnetwork.ThissystemisdesignedtoprovideNanjingcitybuslinequeryservice,convenientuse,convenienttothegeneralpublic.ThissystemusedJavaasthedevelopmentlanguage,Eclipseasadevelopmentplatform,combinedwithMySQLdatabase,importthebuslinesandotherinformationintothedatabase,andaddinavarietyofwaystoqueryandInformationincreaseanddeletefunctions,mainlycompletedthefollowingfunctionmodules:queryfunction:lineinquiries,accordingtothesite,accordingtothestartingpointandendpointoflinequery;transferquery;informationtoadd,delete,modifyandsoon.Constituteasimple,practicalsystemoflocalpublictransportsystem.Keywords:Java;publictransportquerysystem;Eclipse;MySQLdatabase目錄TOC\o"1-5"\h\z\o"CurrentDocument"緒論 1\o"CurrentDocument"研究背景 1\o"CurrentDocument"1.2研究目的與意義 1\o"CurrentDocument"1.3論文結(jié)構(gòu) 1\o"CurrentDocument"開發(fā)環(huán)境和技術(shù)簡介 2\o"CurrentDocument"Eclipse簡介 2\o"CurrentDocument"MySQL簡介 3\o"CurrentDocument"Java用戶界面開發(fā)包介紹 4Swing介紹 4java.awt介紹 5\o"CurrentDocument"JDBC介紹 5\o"CurrentDocument"系統(tǒng)設(shè)計及數(shù)據(jù)庫設(shè)計 5\o"CurrentDocument"系統(tǒng)目標(biāo) 5\o"CurrentDocument"系統(tǒng)功能模塊 6\o"CurrentDocument"系統(tǒng)總體設(shè)計 6\o"CurrentDocument"系統(tǒng)數(shù)據(jù)庫設(shè)計 7創(chuàng)建數(shù)據(jù)庫 7數(shù)據(jù)庫的配置 9數(shù)據(jù)庫的連接 10\o"CurrentDocument"系統(tǒng)功能的具體實現(xiàn) 11\o"CurrentDocument"系統(tǒng)開發(fā)環(huán)境 11\o"CurrentDocument"界面設(shè)計 11\o"CurrentDocument"查詢功能模塊的實現(xiàn) 124.3.1查詢功能流程圖 124.3.2按線路查詢 13按站點查詢 14按起點終點查詢信息 16\o"CurrentDocument"線路管理模塊的實現(xiàn) 194.4.1線路管理模塊流程圖 194.4.2添加線路和站點功能 194.4.3刪除線路和站點功能 204.4.4修改線路和站點功能 214.4.5在數(shù)據(jù)庫中實現(xiàn)線路管理功能 22\o"CurrentDocument"5系統(tǒng)測試與維護(hù) 23\o"CurrentDocument"5.1測試概述 235.1.1測試目的 235.1.2測試原則 235.1.3測試方法 245.1.4測試用例 245.1.5測試結(jié)果 25\o"CurrentDocument"5.2軟件維護(hù) 27\o"CurrentDocument"6結(jié)論 28\o"CurrentDocument"參考文獻(xiàn) 29致謝 錯誤!未定義書簽。南京市公交線路查詢系統(tǒng)1緒論1.1研究背景隨著南京市城市經(jīng)濟(jì)的迅速發(fā)展,人口規(guī)模迅速擴大,相對應(yīng)的城市交通系統(tǒng)也越發(fā)龐大。諸多新建道路、小區(qū)、城市服務(wù)業(yè)大量出現(xiàn),多種交通工具發(fā)展迅速,線路也日益增長,給城市居民出行帶來很大便利。但由于南京城市規(guī)模逐漸膨脹,市民出行時對乘車線路的選擇具有一定的困難。隨著信息技術(shù)的快速發(fā)展,各類軟件產(chǎn)品逐漸成為大眾便捷的生活工具,因此,一個高效簡潔的公交查詢系統(tǒng)已經(jīng)成為解決市民出行乘車?yán)щy問題的必備工具。現(xiàn)階段,公交作為城市市民出行的主要出行工具之一,特別對于來寧出差、旅行、參加活動、聯(lián)系客戶等短暫停留的人員而言,公交線路對他們而言是不可缺少的,但正因短暫停留,出行線路是個難題。所以,開發(fā)一個便捷高效的公交線路查詢系統(tǒng)只至關(guān)重要的。1.2研究目的與意義本系統(tǒng)的開發(fā)是基于java的城市公交線路查詢系統(tǒng),還提供了簡便了實時增刪功能,便于管理員實時更新數(shù)據(jù)庫公交線路信息,為用戶提供更加準(zhǔn)確及時的路線信息。本系統(tǒng)不僅可用于公交公司信息管理中,也可以作為獨立的查詢模塊,以此制作成為公交信息查詢網(wǎng)站。這樣不僅能夠便民利用,更可體現(xiàn)城市信息化、數(shù)字化水平,也有助于城市只能交通系統(tǒng)的建立。1.3論文結(jié)構(gòu)本文共分六章,具體結(jié)構(gòu)如下:緒論。介紹了設(shè)計的研究背景,總數(shù)了本課題研究的目的和意義,同時對本論文的具體結(jié)構(gòu)作出說明。開發(fā)環(huán)境和技術(shù)簡介。本系統(tǒng)使用Eclipse作為開發(fā)環(huán)境,數(shù)據(jù)庫采用MySql。采用的技術(shù)有:Swing、java.awt、JDBC等。系統(tǒng)需求分析。根據(jù)系統(tǒng)開發(fā)前的調(diào)研狀況,從系統(tǒng)的需求著手介紹了本系統(tǒng)模塊,包括查詢功能;線路信息添加、刪除、修改等功能模塊,并進(jìn)行功能分析與設(shè)計,并對功能需求、系統(tǒng)數(shù)據(jù)庫進(jìn)行分析,為之后的系統(tǒng)設(shè)計提供了基礎(chǔ)。(4)系統(tǒng)設(shè)計及功能的具體實現(xiàn)。主要解釋了系統(tǒng)方案選擇,系統(tǒng)的結(jié)構(gòu)與數(shù)據(jù)庫的設(shè)計;并在第三章基礎(chǔ)上,根據(jù)系統(tǒng)需求分析,對系統(tǒng)的各個模塊進(jìn)行代碼設(shè)計,以及各大功能模塊頁面,包括系統(tǒng)運行截圖。(5)系統(tǒng)測試與維護(hù)。對系統(tǒng)進(jìn)行測試,并給出了測試用例表,列出了系統(tǒng)模塊的測試樣例,對其作出簡要分析及軟件維護(hù)方法。(6)結(jié)論??偨Y(jié)了整篇論文進(jìn)行中工作狀況并給出本系統(tǒng)當(dāng)前存在的不足之處,對于過程中存在的困難及問題進(jìn)行了細(xì)致的闡述,并講解了完成整篇論文之后的心得體會。2開發(fā)環(huán)境和技術(shù)簡介Eclipse簡介Eclipse是一個源代碼開放的、基于Java的可擴展開發(fā)平臺。就eclipse自身來說,只作為一個框架和一組服務(wù),只能通過插件或組件搭建開發(fā)環(huán)境。但Eclipse本身自帶一個標(biāo)準(zhǔn)的插件集,包括java開發(fā)工具(javadevelopmentkit,JDK)。如圖2-1為Eclipse工作界面:圖2-1Eclipse工作界面MySQL簡介MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQLAB公司開發(fā),目前屬于Oracle公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。MySQL的SQL語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。MySQL數(shù)據(jù)庫的安全性高,穩(wěn)定性較強,并且可支持的存儲數(shù)據(jù)量較大。由于公交線路信息系統(tǒng)所需的數(shù)據(jù)量較大,并且對數(shù)據(jù)的準(zhǔn)確性及安全性要求也較高,因此,本系統(tǒng)選擇MySQL數(shù)據(jù)庫也是最合適之選。圖2-5為MySQL應(yīng)用架構(gòu)

MySQLServer搽痕£的nJ1!,JW.tW.匹人FHF,Py由血Ptrl.MySQLServer搽痕£的nJ1!,JW.tW.匹人FHF,Py由血Ptrl.眄.VI業(yè)H理皿務(wù)HlIE±fi-MWMK痕皿曹理在詢宦說會7F工耳也一暉揍口壷悅啊印研盲車1U卅疋肚舌咅.評1?垃用.ttft就京樸厲片社連隈為單證勺攪祝一Hih-建桂舉制一由在與規(guī)徉骨咸可菇汛質(zhì)借引爭內(nèi)存、囂引粕棄《hsh;JIf 「宀丄斯枚術(shù)H件箍統(tǒng),冉堵文件孔喘ftedt.Uncb)Drtfl』lh止?fàn)?wèi)B(tài)inary殆p』ErtWjQwE?erriSto^JLM.S心NrlSAMMfiuDBthis^srFibIconArchon卩tdcMtedMrrgeWmnrrP-artnertornnwnltipCurtiiHn1圖2-5MySql應(yīng)用架構(gòu)2.3Java用戶界面開發(fā)包介紹Swing介紹Swing是基于java應(yīng)用程序的用戶界面開發(fā)工具包。以抽象窗口工具包作為依據(jù),使應(yīng)用程序(尤其是跨平臺的)可以使用任何類型可拔插的外觀。代碼利用少,功能靈活,使得用戶界面具有模塊化組件,界面更加優(yōu)雅。工具包中的所有包都以swing作為名稱,例如javax.swing,javax.swing.event等。用Swing創(chuàng)建圖形界面基本步驟:(1) 導(dǎo)入Swing包(2) 選擇界面風(fēng)格(3) 設(shè)置頂層容器(4) 設(shè)置按鈕和標(biāo)簽(5) 將組件放到容器上(6) 增加組件邊框處理事件輔助技術(shù)支持java.awt介紹Awt,即抽象窗口工具包,包含用于創(chuàng)建用戶界面和繪制圖形圖像的所有分類。在AWT術(shù)語中,如滾動條或按鈕之類的用戶界面對象皆稱為組件。任何窗口都可以被分解成一個空的容器,容器內(nèi)盛裝了大量的基本組件,若將組件和容器組成整體窗口,需要設(shè)置所包含組件的位置,屬性,大小等。容器還可以具有布局管理器,用來控制容器中組件的可視化布局。AWT包帶有幾個布局管理器類和一個接口,此接口可用于構(gòu)建自己的布局管理器。2.4JDBC介紹JDBC,全稱為javadatabaseconnectivity(java數(shù)據(jù)庫連接),是一種javaAPI,用來執(zhí)行SQL語句,它是一由Java語言編寫的接口和類構(gòu)成,可為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一的訪問。JDBC為數(shù)據(jù)庫開發(fā)人員提供一種基準(zhǔn),即一個標(biāo)準(zhǔn)的API,根據(jù)這個基準(zhǔn)可構(gòu)建更高級的接口和工具,使開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。3系統(tǒng)設(shè)計及數(shù)據(jù)庫設(shè)計3.1系統(tǒng)目標(biāo)本系統(tǒng)目標(biāo)如下:方便市民更高效便捷地查詢公交線路相關(guān)信息適應(yīng)南京及江蘇未來城市交通快速發(fā)展的要求,適應(yīng)城市公交信息化改革,適應(yīng)城市交通服務(wù)向更高層次方向的發(fā)展要求。為未來公交智能發(fā)展方向以及基于廣大市民用戶的公交信息服務(wù)打下基礎(chǔ)。提高開發(fā)工作者能力,包括軟件開發(fā)的思想理解及應(yīng)用、編程思路及編寫能力的綜合統(tǒng)籌管理能力。3.2系統(tǒng)功能模塊本系統(tǒng)提供了的線路查詢功能、站點查詢功能、按起點終點查詢功能、換乘功能、線路信息增刪修改功能。乘客可以快速簡便地進(jìn)行查詢,以防行錯路線。同時管理員可方便管理車輛的車次和出行線路。主要模塊為以下兩類:公交信息查詢模塊,用戶可根據(jù)普通用自身需要,選擇相應(yīng)的查詢方式,有包括線路查詢、站點查詢、起點終點查詢、換乘查詢(包括直達(dá)、一次、兩次換乘)。線路查詢即為根據(jù)公交車次號查詢途徑的所有站點信息;站點查詢?yōu)橥緩奖菊军c的所有車次信息;起點終點查詢主要為換乘功能服務(wù),用戶可輸入要求的起點和終點,然后可選擇乘車方案。公交信息查詢模塊管理員可根據(jù)信息,在本界面中對公交線路信息進(jìn)行添加、刪除和修改操作,可實現(xiàn)實時更新公交變動信息。3.3系統(tǒng)總體設(shè)計本系統(tǒng)運用模塊化技術(shù)和面向?qū)ο蠹夹g(shù)。面向?qū)ο蠹夹g(shù)是一種軟件開發(fā)和程序設(shè)計技術(shù),本技術(shù)用來開發(fā)面向?qū)ο蟪绦?,對象,為封裝操作和數(shù)據(jù)的程序塊。封裝,為本程序塊建立中所顯示的界面,其他對象只可以想該界面發(fā)送消息不能訪問內(nèi)部操作及數(shù)據(jù)。因此若對內(nèi)部私密數(shù)據(jù)和實現(xiàn)的算法進(jìn)行改動,對其他對象毫無影響。封裝可以使程序易于修改和維護(hù),但是當(dāng)很多對象具有相同功能的時候避免不了重復(fù),因此面向?qū)ο蠹夹g(shù)具有繼承機制。而且,由于對象只能操作自己的數(shù)據(jù),對不同對象中的同一個消息全都是以自己的方式相應(yīng),從而使同種消息具有多樣的響應(yīng)方式,此為多態(tài)性。多態(tài)、封裝和繼承是面向程序的主要的特征。上述三種特征使得面向?qū)ο蟪绦蚓哂邪踩⒖煽?、可重用、以維護(hù)等特點。因此面向?qū)ο蠹夹g(shù)成為了現(xiàn)在計算機新興的技術(shù)。本系統(tǒng)具體流程圖如圖3-1所示:管理員用戶或管理員 > 選擇查詢方式 進(jìn)行信息增刪修改操作進(jìn)行查詢擬作 退岀系統(tǒng)圖3-1系統(tǒng)總體流程圖圖3-1闡述了本系統(tǒng)的整體操作流程。首先使用者確認(rèn)自己作為普通用戶還是管理員。然后進(jìn)行相應(yīng)的功能選擇。3?4系統(tǒng)數(shù)據(jù)庫設(shè)計3.4.1創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)庫作為信息系統(tǒng)的核心,為本系統(tǒng)開發(fā)基礎(chǔ),將系統(tǒng)中的大量數(shù)據(jù)按照特定模型整合,要求在特定環(huán)境中構(gòu)建從優(yōu)的魔術(shù),實現(xiàn)系統(tǒng)有效的數(shù)據(jù)操作。用于提供數(shù)據(jù)存儲、檢索和維護(hù)等功能。通過信息系統(tǒng)的調(diào)用能夠準(zhǔn)確方便的獲取信息,滿足客戶需求。數(shù)據(jù)庫設(shè)計原則:(1)基表個數(shù)越少越好。(2)字段個數(shù)越少越好。(3)所有的基表設(shè)計都要盡可能符合第三范式。具體創(chuàng)建過程及思路如下:啟動MySQL數(shù)據(jù)庫,有的數(shù)據(jù)庫若需要輸入密碼的話則先輸入密碼。然后點擊該界面中的新建數(shù)據(jù)庫(編碼格式為utf-8_general_ci),數(shù)據(jù)庫名稱輸入bus,點擊確定即完成該數(shù)據(jù)庫的創(chuàng)建,然后點擊創(chuàng)建的該數(shù)據(jù)庫bus,創(chuàng)建表。通過實體分析,創(chuàng)建一個bus數(shù)據(jù)庫足夠滿足需求,數(shù)據(jù)庫最難設(shè)計的部分是表的創(chuàng)建,由于每輛公交所途徑的站點數(shù)量不同,但表的站點字段個數(shù)若是設(shè)計太多,容易降低查詢效率并且造成資源浪費,理想的方案是只隨著線路的更新添加新的記錄,因此在本數(shù)據(jù)庫表僅創(chuàng)建一個表,即為bus_info,表中建立了四個字段:ID,NAME,SITE,SEQUENCE。ID定義為int型,用來記錄數(shù)據(jù)量,其他類型定義為文本,建立四個字段也是由于對于文本屬性來說,每條字段最大長度為255,若字符超過便無法顯示,三個文本字段可用于控制,便于日后對數(shù)據(jù)進(jìn)行擴充。但對于文本屬性來說每個字段的最大長度為255,超過這個長度系統(tǒng)不予顯示,因此設(shè)四個字段來控制,便于以后數(shù)據(jù)的擴充。站點信息若用一個字段存放,在向該字段錄入數(shù)據(jù)是不會被系統(tǒng)提示已滿,但執(zhí)行后會顯示“數(shù)據(jù)源被截斷”,這里用四個字段存儲站點信息,每個字段數(shù)據(jù)量不超過最大值則可以避免上述錯誤。數(shù)據(jù)庫的設(shè)計直接影響整個系統(tǒng)的功能,設(shè)計的好壞將決定數(shù)據(jù)操作,無疑是信息系統(tǒng)中至關(guān)重要的。所以在開發(fā)之前,一定要將數(shù)據(jù)庫設(shè)計方案放在首位。具體設(shè)置如圖3-2所示:甌垂刖勰驗器淨(jìng)|迎融名翹ft??TDint100□血NAMEvarchar2550SFEvarchar2550SEQUENCEvarchar1100圖3-2公交線路信息表(bus_info表)表bus_info字段標(biāo)示如下:NAME:線路名稱。SITE:站點名稱。SEQUENCE:站點順序。3?4??2數(shù)據(jù)庫的配置數(shù)據(jù)庫創(chuàng)建完成后必須對其進(jìn)行配置,下面如圖4.3.2所示為本系統(tǒng)配置數(shù)據(jù)庫文件的基本代碼:publicstaticConnectiangetCo-nnection(){Connectioncon=null;//nection^s.try{口爵"forNams(Ircom.mysql,jdLc,Driver");//H郵負(fù)J&X麒鬆con=DriverHanager.getC^nnEction(,Fjdbc:mysql://localho5t:JJee/BJS'j"root"』"12強弱");//■匚塵鮭洼吳}catch(Exceptione){Systen.out.printIn("ffiEflTSftsftJK"+e.getMessagef));}returncon;〃噫叵尸黑藝金盒些理三吳圖3-3數(shù)據(jù)庫文件配置代碼其中具體配置信息如下:數(shù)據(jù)庫主機名:localhost數(shù)據(jù)庫用戶名:root數(shù)據(jù)庫密碼:1234563.4.3數(shù)據(jù)庫的連接由于eclipse開發(fā)環(huán)境里沒有集成mysql的驅(qū)動,需要下載連接驅(qū)動程序:mysql-connector-java-5J.30.zip。下載完成后解壓,只取文件mysql-connector-java-5.1.30-bin.jar,將其引用到你需要連接mysql數(shù)據(jù)庫的工程里。具體操作如下:在工程ConMysql上點擊右鍵properties->JavaBuildPath->Libraries點擊AddExternalJARS...選取解壓后的mysql-connector-java-5.1.30-bin.jar解壓之后,在eclipse中編寫連接編碼,具體編碼如圖3-4所示:publicstaticArrayList<String>name(){corrrr=getCctnnection()i//苜注罷埜取圭守m:嘗吳至之至豐ArraylList<String>lisl=newArrayList<String>();try{Stringsql=''SELECTDISTINCTIW1EFRO1BUS^NFD11; //誓■人盤蠱節(jié)敘芳hPreparedStaternen宜ps=conrr.prepareStatement(sql);//逹:用于=l^t?靜言奧農(nóng)工考運琴StatementResultSetrs=ps.executeQuery()j;while(its.ne)rt()){,.System-out.prin七ln(rs.getStrin呂(L));lis1-add(rsgetString(l));}''rs.clos皂();ps.匚]LO£E();匚onn.closeO; //關(guān)氏徳庠逹按}ca±ch(Exceptione){e』printStatzkTrace();returnlisl;}圖3-4數(shù)據(jù)庫連接編碼4系統(tǒng)功能的具體實現(xiàn)4?1系統(tǒng)開發(fā)環(huán)境操作系統(tǒng):Windows。數(shù)據(jù)庫:MySQL。代碼編輯器:Eclipse。數(shù)據(jù)庫驅(qū)動:JDBC。MySQL圖形界面操作工具:NavicatforMySQL4?2界面設(shè)計由于主要任務(wù)在于完成系統(tǒng)的功能實現(xiàn),因此本系統(tǒng)中沒有設(shè)計區(qū)分普通用戶權(quán)限和管理員權(quán)限以及登陸功能,將本系統(tǒng)中的所有功能都集成于一個界面之中。界面設(shè)計根據(jù)功能要求,設(shè)計成4個標(biāo)簽頁。具體代碼實現(xiàn)如下所示:tab=newJTabbedPane();tab.add("按線路查詢”,panl_l);tab.add("按站點查詢",pan2_1);tab.add("按起點終點查詢",pan3_1);tab.add("數(shù)據(jù)編輯",pan4_1);this.add(tab);每個標(biāo)簽頁實現(xiàn)相對應(yīng)功能。使用者可根據(jù)自身需求選擇所需功能。由于起點終點查詢功能是為換乘功能服務(wù),因此將換乘功能覆蓋于按起點終點查詢功能中。如圖4-1所示為用戶界面:圖4-1用戶界面界面設(shè)置代碼如下:this.add(tab);this.setTitle(”公交線路查詢系統(tǒng)”);〃界面標(biāo)題this.setSize(1000,600); 〃界面長寬this.setLocation(100,10); 〃界面位置this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);4?3查詢功能模塊的實現(xiàn)4?3?1査詢功能流程圖查詢功能模塊流程圖如圖4-2所示1進(jìn)入主界面1r用戶選擇查詢線路r站點、起終點按乘等侶息1r顯示查詢信息1FUjs束二)圖4-2查詢功能模塊流程圖4.3.2按線路查詢功能描述:按線路查詢是為用戶提供線路名稱或公交車號(如廣科線、17路)信息查詢,用戶輸入線路之后,界面會顯示該線路的所有站點信息,并標(biāo)注每一個在本線路中的站點順序,顯示結(jié)果為兩列,第一列為站點名稱,第二列為站點所在線路中的位置,方便用戶了解所處位置,并且防止用戶乘車方向相反。模塊運行如圖4-3所示為線路查詢信息界面('按絨踣查iffl'按站點查iffl7按起點輿點查iffl7數(shù)摒編皙輸人要杳閭的線路名稱廣科南廣學(xué)院夭學(xué)城站曉莊學(xué)院西門曉莊學(xué)曉北門中國藥科天學(xué):第瞬第3站第瞬第斑圖4-3線路查詢信息相應(yīng)代碼實現(xiàn):publicstaticMapvString,String〉qure_site(Stringsite){conn=getConnection();//首先要獲取連接,即連接到數(shù)據(jù)庫Map<String,String>map=newLinkedHashMapvString,String>();ArrayListvString>lisl=newArrayList<String>();〃建立列表1,用于顯示第一列信息ArrayList<String>lis2=newArrayList<String>();〃建立列表2,用于顯示第二列信息try{Stringsql="SELECTNAME,SEQUENCEFROMBUS_INFOWHERESITE=?ORDERBYIDASC";//插入數(shù)據(jù)的sql語句PreparedStatementps=conn.prepareStatement(sql);//創(chuàng)建執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(1,site);ResultSetrs=ps.executeQuery();while(rs.next()){System.out.println(rs.getString(1)+rs.getString(2));lis1.add(rs.getString(1));lis2.add(rs.getString(2));}rs.close();ps.close();conn.close();//關(guān)閉數(shù)據(jù)庫連接}catch(Exceptione){e.printStackTrace();}for(inti=0;i<lis1.size();i++){map.put(lis1.get(i),lis2.get(i));}returnmap;}按站點查詢1.功能描述:用戶在主界面中第二欄可以使用按站點查詢功能。該功能為用戶提供一個公交線路中某一站點查詢到其所在的線路信息。2.模塊運行:如圖4-4所示si公交錘查洵至統(tǒng)「按線路查舸'揣站點查舸'揣起點終點査訶'埶揺編輯輸入要杳間的站點名稱曉莊學(xué)院西門廣科 第3站1隔 第12站E路 第2站圖4-4按站點查詢信息3.相應(yīng)代碼實現(xiàn):publicstaticMapvString,String〉qure_name(Stringname){conn=getConnection();//首先要獲取連接,即連接到數(shù)據(jù)庫Map<String,String>map=newLinkedHashMapvString,String>();ArrayListvString>lis1=newArrayList<String>();ArrayList<String>lis2=newArrayList<String>();try{Stringsql="SELECTSITE,SEQUENCEFROMBUS_INFOWHERENAME=?ORDERBYSEQUENCEASC";//插入數(shù)據(jù)的sql語句PreparedStatementps=conn.prepareStatement(sql);//創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(l,name);ResultSetrs=ps.executeQuery();while(rs.next()){System.out.println(rs.getString(1)+rs.getString(2));lis1.add(rs.getString(1));lis2.add(rs.getString(2));}rs.close();ps.close();conn.close(); 〃關(guān)閉數(shù)據(jù)庫連接}catch(Exceptione){e.printStackTrace();for(inti=O;ivlisl.size();i++){map.put(lis1.get(i),lis2.get(i));}returnmap;}4.3.4按起點終點查詢信息功能描述:用戶在主界面中第三欄可以使用按站點查詢功能。用戶可在界面欄中輸入乘車的起點和終點,系統(tǒng)會幫助用戶查找出可乘坐的所有線路信息供用戶選擇,包括直達(dá),一次換乘和二次換乘。模塊運行:直達(dá)信息界面如圖4-5所示。圖4-5按起點終點查詢直達(dá)信息界面相應(yīng)代碼實現(xiàn):起點終點直達(dá)線路部分代碼如下。sql="SELECTA.NAMEFROM(SELECTNAMEFROMBUS_INFOWHERESITE=?)A,(SELECTNAMEFROMBUS_INFOWHERESITE=?)BWHEREA.NAME=B.NAME;";//插入數(shù)據(jù)的sql語句ps=conn.prepareStatement(sql);//創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(l,star);ps.setString(2,end);rs=ps.executeQuery();一次換乘信息界面以及部分代碼如下:疇翱 I=>口1-^-.'圖4-6一次換乘界面信息sql="SELECTA.SITEFROM(SELECTDISTINCTSITEFROMBUS_INFOWHERENAMEIN(SELECTNAMEFROMBUS_INFOWHERESITE=?))A,(SELECTDISTINCTSITEFROMBUS_INFOWHERENAMEIN(SELECTNAMEFROMBUS_INFOWHERESITE=?))BWHEREA.SITE=B.SITE;";//插入數(shù)據(jù)的sql語句ps=conn.prepareStatement(sql); //創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(1,star);ps.setString(2,end);rs=ps.executeQuery();一次換乘算法中所應(yīng)用的中心思想是:首先根據(jù)兩個站點名獲取兩個站點各自的id,這里定義為id1,id2,搜尋兩個站點通過直達(dá)方式各自能夠到達(dá)的站點集合,最后他們的交集就是我們所需要的換乘站點。二次換乘部分代碼如下:sql="SELECTC.NAMEFROM(SELECTDISTINCTNAMEFROMBUS_INFOWHERESITEIN(SELECTDISTINCTSITEFROMBUS_INFOWHERENAMEIN(SELECTNAMEFROMBUS_INFOWHERESITE=?)))C,(SELECTDISTINCTNAMEFROMBUS_INFOWHERESITEIN(SELECTDISTINCTSITEFROMBUS_INFOWHERENAMEIN(SELECTNAMEFROMBUS_INFOWHERESITE=?)))DWHEREC.NAME=D.NAME;";//插入數(shù)據(jù)的sql語句ps=conn.prepareStatement(sql);//創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(1,star);ps.setString(2,end);rs=ps.executeQuery();sql="selectA.SITEfrom(selectdistinctSITEfromBUS_INFOwhereNAMEin(selectNAMEfromBUS_INFOwhereSITE=?))A,(selectSITEfromBUS_INFOwhereNAME=?)BwhereA.SITE=B.SITE;";//插入數(shù)據(jù)的sql語句ps=conn.prepareStatement(sql);//創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(1,star);ps.setString(2,end);rs=ps.executeQuery();二次換乘算法中所應(yīng)用的中心思想為:在一次換乘的基礎(chǔ)上,站點1能夠通過直達(dá)到達(dá)的所有站點集合A,站點2能夠通過直達(dá)到達(dá)的所有站點集合B,A和B之間有直達(dá)的線路。優(yōu)點:全部是sql完成搜尋,所以eclipse代碼所需較少。缺點:慢,畢竟可能涉及了數(shù)百次sql查詢。而且只是用最簡單的sql方法去算出所有可以換乘的方案。另外,根據(jù)出行者輸入的起點和終點,確定出行要選擇的起始公交站點A和目的公交站點B。搜索數(shù)據(jù)庫,查詢站點A和站點B之間是否有相同的車經(jīng)過,如果有一條或幾條直達(dá)線路,通過比較選擇距離最短的公交線路推薦給出行者。如果沒有,則計算站點A和站點B之間有沒有一個公共站點C,從站點C可以換乘到達(dá)站點B。這就有兩種情況:(1)如果有,屬于一次換乘。計算站點A和公共站點C之間有沒有相同的公交車經(jīng)過并存入集合X;同樣,計算站點B和公共站點C之間有沒有相同的公交車經(jīng)過并存入集合Y。將這兩個集合比較后就可以得到從站點A經(jīng)過公共站點C到達(dá)站點B的公交線路,在這些線路中進(jìn)行比較,選擇距離最短的推薦給出行者。(2)如果沒有公共站點C,就出現(xiàn)了要換乘兩次的情況。將經(jīng)過站點A的每條公交線路的所有站點存入集合O;同樣,經(jīng)過站點B的每條線路的所有站點存入集合P。比較這兩個集合,先乘經(jīng)過站點A的某一路車到達(dá)某一站點D,計算站點D與站點B之間有沒有公共站點E,如果有則站點D、E為換乘站點。這種方案可能有多種,比較選擇距離最短的推薦給出行者。如果不存在公共站點E,說明經(jīng)過兩次換乘無法從站點A到達(dá)站點B,停止搜索計算。4.4線路管理模塊的實現(xiàn)4.4.1線路管理模塊流程圖本系統(tǒng)公交信息管理模塊流程圖如圖4-7所示:進(jìn)入主界面管理員選擇要操作的

線路對該線路進(jìn)行刪除、

修改以及線路添加等

操作圖4-7線路管理模塊流程圖4.4.2添加線路和站點功能功能描述:該功能用于管理員更新公交線路實時信息,在系統(tǒng)界面第四欄“數(shù)據(jù)編輯”頁面中間的文本框中按順序添加站點信息,格式為:“;”+“回車鍵”。在界面下方線路名稱的文本框中輸入所添加的線路名稱,信息錄入完成后,點擊下方的“添加”按鈕可存儲錄入信息。注:在錄入新的線路站點信息之前,要清空文本框中原有的信息,以免造成信息添加重復(fù)或錯誤。模塊運行:如圖4-8所示圖4-8公交線路信息添加相應(yīng)部分代碼實現(xiàn):sql="INSERTINTOBUS_INFOVALUES(?,?,?,?);";//插入數(shù)據(jù)的sql語句ps=conn.prepareStatement(sql);//創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(l,null);ps.setString(2,NEWNAME);ps.setString(3,SITE[i]);ps.setInt(4,SEQUENCER);ps.execute();4.4.3刪除線路和站點功能功能描述:該功能用于管理員刪除數(shù)據(jù)庫中取消或無用的線路信息,和添加功能不一樣的是,在“數(shù)據(jù)編輯”中選擇已存在的線路信息,然后點擊界面下方的“刪除”按鈕。相應(yīng)部分代碼實現(xiàn):sql="DELETEFROMBUS_INFOWHERENAME=?";//插入數(shù)據(jù)的sql語句ps=conn.prepareStatement(sql);//創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(1,NEWNAME);ps.execute();4.4.4修改線路和站點功能1.功能描述:修改功能用于管理員對站點名、線路名等。在選擇已存在的相應(yīng)線路信息之后,通過正常的文本信息修改方式對線路信息進(jìn)行修改。修改完成后必須點擊界面下方的“修改”按鈕,才可保存修改信息。修改功能相當(dāng)于整合了信息刪除和添加算法,實現(xiàn)方法中同時運用到這兩種方式。2.相應(yīng)部分代碼實現(xiàn):sql="DELETEFROMBUS_INFOWHERENAME=?";//插入數(shù)據(jù)的sql語句ps=conn.prepareStatement(sql);//創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(1,OLDNAME);ps.execute();if(SITE.length!=SEQUENCE.length){System.out.println(”數(shù)據(jù)出錯”);}sql="INSERTINTOBUS_INFOAALUES(?,?,?,?);";//插入數(shù)據(jù)的sql語句ps=conn.prepareStatement(sql);//創(chuàng)建用于執(zhí)行靜態(tài)sql語句的Statement對象ps.setString(1,null);ps.setString(2,NEWNAME);ps.setString(3,SITE[i]);ps.setInt(4,SEQUENCE[i]);ps.execute();4.4.5在數(shù)據(jù)庫中實現(xiàn)線路管理功能本方法可直接通過數(shù)據(jù)庫來實現(xiàn)公交線路信息的添加、刪除、修改操作。具體操作步驟為:(1) 打開數(shù)據(jù)庫連接軟件,即NavicatforMySQL;(2) 打開創(chuàng)建的數(shù)據(jù)庫:bus;(3) 打開bus中的創(chuàng)建的表bus_info;(4) 點擊插入記錄,然后進(jìn)行錄入、刪除、修改信息等操作;(5) 完成之后刷新即可自動排序。注:注ID為信息編號,在進(jìn)行信息錄入操作時,需注意防止ID錄入重復(fù)導(dǎo)致原信息被覆蓋等產(chǎn)生的錯誤。如圖4-9所示:圖4-9在數(shù)據(jù)庫中實現(xiàn)線路管理功能5系統(tǒng)測試與維護(hù)5.1測試概述5.1?1測試目的軟件測試的目標(biāo)是以最少的時間和人力,系統(tǒng)地找出軟件中潛在的各種錯誤和缺陷,因此軟件測試的目的是:測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤。測試不僅在于發(fā)現(xiàn)錯誤,更重要的是通過錯誤分析找到錯誤發(fā)生的原因趨勢,可以幫助開發(fā)者發(fā)現(xiàn)軟件開發(fā)過程中的缺陷,以便改進(jìn)。通過分析也能幫助測試者提出更高效的測試方法。GlenfordJ.Myers曾對軟件測試提出以下測試思路,如圖5-1所示:需耒分析集廉測試編碼圖5-1軟件測試思路5.1.2測試原則測試過程中,應(yīng)遵循以下原則:設(shè)計測試用例之前要給出預(yù)期結(jié)果,以便對照。在設(shè)計測試用例時,不僅要設(shè)計合理的輸入條件,還要設(shè)計不合理的輸入條件。測試時除了檢查軟件是否做了系統(tǒng)需求的工作,還要檢查其是否做了不應(yīng)該的工作。對所制定的測試計劃必須嚴(yán)格執(zhí)行。測試用例需要長期保持。注意測試過程中的群集現(xiàn)象。5.1.3測試方法測試方法有動態(tài)測試和靜態(tài)測試兩種。軟件測試一般意義上指的是動態(tài)測試。主要有兩種方法,一種是測試程序的內(nèi)部結(jié)構(gòu)和處理過程的白盒測試法;另一種僅測試產(chǎn)品功能的黑盒測試法。5.1.4測試用例針對本系統(tǒng)的各項功能進(jìn)行具體測試,以下為具體功能的測試用例,如表5-1所示:5-1測試用例測試功能用例編號輸入操作輸出結(jié)果按線路查詢1無任何線路信息輸入點擊查詢顯示文本框為空2輸入錯誤或者不存在的線路信息查詢顯示文本框為空3輸入正確的線路信息進(jìn)行查詢顯示站點信息按站點查詢1輸入站點信息顯示相關(guān)路線2輸入錯誤或不存在的站點信息顯示文本框為空按起點終點查詢1輸入錯誤或不存在的站點信息顯示文本框為空2輸入正確的站點信息成功顯示乘車信息3將起點終點信息調(diào)換位置輸入成功顯示乘車信息4輸入可直達(dá)的站點信息選顯示文本框為空

擇一次或一次換乘查詢5輸入只可一次換乘的站點選擇直達(dá)或二次換乘查詢顯示文本框為空數(shù)據(jù)編輯1對不存在的線路信息進(jìn)行添加添加成功2對已存在的線路信息進(jìn)行添加ERROR3選擇線路進(jìn)行刪除成功刪除4對線路及站點信息進(jìn)行修改成功修改并保存5.1.5測試結(jié)果根據(jù)測試用例依次對程序進(jìn)行測試,除了線路查詢功能出現(xiàn)排序錯誤以外,其他操作和功能均能夠正常完成,具體結(jié)果如圖5-3所示:圖5-3線路查詢功能排序錯誤由圖中可以發(fā)現(xiàn),當(dāng)數(shù)據(jù)添加超過10個站點以后,排序會按照1,10,11…,2,20,21…,3,30,31…等順序進(jìn)行,于是對所涉及的代碼進(jìn)行檢測,錯誤代碼共三句,如下所示Stringsql="SELECTSITEFROMBUS_INFOWHERENAME=?ORDER

溫馨提示

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

最新文檔

評論

0/150

提交評論