南昌市公家線路查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文樣本_第1頁
南昌市公家線路查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文樣本_第2頁
南昌市公家線路查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文樣本_第3頁
南昌市公家線路查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文樣本_第4頁
南昌市公家線路查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)論文樣本_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)或者侵權(quán),請聯(lián)系改正或者刪除。公交線路查詢系統(tǒng)摘要:隨著經(jīng)濟(jì)的發(fā)展和旅游事業(yè)的發(fā)展,人們出入和游覽其它城市的機(jī)會也隨之增多,可是到達(dá)一個城市所面臨的首要問題就是交通問題,為了讓人們?nèi)?、及時、準(zhǔn)確、迅速地掌握公交線路。運(yùn)用我們學(xué)的知識做了個公交線路查詢系統(tǒng)。就是為了方便于社會和服務(wù)于社會。本文首先分析了公交查詢系統(tǒng)設(shè)計(jì)的必要性,我們設(shè)計(jì)的公交查詢系統(tǒng)要與觸摸屏相結(jié)合。本文還介紹了在開發(fā)系統(tǒng)中需要用到的知識,比如JAVA和SQLServer等。開發(fā)的公交查詢系統(tǒng)實(shí)現(xiàn)了站點(diǎn)查詢,站站查詢,建筑物查詢,換乘查詢。整個系統(tǒng)的后臺管理實(shí)現(xiàn)對系統(tǒng)中所有的數(shù)據(jù)的控制與管理。整個系統(tǒng)的實(shí)現(xiàn)中,對數(shù)據(jù)的添加與修改是最重要的操作,實(shí)現(xiàn)對所有數(shù)據(jù)的控制。數(shù)據(jù)的顯示由JAVA語言結(jié)合JDBC實(shí)現(xiàn)。關(guān)鍵詞:公交查詢系統(tǒng);JAVA;SQLServer;Abstract:Withdevelopmentofeconomicandtourism,peopleaccessandtheopportunitytovisitothercitiesalsowillbeincreased,butthearrivalofacityfacingthemostimportantissueisthetrafficproblem,inordertoallowpeopletocomprehensive,timely,accurateandrapidcontrolofTACline.Weusetheknowledgeacquiredtobeabuslinesenquirysystem.Istofacilitatethesocialandservicetosociety.Thispaperanalyzedthepublictransportsystemdesignforthenecessity,wehavedesignedforthepublictransportsystemwithtouch-screencombination.Thispaperdescribesthedevelopmentofsystemsneedtousetheknowledge,forexample,suchasJAVAandSQLServer.目錄TOC\o"1-2"\h\z\u\t"標(biāo)題3,3"前言 IV1系統(tǒng)開發(fā)原理及開發(fā)方案 11.1數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)方法 11.2J2SE技術(shù) 21.3系統(tǒng)的開發(fā)方案 52系統(tǒng)需求分析 102.1系統(tǒng)運(yùn)行環(huán)境需求分析 102.2功能需求分析 102.3系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)與系統(tǒng)功能模塊設(shè)計(jì) 112.4數(shù)據(jù)庫設(shè)計(jì) 143公交查詢系統(tǒng)的設(shè)計(jì)流程 163.1系統(tǒng)實(shí)現(xiàn) 163.2后臺數(shù)據(jù)庫管理模塊 173.3查詢模塊 38結(jié)論 46前言中國城市公交乘客信息系統(tǒng)的發(fā)展處于一個落后的水平,廣大乘客能夠獲得信息的方式很少,公交信息的完整性和準(zhǔn)確性得不到保證,而且還沒有專門的機(jī)構(gòu)負(fù)責(zé)信息的發(fā)布和管理。中國公交乘客信息系統(tǒng)的現(xiàn)狀特點(diǎn)如下:(1)中國乘客一般獲得公交信息的方式局限于電話,交通圖,向熟人問訊等常規(guī)方式。乘客能夠獲得的公交信息較少.(2)乘客出行中獲得信息困難,基本上沒有實(shí)時信息。除了幾個少數(shù)城市,乘客能夠經(jīng)過分布于城市中的若干電子站牌獲得一些公交車輛的運(yùn)營信息以外,在其它城市”出行中”的乘客無法獲得任何實(shí)時信息。由上所述,中國公交乘客信息系統(tǒng)總體上處于較低水平。較低的發(fā)展水平既是發(fā)展的困難,也是發(fā)展的機(jī)遇。我們應(yīng)將發(fā)展公交乘客信息系統(tǒng)作為一個提高公交效率,增強(qiáng)公交吸引力的重要手段。這里指的公交查詢系統(tǒng)就是網(wǎng)絡(luò)上的公交查詢網(wǎng)站,它的出現(xiàn)解決了現(xiàn)代公交乘客信息系統(tǒng)中的很多不足的地方,它的主要優(yōu)勢體現(xiàn)在省時、經(jīng)濟(jì)、準(zhǔn)確,這三個方面。從省時這個角度講,根據(jù)公交查詢系統(tǒng)人們能夠選擇從出發(fā)地到目的地的所有乘坐路線,在所有的的乘車路線中按自己的路線選擇。能夠選擇直達(dá)的,這樣節(jié)省的是車上時間。車下時間的節(jié)省更是很明顯的,不用再在路邊或者打電話詢問熟人了,由于現(xiàn)代網(wǎng)絡(luò)的普及使得普通公民上網(wǎng)的時間和機(jī)會越來越多,因此人們能夠很容易的從公交查詢網(wǎng)站捕獲到自己需要的信息,這節(jié)省的是車下時間。經(jīng)濟(jì)這方面也得到很好的體現(xiàn),由于現(xiàn)代公交乘客信息系統(tǒng)存在的消息捕獲得不到保證,在這個時間就是金錢的時代人們可不愿意乘錯車而錯失自己的金錢。準(zhǔn)確性是整個公交系統(tǒng)中的一個重點(diǎn)也是人們最希望得到保證的,公交查詢系統(tǒng)根據(jù)公交線路的調(diào)整及時更新數(shù)據(jù)庫使得人們不必為自己的錯誤記憶或是不熟悉線路而付出時間和金錢的代價,目的才是最終想要的,因此準(zhǔn)確性才是最重要的.1系統(tǒng)開發(fā)原理及開發(fā)方案1.1數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)方法1.1.1數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)步驟數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)過程能夠分為六個階段:(1)需求分析。進(jìn)行數(shù)據(jù)庫設(shè)計(jì)首先必須準(zhǔn)確了解與分析用戶需要(包括數(shù)據(jù)與處理)。需求分析是整個設(shè)計(jì)過程的基礎(chǔ),是最困難、最耗費(fèi)時間的一步。作為地基的需求分析是否做得充分與準(zhǔn)確,決定了在其上構(gòu)建數(shù)據(jù)庫大廈的速度與質(zhì)量。需求分析做得不好,甚至?xí)?dǎo)致整個數(shù)據(jù)庫設(shè)計(jì)返工重做。(2)概念結(jié)構(gòu)設(shè)計(jì)。概念結(jié)構(gòu)設(shè)計(jì)是整個數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵,它經(jīng)過對用戶需求進(jìn)行綜合、歸納與抽象,形成一個獨(dú)立于具體DBMS(DatabaseManagementSystem,數(shù)據(jù)庫管理系統(tǒng))的概念模型。(3)邏輯結(jié)構(gòu)設(shè)計(jì)。邏輯結(jié)構(gòu)設(shè)計(jì)是將概念結(jié)構(gòu)轉(zhuǎn)換為某個DBMS所支持的數(shù)據(jù)模型,并對其進(jìn)行優(yōu)化。(4)數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì)。數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì)是為邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)和存取方法)。(5)數(shù)據(jù)庫實(shí)施。在數(shù)據(jù)庫實(shí)施階段,設(shè)計(jì)人員運(yùn)用DBMS提供的數(shù)據(jù)語言及其宿主語言,根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫,編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫,并進(jìn)行試運(yùn)行。(6)數(shù)據(jù)庫運(yùn)行和維護(hù)。數(shù)據(jù)庫應(yīng)用系統(tǒng)經(jīng)過試運(yùn)行后即能夠投入正式運(yùn)行。在數(shù)據(jù)庫系統(tǒng)運(yùn)行過程中必須不斷地對其進(jìn)行評價、調(diào)整和修改。設(shè)計(jì)一個完善的數(shù)據(jù)庫應(yīng)用系統(tǒng)是不可能一蹴而就的,它往往是上述六個階段的不斷重復(fù)。這個設(shè)計(jì)步驟既是數(shù)據(jù)庫設(shè)計(jì)的過程,也包括了數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)過程。在設(shè)計(jì)過程中數(shù)據(jù)處理的設(shè)計(jì)緊密結(jié)合起來,將這兩個方面的需求分析、抽象、設(shè)計(jì)、實(shí)現(xiàn)在各個階段同時進(jìn)行,相互參照,相互補(bǔ)充,以完善兩方面的設(shè)計(jì)。事實(shí)上,如果不了解應(yīng)用環(huán)境對數(shù)據(jù)的處理要求,或沒有考慮如何去實(shí)現(xiàn)這些處理要求,是不可能設(shè)計(jì)一個良好的數(shù)據(jù)庫結(jié)構(gòu)的。1.1.2概念設(shè)計(jì)的方法與步驟設(shè)計(jì)概念結(jié)構(gòu)一般有四類方法:(1)自頂向下。即首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化。(2)自底向上。即首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來,得到全局概念結(jié)構(gòu)。(3)逐步擴(kuò)張。首先定義最重要的核心概念結(jié)構(gòu),然后向外擴(kuò)張,以滾雪球的方式逐步生成其它概念結(jié)構(gòu),直至總體概念結(jié)構(gòu)。(4)混合策略。即將自頂向下和自底向上相結(jié)合,用自頂向下策略設(shè)計(jì)一個全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu)。1.2J2SE技術(shù)Java2標(biāo)準(zhǔn)版是一種開發(fā)和部署平臺,提供了編寫桌面、工作站應(yīng)用程序所有必須的功能。J2SE軟件是快速開發(fā)、部署關(guān)鍵任務(wù)和企業(yè)應(yīng)用程序的首選解決方案。J2SE1.4版本是基于Java跨平臺技術(shù)和強(qiáng)有力的安全模塊而開發(fā)的,其最新的特征和功能極大地提高了Java語言的伸縮性、靈活性、適用性,以及可靠性。J2SE1.4特點(diǎn):1.良好的計(jì)算性能和縮放能力。J2SE1.4版是一個快速開發(fā)和配置跨平臺的企業(yè)級應(yīng)用與服務(wù)的綜合性平臺。它提升了Java計(jì)算的性能與縮放能力,代表了Java技術(shù)的大跨步進(jìn)展。有了J2SE1.4版,企業(yè)就能夠經(jīng)過更簡易的步驟、花費(fèi)更少的時間,采用Java技術(shù)開發(fā)與配置要求更高的應(yīng)用了。J2SE1.4版在Java客戶機(jī)應(yīng)用方面得到了重大性能提升。基于Swing的Java小程序和應(yīng)用程序在圖形用戶界面(GUI)的響應(yīng)速度上也大有提高。2.跨平臺。J2SE1.4版是一個具有綜合性能的平臺,能使一個完整的、可縮放的高性能應(yīng)用配置在任何種類的平臺上。3.支持Web服務(wù)。J2SE1.4版與以前各J2SE版全面兼容。J2SE1.4版對SSL、LDAP和CORBA等業(yè)界標(biāo)準(zhǔn)技術(shù)也給予支持,因此保證了在不同平臺、系統(tǒng)和環(huán)境間的互操作能力。J2SE1.4版支持XML技術(shù)和一整套安全服務(wù),因此為基于各類標(biāo)準(zhǔn)的可互操作應(yīng)用與服務(wù)的創(chuàng)立奠定了重要基礎(chǔ)。有了J2SE1.4版與JavaWebServicesDeveloperPack的結(jié)合,開發(fā)商就能創(chuàng)立、測試和配置Web服務(wù)了。4.完整性J2SE1.4版還是一個完整的開發(fā)環(huán)境。開發(fā)商可基于這一環(huán)境創(chuàng)立功能豐富的交互式應(yīng)用。這些應(yīng)用能夠配置在任何平臺上。J2SE1.4具有新的GUI控制功能、快速的Java2DT圖形功能、支持國際化與本地化擴(kuò)展和新的配置選項(xiàng),并對WindowsXP提供擴(kuò)展支持。總之,J2SE1.4版是多種不同風(fēng)格軟件的開發(fā)基礎(chǔ),包括客戶端Java小程序和應(yīng)用程序,以及獨(dú)立的服務(wù)器應(yīng)用程序等。J2SE1.4版還是J2ME的基礎(chǔ),是J2EE執(zhí)行程序的推動力。Java之因此能夠發(fā)展得很快,是因?yàn)榛ヂ?lián)網(wǎng)的發(fā)展非??臁ava能夠和瀏覽器結(jié)合在一起,因而很自然地在桌面系統(tǒng)得到廣泛應(yīng)用。從計(jì)算的結(jié)構(gòu)來看,Java主要分三大類:第一是服務(wù)器端,這里就有了J2EE企業(yè)版;第二是桌面PC,這一類用的是J2SE標(biāo)準(zhǔn)版;第三就是掌上電腦、移動設(shè)備,用的都是J2ME??墒?大部分非企業(yè)級軟件還是在J2SE上開發(fā)的比較多。首先,這是因?yàn)楹芏嗟膽?yīng)用軟件都是在J2SE上開發(fā)的;其次,J2SE是和J2EE兼容的,企業(yè)版是在標(biāo)準(zhǔn)版上的擴(kuò)充,在J2SE的版本上開發(fā)的軟件,拿到企業(yè)的平臺上是一樣能夠運(yùn)行的;再次,一般開發(fā)還是在J2SE的環(huán)境上,只是說J2ME提供微型版的一個環(huán)境。在J2SE上虛擬出一個環(huán)境,開發(fā)出來的應(yīng)用軟件是能夠拿到微型版上運(yùn)行的。為了使我們的程序在具有安全性、完整性、健壯性的同時,同時有能夠方便的移植,因此我們能夠采用JDBC連接數(shù)據(jù)庫。JDBC是一種可用于執(zhí)行SQL語句的JavaAPI。它由一些Java語言寫的類、界面組成,使開發(fā)人員能夠用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。用JDBC寫的程序能夠自動地將SQL語句傳送給相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)。在本地數(shù)據(jù)庫程序使用Microsoft的Access等數(shù)據(jù)庫時,我們能夠使用Sun公司開發(fā)的JDBC-ODBCBridge,用此技術(shù)JSP程序就能夠訪問帶有ODBC驅(qū)動程序的數(shù)據(jù)庫。這樣即保證了JDBC的優(yōu)點(diǎn)而且保證了純JSP程序的安全性、完整性、健壯性和可移植性,又能夠使用Microsoft提供的ODBC數(shù)據(jù)源與Access連接。不論對方是何種數(shù)據(jù)庫,只要有ODBC接口就能夠直接使用JDBC-ODBCBridge與數(shù)據(jù)庫連接,而無需因?yàn)楹蠖藬?shù)據(jù)庫的改變而改動相應(yīng)的程序代碼,實(shí)現(xiàn)了應(yīng)用層與數(shù)據(jù)庫層的完美分離。如果我們需要變后端數(shù)據(jù)庫為MySQL,只需要在ODBC數(shù)據(jù)源中安裝了MySQL的驅(qū)動程序之后,就能夠直接使用MySQL數(shù)據(jù)庫了。1.3系統(tǒng)的開發(fā)方案1.3.1JAVA開發(fā)環(huán)境要編寫Java的程序,至少需要具備以下3個條件。(1)需要具備一臺PC機(jī),從而能夠提供開發(fā)的硬件(2)需要在計(jì)算機(jī)上安裝java的JDK,并進(jìn)行環(huán)境變量的設(shè)置。(3)需要在計(jì)算機(jī)上安裝Myeclipse軟件,有利于開發(fā)效率的提高。要進(jìn)行Java的公交線路查詢系統(tǒng)的開發(fā)還必須具備下面的條件需要一個數(shù)據(jù)庫產(chǎn)品的支持,比如SQLServer安裝和配置JDK能夠到下載JDK并完成安裝。,完成安裝后,需要設(shè)置環(huán)境變量,如果操作系統(tǒng)是Windows7,則用鼠標(biāo)右鍵單擊”我的電腦”,選擇”屬性高級系統(tǒng)設(shè)置高級環(huán)境變量”,如下圖1-1圖1-1進(jìn)入環(huán)境變量的設(shè)置圖1-2環(huán)境變量在”用戶變量”下面的”新建”按鈕,依次建”classpath”,以及”path”環(huán)境變量。其內(nèi)容如下所示:CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;path=C:\jdk1.6.0_10\bin完成以上設(shè)置后,能夠新打開一個DOS窗口,分別鍵入java和javac命令測試一下,如果一切正常,就表明JDK安裝成功,從而能夠進(jìn)行下面的工作了。圖1-3測試JDK是否配置好1.3.2SQLServer簡介SQLServer是Micrcoft公司在原來和Sybase公司合作的基礎(chǔ)上打包出的一款面向高端的數(shù)據(jù)庫系統(tǒng)。自它推出后,迅速占領(lǐng)了的數(shù)據(jù)庫應(yīng)用市場。經(jīng)過不斷的更新?lián)Q代,它已發(fā)展到了SQLServer,它具有高性能、功能強(qiáng)、安全性好、易操作、易維護(hù)等優(yōu)點(diǎn),我們選擇SQLServer作為我們的數(shù)據(jù)庫,因?yàn)樗峁┝艘豢钔晟频臄?shù)據(jù)管理和數(shù)據(jù)分析解決方案。SQLServer包括4個常見版本。企業(yè)版(EnterpriseEdition)支持所有的SQLServer特性,可作為大型Web站點(diǎn)、企業(yè)OLTP(聯(lián)機(jī)事務(wù)處理)以及數(shù)據(jù)倉庫系統(tǒng)等的產(chǎn)品數(shù)據(jù)庫服務(wù)器。標(biāo)準(zhǔn)版(StandardEdition)用于小型的工作組或部門。個人版(PersonalEdition)用于單機(jī)系統(tǒng)或客戶機(jī)。開發(fā)者版(DeveloperEdition)用于程序員開發(fā)應(yīng)用程序,這些程序需要SQLServer作為數(shù)據(jù)存儲設(shè)備。我們設(shè)計(jì)的南昌市公交交線路查詢系統(tǒng)用的是開發(fā)版SQLServer。SQLServer的運(yùn)行。先打開服務(wù)如圖所示:狀態(tài)為正在運(yùn)行表示服務(wù)已經(jīng)啟動成功。然后就能夠啟動服務(wù)管理器了。圖1-4啟動SQLServer服務(wù)啟動服務(wù)管理器,輸入用戶名和密碼就能夠在里面進(jìn)行數(shù)據(jù)庫的設(shè)計(jì)了,如圖所示圖1-5登錄服務(wù)管理器2系統(tǒng)需求分析2.1系統(tǒng)運(yùn)行環(huán)境需求分析操作系統(tǒng):Win9x/XP//Win7軟件配置:系統(tǒng)必須安裝有JDK,MicrosoftSQLServer數(shù)據(jù)庫配置:MicrosoftSQLServer在PC機(jī)中新建數(shù)據(jù)庫,建立各個數(shù)據(jù)表、關(guān)系圖。2.2功能需求分析南昌市公交查詢系統(tǒng)系統(tǒng)的主要開發(fā)包括,客戶端應(yīng)用程序主要是指前臺的開發(fā)和后臺控制。服務(wù)器端數(shù)據(jù)庫的初始化,數(shù)據(jù)表,關(guān)系圖的建立,刪除。站站查詢——只要在我們設(shè)計(jì)的首頁中相應(yīng)的地方輸入起站點(diǎn)和要到達(dá)的目的地站點(diǎn),點(diǎn)擊”查詢”按鈕,就能夠查到你要到達(dá)目的地的所有乘車方式,這里所有的乘車方式包括了直接到達(dá)目的地的和所有需要倒車才能到達(dá)的路線。這樣節(jié)省了一些想直接到達(dá)目的地乘客的時間也方便了一些想再中途辦事的人。站點(diǎn)查選——輸入你知道的站點(diǎn)的名字就能夠列出經(jīng)過該站點(diǎn)的公交線路,然后你能夠根據(jù)線路選擇你需要的線路來到達(dá)你的目的地。臨近查詢——你可能不知道站點(diǎn)名字,但你可能知道挨近哪個地方,這樣你能夠輸入這個地點(diǎn),列出靠近這個地點(diǎn)的公交線路。線路查詢——根據(jù)你知道的線路號來進(jìn)行查選,直截了當(dāng),給你最快的信息。后臺管理——這個后臺管理系統(tǒng)體現(xiàn)了人性化的設(shè)計(jì)。能夠根據(jù)公交實(shí)際的線路的增添、線路的修改、站點(diǎn)的增添、站點(diǎn)的刪除進(jìn)行改進(jìn)。只要在管理員登陸后,就能夠增加新線路、增加新站點(diǎn)、增加新建筑物、修改線路、修改線路屬性、線路刪除、建筑物刪除、站點(diǎn)刪除等來完成與實(shí)際相符合的路線。這一功能更加的體現(xiàn)了公交線路的靈活性。2.3系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)與系統(tǒng)功能模塊設(shè)計(jì)2.3.1系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)公交查詢系統(tǒng)公交查詢系統(tǒng)公交查詢模塊數(shù)據(jù)后臺管理模塊圖2-2系統(tǒng)總體結(jié)構(gòu)圖整個系統(tǒng)數(shù)據(jù)庫用戶2.3.2系統(tǒng)功能結(jié)構(gòu)設(shè)計(jì)公交查詢子系統(tǒng)是這個系統(tǒng)的一個重要的模塊,它快捷、方便、準(zhǔn)確的提供了乘客所需要的乘車路線。查詢模塊(一)首先給出查詢的條件比如是站點(diǎn)查詢,線路查詢等(二)根據(jù)查詢條件進(jìn)入相關(guān)界面(三)進(jìn)入見面后,根據(jù)用戶輸入的關(guān)鍵字進(jìn)行查詢,檢查用戶是否錄入了相關(guān)數(shù)據(jù),如果沒有錄入,則提示:請將查詢條件填寫完整! (四)如果出發(fā)站點(diǎn)和目標(biāo)站點(diǎn)都填寫了,則進(jìn)入系統(tǒng)服務(wù)類根據(jù)給定的條件進(jìn)行查找。后臺管理模塊是很重要的一個模塊,為了不讓普通乘客隨意的添加路線、修改路線、刪除路線等,我們給后臺設(shè)計(jì)了專用的帳號和密碼,只供專業(yè)人員進(jìn)入,進(jìn)行整個系統(tǒng)數(shù)據(jù)的修改工作。后臺管理模塊 (一)增加新線路:首先選擇市區(qū)路線和郊區(qū)路線,然后輸入線路名稱,追個輸入站點(diǎn)名字后點(diǎn)確定后即添加成功。 (二)修改線路:選擇線路或者直接輸入線路號。然后選擇你需要修改的站點(diǎn)名稱點(diǎn)擊確定即修改成功。 (三)線路刪除:選擇線路或者直接輸入線路號。然后點(diǎn)擊確定后即刪除成功。(四)站點(diǎn)、建筑物添加、修改、刪除跟上述增加新線路、修改線路、線路刪除操作大同小異就不一一介紹了。 (五)查詢操作:根據(jù)查詢條件進(jìn)行查詢,這里以便管理員對線路的維護(hù)。后臺管理模塊增加后臺管理模塊增加新線路修改路線增加新站點(diǎn)登陸模塊增加新建筑物建筑物刪除站點(diǎn)刪除修改線路屬性查詢模塊圖2-2后臺管理模塊圖整個系統(tǒng)的設(shè)計(jì)仿佛是分了模塊,可是很多模塊之間的設(shè)計(jì)都在相互的影響著,做某個模塊的時候可能需要調(diào)整其它的模塊,因此這些模塊都是在相互作用的同時相互改進(jìn),最后達(dá)到統(tǒng)一和諧的一個整體。2.3.3系統(tǒng)用戶權(quán)限的界定為保證系統(tǒng)數(shù)據(jù)的安全性,防止非法訪問數(shù)據(jù)和出現(xiàn)數(shù)據(jù)丟失、數(shù)據(jù)隨意改變現(xiàn)象,需要對數(shù)據(jù)庫實(shí)施保護(hù)。主要保護(hù)措施是:防止非法訪問,對使用權(quán)限做出劃分,不同身份的人員進(jìn)入系統(tǒng)后操作的權(quán)限進(jìn)行界定;防止故障的產(chǎn)生必定進(jìn)行定期的備份。具體說明如下:在用戶管理與權(quán)限設(shè)置方面,根據(jù)系統(tǒng)的實(shí)際情況和從簡化系統(tǒng)出發(fā),對于前臺所有乘客都是開放的,但后臺數(shù)據(jù)庫做嚴(yán)格的權(quán)限控制,只能管理員才能進(jìn)入。使用整個系統(tǒng)的人員,能夠劃分為2類:(一)系統(tǒng)管理員:系統(tǒng)管理人員對系統(tǒng)擁有最高權(quán)限,能夠?qū)笈_控制模塊進(jìn)行操作,由于后臺控制模塊能夠控制整個系統(tǒng)的所有數(shù)據(jù)的增,刪,改操作,因此我們在前臺就設(shè)計(jì)了一個訪問后臺的登陸器來直接設(shè)定系統(tǒng)管理員,前臺設(shè)定系統(tǒng)管理員的界面。她除了對系統(tǒng)一般數(shù)據(jù)的控制權(quán),還能夠直接刪除其它用戶。因此她是最高的權(quán)限者。這一角色由系統(tǒng)設(shè)計(jì)人員直接設(shè)定。(二)普通乘客:普通乘客指不需注冊的用戶,她的權(quán)限最低,在公交查詢系統(tǒng)她能夠進(jìn)行所有的線路查詢的權(quán)利,可是沒有增加個修改路線的權(quán)限,她是兩種用戶中權(quán)限最低的用戶。2.4數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)是建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開發(fā)和建設(shè)中的核心技術(shù)。數(shù)據(jù)庫設(shè)計(jì)是指對于一個給定的應(yīng)用環(huán)境,結(jié)構(gòu)最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應(yīng)用的需要(信息要求和處理要求)。2.4.1數(shù)據(jù)庫需求分析由于本系統(tǒng)面向的對象有2個,即普通乘客和系統(tǒng)管理員,因此在數(shù)據(jù)庫分析中就要考慮二方面的因素。(1)對于普通乘客來說,就她們關(guān)心和能夠使用的功能總結(jié)出如下需求信息。用戶查詢:對于任何用戶,只要瀏覽本本系統(tǒng)的首頁,就能夠根據(jù)自己的需求進(jìn)行線路的查詢。(2)對于系統(tǒng)管理員來說,她的權(quán)限最大,除了以上的功能,她還具有的功能主要體現(xiàn)在后臺管理,歸納如下。線路管理:根據(jù)系統(tǒng)的需要和公交線路的調(diào)整,能夠?qū)崿F(xiàn)線路添加和刪除等操作。站臺管理:根據(jù)系統(tǒng)的需要和公交線路的調(diào)整,能夠?qū)崿F(xiàn)站臺添加和刪除等操作。3公交查詢系統(tǒng)的設(shè)計(jì)流程下面來看整個公交查詢系統(tǒng)的設(shè)計(jì)流程,從后臺數(shù)據(jù)管理模塊到站站查詢模塊,把每個功能的設(shè)計(jì)流程描敘如下:3.1系統(tǒng)實(shí)現(xiàn)前臺功能分為公交查詢模塊和后臺數(shù)據(jù)管理模塊這二個部分組成。先來看看整個網(wǎng)站的首頁效果圖,因?yàn)槲覀円脤?shí)現(xiàn)查詢,因此我們需要讓這個界面處于簡單話,這樣既節(jié)省了乘客查找的時間時間,又能很直接的顯示出乘客所需要查詢的路線。圖3-1系統(tǒng)首頁3.2后臺數(shù)據(jù)庫管理模塊后臺管理模塊要實(shí)現(xiàn)增加新線路、增加新站點(diǎn)、增加新建筑物、修改線路、修改線路屬性、線路刪除、建筑物刪除、站點(diǎn)刪除。(1)首先,顯示數(shù)據(jù)輸入的界面,由于后臺是一個支持前臺正常工作的一個系統(tǒng),因此我們需要給后臺設(shè)計(jì)一個登陸帳戶和密碼。來保障系統(tǒng)能夠正常運(yùn)行。(2)當(dāng)管理員輸入了數(shù)據(jù),單擊”保存”按鈕后,根據(jù)輸入的數(shù)據(jù)到后臺檢查是否有不符合的輸入,如果有則彈出相關(guān)提示的界面。如果沒有則對后臺數(shù)據(jù)操作,比如添加、修改等。(3)根據(jù)數(shù)據(jù)庫的后臺操作成功與否返回提示。這里我們給出了后臺登陸、線路添加和刪除的代碼與相應(yīng)的圖片。這里介紹的就是后臺登陸模塊,而且給出代碼。我們需要填寫用戶名和密碼單擊”確定”按鈕才能順利的進(jìn)入后臺管理區(qū)。后臺登陸界面如下圖3-2后臺登陸界面后臺登陸的代碼如下packagebus;importjava.sql.*;publicclassCheckUser{ Connectionconnection=Get_Exit_Connection.getConnection(); privateStringmuserid; privateStringmpwd; publicCheckUser(Stringuserid,Stringpwd) { muserid=userid; mpwd=pwd; } publicVoUsersgetUser() { Stringstrsql="select*fromUserswhereUserId=?"; VoUsersvu=newVoUsers(); try { PreparedStatementps=connection.prepareStatement(strsql); ps.setString(1,muserid); java.sql.ResultSetrs=ps.executeQuery(); if(rs.next()) { vu.setUserid(rs.getString(1)); vu.setUserpassword(rs.getString(2)); } else { vu.setUserid(""); vu.setUserpassword(""); } rs.close(); ps.close(); } catch(SQLExceptionsqle) { sqle.printStackTrace(); } returnvu; }}如果你的用戶名或者密碼填寫錯誤的話就會彈出一個對話框告訴你,你的用戶名或者密碼錯誤。后臺用戶名密碼登陸錯誤的代碼如下: publicvoidactionPerformed(ActionEventae) { if(ae.getSource().equals(btnre)) { this.cjb.setSelectedItem(""); this.txtpwd.setText(""); cjb.requestFocus(); } if(ae.getSource().equals(btnok)) { Stringname=(String)cjb.getSelectedItem(); if(name.length()<1) { JOptionPane.showMessageDialog(this,"登陸名不能為空!","提示",JOptionPane.INFORMATION_MESSAGE); this.cjb.requestFocus(); return; } Stringpwd=txtpwd.getText(); if(pwd.length()<1) { JOptionPane.showMessageDialog(this,"登陸密碼不能為空!","提示",JOptionPane.INFORMATION_MESSAGE); this.txtpwd.requestFocus(); return; } CheckUsercu=newCheckUser(name,pwd); VoUsersvs=(VoUsers)cu.getUser(); if(!(vs.getUserid().equals((String)cjb.getSelectedItem()))) { JOptionPane.showMessageDialog(this,"登陸名或密碼錯誤!","提示",JOptionPane.INFORMATION_MESSAGE); cjb.setSelectedItem(""); this.txtpwd.setText(""); this.cjb.requestFocus(); return; } if(!vs.getUserpassword().equals(txtpwd.getText())) { JOptionPane.showMessageDialog(this,"登陸名或密碼錯誤!","提示",JOptionPane.INFORMATION_MESSAGE); cjb.setSelectedItem(""); this.txtpwd.setText(""); this.cjb.requestFocus(); return; } } }登陸信息錯誤提示如圖3-2圖3-3登陸信息錯誤添加線路模塊隨著城市的發(fā)展,公交線路也在增加,因此我們有必要設(shè)置一個線路添加模塊來完善整個線路查詢系統(tǒng),使系統(tǒng)能夠查詢這個城市公交路線分布。下圖就是線路查詢系統(tǒng)的一個添加模塊,只要我們點(diǎn)擊添加,就能夠添加線路的名稱和站點(diǎn)了。在添加線路之前會在數(shù)據(jù)庫中的線路表中查找有沒有和你所要添加線路相同的線路,如果有會彈出線路已經(jīng)存在的對話框。如果沒有我們能夠進(jìn)行正常的線路添加了。下圖就是線路查詢系統(tǒng)的一個線路添加截圖,只要我們點(diǎn)擊添加新線路,就能夠在相應(yīng)的地方添加線路的名稱和站點(diǎn)了。圖3-4新增線路—選擇路線類型圖3-5新增線路—輸入線路名稱圖3-6新增線路—輸入站點(diǎn)名圖3-7新增線路—結(jié)果界面生成的代碼如下:packagebus;importjava.awt.BorderLayout;importjava.awt.Dimension;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JLabel;importjava.awt.*;importjavax.swing.JTextField;importjavax.swing.JButton;importjavax.swing.*;importjava.util.*;importjava.awt.event.*;publicclassStationTypeFrameextendsJDialogimplementsActionListener{ privateJPanelcontentPane;privateJComboBoxjcbtype;privateJLabellbltitle;privateJButtonbtnok;privateJButtonbtnclose; publicStationTypeFrame() { jcbtype=newJComboBox(); lbltitle=newJLabel(); btnok=newJButton(); btnclose=newJButton(); contentPane=(JPanel)getContentPane();contentPane.setLayout(null);setSize(newDimension(318,190));setTitle("請選擇線路類型");jcbtype.setBounds(newRectangle(54,50,190,35));lbltitle.setFont(newjava.awt.Font("Dialog",Font.BOLD,15));lbltitle.setText("請選擇線路類型:");lbltitle.setBounds(newRectangle(53,0,228,52));jcbtype.addItem("市區(qū)線路");jcbtype.addItem("郊區(qū)線路");btnok.setBounds(newRectangle(50,107,76,31));btnok.setText("確定");btnclose.setBounds(newRectangle(173,107,76,31));btnclose.setText("取消");contentPane.add(btnclose);contentPane.add(lbltitle);contentPane.add(jcbtype);contentPane.add(btnok); btnclose.addActionListener(this);btnok.addActionListener(this); /*將窗體設(shè)置為居中顯示*/DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();DimensionframeSize=this.getSize();if(frameSize.height>screenSize.height){frameSize.height=screenSize.height;}if(frameSize.width>screenSize.width){frameSize.width=screenSize.width;}this.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2); } publicvoidactionPerformed(ActionEventae){ if(ae.getSource().equals(btnclose)) { this.dispose(); } if(ae.getSource().equals(btnok)) { Stringtype=(String)jcbtype.getSelectedItem(); System.out.println(type); VoBusLinevb=newVoBusLine(); vb.settype(type); this.dispose(); newInsertBusidFrame(vb).setVisible(true); }}}實(shí)現(xiàn)插入線路的代碼如下packagebus;importjava.sql.*;importjava.util.*;importjavax.swing.*;publicclassInsertLine{ privateStringmUpline; privateStringmDownline; privateStringmBusid; privateStringmType; Connectionconnection=Get_Exit_Connection.getConnection(); publicInsertLine(Stringupline,Stringdownline,Stringbusid,Stringtype) { mUpline=upline; mDownline=downline; mBusid=busid; mType=type; } publicbooleancheckinsert() { Stringstrsql="insertintobuslinevalues(?,?,?,?)"; try { PreparedStatementps=connection.prepareStatement(strsql); ps.setString(1,mBusid); ps.setString(2,mUpline); ps.setString(3,mDownline); ps.setString(4,mType); intcount=ps.executeUpdate();ps.close(); returncount>0?true:false; } catch(SQLExceptionsqle) { sqle.printStackTrace(); returnfalse; } }}在添加完畢以后,就能夠在數(shù)據(jù)庫里運(yùn)行了。線路刪除和修改模塊其實(shí)我們這個刪除模塊和修改模塊是同一個模塊。這個系統(tǒng)設(shè)立了線路刪除和修改模塊,是根據(jù)公交線路的更改而設(shè)置的,有了刪除和修改這一模塊,我們就不用在為了一個站點(diǎn)的更換,而刪除整個線路了,就能夠從站點(diǎn)列表中更改所需要的站點(diǎn)了,這也是這個系統(tǒng)更加靈活了。能夠隨著條件的改變而做出相應(yīng)的變化。如果是刪除,選擇你要刪除或輸入你要的線路名稱就能夠達(dá)到刪除的目的。界面如下:圖3-6圖3-8刪除線路線路刪除的代碼如下packagebus;importjava.sql.*;importjava.util.*;publicclassDeleteByLine{ Connectionconnection=Get_Exit_Connection.getConnection(); publicDeleteByLine() { } publicbooleanDeleteLine_BusLine(Stringbusid) { Stringstrsql="deleteBusLinewhereBusId=?"; try { PreparedStatementps=connection.prepareStatement(strsql); ps.setString(1,busid); intcount=ps.executeUpdate(); ps.close(); returncount>0?true:false; } catch(SQLExceptionsqle) { sqle.printStackTrace(); returnfalse; } } publicbooleanDeleteLine_Attribute(Stringbusid) { Stringstrsql="deleteAttributewhereBusId=?"; try { PreparedStatementps=connection.prepareStatement(strsql); ps.setString(1,busid); intcount=ps.executeUpdate(); ps.close(); returncount>0?true:false; } catch(SQLExceptionsqle) { sqle.printStackTrace(); returnfalse; } } publicbooleanDeleteStation(Stringstation) { Vectorall=newVector(); try { StringstrUp="SELECTBUSID,UPLINEFROMBUSLINEWHEREUPLINELIKE'%"+station+"%'"; StringstrDown="SELECTBUSID,DOWNLINEFROMBUSLINEWHEREDOWNLINELIKE'%"+station+"%'"; Stringstrsql="deleteStationwherestation=?"; StatementstaUp=connection.createStatement(); ResultSetrsUp=staUp.executeQuery(strUp); while(rsUp.next()) { Stringid=rsUp.getString(1); Stringstr=rsUp.getString(2); Line_Disposeline=newLine_Dispose(str); line.remove(station); str=line.get_All(); Vectorvec=newVector(); vec.add(id); vec.add(str); all.add(vec); } rsUp.close(); staUp.close(); StringupdateUp="updatebuslinesetupline=?wherebusid=?"; for(inti=0;i<all.size();i++) { PreparedStatementpsUp=connection.prepareStatement(updateUp); Vectorvec=(Vector)all.get(i); psUp.setString(1,(String)vec.get(1)); psUp.setString(2,(String)vec.get(0)); psUp.executeUpdate(); psUp.close(); } all=newVector(); StatementstaDown=connection.createStatement(); ResultSetrsDown=staDown.executeQuery(strDown); while(rsDown.next()) { Stringid=rsDown.getString(1); Stringstr=rsDown.getString(2); Line_Disposeline=newLine_Dispose(str); line.remove(station); str=line.get_All(); Vectorvec=newVector(); vec.add(id); vec.add(str); all.add(vec); } rsDown.close(); staDown.close(); StringupdateDown="updatebuslinesetdownline=?wherebusid=?"; for(inti=0;i<all.size();i++) { PreparedStatementpsDown=connection.prepareStatement(updateDown); Vectorvec=(Vector)all.get(i); psDown.setString(1,(String)vec.get(1)); psDown.setString(2,(String)vec.get(0)); psDown.executeUpdate(); psDown.close(); } PreparedStatementps=connection.prepareStatement(strsql); ps.setString(1,station); intcount=ps.executeUpdate(); ps.close(); returncount>0?true:false; } catch(SQLExceptionsqle) { sqle.printStackTrace(); returnfalse; } } publicbooleanDeleteBuild(Stringbulid) { Stringstrsql="updateStationsetnearbuild=nullwherenearbuild=?"; try { PreparedStatementps=connection.prepareStatement(strsql); ps.setString(1,bulid); intcount=ps.executeUpdate(); ps.close(); returncount>0?true:false; } catch(SQLExceptionsqle) { sqle.printStackTrace(); returnfalse; } } publicbooleaninsertBuild(Stringstation,Stringnearbulid) { Stringstrsql="insertintostationvalues(?,?)"; try { PreparedStatementps=connection.prepareStatement(strsql); ps.setString(1,station); ps.setString(2,nearbulid); intcount=ps.executeUpdate(); ps.close(); returncount>0?true:false; } catch(SQLExceptionsqle) { sqle.printStackTrace(); returnfalse; } } publicbooleaninsertStation(Stringstation) { Stringstrsql="insertintostationvalues(?,null)"; try { PreparedStatementps=connection.prepareStatement(strsql); ps.setString(1,station); intcount=ps.executeUpdate(); ps.close(); returncount>0?true:false; } catch(SQLExceptionsqle) { sqle.printStackTrace(); returnfalse; } } }如需要把10線路中的”南昌大學(xué)”站點(diǎn)換成”天虹商場”站點(diǎn),我們就能夠經(jīng)過后臺修改模塊來做出相應(yīng)修改。修改實(shí)圖如下:圖3-9修改線路—修改站點(diǎn)名3.3查詢模塊這是我們設(shè)計(jì)的主要目的,就是為了讓乘客能到達(dá)最終所需要去的地方。1.站站查詢——在我們設(shè)計(jì)的界面中相應(yīng)的地方輸入起站點(diǎn)和要到達(dá)的目的地站點(diǎn),點(diǎn)擊”查詢”按鈕,就能夠查到你要到達(dá)目的地的所有乘車方式。2.站點(diǎn)查選——輸入你知道的站點(diǎn)的名字或根據(jù)站點(diǎn)的首字母來查詢,然后點(diǎn)擊”查詢”按鈕。3.臨近查詢——輸入建筑物名或根據(jù)建筑物的首字母來查詢,然后點(diǎn)擊”查詢”按鈕。4.線路查詢——輸入線路名稱,或直截根據(jù)界面上的數(shù)字來查詢,然后點(diǎn)擊”查詢”按鈕。3.3.1圖3-10站站查詢實(shí)現(xiàn)站站查選的代碼如下packagedemo;importjava.sql.*;importjava.util.*;importjavax.swing.*;importjavax.swing.table.*;/*雙站點(diǎn)查詢查詢類*/publicclassSelectTwoStation{ privateConnectionconnection=Get_Exit_Connection.getConnection(); privateVectorvecAll; privateVectorvecTitle; privateDefaultTableModeldtm; publicSelectTwoStation(Stringstation_one,Stringstation_two) { vecAll=newVector(); vecTitle=newVector(); vecTitle.add("車次"); vecTitle.add("起點(diǎn)站"); vecTitle.add("終點(diǎn)站"); StringstrUp="SELECTBUSID,UPLINEFROMBUSLINEWHEREUPLINELIKE'%"+station_one+"%"+station_two+"%'"; StringstrDown="SELECTBUSID,DOWNLINEFROMBUSLINEWHEREDOWNLINELIKE'%"+station_one+"%"+station_two+"%'"; try { StatementstaUp=connection.createStatement(); ResultSetrsUp=staUp.executeQuery(strUp); while(rsUp.next()) { Vectorvec=newVector(); Stringid=rsUp.getString(1)+"(上行)"; Stringupline=rsUp.getString(2); Line_Disposeline=newLine_Dispose(upline); Stringstart=line.get_First_Station(); Stringend=line.get_End_Station(); vec.add(id); vec.add(start); vec.add(end); vecAll.add(vec); } rsUp.close(); staUp.close(); } catch(SQLExceptionsqle) { sqle.printStackTrace(); } try { StatementstaDown=connection.createStatement(); ResultSetrsDown=staDown.executeQuery(strDown); while(rsDown.next()) { Vectorvec=

溫馨提示

  • 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

提交評論