




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
太原理工大學(xué)畢業(yè)設(shè)計(jì)(論文)用紙1緒論1.1課題來(lái)源城市交通問(wèn)題是本世紀(jì)以來(lái),工業(yè)發(fā)達(dá)國(guó)家一直為之困擾的問(wèn)題。進(jìn)入80年代以來(lái),我國(guó)城市的經(jīng)濟(jì)貿(mào)易和社會(huì)活動(dòng)日益繁忙,城市交通發(fā)生了前所未有的迅速增長(zhǎng),傳統(tǒng)的道路交通設(shè)施已經(jīng)不能適應(yīng)現(xiàn)代社會(huì)的需要。當(dāng)前,我國(guó)城市特別是大城市的交通問(wèn)題極其嚴(yán)重,如果不能得到有效解決和根本治理,必將對(duì)我國(guó)經(jīng)濟(jì)的持續(xù)、快速、健康發(fā)展構(gòu)成嚴(yán)重威脅。近年來(lái),隨著國(guó)民經(jīng)濟(jì)的迅速增長(zhǎng),私家車(chē)已經(jīng)進(jìn)入尋常百姓家,隨之而來(lái)的就是城市車(chē)輛數(shù)量的迅速增加,同時(shí)帶來(lái)的還有一個(gè)不可忽視的問(wèn)題――交通的運(yùn)行能力能否承受住這種新的考驗(yàn)。事實(shí)表明,現(xiàn)在各大中城市交通的運(yùn)行能力都在大幅下降,北京、上海這些大型城市的交通負(fù)載更是接近飽和。因此如何提高城市交通的負(fù)載能力,也就是一個(gè)急需解決的問(wèn)題。道路交通管理與控制是道路交通工程的一個(gè)重要組成部分,他的主要目的,是根據(jù)現(xiàn)有的道路網(wǎng)及其設(shè)施和出行分布狀況,對(duì)各種出行加以指導(dǎo)性管理,使整個(gè)系統(tǒng)從時(shí)間上盡可能地得到協(xié)調(diào)。隨著城市的快速發(fā)展,交通系統(tǒng)的問(wèn)題也日漸突出,如市區(qū)道路行車(chē)延誤增大,整體行駛車(chē)速過(guò)低等,其中最為關(guān)鍵的是交叉口的車(chē)流量已處于飽和狀態(tài)。分析其原因,主要是由于現(xiàn)有交叉口的幾何條件所限,以及缺少完善的交通管理設(shè)施。道路上交通標(biāo)志不規(guī)范,路口燈控率、十字路口渠劃率等衡量城市管理水平的重要指標(biāo)較低等等。為了解決交通擁擠的問(wèn)題,許多城市采取了完善路網(wǎng)和改善交通信號(hào)控制設(shè)施的措施,也提出許多新理論和新方法,在這一定程度上環(huán)節(jié)了交通擁擠的問(wèn)題。但是,交通系統(tǒng)的新理論和新方法受實(shí)踐限制,不能充分的進(jìn)行驗(yàn)證或者應(yīng)用于實(shí)際中;而道路交叉口或區(qū)域的交通控制系統(tǒng)參數(shù)的測(cè)算,由于計(jì)算煩瑣和時(shí)間情況的變化也不能達(dá)到最佳效果,無(wú)法知道動(dòng)態(tài)的情況。因此需要一種比較簡(jiǎn)便快捷的方法來(lái)設(shè)計(jì)交通控制系統(tǒng)或能對(duì)其完善性進(jìn)行評(píng)價(jià)和驗(yàn)證。通過(guò)計(jì)算機(jī),動(dòng)態(tài)模擬交通控制系統(tǒng),可以在一定程度上對(duì)道路交通系統(tǒng)進(jìn)行研究并得到較好的效果。1.2課題設(shè)計(jì)的主要內(nèi)容和意義建立本系統(tǒng)平臺(tái)的總體任務(wù)是實(shí)現(xiàn)電子交通模擬系統(tǒng)管理的系統(tǒng)化、規(guī)范化和自動(dòng)化,第一,提高管理部門(mén)的管理水平,幫助交通管理部門(mén)更好的運(yùn)營(yíng)。第二,可以更加方面用戶(hù)足不出門(mén)對(duì)電子交通模擬系統(tǒng)信息進(jìn)行管理。本課題設(shè)計(jì)的主要內(nèi)容可以概括為以下幾點(diǎn):(1)分析當(dāng)前電子交通模擬系統(tǒng)信息管理系統(tǒng)的需求以及應(yīng)用。(2)建立基于關(guān)系數(shù)據(jù)庫(kù)的共享數(shù)據(jù)庫(kù),以便于數(shù)據(jù)的查詢(xún)。(3)完成系統(tǒng)總體設(shè)計(jì)。系統(tǒng)管理員實(shí)現(xiàn)對(duì)系統(tǒng)各模塊信息的查詢(xún)。本課題設(shè)計(jì)的主要意義可以概括為以下幾點(diǎn):(1)保證系統(tǒng)對(duì)電子交通模擬系統(tǒng)的信息管理準(zhǔn)確無(wú)誤、快速輸出。(2)方便系統(tǒng)管理員對(duì)信息的查詢(xún)管理。(3)成本低、易于管理而且能夠滿(mǎn)足不同交通管理部門(mén)的需要。1.3系統(tǒng)開(kāi)發(fā)目標(biāo)本系統(tǒng)是現(xiàn)代市場(chǎng)經(jīng)濟(jì)條件下交通管理部門(mén)對(duì)電子交通模擬系統(tǒng)信息管理及查詢(xún)的行業(yè)性系統(tǒng),主要實(shí)現(xiàn)如下目標(biāo)。其主要功能如下:(1)時(shí)間的計(jì)時(shí)通過(guò)用戶(hù)輸入的紅綠燈時(shí)間進(jìn)行倒計(jì)時(shí)。(2)紅綠燈的切換用戶(hù)可以觀看紅綠燈在規(guī)定時(shí)間自動(dòng)轉(zhuǎn)換。(3)車(chē)輛的模擬通過(guò)用戶(hù)輸入的數(shù)據(jù),實(shí)現(xiàn)車(chē)輛。(4)日志查看用戶(hù)可以查看某一天的日志情況。
2技術(shù)分析2.1可行性分析電子交通模擬系統(tǒng)使交通管理部門(mén)管理走上了科學(xué)化管理的道路,但還要遵循經(jīng)濟(jì)性與技術(shù)性的原則。下面從經(jīng)濟(jì)性和技術(shù)性這兩個(gè)方面來(lái)研究該項(xiàng)目的可行性。2.1.1經(jīng)濟(jì)可行性該系統(tǒng)只需要一臺(tái)計(jì)算機(jī),運(yùn)行安裝oracle數(shù)據(jù)庫(kù)服務(wù)器即可,對(duì)于一個(gè)交通管理部門(mén)來(lái)說(shuō),這是很容易達(dá)到的,所以在經(jīng)濟(jì)上是可行的。系統(tǒng)開(kāi)發(fā)成本低廉,系統(tǒng)運(yùn)行管理簡(jiǎn)單,電子交通模擬系統(tǒng)可以全面展示十字路口的道路情況,為用戶(hù)帶來(lái)更多的資源,提高管理的工作效率。通過(guò)計(jì)算機(jī)對(duì)電子交通模擬系統(tǒng)、交通管理部門(mén)結(jié)果情況進(jìn)行管理,方便用戶(hù)對(duì)相關(guān)情況進(jìn)行查詢(xún),及時(shí)進(jìn)行溝通,提高工作質(zhì)量。2.1.2技術(shù)可行性本系統(tǒng)采用Java語(yǔ)言,基于Eclipse開(kāi)發(fā)平臺(tái),采用GUISwing,Oracle10g,JDBC技術(shù),開(kāi)發(fā)者掌握這些技術(shù)就可以具備開(kāi)發(fā)此系統(tǒng)的能力,這些技術(shù)都是公開(kāi)的,且開(kāi)發(fā)者容易掌握的。JAVA技術(shù)已經(jīng)非常成熟,數(shù)據(jù)庫(kù)技術(shù)也經(jīng)過(guò)多年的發(fā)展,故此結(jié)構(gòu)能滿(mǎn)足系統(tǒng)的穩(wěn)定性及各功能的需求。2.2關(guān)鍵技術(shù)分析2.2.1JAVA的概述Java語(yǔ)言是一種很優(yōu)秀的語(yǔ)言,具有面向?qū)ο?、與平臺(tái)無(wú)關(guān)、安全、穩(wěn)定和多線(xiàn)程等優(yōu)良特性,是目前軟件設(shè)計(jì)中極為健壯的編程語(yǔ)言。Java確確實(shí)實(shí)具備了“一旦寫(xiě)成處處可用”的特點(diǎn)。之所以稱(chēng)Java為革命性編程語(yǔ)言,是因?yàn)閭鹘y(tǒng)的軟件往往與具體的實(shí)現(xiàn)環(huán)境有關(guān),一旦環(huán)境有所變化就需要對(duì)軟件作一番改動(dòng),耗時(shí)費(fèi)力,而Java編寫(xiě)的軟件能在執(zhí)行代碼上兼容。這樣,只要計(jì)算機(jī)提供了Java解釋器,Java編寫(xiě)的軟件就能在其上運(yùn)行?,F(xiàn)將JAVA語(yǔ)言的特點(diǎn)介紹如下:1.簡(jiǎn)單Java與C的區(qū)別是C是面向過(guò)程的語(yǔ)言,而Java是面向?qū)ο蟮恼Z(yǔ)言,Java與C++語(yǔ)言非常相近,但比C++簡(jiǎn)單,在Java中取消息了對(duì)指針的操作,拋棄了C++中的一些不是絕對(duì)必要的功能,如頭文件、預(yù)處理文件、指針、結(jié)構(gòu)、運(yùn)算符重載、多重繼承以及自動(dòng)強(qiáng)迫同型。Java實(shí)現(xiàn)了自動(dòng)的垃圾收集,簡(jiǎn)化了內(nèi)存管理的工作。2.面向?qū)ο驤ava是面向?qū)ο蟮恼Z(yǔ)言,將世間萬(wàn)物都看成對(duì)象,將對(duì)象所具有的共性抽取出來(lái),就是對(duì)象的類(lèi)。Java提供了簡(jiǎn)單的類(lèi)機(jī)制和動(dòng)態(tài)的構(gòu)架模型。對(duì)象中封裝了它的狀態(tài)變量和方法,很好地實(shí)現(xiàn)了模塊化和信息隱藏;而類(lèi)則提供了一類(lèi)對(duì)象的原型,通過(guò)繼承和重載機(jī)制,子類(lèi)可以使用或重新定義父類(lèi)或超類(lèi)所提供的方法,從而既實(shí)現(xiàn)了代碼的復(fù)用。3.多線(xiàn)程多線(xiàn)程的實(shí)現(xiàn)方式可以通過(guò)軟件或硬件實(shí)現(xiàn),Java是語(yǔ)言級(jí)別的多線(xiàn)程,通過(guò)JVM實(shí)現(xiàn),多線(xiàn)程使應(yīng)用程序可以同時(shí)進(jìn)行不同的操作,處理不同的事件。在多線(xiàn)程機(jī)制中,不同的線(xiàn)程處理不同的任務(wù),他們之間互不干涉,不會(huì)由于一處等待影響其他部分,這樣容易實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時(shí)交互操作。4.跨平臺(tái)Java是通過(guò)JVM實(shí)現(xiàn)其跨平臺(tái)的,JVM通過(guò)不同的接口與操作系統(tǒng)交互,上層通過(guò)相同的接口與Java語(yǔ)言交互,Java是一種網(wǎng)絡(luò)語(yǔ)言,為使Java程序能在網(wǎng)絡(luò)的任何地方運(yùn)行,Java解釋器生成與體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)碼結(jié)構(gòu)的文件格式。Java語(yǔ)言環(huán)境還提供了用于訪問(wèn)底層操作系統(tǒng)功能的類(lèi)組成的包,當(dāng)程序使用這些包時(shí),可以確保它能運(yùn)行在各種支持Java的平臺(tái)上。5.安全性用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵,Java不支持指針,一切對(duì)內(nèi)存的訪問(wèn)都必須通過(guò)對(duì)象的實(shí)例變量來(lái)實(shí)現(xiàn),這樣就防止了程序員使用欺騙手段訪問(wèn)對(duì)象的私有成員,同時(shí)也避免了指針操作中容易產(chǎn)生的錯(cuò)誤。6.動(dòng)態(tài)性Java的設(shè)計(jì)使它適合于一個(gè)不斷發(fā)展的環(huán)境。在類(lèi)庫(kù)中可以自由地加入新的方法和實(shí)例變量而不會(huì)影響用戶(hù)程序的執(zhí)行。并且Java通過(guò)接口來(lái)支持多重繼承,使之比嚴(yán)格的類(lèi)繼承具有更靈活的方式和擴(kuò)展性。Java程序的基本組成單元就是類(lèi)。有些類(lèi)是自己編定的,有些類(lèi)是從類(lèi)庫(kù)中引入的,而類(lèi)又是運(yùn)行時(shí)動(dòng)態(tài)裝載的,這就使得Java可以在分布環(huán)境中動(dòng)態(tài)的維護(hù)程序及類(lèi)庫(kù)。2.2.2Swing的概述GUI(GraphicsUserInterface)是指圖形用戶(hù)接口,當(dāng)Java在1995年的春天第一次發(fā)布的時(shí)候,它包含了一個(gè)叫AWT(AbstractWindowingToolkit)的庫(kù),用來(lái)構(gòu)建圖形用戶(hù)界面應(yīng)用程序。Java很有雄心的宣言--"writeonce,runanywhere"許諾:一個(gè)具有下拉菜單,命令按鈕,滾動(dòng)條以及其他常見(jiàn)的GUI控件的應(yīng)用程序?qū)⒛軌蛟诟鞣N操作系統(tǒng)上運(yùn)行而不必重新編譯成針對(duì)某一平臺(tái)的二進(jìn)制代碼,包括MicrosoftWindows,Sun’sownSolaris,Apple’sMacOS以及Linux。雖然最初Java是支持操作系統(tǒng)獨(dú)立的應(yīng)用程序開(kāi)發(fā),在Java提出"writeonce,runanywhere"宣言那段時(shí)間的革命導(dǎo)致了Javaapplet和主導(dǎo)桌面應(yīng)用程序計(jì)劃的產(chǎn)生。盡管從那以后大部分構(gòu)建桌面應(yīng)用程序的成就都慢慢衰退,Java構(gòu)建圖形用戶(hù)界面的能力反倒增強(qiáng)了。跟蹤JavaGUI的發(fā)展和演化,我們將發(fā)現(xiàn)3個(gè)主要的構(gòu)建窗口程序庫(kù):AWT,Swing和SWT(StandardWidgetToolkit)。在本系統(tǒng)中,主要采用的是Swing。Swing是SUN公司退出的第二代圖形用戶(hù)接口工具包,通過(guò)Swing可以開(kāi)發(fā)出功能強(qiáng)大,界面優(yōu)美的客戶(hù)應(yīng)用程序。Swing不但提供了很多功能完善的控件,而且其還具有良好的擴(kuò)展能力,用Swing來(lái)進(jìn)行交互界面的開(kāi)發(fā)是一件另開(kāi)發(fā)人員非常愉快的工作。Swing從誕生到現(xiàn)在大致經(jīng)歷了如下幾個(gè)階段。Swing項(xiàng)目是從1996年底開(kāi)始的,在項(xiàng)目開(kāi)始的同時(shí)所有的參與者共同選定了這個(gè)名稱(chēng),目的就是開(kāi)發(fā)一個(gè)不依賴(lài)于本地系統(tǒng)的圖形用戶(hù)接口工具包。1997年后半年Swing進(jìn)入測(cè)試階段,并在1998年春隨同JDK1.1首次發(fā)行,對(duì)于JDK1.1之前的版本,是不能使用Swing庫(kù)的。Swing從首次發(fā)行開(kāi)始,就不斷快速的成長(zhǎng),自JDK1.2之后,便被完全集成到了java的標(biāo)準(zhǔn)類(lèi)庫(kù)中,成為java基礎(chǔ)類(lèi)庫(kù)(JFC)大家族中一個(gè)重要組成部分。Swing的特點(diǎn)Swing的特點(diǎn)主要包括完全輕量級(jí)的控件、可插拔的感觀風(fēng)格、更多的控件擴(kuò)展3個(gè)方面。完全輕量級(jí)的控件:幾乎所有的Swing控件都是輕量級(jí)的、純java開(kāi)發(fā)的,這樣在控件對(duì)自己進(jìn)行繪制時(shí)就不會(huì)依賴(lài)本地操作系統(tǒng)平臺(tái)的對(duì)等控件,而是使用繪制圖形的基本元素直接通過(guò)java平臺(tái)在屏幕上進(jìn)行繪制,這樣就避免了早期不是使用輕量級(jí)控件的java圖形用戶(hù)界面程序在不同的操作系統(tǒng)中運(yùn)行時(shí)有不同的外觀,切換操作系統(tǒng)后顯示不正常等問(wèn)題??刹灏蔚母杏^風(fēng)格:Swing在界面顯示上很吸引人的一點(diǎn)就是支持可插拔的感觀風(fēng)格,主要包含以下幾個(gè)方面:Swing能夠模擬各種不同操作系統(tǒng)的感觀風(fēng)格,其類(lèi)庫(kù)中就包含了Windows,UnixMotif,LinuxGTK,MacOSX以及JavaMetal等感觀風(fēng)格。如果有需要,開(kāi)發(fā)人員還可以通過(guò)系統(tǒng)提供的接口編寫(xiě)自定義的感觀風(fēng)格。Swing還允許用戶(hù)在不關(guān)閉應(yīng)用程序的情況下,在各種感觀風(fēng)格之間進(jìn)行自由切換。系統(tǒng)自帶的JavaMetal感觀風(fēng)格合并了眾多風(fēng)格中最好的圖形元素,甚至增加了一些屬于其自己的特性?,F(xiàn)在的Metal感觀風(fēng)格支持多種不同的主題,各主題之間在顏色和字體等方面都有所不同,用戶(hù)如果有需要,還可以開(kāi)發(fā)自己的主題。更多的控件擴(kuò)展:Swing中增加了許多新的控件并且為每個(gè)控件都增加了工具提示的功能,同時(shí)Swing還支持任意數(shù)量嵌套邊框的鑲邊替代物,并且可以任意的將鍵盤(pán)事件綁定到控件中。2.2.3eclipse簡(jiǎn)介根據(jù)需求分析及功能分析,選用Eclipse集成開(kāi)發(fā)工具及Oracle數(shù)據(jù)庫(kù)來(lái)開(kāi)發(fā)此系統(tǒng)。1.Eclipse的起源和發(fā)展Eclipse的前身是IBM的VisualAge。由于意識(shí)到VisualAge存在難以擴(kuò)展、底層技術(shù)較為脆弱、很難與WebSphereStudio軟件集成等諸多問(wèn)題,進(jìn)一步發(fā)展甚為困難,同時(shí)也面臨包括Symantec公司的VisualCafe、Borland公司的JBuilder等開(kāi)發(fā)工具的競(jìng)爭(zhēng)壓力,IBM決定創(chuàng)建一個(gè)更開(kāi)放的,并且可以為IBM其他開(kāi)發(fā)工具提供支持的一體化開(kāi)發(fā)平臺(tái)。1998年11月,IBM專(zhuān)門(mén)成立了一個(gè)項(xiàng)目開(kāi)發(fā)小組,開(kāi)始開(kāi)發(fā)該平臺(tái),2000年新一代開(kāi)發(fā)平臺(tái)誕生,這就是大家所熟悉的Eclipse。2000年11月,IBM做出了一個(gè)重大決定,將Eclipse采用開(kāi)放源碼的授權(quán)和運(yùn)作模式發(fā)布,以增強(qiáng)業(yè)界對(duì)Eclipse的關(guān)注度并加快其推廣應(yīng)用速度。隨后,IBM于2001年12月向外界宣布,捐贈(zèng)價(jià)值4千萬(wàn)美元的Eclipse源碼給開(kāi)源社區(qū);成立由成員公司組成的Eclipse協(xié)會(huì)(EclipseConsortium),以便支持并促進(jìn)Eclipse開(kāi)源項(xiàng)目。事實(shí)證明,IBM的決策非常英明。Eclipse受到廣泛關(guān)注,蜂擁而至的用戶(hù)使得其下載服務(wù)器一度阻塞,給業(yè)界帶來(lái)了久違的震撼!IBM趁熱打鐵,在EclipseCon2004上宣布成立一個(gè)獨(dú)立的、非盈利性的基金會(huì),由該基金會(huì)負(fù)責(zé)管理和指導(dǎo)Eclipse開(kāi)發(fā),目前其成員多達(dá)近百家知名公司,其中包括Borland、RationalSoftware、RedHat、Sybase、Google和Oracle等業(yè)界巨頭。Eclipse開(kāi)發(fā)狀態(tài)非常活躍,目前成熟穩(wěn)定的版本是3.2,正在開(kāi)發(fā)的版本是3.3,已經(jīng)成為業(yè)界主要的非微軟軟件開(kāi)發(fā)平臺(tái)。2.Eclipse的優(yōu)勢(shì)目前全球有上百萬(wàn)人在使用Eclipse進(jìn)行開(kāi)發(fā)。為什么Eclipse擁有如此眾多的用戶(hù)?這與Eclipse集眾多特性于一身有很大關(guān)系。Eclipse是開(kāi)放源代碼的軟件。這意味著Eclipse不僅可以免費(fèi)使用,還可以通過(guò)研究源代碼學(xué)習(xí)世界上頂尖開(kāi)發(fā)人員的編程技術(shù),并可以共享遍布全球的開(kāi)發(fā)人員所貢獻(xiàn)的公共開(kāi)放源代碼庫(kù)。Eclipse是真正可擴(kuò)展并可配置的。Eclipse采用插件機(jī)制,猶如一個(gè)花瓶,你可以隨時(shí)向花瓶里面插花,也可以很容易將不再需要的花取出。Eclipse支持眾多的開(kāi)發(fā)語(yǔ)言而不僅僅是Java。Eclipse只是給開(kāi)發(fā)人員提供了一個(gè)能夠擴(kuò)展系統(tǒng)功能的最小核心,基于擴(kuò)展點(diǎn)的插件體系結(jié)構(gòu)使得Eclipse支持多種語(yǔ)言成為可能。只要安裝相應(yīng)語(yǔ)言的插件,Eclipse就可以支持該種語(yǔ)言的開(kāi)發(fā)。目前,Eclipse已經(jīng)可以支持C、COBOL、PHP、Perl、Python等多種語(yǔ)言。Eclipse提供了對(duì)多重平臺(tái)特性的支持。開(kāi)發(fā)者可以使用他們感覺(jué)最舒適、最熟悉的平臺(tái),例如Windows、Linux等。Eclipse對(duì)每個(gè)平臺(tái)都有其單獨(dú)的圖形工具包,這使得應(yīng)用程序具有接近本地操作系統(tǒng)的外觀和更好的性能。2.2.4JDBC技術(shù)簡(jiǎn)介1996年,SUN公司提出JDBC即JavaDataBaseConnectivity;JDBCTM(trademark);JDBC(java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語(yǔ)句就是一件很容易的事。換言之,有了JDBCAPI,就不必為訪問(wèn)Sybase數(shù)據(jù)庫(kù)專(zhuān)門(mén)寫(xiě)一個(gè)程序,為訪問(wèn)Oracle數(shù)據(jù)庫(kù)又專(zhuān)門(mén)寫(xiě)一個(gè)程序,或?yàn)樵L問(wèn)Informix數(shù)據(jù)庫(kù)又編寫(xiě)另一個(gè)程序等等,程序員只需用JDBCAPI寫(xiě)一個(gè)程序就夠了,它可向相應(yīng)數(shù)據(jù)庫(kù)發(fā)送SQL調(diào)用。同時(shí),將Java語(yǔ)言和JDBC結(jié)合起來(lái)使程序員不必為不同的平臺(tái)編寫(xiě)不同的應(yīng)用程序,只須寫(xiě)一遍程序就可以讓它在任何平臺(tái)上運(yùn)行,這也是Java語(yǔ)言“編寫(xiě)一次,處處運(yùn)行”的優(yōu)勢(shì)。Java數(shù)據(jù)庫(kù)連接體系結(jié)構(gòu)是用于Java應(yīng)用程序連接數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)方法。JDBC對(duì)Java程序員而言是API,對(duì)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)連接的服務(wù)提供商而言是接口模型。作為API,JDBC為程序開(kāi)發(fā)提供標(biāo)準(zhǔn)的接口,并為數(shù)據(jù)庫(kù)廠商及第三方中間件廠商實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接提供了標(biāo)準(zhǔn)方法。JDBC使用已有的SQL標(biāo)準(zhǔn)并支持與其它數(shù)據(jù)庫(kù)連接標(biāo)準(zhǔn),如ODBC之間的橋接。JDBC實(shí)現(xiàn)了所有這些面向標(biāo)準(zhǔn)的目標(biāo)并且具有簡(jiǎn)單、嚴(yán)格類(lèi)型定義且高性能實(shí)現(xiàn)的接口。Java具有堅(jiān)固、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動(dòng)下載等特性,是編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序的杰出語(yǔ)言。所需要的只是Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話(huà)的方法。而JDBC正是作為此種用途的機(jī)制。JDBC擴(kuò)展了Java的功能。例如,用Java和JDBCAPI可以發(fā)布含有applet的網(wǎng)頁(yè),而該applet使用的信息可能來(lái)自遠(yuǎn)程數(shù)據(jù)庫(kù)。企業(yè)也可以用JDBC通過(guò)Intranet將所有職員連到一個(gè)或多個(gè)內(nèi)部數(shù)據(jù)庫(kù)中(即使這些職員所用的計(jì)算機(jī)有Windows、Macintosh和UNIX等各種不同的操作系統(tǒng))。隨著越來(lái)越多的程序員開(kāi)始使用Java編程語(yǔ)言,對(duì)從Java中便捷地訪問(wèn)數(shù)據(jù)庫(kù)的要求也在日益增加。MIS管理員們都喜歡Java和JDBC的結(jié)合,因?yàn)樗剐畔鞑プ兊萌菀缀徒?jīng)濟(jì)。企業(yè)可繼續(xù)使用它們安裝好的數(shù)據(jù)庫(kù),并能便捷地存取信息,即使這些信息是儲(chǔ)存在不同數(shù)據(jù)庫(kù)管理系統(tǒng)上。新程序的開(kāi)發(fā)期很短。安裝和版本控制將大為簡(jiǎn)化。程序員可只編寫(xiě)一遍應(yīng)用程序或只更新一次,然后將它放到服務(wù)器上,隨后任何人就都可得到最新版本的應(yīng)用程序。對(duì)于商務(wù)上的銷(xiāo)售信息服務(wù),Java和JDBC可為外部客戶(hù)提供獲取信息更新的更好方法。
3系統(tǒng)需求分析3.1系統(tǒng)總體規(guī)劃功能需求分析的任務(wù)是弄清用戶(hù)對(duì)目標(biāo)系統(tǒng)數(shù)據(jù)處理功能所提出的需求。本系統(tǒng)的功能需求有:(1)用戶(hù)的登陸和注冊(cè)通過(guò)輸入用戶(hù)名和密碼進(jìn)行登陸,注冊(cè)需要填寫(xiě)用戶(hù)名與密碼(2)時(shí)間的計(jì)時(shí)通過(guò)用戶(hù)輸入的紅綠燈時(shí)間進(jìn)行倒計(jì)時(shí)。(3)紅綠燈的切換用戶(hù)可以觀看紅綠燈在規(guī)定時(shí)間自動(dòng)轉(zhuǎn)換。(4)車(chē)輛的模擬通過(guò)用戶(hù)輸入的數(shù)據(jù),實(shí)現(xiàn)車(chē)輛。(5)日志查看用戶(hù)可以查看某一段時(shí)間的日志情況。3.2總體需求分析電子交通模擬系統(tǒng)的人工管理早已不能適應(yīng)現(xiàn)代交通管理部門(mén)發(fā)展的要求,利用計(jì)算機(jī)對(duì)電子交通模擬系統(tǒng)進(jìn)行全方位的管理迫在眉睫。通過(guò)計(jì)算機(jī)對(duì)信息進(jìn)行管理,不僅能為行政部門(mén)的運(yùn)營(yíng)過(guò)程節(jié)省大量的人力、物力、財(cái)力和時(shí)間,提高交通管理部門(mén)的效率,還可以幫助交通管理部門(mén)樹(shù)立一個(gè)全新的形象,為單位日后的發(fā)張奠定一個(gè)良好的基礎(chǔ)。本階段對(duì)系統(tǒng)的應(yīng)用情況作全面調(diào)查,以確定系統(tǒng)目標(biāo)。確定用戶(hù)的需求。用戶(hù)對(duì)系統(tǒng)的需求我們從以下幾方面進(jìn)行分析。3.2.1系統(tǒng)需求用JAVA+Oracle開(kāi)發(fā)的電子交通模擬系統(tǒng)基于三層架構(gòu)模式,用現(xiàn)在較為流行的JAVA技術(shù)為基礎(chǔ)進(jìn)行開(kāi)發(fā),其中包含了Swing,JDBC等多種相關(guān)技術(shù),這些技術(shù)經(jīng)過(guò)多年的發(fā)展,現(xiàn)階段已經(jīng)比較成熟。很適合于作為該系統(tǒng)的技術(shù)選型。同時(shí)開(kāi)發(fā)者對(duì)這些技術(shù)也有一定的了解,也能較好的運(yùn)用這些技術(shù),這些條件都使得本系統(tǒng)在技術(shù)方面的可行性較高。3.2.2性能需求為了保證系統(tǒng)能夠正常穩(wěn)定的運(yùn)行。系統(tǒng)處理的準(zhǔn)確性和及時(shí)性是系統(tǒng)的必要性能。由于本系統(tǒng)的添加功能對(duì)于整個(gè)系統(tǒng)的功能和性能完成舉足輕重。所以,在系統(tǒng)開(kāi)發(fā)過(guò)程中,必須采用適當(dāng)?shù)姆椒ūWC系統(tǒng)的準(zhǔn)確性和及時(shí)性來(lái)滿(mǎn)足系統(tǒng)的高性能需求。3.2.3運(yùn)行需求分析系統(tǒng)開(kāi)發(fā)平臺(tái):eclipse系統(tǒng)開(kāi)發(fā)語(yǔ)言:JAVA數(shù)據(jù)庫(kù)管理系統(tǒng)軟件:Oracle10g運(yùn)行平臺(tái):Windows73.3系統(tǒng)用例分析如圖3-1所示圖3-1系統(tǒng)用戶(hù)模塊用例圖3.4系統(tǒng)關(guān)聯(lián)圖在業(yè)務(wù)流程分析的基礎(chǔ)上,對(duì)數(shù)據(jù)流進(jìn)行了分析,首先得出現(xiàn)行的數(shù)據(jù)關(guān)聯(lián)圖如圖3-2所示。圖3-2數(shù)據(jù)關(guān)聯(lián)圖3.5關(guān)系E-R圖如下圖3-3所示:圖3-3E-R圖
4系統(tǒng)設(shè)計(jì)4.1系統(tǒng)模塊總體設(shè)計(jì)系統(tǒng)模塊的總體設(shè)計(jì)是利用層次圖來(lái)表示系統(tǒng)中各模塊之間的關(guān)系。層次方框圖是用樹(shù)形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)。樹(shù)形結(jié)構(gòu)的頂層是一個(gè)單獨(dú)的矩形框,它代表完整的數(shù)據(jù)結(jié)構(gòu),下面的各層矩形框代表各個(gè)數(shù)據(jù)的子集,最底層的各個(gè)矩形框代表組成這個(gè)數(shù)據(jù)的實(shí)際數(shù)據(jù)元素。本系統(tǒng)中,每個(gè)模塊之間雖然在表面上是相互獨(dú)立的,但是在對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)上是緊密相連的,各個(gè)模塊訪問(wèn)的是同一個(gè)數(shù)據(jù)庫(kù),只是所訪問(wèn)的表不同。每個(gè)功能模塊都是根據(jù)前幾個(gè)階段的調(diào)查分析后確定的,都是最適合用戶(hù)使用的。系統(tǒng)功能結(jié)構(gòu)圖如圖4-1所示。圖4-1系統(tǒng)功能模塊結(jié)構(gòu)圖4.2數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)是系統(tǒng)設(shè)計(jì)中非常重要的一個(gè)環(huán)節(jié)。數(shù)據(jù)是一切系統(tǒng)設(shè)計(jì)的基礎(chǔ),通俗地說(shuō),數(shù)據(jù)庫(kù)設(shè)計(jì)就像高樓大廈的根基一樣,如果設(shè)計(jì)的不合理、不完善,將在系統(tǒng)開(kāi)發(fā)過(guò)程中,甚至到后期的系統(tǒng)維護(hù)、功能變更和功能擴(kuò)充時(shí),引起較多問(wèn)題,嚴(yán)重時(shí)甚至要重新設(shè)計(jì),重做大量已完成工作。1.東路口的表(east_tbl)該表只存放東邊交通路口所紀(jì)錄的數(shù)據(jù)信息,主鍵是id,如表4-1所示。表4-1east_tbl表字段名類(lèi)型字段寬度小數(shù)位數(shù)鍵值idint10PKdaydatetimer_redint10timer_greenint10timer_yellowInt10count_carInt10建表語(yǔ)句:createtableeast_tbl(idnumber(10)primarykey,daydate,timer_rednumber(10),timer_greennumber(10),timer_yellownumber(10),count_carnumber(10))創(chuàng)建sequence:createsequenceeast_tbl_idincrementby1startwith1nocachenocycle;2.南路口的表(south_tbl)該表只存放南邊交通路口所紀(jì)錄的數(shù)據(jù)信息,主鍵是id,如表4-2所示。表4-2south_tbl表字段名類(lèi)型字段寬度小數(shù)位數(shù)索引idint10PKdaydatetimer_redint10timer_greenint10timer_yellowint10count_carInt10創(chuàng)建語(yǔ)句:createtablesouth_tbl(idnumber(10)primarykey,daydate,timer_rednumber(10),timer_greennumber(10),timer_yellownumber(10),count_carnumber(10))創(chuàng)建sequence:createsequencesouth_tbl_idincrementby1startwith1nocachenocycle;3.西邊路口(west_tbl)該表只存放西邊交通路口所紀(jì)錄的數(shù)據(jù)信息,主鍵是id,如表4-3所示。表4-3west_tbl表字段名類(lèi)型字段寬度小數(shù)位數(shù)索引idint10PKdayinttimer_redint10timer_greenint10timer_yellowInt10count_carint10創(chuàng)建語(yǔ)句:createtablewest_tbl(idnumber(10)primarykey,daydate,timer_rednumber(10),timer_greennumber(10),timer_yellownumber(10),count_carnumber(10))創(chuàng)建sequence:createsequencewest_tbl_idincrementby1startwith1nocachenocycle;4.北邊路口(north_tbl)該表只存放北邊交通路口所紀(jì)錄的數(shù)據(jù)信息,主鍵是id,如表4-4所示。表4-4north_tbl表字段名類(lèi)型字段寬度小數(shù)位數(shù)索引idint10PKdaydatetimer_redint10timer_greenint10timer_yellowInt10count_carInt10創(chuàng)建語(yǔ)句:createtablenorth_tbl(idnumber(10)primarykey,daydate,timer_rednumber(10),timer_greennumber(10),timer_yellownumber(10),count_carnumber(10))創(chuàng)建sequence:createsequencenorth_tbl_idincrementby1startwith1nocachenocycle;5.用戶(hù)表(user_tbl)該表存放用戶(hù)的數(shù)據(jù)信息,如圖4-5所示。表4-5user_tbl表字段名類(lèi)型字段寬度小數(shù)位數(shù)索引namevarchar50PKpwdvarchar255創(chuàng)建語(yǔ)句:createtableuser_tbl(namevarchar(50)primarykey,pwdvarchar(255))4.3系統(tǒng)詳細(xì)設(shè)計(jì)4.3.1系統(tǒng)設(shè)計(jì)說(shuō)明根據(jù)已有的需求分析和總體的設(shè)計(jì),進(jìn)行系統(tǒng)的詳細(xì)設(shè)計(jì)和實(shí)行。為了實(shí)現(xiàn)系統(tǒng)結(jié)構(gòu)化系統(tǒng)設(shè)計(jì),本系統(tǒng)對(duì)系統(tǒng)問(wèn)題采用的基本途徑是:自頂向下、逐步求精方法。因此可以把在電子交通模擬系統(tǒng)管理系統(tǒng)的詳細(xì)設(shè)計(jì)分解為單層、若干模塊,用單層模式設(shè)計(jì)電子交通模擬系統(tǒng)管理系統(tǒng)。4.3.2系統(tǒng)設(shè)計(jì)描述電子交通模擬系統(tǒng)管理系統(tǒng)主要采用三層架構(gòu)模式。分別為表現(xiàn)層,業(yè)務(wù)邏輯層,數(shù)據(jù)訪問(wèn)層。電子交通模擬系統(tǒng)管理系統(tǒng)采用數(shù)據(jù)源對(duì)數(shù)據(jù)進(jìn)行增加、查詢(xún),這樣可以簡(jiǎn)化代碼管理,避免出錯(cuò)。用戶(hù)將數(shù)據(jù)輸入到頁(yè)面輸入框,點(diǎn)擊開(kāi)始按鈕,發(fā)送給數(shù)據(jù)源,數(shù)據(jù)源將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。4.3.3程序流程圖本系統(tǒng)使用java語(yǔ)言,在客戶(hù)端使用GUISwing編程技術(shù),實(shí)現(xiàn)圖形化界面和用戶(hù)進(jìn)行交互,對(duì)于用戶(hù)的請(qǐng)求由action事件進(jìn)行處理,轉(zhuǎn)而調(diào)用相應(yīng)的業(yè)務(wù)邏輯層,隨著時(shí)間的計(jì)時(shí),系統(tǒng)執(zhí)行相應(yīng)的功能,對(duì)于執(zhí)行后的結(jié)果直接寫(xiě)入到數(shù)據(jù)庫(kù)中,供用戶(hù)查詢(xún)。運(yùn)行步驟:(1)用戶(hù)打開(kāi)圖形化界面。(2)輸入相應(yīng)的數(shù)據(jù)。 (3)查看紅綠燈計(jì)時(shí)以及車(chē)輛通行的情況。(4)查看日志文件。(5)用戶(hù)通過(guò)輸入時(shí)間查詢(xún)對(duì)應(yīng)的歷史紀(jì)錄。系統(tǒng)流程圖如圖4-3所示。圖4-3業(yè)務(wù)流程圖用戶(hù)找到MainGUI.java類(lèi)文件,并運(yùn)行它,彈出交通模擬界面圖像,根據(jù)圖像顯示的內(nèi)容,用戶(hù)輸入相應(yīng)的初始數(shù)據(jù),然后點(diǎn)擊確定按鈕,此時(shí),界面上的計(jì)時(shí)模塊便開(kāi)始計(jì)時(shí),同時(shí)界面上的車(chē)輛也開(kāi)始根據(jù)紅綠燈的顯示走動(dòng)起來(lái)。用戶(hù)此時(shí)就可以觀察,如果發(fā)現(xiàn)某個(gè)路口的車(chē)輛越來(lái)越多,則表明用戶(hù)輸入的初始數(shù)據(jù)不適合此路口的交通,需重新輸入,再進(jìn)行觀察,直到界面上的車(chē)輛走動(dòng)順暢,就表明此次用戶(hù)輸入的時(shí)間數(shù)據(jù)適合這個(gè)路口的交通。當(dāng)用戶(hù)點(diǎn)擊查詢(xún)按鈕時(shí),會(huì)彈出一個(gè)查詢(xún)界面,此時(shí),用戶(hù)輸入所想要查詢(xún)的某一天或某幾天的日期,就可以搜索到這幾天所輸入的數(shù)據(jù)的紀(jì)錄,根據(jù)這些紀(jì)錄也可以找出一個(gè)適合這個(gè)交通路口的最佳的時(shí)間設(shè)置。最后點(diǎn)擊結(jié)束按鈕,就會(huì)停止模擬。
5系統(tǒng)的實(shí)現(xiàn)5.1登錄模塊設(shè)計(jì)實(shí)現(xiàn)思想:在訪問(wèn)數(shù)據(jù)庫(kù)時(shí),系統(tǒng)采用了JDBC技術(shù),通過(guò)利用Oracle提供的jar包中的相關(guān)類(lèi),以實(shí)現(xiàn)注冊(cè)驅(qū)動(dòng)、創(chuàng)建連接、發(fā)送SQL語(yǔ)句等工作,從而安全高效的實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互。當(dāng)輸入用戶(hù)名為空時(shí),會(huì)提示“管理員不能為空”。當(dāng)輸入用戶(hù)名密碼錯(cuò)誤時(shí),會(huì)提示“用戶(hù)名或密碼錯(cuò)誤”。本界面主要實(shí)現(xiàn)登陸功能,如圖5-1所示圖5-1登陸窗口頁(yè)面圖1當(dāng)沒(méi)有輸入用戶(hù)名時(shí),會(huì)提示輸入用戶(hù)名,如圖5-2所示。圖5-2陸窗口頁(yè)面圖2當(dāng)輸入用戶(hù)名,沒(méi)有輸入密碼時(shí),會(huì)提示輸入密碼,如圖5-3所示。圖5-3陸窗口頁(yè)面圖3代碼如下:publicLogonGUI(){ jp=newJPanel(); jp.setLayout(null); jl[0].setBounds(100,30,200,20); jp.add(jl[0]); jl[1].setBounds(100,80,200,20); jp.add(jl[1]); jtUser=newJTextField(); jtUser.setBounds(180,30,100,20); jp.add(jtUser); jtPwd=newJPasswordField(); jtPwd.setBounds(180,80,100,20); jp.add(jtPwd); jbRegister=newJButton("注冊(cè)"); jbRegister.setBounds(100,160,60,20); jbRegister.setActionCommand("jbRegister"); jbRegister.addActionListener(this); jp.add(jbRegister); jbLogon=newJButton("登錄"); jbLogon.setBounds(180,160,60,20); jbLogon.setActionCommand("jbLogon"); jbLogon.addActionListener(this); jp.add(jbLogon); this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); this.add(jp); this.setTitle("登錄界面"); this.setResizable(false); this.setBounds(100,100,400,300); this.setVisible(true); this.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE); } /** *按鈕事件處理 */ publicvoidactionPerformed(ActionEvente){ //登錄按鈕 if(e.getActionCommand().equals("jbLogon")){ Stringname=jtUser.getText().trim(); char[]pwdChars=jtPwd.getPassword(); Stringpwd=""; if(name.equals("")){ JOptionPane.showMessageDialog(this,"管理員不能為空,請(qǐng)輸入!","提示", JOptionPane.INFORMATION_MESSAGE); jtUser.requestFocus(); }elseif(pwdChars.length==0){ JOptionPane.showMessageDialog(this,"密碼不能為空,請(qǐng)輸入!","提示", JOptionPane.INFORMATION_MESSAGE); jtPwd.requestFocus(); }else{ for(inti=0;i<pwdChars.length;i++){ pwd+=pwdChars[i]; } Connectionconn=JDBCConnectionFactory.getConnection(); //以下是和數(shù)據(jù)庫(kù)建立連接,并從數(shù)據(jù)庫(kù)中查找所要的記錄,并存放到集合list中 SelectDBsdb=newSelectDB(conn); booleanisLogin=sdb.select_user(name,pwd); if(false==isLogin){ JOptionPane.showMessageDialog(this,"用戶(hù)名或密碼錯(cuò)誤!","提示", JOptionPane.INFORMATION_MESSAGE); jtPwd.requestFocus(); }else{ this.setVisible(false); this.dispose(); newMainGUI(); //如果用戶(hù)名和密碼正確并且類(lèi)型為登錄 // newMM("歡迎使用pengwenfu固定資產(chǎn)管理系統(tǒng)v1.0");// // opc=null; } } } //注冊(cè)按鈕 if(e.getActionCommand().equals("jbRegister")){ this.setVisible(false); this.dispose(); newRegisterGUI(); } } publicstaticvoidmain(String[]args){ JFramejf=newJFrame(); newLogonGUI(); }}注冊(cè)界面如圖5-4所示。圖5-4注冊(cè)頁(yè)面1當(dāng)沒(méi)有輸入用戶(hù)名時(shí),會(huì)提示用戶(hù)名為空,如圖5-5所示。圖5-5注冊(cè)頁(yè)面2當(dāng)沒(méi)有輸入密碼時(shí),會(huì)提示密碼為空,如圖5-6所示。圖5-6注冊(cè)頁(yè)面3當(dāng)輸入的用戶(hù)名已經(jīng)存在時(shí),會(huì)提示,如圖5-7所示。圖5-7注冊(cè)頁(yè)面4代碼如下:publicRegisterGUI(){ jp=newJPanel(); jp.setLayout(null); jl[0].setBounds(100,30,200,20); jp.add(jl[0]); jl[1].setBounds(100,80,200,20); jp.add(jl[1]); jl[2].setBounds(100,130,200,20); jp.add(jl[2]); jtUser=newJTextField(); jtUser.setBounds(180,30,100,20); jp.add(jtUser); jtPwd=newJPasswordField(); jtPwd.setBounds(180,80,100,20); jp.add(jtPwd); jtPwd2=newJPasswordField(); jtPwd2.setBounds(180,130,100,20); jp.add(jtPwd2); jbOK=newJButton("注冊(cè)"); jbOK.setBounds(100,180,60,20); jbOK.setActionCommand("jbOK"); jbOK.addActionListener(this); jp.add(jbOK); JbCancel=newJButton("返回"); JbCancel.setBounds(180,180,60,20); JbCancel.setActionCommand("JbCancel"); JbCancel.addActionListener(this); jp.add(JbCancel); this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); this.add(jp); this.setTitle("注冊(cè)界面"); this.setResizable(false); this.setBounds(100,100,400,300); this.setVisible(true); this.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);5.2主窗口模塊設(shè)計(jì)本頁(yè)面主要實(shí)現(xiàn)用戶(hù)可以直接從該窗口看出交通路口模擬的情況。用戶(hù)首先應(yīng)輸入紅燈,綠燈時(shí)間,否則,會(huì)提示“您沒(méi)有設(shè)置紅燈時(shí)間!請(qǐng)?jiān)O(shè)置紅燈時(shí)間”或者提示“您沒(méi)有設(shè)置綠燈時(shí)間!請(qǐng)?jiān)O(shè)置綠燈時(shí)間!”。其次,輸入的紅燈時(shí)間應(yīng)比綠燈時(shí)間長(zhǎng)一些,輸入的紅燈時(shí)間比綠燈時(shí)間短,會(huì)提示“輸入時(shí)間有誤,請(qǐng)重新輸入”。因?yàn)槿绻t燈時(shí)間比綠燈的時(shí)間短,當(dāng)綠燈的時(shí)間還沒(méi)變?yōu)榧t燈時(shí),紅燈卻已經(jīng)變?yōu)榫G燈,這就會(huì)造成四個(gè)路口都為綠燈,造成交通堵塞。系統(tǒng)下方還可以輸入初始的車(chē)輛,共東西南北四個(gè)路口,都可以輸入自己想要的初始車(chē)輛,輸入后,點(diǎn)擊開(kāi)始,系統(tǒng)會(huì)自動(dòng)生成車(chē)輛模擬路口交通。當(dāng)用戶(hù)想停下系統(tǒng)時(shí),點(diǎn)擊結(jié)束按鈕即可停止。實(shí)現(xiàn)思想:用Swing技術(shù)來(lái)實(shí)現(xiàn)系統(tǒng)界面的構(gòu)建。在其構(gòu)造方法中初始化了各個(gè)需要使用的功能按鈕,并且也使用了很多匿名內(nèi)部類(lèi),來(lái)實(shí)現(xiàn)按鈕的相關(guān)功能。它繼承了JFrame類(lèi)。在類(lèi)中主要設(shè)計(jì)一些邏輯功能按鈕,用來(lái)處發(fā)相應(yīng)的事件,每個(gè)按鈕注冊(cè)有相應(yīng)的事件監(jiān)聽(tīng)器,當(dāng)按鈕按下時(shí),就會(huì)處發(fā)相應(yīng)的事件,事件監(jiān)聽(tīng)器會(huì)捕獲事件進(jìn)行相應(yīng)的處理。汽車(chē)的生成是使用的JButton按鈕,在run()方法內(nèi)需要定時(shí)調(diào)用Car類(lèi)的move()方法,來(lái)實(shí)時(shí)模擬車(chē)輛的行駛。同時(shí)還要在run()方法內(nèi)設(shè)置當(dāng)車(chē)輛遇到紅燈時(shí)需要的停車(chē)時(shí)間。汽車(chē)的移動(dòng)是使用JButton.setBounds()方法,在括號(hào)中設(shè)置出相對(duì)主界面的汽車(chē)的位置,相對(duì)位置是可變的,變化位置使用for循環(huán)實(shí)現(xiàn)。主窗口頁(yè)面如圖5-8所示。圖5-8主窗口頁(yè)面圖1當(dāng)沒(méi)有輸入紅綠燈時(shí)間時(shí),會(huì)分別提示請(qǐng)輸入紅燈時(shí)間,請(qǐng)輸入綠燈時(shí)間,如圖5-8,圖5-9所示。圖5-9紅燈輸入提示圖5-10綠燈輸入提示當(dāng)輸入,綠燈時(shí)間比紅燈時(shí)間長(zhǎng)時(shí),會(huì)提示輸入錯(cuò)誤,如圖5-11所示。圖5-11時(shí)間錯(cuò)誤提示代碼如下:publicclassMainGUI{ staticJFramef; privateContainerc; privateJPanelp1,p2,p3,p5; privateBoxb;privateJButtonstartjb,endjb,selectjb;//開(kāi)始,結(jié)束,查詢(xún)按鈕publicstaticJPanelp4;//設(shè)置主畫(huà)面 publicstaticTimertimer1,timer2,timer3;//三種燈的計(jì)時(shí)publicstaticJLabel[]jl=newJLabel[21];publicstaticJTextField[]jt=newJTextField[11];//標(biāo)記單行文本框,用于輸入初始數(shù)據(jù)publicstaticJButton[]jb=newJButton[12];//標(biāo)記紅綠燈的按鈕publicstaticJButton[]jb1=newJButton[10];//標(biāo)記北方向車(chē)輛的按鈕publicstaticJButton[]jb11=newJButton[30];//標(biāo)記北方后來(lái)車(chē)輛的按鈕publicstaticJButton[]jb2=newJButton[10];//標(biāo)記南方向車(chē)輛的按鈕publicstaticJButton[]jb22=newJButton[30];//標(biāo)記南方后來(lái)車(chē)輛的按鈕publicstaticJButton[]jb3=newJButton[10];//標(biāo)記東方向車(chē)輛的按鈕publicstaticJButton[]jb33=newJButton[30];//標(biāo)記東方后來(lái)車(chē)輛的按鈕publicstaticJButton[]jb4=newJButton[10];//標(biāo)記西方向車(chē)輛的按鈕publicstaticJButton[]jb44=newJButton[30];//標(biāo)記西方后來(lái)車(chē)輛的按鈕//初始化所有的車(chē)輛 static{ //北方開(kāi)始車(chē)輛 for(inti=0;i<jb1.length;i++){ jb1[i]=newJButton(); } //北方后來(lái)車(chē)輛 for(inti=0;i<jb11.length;i++){ jb11[i]=newJButton(); } //南方開(kāi)始車(chē)輛 for(inti=0;i<jb2.length;i++){ jb2[i]=newJButton(); } //南方后來(lái)車(chē)輛 for(inti=0;i<jb22.length;i++){ jb22[i]=newJButton(); } //東方開(kāi)始車(chē)輛 for(inti=0;i<jb3.length;i++){ jb3[i]=newJButton(i+""); } //東方后來(lái)車(chē)輛 for(inti=0;i<jb33.length;i++){ jb33[i]=newJButton(i+""); } //西方開(kāi)始車(chē)輛 for(inti=0;i<jb4.length;i++){ jb4[i]=newJButton(i+""); } //西方后來(lái)車(chē)輛for(inti=0;i<jb44.length;i++){ jb44[i]=newJButton(i+""); } } //frame總窗口 publicMainGUI(){ f=newJFrame("電子交通模擬系統(tǒng)"); c=f.getContentPane(); c.setLayout(newBorderLayout(10,10));//p1窗口的左半邊 p1=westJPanel(); p1.setBackground(Color.gray); c.add(p1,BorderLayout.WEST);//p2窗口的右半邊 p2=mainJPanel(); c.add(p2); f.setSize(800,500); f.setVisible(true); f.setResizable(false); f.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }5.3查詢(xún)模塊設(shè)計(jì)1.查詢(xún)窗口界面 用戶(hù)點(diǎn)擊查詢(xún)按鈕,通過(guò)輸入開(kāi)始時(shí)間,結(jié)束時(shí)間,來(lái)查看這段時(shí)間內(nèi)東南西北四個(gè)路口的車(chē)輛行駛記錄。2.實(shí)現(xiàn)思想:使用SaveDB中的save方法,向south_tbl,east_tbl,west_tbl,north_tbl表中保存數(shù)據(jù)。然后用過(guò)JDBC訪問(wèn)數(shù)據(jù)庫(kù),讀取各個(gè)路口的車(chē)輛信息,顯示出來(lái)。界面如圖5-12所示。圖5-12查詢(xún)模塊的實(shí)現(xiàn)選擇好日期后,會(huì)出現(xiàn)這段時(shí)間內(nèi)的記錄,如圖5-13所示。圖5-13歷史記錄代碼如下:publicclassSelectGUIextendsJDialog{ privatestaticfinallongserialVersionUID=-5191965365261772248L; privateJPaneljp; privateJLabel[]jl={newJLabel("請(qǐng)輸入您要查詢(xún)記錄的時(shí)間"),newJLabel("開(kāi)始時(shí)間:"),newJLabel("結(jié)束時(shí)間:")}; privateJTextFieldjt1,jt2; privateJButtonjb; publicSelectGUI(finalJFramejf){ jp=newJPanel(); jp.setLayout(null); jl[0].setBounds(100,30,200,20); jp.add(jl[0]); jl[1].setBounds(60,80,80,20); jp.add(jl[1]); jt1=newJTextField(); jt1.setBounds(150,80,100,20); jp.add(jt1); jl[2].setBounds(60,130,80,20); jp.add(jl[2]); jt2=newJTextField(); jt2.setBounds(150,130,100,20); jp.add(jt2); jb=newJButton("確定"); jb.setBounds(170,200,60,20); jb.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ if(jt1.getText()==null||jt1.getText().equals("")){ JOptionPane.showMessageDialog(jf,"您沒(méi)有輸入開(kāi)始時(shí)間,請(qǐng)重新輸入"); } if(jt2.getText()==null||jt2.getText().equals("")){ JOptionPane.showMessageDialog(jf,"您沒(méi)有輸入結(jié)束時(shí)間,請(qǐng)重新輸入"); }else{ newDatebaseGUI(jf,jt1.getText(),jt2.getText()); } } }); jp.add(jb); this.add(jp); this.setTitle("查詢(xún)歷史記錄"); this.setResizable(false); this.setBounds(100,100,400,300); this.setVisible(true); jf.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE); } publicstaticvoidmain(String[]args){ JFramejf=newJFrame(); newSelectGUI(jf); }}6系統(tǒng)測(cè)試與維護(hù)6.1系統(tǒng)測(cè)試原則在開(kāi)發(fā)大型軟件系統(tǒng)的過(guò)程中,需要面對(duì)錯(cuò)綜復(fù)雜的問(wèn)題,因此,在軟件生存周期的每個(gè)階段都不可避免地會(huì)產(chǎn)生錯(cuò)誤。我們力求在每個(gè)階段結(jié)束之前通過(guò)嚴(yán)格的技術(shù)審查,盡可能早的發(fā)現(xiàn)并糾正錯(cuò)誤。測(cè)試的目的就是在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。目前軟件測(cè)試仍然是保證軟件質(zhì)量的關(guān)鍵步驟,它是對(duì)軟件規(guī)格說(shuō)明、設(shè)計(jì)和編碼的最后復(fù)審。盡管面向?qū)ο蠹夹g(shù)的基本思想保證了軟件應(yīng)該有更高的質(zhì)量,但無(wú)論采用什么樣的編程技術(shù),編程人員的錯(cuò)誤都是不可避免的,而且由于面向?qū)ο蠹夹g(shù)開(kāi)發(fā)的軟件代碼重用率高,更需要嚴(yán)格測(cè)試,避免錯(cuò)誤的繁衍。因此,軟件測(cè)試在面向?qū)ο缶幊汤锔哂兴闹匾?。與開(kāi)發(fā)過(guò)程類(lèi)似,測(cè)試過(guò)程也必須分步驟進(jìn)行,每個(gè)步驟在邏輯上是前一個(gè)步驟地繼續(xù)。大型軟件系統(tǒng)通常由若干個(gè)子系統(tǒng)組成,每個(gè)子系統(tǒng)又由許多模塊組成。因此,大型軟件系統(tǒng)的測(cè)試的基本層次如圖6-1所示。1)單元測(cè)試單元測(cè)試的用例從單元詳細(xì)設(shè)計(jì)中導(dǎo)出。在單元測(cè)試中可以采用功能性測(cè)試和結(jié)構(gòu)性測(cè)試兩種。2)集成測(cè)試在這個(gè)測(cè)試步驟中所發(fā)現(xiàn)的往往是概要設(shè)計(jì)的錯(cuò)誤。3)系統(tǒng)測(cè)試在這個(gè)測(cè)試步驟中所發(fā)現(xiàn)的往往是需求規(guī)格說(shuō)明的錯(cuò)誤。一般來(lái)說(shuō),系統(tǒng)測(cè)試是功能性測(cè)試,不是結(jié)構(gòu)性測(cè)試。 圖6-1測(cè)試的基本層次6.2本系統(tǒng)的測(cè)試對(duì)于開(kāi)發(fā)出的電子交通模擬系統(tǒng)來(lái)說(shuō),它并不是一個(gè)特別復(fù)雜的系統(tǒng),因此本系統(tǒng)采用了黑盒測(cè)試法進(jìn)行測(cè)試。它只檢查程序功能是否按照系統(tǒng)設(shè)計(jì)要求那樣正常使用,程序是否能按照用戶(hù)的相關(guān)操作正常運(yùn)行。同時(shí)也對(duì)系統(tǒng)做了相關(guān)的壓力測(cè)試,從而得知系統(tǒng)的并發(fā)訪問(wèn)能力。通過(guò)對(duì)本系統(tǒng)進(jìn)行的以上幾個(gè)功能測(cè)試,本系統(tǒng)在整體上符合要求,其操作流程也相當(dāng)?shù)那逦?、方便、易懂。測(cè)試也起到了很好的效果。測(cè)試結(jié)果如表6-1,表6-2,表6-3所示。表6-1登陸測(cè)試表測(cè)試項(xiàng)目名稱(chēng)登錄注冊(cè)測(cè)試內(nèi)容登錄注冊(cè)功能是否能夠正確執(zhí)行執(zhí)行者王寧步驟及操作:點(diǎn)擊登陸注冊(cè)輸入用戶(hù)名、密碼點(diǎn)擊確定按鈕,注冊(cè)成功測(cè)試用例輸入:用戶(hù)名:王寧密碼:123456輸出:注冊(cè)成功等價(jià)類(lèi)劃分法:錯(cuò)誤輸入1:注冊(cè)時(shí)輸入用戶(hù)名未輸入密碼錯(cuò)誤輸出:請(qǐng)輸入密碼等信息錯(cuò)誤輸入2:注冊(cè)時(shí)輸入為空錯(cuò)誤輸出:顯示請(qǐng)輸入用戶(hù)名錯(cuò)誤輸入3:登錄時(shí)輸入為空錯(cuò)誤輸出:顯示請(qǐng)輸入用戶(hù)名錯(cuò)誤輸入4:登錄時(shí)輸入用戶(hù)名正確而密碼錯(cuò)誤或者輸入用戶(hù)名錯(cuò)誤而密碼正確或者輸入用戶(hù)名密碼均不正確錯(cuò)誤輸出:顯示輸入用戶(hù)名過(guò)或密碼錯(cuò)誤表6-2主界面測(cè)試表測(cè)試項(xiàng)目名稱(chēng)主界面輸入測(cè)試內(nèi)容輸入數(shù)據(jù)后是否正確執(zhí)行執(zhí)行者王寧步驟及操作:1.輸入紅綠燈時(shí)間2.點(diǎn)擊開(kāi)始按鈕,生成小車(chē)3.點(diǎn)擊結(jié)束按鈕,系統(tǒng)停止測(cè)試用例輸入:設(shè)置紅燈:6設(shè)置綠燈:3主界面生成小車(chē)等價(jià)類(lèi)劃分法:錯(cuò)誤輸入1:未輸入紅綠燈時(shí)間錯(cuò)誤輸出:您沒(méi)有設(shè)置紅綠燈時(shí)間!請(qǐng)?jiān)O(shè)置紅綠燈時(shí)間!錯(cuò)誤輸入2:輸入紅燈時(shí)間,未輸入綠燈時(shí)間錯(cuò)誤輸出:您沒(méi)有設(shè)置綠燈時(shí)間!請(qǐng)?jiān)O(shè)置綠燈時(shí)間!錯(cuò)誤輸入3:輸入綠燈時(shí)間,未輸入紅燈時(shí)間錯(cuò)誤輸出:您沒(méi)有設(shè)置紅燈時(shí)間!請(qǐng)?jiān)O(shè)置紅燈時(shí)間!錯(cuò)誤輸入4:紅燈時(shí)間比綠燈時(shí)間短錯(cuò)誤輸出:您輸入的時(shí)間有誤!請(qǐng)重新輸入!表6-3查詢(xún)界面測(cè)試表測(cè)試項(xiàng)目名稱(chēng)記錄查詢(xún)測(cè)試內(nèi)容輸入數(shù)據(jù)后是否正確執(zhí)行執(zhí)行者王寧步驟及操作:生成小車(chē)后,輸入日期,查看日志記錄測(cè)試用例輸入:輸入今天的日期查看各個(gè)路口的車(chē)輛數(shù)據(jù)分別修改日期,修改初始車(chē)輛,查看各個(gè)路口的數(shù)據(jù)測(cè)試發(fā)現(xiàn)的問(wèn)題:1進(jìn)入主界面輸入?yún)?shù)運(yùn)行系統(tǒng)后,小車(chē)沒(méi)有出現(xiàn),出現(xiàn)的是一條線(xiàn)。原因:小車(chē)的JButtom設(shè)計(jì)的太小,圖片沒(méi)有容下,導(dǎo)致出現(xiàn)了一條線(xiàn),將小車(chē)改為長(zhǎng)寬改為60,60后,小車(chē)出現(xiàn)。2系統(tǒng)運(yùn)行后,瀏覽日志時(shí),eclipse報(bào)錯(cuò)原因:建表時(shí),west_tbl錯(cuò)寫(xiě)成了weast_tbl,數(shù)據(jù)沒(méi)有存儲(chǔ)進(jìn)去,所以報(bào)錯(cuò),將表改回west_tbl,成功查看到了日志。6.3軟件的運(yùn)行與安裝1.J2EE應(yīng)用程序的構(gòu)建與部署在J2EE框架下,使用Eclipse開(kāi)發(fā)出來(lái)的程序可以通過(guò)工具直接布署到服務(wù)器上進(jìn)行測(cè)試運(yùn)行,但是由于真正的運(yùn)行服務(wù)器并沒(méi)有與開(kāi)發(fā)環(huán)境同處于同一環(huán)境,所以需要手工進(jìn)行布署。首先,將整個(gè)程序進(jìn)行打包成一個(gè).war包或.ear包,或直接將整個(gè)工程拷貝到webapps目錄下,服務(wù)器會(huì)自動(dòng)進(jìn)行解包,打包與部署過(guò)程如圖6-2所示。 圖6-2打包與部署過(guò)程2.具體運(yùn)行過(guò)程以及后期維護(hù)打開(kāi)oracle數(shù)據(jù)庫(kù),運(yùn)行MainGUI.java類(lèi)文件,就可以運(yùn)行該系統(tǒng)。所謂軟件維護(hù)就是在軟件交付使用之后,為了改正錯(cuò)誤或滿(mǎn)足新的需要而修改軟件的過(guò)程。我們可以通過(guò)描述軟件交付使用后可能進(jìn)行的四項(xiàng)活動(dòng),具體定義軟件維護(hù)。A.改正性維護(hù)因?yàn)檐浖y(cè)試不可能暴露出一個(gè)大型軟件系統(tǒng)的所有潛在錯(cuò)誤,所以必然會(huì)有第一項(xiàng)維護(hù)活動(dòng):在任何軟件的使用期間,用戶(hù)必然發(fā)現(xiàn)程序,并且把他們遇到的問(wèn)題報(bào)告給維護(hù)人員。我們把診斷和改正錯(cuò)誤的過(guò)程稱(chēng)為改正性維護(hù)。B.適應(yīng)性維護(hù)計(jì)算機(jī)科學(xué)技術(shù)的各個(gè)方面都在迅速進(jìn)步,大約每36個(gè)月就有新一代的硬件出現(xiàn),因此,適應(yīng)性維護(hù),也就是為了和變化的環(huán)境適當(dāng)?shù)呐浜隙M(jìn)行的修改軟件的活動(dòng),是既必要又經(jīng)常的維護(hù)活動(dòng)。C.完善性維護(hù)當(dāng)一個(gè)軟件系統(tǒng)順利的進(jìn)行時(shí),在使用軟件的過(guò)程中用戶(hù)往往提出增加新功能或修改已有功能的建議,還可能提出一般性修改意見(jiàn)。為了滿(mǎn)足這類(lèi)要求,需要進(jìn)行完善性維護(hù)。這項(xiàng)維護(hù)活動(dòng)通常占軟件維護(hù)的大部分工作。D.預(yù)防性維護(hù)為了改進(jìn)未來(lái)可維護(hù)性或可靠性,或?yàn)榱私o未來(lái)的改進(jìn)奠定更好的基礎(chǔ)而修改軟件時(shí)出現(xiàn)的維護(hù)活動(dòng),我們把它稱(chēng)為預(yù)防性維護(hù)。
結(jié)論經(jīng)過(guò)近兩個(gè)月的努力,電子交通模擬系統(tǒng)基本開(kāi)發(fā)完畢,功能符合用戶(hù)需求,同時(shí)考慮了單位編碼減少數(shù)據(jù)冗余的問(wèn)題。但是由于學(xué)識(shí)水平有限,融會(huì)貫通能力有待加強(qiáng),數(shù)據(jù)庫(kù)難免存在不足,所以該系統(tǒng)有許多不盡如人意的地方,比如文檔比較少,用戶(hù)界面不夠美觀,出錯(cuò)處理不夠等多方面問(wèn)題,這些都有待進(jìn)一步改善,以便在數(shù)據(jù)庫(kù)升級(jí)時(shí)做得更好。數(shù)據(jù)庫(kù)技術(shù)是一門(mén)有著廣闊發(fā)展前途的技術(shù)。這次設(shè)計(jì)就是嘗試運(yùn)用所學(xué)知識(shí)做的系統(tǒng),包含有對(duì)數(shù)據(jù)庫(kù)記錄的增加、查詢(xún)等功能。由于時(shí)間限制和自己知識(shí)有限,有些地方做得不完善,但至少是邁出了實(shí)踐的第一步。在這次畢業(yè)設(shè)計(jì)中,體會(huì)到如下一些感受:做任何系統(tǒng)首先一定要把需求分析做好;在整個(gè)頁(yè)面設(shè)計(jì)時(shí),學(xué)習(xí)和借鑒一些成功的事例,做出友好的頁(yè)面和完備的功能模塊;管理系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)中的最大難點(diǎn)就是如何設(shè)計(jì)好一個(gè)合理的、無(wú)冗余的數(shù)據(jù)庫(kù),而且還要保證數(shù)據(jù)的一致性和完整性。我經(jīng)過(guò)這次畢業(yè)設(shè)計(jì),學(xué)到了很多東西,熟悉了對(duì)一個(gè)課題進(jìn)行研究、設(shè)計(jì)和實(shí)驗(yàn)的詳細(xì)過(guò)程,同時(shí)在設(shè)計(jì)過(guò)程中遇到了問(wèn)題,需查閱資料時(shí),不但要能找到資料,還要學(xué)會(huì)快速找到自己所需的。而且感受最深的就是,在獨(dú)立地完成工作過(guò)程中要學(xué)會(huì)自學(xué),在遇到問(wèn)題的時(shí)候如何去分析問(wèn)題,找出問(wèn)題,然后去解決問(wèn)題,這對(duì)將來(lái)的工作和學(xué)習(xí)會(huì)有很大的幫助。
參考文獻(xiàn)1賀廉云,唐艷,孫秀文,交通燈的控制[I],電腦編程技巧與維護(hù),2008(02):1~202趙伯山.Oracle9i.中文版實(shí)用培訓(xùn)教程[M].北京:清華大學(xué)出版社,2003.30~603(美)ArtTaylor.JDBC數(shù)據(jù)庫(kù)編程與J2EE[M].北京:電子工業(yè)出版社,2004.33~504(美)JasonPrice著Oracle9i.JDBC程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2003.90~1065肖剛.JavaGUI程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1998.55~786張海潘.軟件工程導(dǎo)論[M].北京:清華大學(xué)出版社,2003.87~1067孫凌翔,陳世和,李勁松,順序控制法在交通燈控制系統(tǒng)中的應(yīng)用[I],現(xiàn)代電子技術(shù),2006(10):20~308MartyHall.MoreServletsandJavaServerPages[M].PearsonEducation,Inc.2002.31~779RogerS.Pressman.SoftwareEngineeringAPractitioner’sApproach,5thed[M].北京:清華大學(xué)出版社,2001.58~6910薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社,1997.91~132.11Cays.Horstmann.CayCornell.CoreJava2VolumeI–Fundamentals.SeventhEdition.PrenticeHallPTR,2004.30~7812MarcoCantà.MasteringBorlandOracle2004[M].RinehartandWinston,2004,34~9613羅曉沛,張迎新,蔡越江.Oracle數(shù)據(jù)庫(kù)技術(shù)[M].武漢:華中理工大學(xué)出版社,2000:134~13714王晟,萬(wàn)科.Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)經(jīng)典案例解析[M].北京:清華大學(xué)出版社,2005.157~16715溫濤,工程概念[J],軟件工程師,2006(1):16~18 致謝首先要感謝的是我的指導(dǎo)老師陳永樂(lè)老師!在畢業(yè)設(shè)計(jì)期間,陳老師積極的為我畢業(yè)設(shè)計(jì)的相關(guān)事項(xiàng)而忙碌,查閱相關(guān)資料、搜集相關(guān)信息等等,更重要的是陳老師還為本系統(tǒng)的設(shè)計(jì)提供了整體的設(shè)計(jì)思路,從而使我對(duì)系統(tǒng)的整體設(shè)計(jì)有了更進(jìn)一步的了解,也保證了本次畢業(yè)設(shè)計(jì)的順利完成。在遇到困難時(shí)老師總能給予我相關(guān)的指導(dǎo)和幫助,我從老師那里學(xué)到了很多新的知識(shí)、想法、好的思路。其次要感謝軟件學(xué)院的各位老師和各位領(lǐng)導(dǎo)!正是軟件學(xué)院老師和領(lǐng)導(dǎo)的支持,才讓我有這么好的環(huán)境進(jìn)行學(xué)習(xí),進(jìn)行系統(tǒng)的開(kāi)發(fā),從而保證了本系統(tǒng)能如期完成。同時(shí),我還要感謝與我一同做畢業(yè)設(shè)計(jì)的同學(xué)們!有許多設(shè)計(jì)的思想,靈感都來(lái)源于和同學(xué)們的交流過(guò)程當(dāng)中,同學(xué)的一句話(huà),一點(diǎn)提示,都會(huì)使我在有新的想法。在不知不覺(jué)的討論過(guò)程中讓我學(xué)到了不少的知識(shí),也解決了很多在畢業(yè)設(shè)計(jì)中遇到的問(wèn)題。最后再次對(duì)在系統(tǒng)開(kāi)發(fā)過(guò)程中給予我?guī)椭睦蠋熀屯瑢W(xué)表示誠(chéng)摯的感謝!外文資料ThinkinginJava,2ndeditionPrefaceIsuggestedtomybrotherTodd,whoismakingtheleapfromhardwareintoprogramming,thatthenextbigrevolutionwillbeingeneticengineering.We’llhavemicrobesdesignedtomakefood,fuel,andplastic;they’llcleanuppollutionandingeneralallowustomasterthemanipulationofthephysicalworldforafractionofwhatitcostsnow.Iclaimedthatitwouldmakethecomputerrevolutionlooksmallincomparison.ThenIrealizedIwasmakingamistakecommontosciencefictionwriters:gettinglostinthetechnology(whichisofcourseeasytodoinsciencefiction).Anexperiencedwriterknowsthatthestoryisneveraboutthethings;it’saboutthepeople.Geneticswillhaveaverylargeimpactonourlives,butI’mnotsosureitwilldwarfthecomputerrevolution(whichenablesthegeneticrevolution)—oratleasttheinformationrevolution.Informationisabouttalkingtoeachother:yes,carsandshoesandespeciallygeneticcuresareimportant,butintheendthosearejusttrappings.Whattrulymattersishowwerelatetotheworld.Andsomuchofthatisaboutcommunication.Thisbookisacaseinpoint.AmajorityoffolksthoughtIwasveryboldoralittlecrazytoputtheentirethingupontheWeb.“Whywouldanyonebuyit?”theyasked.IfIhadbeenofamoreconservativenatureIwouldn’thavedoneit,butIreallydidn’twanttowriteanothercomputerbookinthesameoldway.Ididn’tknowwhatwouldhappenbutitturnedouttobethesmartestthingI’veeverdonewithabook.Foronething,peoplestartedsendingincorrections.Thishasbeenanamazingprocess,becausefolkshavelookedintoeverynookandcrannyandcaughtbothtechnicalandgrammaticalerrors,andI’vebeenabletoeliminatebugsofallsortsthatIknowwouldhaveotherwiseslippedthrough.Peoplehavebeensimplyterrificaboutthis,veryoftensaying“Now,Idon’tmeanthisinacriticalway...”andthengivingmeacollectionoferrorsI’msureIneverwouldhavefound.Ifeellikethishasbeenakindofgroupprocessandithasreallymadethebookintosomethi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 杭州市富陽(yáng)區(qū)衛(wèi)健系統(tǒng)事業(yè)單位招聘筆試真題2024
- 2025年二年級(jí)上冊(cè)快樂(lè)讀書(shū)試題
- 中醫(yī)診療設(shè)備專(zhuān)題培訓(xùn)的策略及實(shí)施路徑
- 推動(dòng)高校科研與產(chǎn)業(yè)創(chuàng)新深度融合的策略及實(shí)施路徑
- 高中物理跨學(xué)科教學(xué)的現(xiàn)狀與發(fā)展趨勢(shì)
- 2025至2030年中國(guó)液動(dòng)快速排泥閥行業(yè)投資前景及策略咨詢(xún)報(bào)告
- 2025至2030年中國(guó)水溶性覆膜機(jī)行業(yè)投資前景及策略咨詢(xún)報(bào)告
- 高中外語(yǔ)跨學(xué)科課程設(shè)計(jì)與評(píng)價(jià)體系構(gòu)建
- 2025年江蘇省蘇州市中考生物真題含答案
- 初中物理跨學(xué)科教學(xué)的內(nèi)涵與重要性
- 2025年高考政治選必二《法律與生活》主觀題三類(lèi)模板
- 2025-2030直流電流傳感器行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 砼工考試題及答案
- 2024年小升初考試試卷
- 甘肅農(nóng)墾集團(tuán)招聘筆試
- 包蟲(chóng)病防治知識(shí)小學(xué)課件
- 挖機(jī)簡(jiǎn)單租賃合同8篇
- 高職院校課程設(shè)置存在的問(wèn)題及改革建議
- 四新安全教育培訓(xùn)材料
- 綠城園林景觀工程設(shè)計(jì)15個(gè)強(qiáng)制性標(biāo)準(zhǔn)
- 直擊重點(diǎn):2024年演出經(jīng)紀(jì)人資格證試題及答案
評(píng)論
0/150
提交評(píng)論