版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
中南財經政法大學畢業(yè)設計(論文)第32頁共32頁畢業(yè)設計論文汽車租賃管理系統(tǒng)的設計與實現摘要:汽車租賃業(yè)被稱為“朝陽產業(yè)”,它因為無須辦理保險、無須年檢維修、車型可隨意更換等優(yōu)點,以租車代替買車來控制企業(yè)成本,這種在外企中十分流行的管理方式,正慢慢受到國內企事業(yè)單位和個人用戶的青睞。將買車、養(yǎng)車的包袱全丟給汽車租賃公司,而把主要財力和精力放在自己的主業(yè)上,這是當今國際跨國公司流行的做法。據統(tǒng)計,一年下來,像桑塔納2000這樣的普通車,購車要比租車多花費10000元修理費,即以租車代替買車,成本就可以下降3成。另外,租車還為企業(yè)節(jié)省一筆管理成本,其根本原因在于對企業(yè)管理上“成本可控”理念認可——采用租賃,隨時可以調整開支,風險小,靈活性強,是降低成本的最好辦法。那些對中國地方性法規(guī)制度不熟悉的商家可以減少諸如汽車上牌、年檢、繳費、違章事故的處理等一系列不必要的麻煩??蛻魝冞€可以自由地選擇租賃汽車的品牌,從經濟型車到高檔車,所有汽車均有完備的手續(xù)。汽車租賃的五個優(yōu)勢車型可隨時更新隨著人們消費水平的提高,對高檔消費品有不斷更新的欲望。在歐美人們平均8個月更換一次車型。假如現在花費三十多萬元購買一臺轎車,因社會經濟發(fā)展很快,一年后汽車的性能、外觀改進很多,而價格卻會大幅下降。一年后,如果想換新車型,老車可能15萬元就很難賣出。這意味著,一年中車價損失接近20萬元。但假如租賃一臺三十多萬元的車,只需10余萬元。而且,可隨時租用最新車型。從目前人們經常更換手機的狀況就能預料到幾年后,經常換新車,將是人們的新時尚。解除車輛維修、年度檢驗的煩惱自購車輛后對車輛的維修和保養(yǎng)及一年一度的車輛年檢要耗費很多財力和精力。但如果租車,就不存在這些煩惱,無論是車輛維修還是其它原因,車輛不能正常使用時,租賃公司都會及時提供替代車,保證用車。三、可充分提高資金利用率如果自購車輛要一次性支付30萬元,消費者具有一定經濟實力。也就是說租車和買車相比至少可節(jié)省一次性投資20萬元。消費者用這20萬元去經營,可賺取一筆可觀的利潤。四、可保證你良好的財務狀況自購車輛必然會造成固定資產增加、借款增加、流動資產減少使財務出現不良狀況,而租賃車輛將有效回避上述風險。五、有利于提高成本觀念,減少浪費自購車輛使用時隨心所欲,特別是單位公車,私自用車現象較多,造成不必要的浪費,而如果租賃車,一是可根據業(yè)務需要隨時調控用車數量,二是用車人知道自己的用車成本,,可直接減少不必要的用車,有效地提高員工的成本觀念。第1章開發(fā)環(huán)境1.1開發(fā)所需工具 Tomcat6.0,WindowsXP,EditPlus,DreamweaverMX2004,IE6.0,Firefox火狐瀏覽器,Oracle10g等。1.2Tomcat Tomcat服務器是一個免費的開放源代碼的Web應用服務器,目前最新版本是6.0.18.Tomcat是Apache軟件基金會(ApacheSoftwareFoundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現,Tomcat5支持最新的Servlet2.4和JSP2.0規(guī)范。因為Tomcat技術先進、性能穩(wěn)定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web應用服務器。 Tomcat很受廣大程序員的喜歡,因為它運行時占用的系統(tǒng)資源小,擴展性好,支持負載平衡與郵件服務等開發(fā)應用系統(tǒng)常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。 Tomcat是一個小型的輕量級應用服務器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調試JSP程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache服務器,可利用它響應對HTML頁面的訪問請求。實際上Tomcat部分是Apache服務器的擴展,但它是獨立運行的,所以當你運行tomcat時,它實際上作為一個與Apache獨立的進程單獨運行的。1.3JSP JSP(JavaServerPages)是由SunMicrosystems公司倡導、許多公司參與一起建立的一種動態(tài)網頁技術標準。JSP技術有點類似ASP技術,它是在傳統(tǒng)的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應用是跨平臺的,即能在Linux下運行,也能在其他操作系統(tǒng)上運行。JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態(tài)網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計和顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易。Web服務器在遇到訪問JSP網頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數據庫、重新定向網頁等,以實現建立動態(tài)網頁所需要的功能。JSP與JavaServlet一樣,是在服務器端執(zhí)行的,通常返回該客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP的1.0規(guī)范的最后版本是1999年9月推出的,12月又推出了1.1規(guī)范。目前較新的是JSP1.2規(guī)范,JSP2.0規(guī)范的征求意見稿也已出臺。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。JavaServlet是JSP的技術基礎,而且大型的Web應用程序的開發(fā)需要JavaServlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網的所有特點。 自JSP推出后,眾多大公司都支持JSP技術的服務器,如IBM、Oracle、Bea公司等,所以JSP迅速成為商業(yè)應用的服務器端語言。1.4Servlet Servlet是一種獨立于平臺和協議的服務器端的Java應用程序,可以生成動態(tài)的Web頁面。它擔當Web瀏覽器或其他HTTP客戶程序發(fā)出請求,與HTTP服務器上的數據庫或應用程序之間的中間層。 Servlet是位于Web服務器內部的服務器端的Java應用程序,與傳統(tǒng)的從命令行啟動的Java應用程序不同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。 在傳統(tǒng)的CGI中,每個請求都要啟動一個新的進程,如果CGI程序本身的執(zhí)行時間較短,啟動進程所需要的開銷很可能反而超過實際執(zhí)行時間。而在Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的操作系統(tǒng)進程)。在傳統(tǒng)CGI中,如果有N個并發(fā)的對同一CGI程序的請求,則該CGI程序的代碼在內存中重復裝載了N次;而對于Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優(yōu)化方面,Servlet也比CGI有著更多的選擇。 Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態(tài)等。 在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。Servlet用Java編寫,ServletAPI具有完善的標準。因此,為IPlanetEnterpriseServer寫的Servlet無需任何實質上的改動即可移植到Apache、MicrosoftIIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。 不僅有許多廉價甚至免費的Web服務器可供個人或小規(guī)模網站使用,而且對于現有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。1.5靜態(tài)網頁與動態(tài)網頁 靜態(tài)網頁是標準的HTML文件,其文件擴展名是.htm或.html。它可以包含HTML標記、文本、Jave小程序、客戶端腳本以及客戶端ActiveX控件,但這種網頁不包含任何服務器端腳本,該頁中的每一行HTML代碼都是在放置到Web服務器前由網頁設計人員編寫的,在放置到Web服務器后便不再發(fā)生任何更改,所以稱之為靜態(tài)網頁。 程序是否在服務器端運行,是動態(tài)網頁的重要標志。在服務器端運行的程序、網頁、組件,屬于動態(tài)網頁,它們會隨不同客戶、不同時間,返回不同的網頁,例如ASP、PHP、JSP、ASP.net、CGI等。運行于客戶端的程序、網頁、插件、組件,屬于靜態(tài)網頁,例如html頁、Flash、JavaScript、VBScript等等,它們是永遠不變的。1.6JDBC JDBC(JavaDataBaseConnectivity,java數據庫連接)是一種用于執(zhí)行SQL語句的JavaAPI,可以為多種關系數據庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數據庫開發(fā)人員提供了一個標準的API,據此可以構建更高級的工具和接口,使數據庫開發(fā)人員能夠用純JavaAPI編寫數據庫應用程序,同時,JDBC也是個商標名。 有了JDBC,向各種關系數據發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBCAPI,就不必為訪問Sybase數據庫專門寫一個程序,為訪問Oracle數據庫又專門寫一個程序,或為訪問Informix數據庫又編寫另一個程序等等,程序員只需用JDBCAPI寫一個程序就夠了,它可向相應數據庫發(fā)送SQL調用。同時,將Java語言和JDBC結合起來使程序員不必為不同的平臺編寫不同的應用程序,只須寫一遍程序就可以讓它在任何平臺上運行,這也是Java語言“編寫一次,處處運行”的優(yōu)勢。 Java數據庫連接體系結構是用于Java應用程序連接數據庫的標準方法。JDBC對Java程序員而言是API,對實現與數據庫連接的服務提供商而言是接口模型。作為API,JDBC為程序開發(fā)提供標準的接口,并為數據庫廠商及第三方中間件廠商實現與數據庫的連接提供了標準方法。JDBC使用已有的SQL標準并支持與其它數據庫連接標準,如ODBC之間的橋接。JDBC實現了所有這些面向標準的目標并且具有簡單、嚴格類型定義且高性能實現的接口。 Java具有堅固、安全、易于使用、易于理解和可從網絡上自動下載等特性,是編寫數據庫應用程序的杰出語言。所需要的只是Java應用程序與各種不同數據庫之間進行對話的方法。而JDBC正是作為此種用途的機制。 JDBC擴展了Java的功能。例如,用Java和JDBCAPI可以發(fā)布含有applet的網頁,而該applet使用的信息可能來自遠程數據庫企業(yè)也可以用JDBC通過Intranet將所有職員連到一個或多個內部數據庫中(即使這些職員所用的計算機有Windows、Macintosh和UNIX等各種不同的操作系統(tǒng))。隨著越來越多的程序員開始使用Java編程語言,對從Java中便捷地訪問數據庫的要求也在日益增加。1.7Oracle Oracle是殷墟(YinXu)出土的甲骨文(oracleboneinscriptions)的英文翻譯的第一個單詞,在英語里是“神諭”的意思。 與無壓縮格式下存儲數據相比,新的Oracle數據壓縮技術能夠確保以較小的開銷節(jié)省三倍以上的磁盤存儲空間。這一點比僅節(jié)省磁盤空間要具有更大的優(yōu)勢,因為它能夠使企業(yè)節(jié)約更多的開支,以便有更多的資金來鞏固自己的地位。 自動診斷知識庫(AutomaticDiagnosticRepository,ADR)是專門針對嚴重錯誤的知識庫。該知識庫基本上能夠自動完成一些以往需要由數據庫管理員來手動完成的操作。 作為ADR的一部分,SQL性能分析器(SQLPerformanceAnalyzer,SPA)是最讓人驚喜的特性之一。SQL性能分析器是一個整體調整工具,管理員可以通過該工具在數據庫上定義和重演(replay)一個典型的工作負載,之后管理員可以調節(jié)整體參數來使數據庫盡快的達到最佳性能——而這一任務同樣也是許多年以來由數據庫管理員手動完成的。 由于獲得了最優(yōu)的初始參數,數據庫管理員就不需要調整數以萬計的SQL語句。管理員需要做的就是給定一個典型的負載,由SAP根據歷史記錄來決定SQL的最終設置,而不用管理員來檢測哪一個SQL設置是最合理的。 多年以來,甲骨文公司一直在努力完成地另一個新特性便是“聯機更新”(在不down機的情況下更新軟件)。實際上,很難從軟件工程的角度來設計一個運行時能自動升級的軟件。由于真正的應用集群(RealApplicationClusters,RAC)特性,甲骨文公司再一次對其他的數據庫供應商造成了更大的壓力。在實際的使用過程中,數據庫產品的用戶總是希望產品有持續(xù)的高可用性,這并不是說只需滿足下次補丁更新之前的3年的時間就夠了。 自動內存管理特性可以追根溯源至Oracle9i,那時甲骨文公司推出首款自動調節(jié)存儲池的工具。AMM工具其實就是一種探測機制。實際上,Oracle11g有很多隨機訪問存儲池,當AMM探測到某個存儲池中已滿時,它將整個RAM從一個區(qū)域分配到其他相對合適的區(qū)域。系統(tǒng)后臺設計2.1系統(tǒng)的主要技術分析2.1.1.Browser/Server系統(tǒng)的三層體系結構 在Browser/Server的系統(tǒng)中,用戶可以通過瀏覽器向分布在網絡上的許多服務器發(fā)出請求。Browser/Server結構極大的簡化了客戶機的工作,客戶機上只需安裝、配置少量的客戶端軟件即可,服務器將擔負更多的工作,對數據庫的訪問和應用程序的執(zhí)行將在服務器上完成。 在Browser/Server三層體系結構下,表示層(Presentation)、功能層(BusinessLogic)、數據層(DataService)被分割成三個相對獨立的單元: 第一層--表示層:Web瀏覽器在表示層中包含系統(tǒng)的顯示邏輯,位于客戶端。它的任務是由Web瀏覽器向網絡上的某一Web服務器提出服務請求,Web服務器對用戶身份進行驗證后用HTTP協議把所需的主頁傳送給客戶端,客戶機接受傳來的主頁文件,并把它顯示在Web瀏覽器上。 第二層--功能層:具有應用程序擴展功能的Web服務器在功能層中包含系統(tǒng)的事務處理邏輯,位于Web服務器端。它的任務是接受用戶的請求,首先需要執(zhí)行相應的擴展應用程序與數據庫進行連接,通過SQL等方式向數據庫服務器提出數據處理申請,而后等數據庫服務器將數據處理的結果提交給Web服務器,再由Web服務器傳送回客戶端。 第三層--數據層:數據庫服務器在數據層中包含系統(tǒng)的數據處理邏輯,位于數據庫服務器端。它的任務是接受Web服務器對數據庫操縱的請求,實現對數據庫查詢、修改、更新等功能,把運行結果提交給Web服務器。 從上面的分析中可以看出,三層的Browser/Server體系結構是把二層Client/Server結構的事務處理邏輯模塊從客戶機的任務中分離出來,由單獨組成的一層來負擔其任務,這樣客戶機的壓力大大減輕了,把負荷均衡地分配給了Web服務器,于是由原來的兩層的Client/server結構轉變成三層的Browser/Server結構。圖2-1數據模型第3章數據庫設計3.1數據庫模式數據庫模式定義了數據庫的結構、表、關系、域和業(yè)務規(guī)則。數據庫模式是一種設計,數據庫和應用正是建立在此基礎上的。域是一列可能擁有的值的集合。必須為每一個表的每一列確定域。除了數據的物理格式外,還需要確定是否有些域對表來說是唯一的。數據庫模式的最后一個要素是業(yè)務規(guī)則,它是對需要反映在數據庫和數據庫應用程序中的業(yè)務活動的約束。業(yè)務規(guī)則是模式的一個重要部分,因為他們指定了無論什么數據變化到達DBMS引擎,允許的數據值必須滿足的約束。不管無效的數據變化請求是來自窗體的用戶、查詢/修改請求還是應用程序,DBMS都應該拒絕。遺憾的是,不同的DBMS產品用不同的方法實施業(yè)務規(guī)則。在某些情況下,DBMS產品不具備實施必要業(yè)務規(guī)則的能力,必須以代碼形式把它們編入應用程序。3.2用戶表結構用戶表用來反映用戶在數據庫內所有屬性,包括:用戶ID,登入名,密碼,身份證號,姓名,性別,地址,聯系電話,職位以及用戶類型.用戶表Users名稱中文名稱物理名稱字段類型主鍵字段名IDUserid(PK)Number是字段名登錄名UsernameVarchar2(30)否字段名身份證IdentityNumber否字段名姓名FullnameVarchar2(30)否字段名性別SexNumber否字段名地址AddressVarchar2(30)否字段名聯系電話PhoneNumber否字段名職位PositionVarchar2(30)否字段名用戶類型UserlevelNumber否字段名密碼UserpwdVarchar2(30)否表3-1用戶表功能關系圖如下:用戶管理用戶管理添加用戶修改用戶密碼查詢用戶修改用戶刪除用戶分配權限圖3-1功能關系圖3.3客戶表結構客戶表用來反正真實客戶在數據庫內所有屬性,包括:客戶ID,身份證號,姓名,性別,地址,電話,職業(yè),密碼等??蛻舯?Customers名稱中文名稱物理名稱字段類型主鍵字段名IDCust_id(PK)Number是字段名身份證IdentityNumber否字段名姓名CustnameVarchar2(30)否字段名性別SexNumber否字段名地址AddressVarchar2(30)否字段名電話PhoneNumber否字段名職業(yè)CareerVarchar2(30)否字段名密碼CustpwdVarchar2(30)否表3-2客戶表結構功能關系圖如下:客戶管理客戶管理添加客戶修改客戶密碼查詢客戶刪除客戶修改客戶圖3-2功能關系圖3.4汽車表結構汽車表用來反正真實汽車在數據庫內所有屬性,其中包括:汽車ID,車號,車型,顏色,價值,租金,押金,租用情況,簡介等.汽車信息表:Cars名稱中文名稱物理名稱字段類型主鍵字段名IDcarid(PK)Number是字段名車號carnumberVarchar2(30)否字段名型號cartypeVarchar2(30)否字段名顏色colorVarchar2(30)否字段名價值priceNumber否字段名租金rentpriceNumber否字段名押金depositNumber否字段名租用情況isrentingNumber否字段名簡介descriptionVarchar2(50)否表3-3信息表功能關系圖如下:汽車管理汽車管理查詢汽車信息刪除汽車信息添加汽車信息修改汽車信息圖3-4關系圖3.5出租單表結構 反映出租單情況,包括出租單編號,預付金,應付金,實際交付金額,起租日期,應歸還日期,歸還日期,出租單狀態(tài),客戶號,車號,服務人員編號等.出租單信息表:Rentable名稱中文名稱物理名稱字段類型主鍵字段名出租單編號tableid(PK)Number是字段名預付金ImprestNumber否字段名應付金shouldpaypriceNumber否字段名實際交付金額PriceNumber否字段名起租日期BegindateDate否字段名應歸還日期shouldreturndateDate否字段名歸還日期ReturndateDate否字段名出租單狀態(tài)RentflagNumber否字段名客戶號custid(FK)Number否字段名車號carid(FK)Number否字段名服務人員編號userid(FK)Number否表3-4信息表3.6檢查單表結構 反映檢查單實際情況,包括檢查單號,檢查時間,屬性,問題,賠費,檢查員,出租單編號等.檢查單信息表:checktable名稱中文名稱物理名稱字段類型主鍵字段名檢查單號checkid(PK)Number是字段名檢查時間checkdateDate否字段名屬性FieldVarchar2(30)否字段名問題problemVarchar2(30)否字段名賠費payingNumber否字段名檢查員checkuserid(FK)參照用戶表Number否字段名出租單編號Rentid(FK)參照出租單表 Number否表3-5檢查單信息表客戶租車流程圖:圖3-5客戶租車流程圖客戶請客戶請求業(yè)務出租汽車查詢是否存在此客戶生成出租單并修改數據庫汽車信息數據庫內修改該客戶信息記錄租車記錄客戶還車流程圖:圖3-6客戶還車流程圖客戶歸還汽車客戶歸還汽車查詢出租單生成檢查單修改客戶租用狀態(tài)修改汽車租用狀態(tài)修改出租單狀態(tài)連接數據庫 通過JDBC連接到ORACLE,利用JAVA的反射機制來尋找ORACLE提供的JDBC連接方法源代碼節(jié)選:/***連接數據庫抽象類*作為工具提供其他類直接調用Connection連接數據庫*含有關閉數據庫連接方法*/ Class.forName(ConnectionImport.driver);//反射機制獲取數據庫驅動! conn=DriverManager.getConnection(ConnectionImport.url, ConnectionImport.user,ConnectionImport.password); //回滾操作。 第4章建立數據庫4.1數據庫建模 通過建模工具建立數據庫中所有數據模型UML圖如下:圖4-1UML數據模型4.2數據庫建表 利用SQL語句建立數據庫表,利用數據庫表的互相管理來反映具體事務的真實關系。由于表太多,這里也就不一一列舉了。 權限與目錄表的SQL語句如下: createtableOA_ROLES_MENUS(ROLE_IDNUMBERnotnull,MENU_IDNUMBERnotnull,constraintROLES_MENUSprimarykey(ROLE_ID,MENU_ID)系統(tǒng)前臺設計系統(tǒng)登入界面:界面如下圖:圖5-1登陸界面源代碼節(jié)選: Stringname=request.getParameter("username");//獲取用戶名 Stringpassword=request.getParameter("password");//獲取密碼 Stringrole_id=request.getParameter("role");//獲取用戶等級 intid=Integer.parseInt(role_id); LoginDAOlogin=newLoginDAO(name,password,id); booleanflag=login.checkUser(); if(flag){ //建立回話 Useruser=login.getUser(); HttpSessionsession=request.getSession(); //在會話中將用戶操作目錄和所能操作的功能做保存 session.setAttribute(Constants.KEY_SESSION,user); response.sendRedirect("default.jsp");//跳轉生成目錄 }else{ //System.out.println(flag); request.setAttribute("msg","err"); request.getRequestDispatcher("wrong.html").forward(request, response); }動態(tài)生成菜單 每次登入時自動訪問數據庫查詢角色所對應的功能菜單如圖所示 圖5-2功能菜單查詢界面如圖所示圖5-3查詢界面 通過查詢數據庫生成數組進行遍歷產生結果集,利用分頁技術展示給用戶使用。代碼節(jié)選: 根據角色ID查詢角色對應的菜單 conn=JdbcUtil.getConnection(); stat=conn.prepareStatement(sql); stat.setInt(1,id); set=stat.executeQuery(); while(set.next()){ menu=newMenu(); 如果沒有父目錄,則將父目錄設為-1 intmenuid=set.getInt("id"); FunDAOfun=newFunDAOImpl(); List<Fun>funs=fun.findFunByMenu(menuid); menu.setId(menuid); menu.setName(set.getString("name"));目錄名 intfatherid=set.getInt("father_id"); if(fatherid<1){ fatherid=-1; } menu.setFatherid(fatherid);父目錄ID menu.setUri(set.getString("uri")); menu.setFuns(funs); list.add(menu); }角色添加如圖所示 添加角色是比較關鍵的部分,修改角色對應的目錄和功能,通過修改中間表.并且不通過UPDATA來修改,只能將原有數據刪除然后重新插入代碼如下:Stringsql1="deletefromoa_roles_menuswhererole_id=?";//刪除菜單語句Stringsql3="deletefromoa_roles_funswhererole_id=?";//刪除功能語句Stringsql2="insertintooa_roles_menusvalues(?,?)";//插入菜單語句Stringsql4="insertintooa_roles_funsvalues(?,?)";//插入功能語句 stat=conn.prepareStatement(sql1);//刪除菜單關聯stat.setInt(1,role.getRole_id());//插入刪除值stat2=conn.prepareStatement(sql3);//刪除功能關聯stat2.setInt(1,role.getRole_id());//插入刪除值stat.execute();stat2.execute();stat3=conn.prepareStatement(sql2);//批量插入菜單對應關聯 參考文獻[1].孫衛(wèi)琴.Java網絡編程精解[M].–北京:電子工業(yè)出版社,2007.3[2].林勝利.連旦暉Java開發(fā)經典模式與實例[M].–北京:中國鐵道出版社,2007.1[3].張洪偉.TomcatWeb開發(fā)整合應用[M].清華大學出版社,2006.3.[4]閆靜,鐘斌.DreamweaverMX2004與ASP動態(tài)網頁基礎與范例[M].北京:機械工業(yè)出版社,2004.1-280.[5]邱旭東,劉文浩.基于JSP的MVC開發(fā)模式研究及應用[J].中國科技術信息2006[6]汪孝宜等.JSP數據庫開發(fā)實例精粹[M].電子工業(yè)出版社2005[7]孫衛(wèi)琴.精通Struts:基于MVC的JavaWeb設計與開發(fā)[M].電子工業(yè)出版社2004[8]屈文軍,孫林夫,趙慧娟,屈喜龍.ASP服務平臺身份認證技術研究[J].計算機應用研究,2006(5).[9]劉麗平,王文杰.基于Web的自適應性智能試題庫的設計[J].計算機系統(tǒng)應用,2006(4).[9]劉明,蔣朝慧,李燕華.基于J2EE標準ASP服務平臺的實現[J].計算機應用與軟件,2006(4).[10]RusselWinderGrahamRoberts著.Java軟件開發(fā)[M].人民郵電出版社2004[11]GaryBollinger,BharathiNatarajan著.JSP程序設計指南[M].清華大學出版社2002附錄《TheArtofTrade-offs》HowdoyouDevelopSoftware?Thereseemstobeacommonmisunderstandingamongnetizenswhocreatesoftwareforaliving.Therearethosewhoproclaimloudlythatonemustmodelthewholeworldbeforecommittingtocodeandthatthosewhojumpintocodeearlyaremerely``code-like-hell''hackers.Thenthere'sthecrowdthatsays,Hey,waitaminute.Youcan'tlearnenoughfromasimplemodelupfront.Youhavetoexplorewithcodeofsometype.Otherwise,youcouldveryeasilymissimportantdetails,orevencreateamodelthatcan'tbebuilt!TheOneTrueAnswerSowhichcampiscorrect?Thosewhopreferhackingaroundincode,orthethosewhoinsistonfullymodelingtheirperceptionoftheworldbeforeeventhinkingaboutcode?Well,inaway,theyarebothright.Atleast,theyaretryingtosolvethesameproblemgainingsufficientknowledgetocorrectlyimplementasystem.See,asoftwareprojectisunlikeprojectsinotherengineeringdisciplines.Softwareprojectsareinherentlyprojectsofdiscovery.Youandyourteamwilllearnmoreastimegoesby.Yourknowledgeofthecustomer,theapplication,theenvironment,thesponsoryouwillcometoknowmuchmoreabouteachofthesetopicsasyougoalong.Andyoumustbepreparedtoactonthatnew-foundknowledge.Theerroroftheclassicwaterfallapproachisthatthereisn'tanyfeedback.Discoveriesmadeatthelowerlevelsofcodinghavenowaytoaffectrequirementsorarchitectureinawaterfallmodel.Yettheselowerleveldetailscanoftenhaveprofoundeffectsonyourunderstandingofthehigherlevels!MitigateRiskMitigationofriskisattheheartoftraditionalengineering.Whenyoubuildabridge,youdon'tbuilditasaperfectstructurethatwillnevercollapse.Insteadyoubuildittowithstand500yearwinds,200yearfloods,300%expectedmaximumload,etc.Ifyoudidn'tmakethesedesigntrade-offs,everybridgewouldbesolidconcretefromthedecktotheground,andwouldbesomethinglike500feetwide.Engineeringisallaboutmakingthesecompromises,andsoissoftwareengineering.Thedifferenceisthatwithsoftwareengineering,muchoftheriskisintheprocessofbuildingit,aswellasinthefinishedstructure,duetothenatureofdiscovery.Knowingthatyouwillcontinuetomakediscoveriesasyouproceed,itcomesdowntothefactthatyouwanttominimizetheriskofdiscoveringsomethingthatinvalidatestoomuchofyourexistingwork.Thosewhojumprightintohackingoutproductioncodearealreadyintroublebeforetheybegin:largechangesindirection(broughtaboutbyincreasedknowledge)arehardesttochangehere,andarethemostexpensive.Thosewhoproposemodelingfullybeforedoinganyimplementationrunthesameriskofmakingimportantdiscoverieswhilecreatingproductioncode.Themodel,beinganabstractversionofreality,mustforfeitsomedetails.Andthedevilmaywellbelurkinginthosedetails.Thentherearethosewhotrytobalancethesetwoextremes,bymodelingalittle,andcodingalittle,orbymodelingwithadisposableprototypeortracer-bulletcode.ManyoftheUsenetdiscussionsofthistopicseemtoboggeddowninthedetailshereofbreadth-firstversusdepth-first;whendoyoumodelandwhendoyoucode,andsoon.Differentmethodswillsuggestdifferentwaysofattackingthisproblem.MethodsRUseXtremeProgrammingisbasedonthepremiseofmitigatingrisk,andinaway,soarealltheotherpopulardesignmethodsofthedaywhethertheyadmittoitornot.Publishedmethodsattempttoanswerthequestion``HowdoIandmyteamgainthemostknowledgeabouttheproblemandsolutiondomaininthemosteconomicalwaypossibleinordertocreateasoftwaresystem?''Clearly,riskisinherentinthediscoveryprocessofaproject.Butthatdiscoveryisongoing,andwecan'taffordtomakecrucialdiscoverieslateinthegame.Ideally,wewanttodiscovereverythingwe'llneedtoknowup-frontandunderstanditperfectly.Itwillneverhappenthatway,ofcourse,soeverymethodtriestocreateanenvironmentwhereyoucanmaketheimportantdiscoveriesasearlyaspossible.ThegoldenAnswerofaparticularmethodisbasedonhowtoloweryourriskofmakingcrucial,latediscoveries.Butthoseanswerswillbedifferentforeveryone.Theanswerdependsonyourteam,yourproject,yourexperience,yourproblemdomain,yourworkenvironment,etc.Onceyouhavefoundamethodthatworkswellforoneproject,thereisnoguaranteethatitwillworkwellonthenext.Ifanyoftheselistedfactorschange,yourprocesswilllikelyneedrevising.Itain'tPerfectYousee,unlikethepristinebeautyofanalgorithmorsequenceoftightly-codedmachineinstructions,itain'tperfect.Processesandmethodsdependonpeopletocarrythemoutandtounderstandthematerialbeingexamined.Andpeoplearefallible.Sointheend,itcomesbackaroundtotheideaofmanagingtrade-offs.Youcouldspendsixmonthsonaprojectdiddlingaroundwithanobjectmodel,onlytodiscoverthatyoumisunderstoodthecustomer'sperformancerequirementsduringimplementation.Youcouldjumpintoimplementationtooearly,andlockyourselfintoadesignorarchitecturethatwon'tsupportimportantrequirementsthatyouhaven'tgottentoyet.Oryoucanweighthetrade-offstominimizeoverallrisk,andanalyzealittle,designalittle,andcodealittle.Therelativeproportionofeachtask,theorder,theamountoffeedbackallofthesewillbedifferentforeachproject,andeachpractitioner.Therearenorightanswersthatarecorrectallthetime,inallcontexts.Oncemustbepragmatic,andmakethechoicethatfitsthecurrentproblem,thecurrentteam,thecurrentenvironment,andsoon.Sonexttimeyouenterintoadiscussionofcomputerasanengineeringexerciseversusanart,considertheartoftrade-offs.Otherdisciplinesmustlivewithtrade-offsconcerningthephysicalworld;wemustlivewithtrade-offsconcerningourselves.Andthenwecanproceedtodevelopsoftware.文獻翻譯你是怎樣開發(fā)軟件的?在那些以編寫軟件為生的人們之間有一個常見的爭執(zhí)。有些人堅持認為在編寫代碼前必須先要有一個完整的模型,那些過早進行編碼的人只不過是一些“在地獄中編碼”的hacker。然后,就會有另外一群人說,嗨!等一下。你無法從一個簡單的預先模型中學到足夠的知識。你必須得編寫某些形式的代碼。否則,你很可能會遺漏掉一些重要細節(jié),甚至創(chuàng)建出一個無法構建的模型。正確答案那么哪一方正確呢?是整天侵淫在代碼之中的那一方呢?還是堅持在思考代碼前必須先完整地建立對世界感知的模型那一方呢?嗯,他們在某種程度上都是正確的。至少,他們在試圖解決同樣的問題--獲取正確實現一個系統(tǒng)的足夠知識。請注意,軟件項目和其他工程學科中的項目不同。軟件項目在本質上是以發(fā)現為中心的項目。隨著時間的過去,你和你的團隊會學到更多的知識。你對客戶、應用、環(huán)境以及發(fā)起者的認識也會隨著項目的進展而增加。你必須得做好適應新發(fā)現的知識的準備。典型的瀑布方法的錯誤就在于根本沒有任何反饋。在瀑布模型中,低層編碼中的任何發(fā)現根本無法影響到需求和架構。然而,這些低層細節(jié)對于理解更高層的東西來說常常具有深遠的影響。降低風險降低風險是傳統(tǒng)工程的核心。當建造一座橋梁時,你不會考慮把它建造成一座永遠不會倒塌的完美橋梁。相反,你只會考慮它能經受500年的風吹、200年的水淹、最大3倍于所期望的承重,等等。如果不做這些設計權衡,那么所有的橋梁都將是從橋面到地面的實心混凝土,都將有500英尺寬。工程的全部就是做這些折中,軟件工程也是如此。軟件工程的困難在于:大部分的風險都存在于構建它的過程以及所完成的結構之中。原因就是其發(fā)現的本質。知道了要在前進中不斷地進行發(fā)現,那么問題的核心就在于要使所發(fā)現的東西使你已完成工作失效的風險最小化。那些直接去拼湊產品代碼的人在開始之前就已經陷入麻煩之中:(由增加的知識所導致的)方向上大的變化此時更改起來最為困難,也最為昂貴。那些建議在做任何實現之前要先建立完整模型的人,同樣也冒著在創(chuàng)建產品代碼期間會出現重要發(fā)現的風險。作為現實抽象版本的模型,必然會失去一些細節(jié)。而惡魔很可能就潛伏在這些細節(jié)之中。于是,就有一些人試圖在這兩個極端之間進行平衡,他們建立一點模型,就進行一些編碼,他們使用一次性的原型或者代碼曳光彈進行建模。Usenet中許多關于這個主題的討論都集中在是寬度優(yōu)先還是深度優(yōu)先;何時建模以及何時編碼等細節(jié)之上。針對這個問題,不同的方法會給出不同的建議。方法就是我們自己極限編程是基于降低風險的前提之上,當今所有其他流行設計方法在某種程度上亦是如此――不管它們是否承認這一點。已公開的方法都在試圖回答下面問題:“為了創(chuàng)建一個軟件系統(tǒng),我和我的團隊如何才能以最為經濟的方法獲取最多的問題領域和解決方案領域知識?!焙苊黠@,風險固有地存在于項目的發(fā)現過程之中。然而,該發(fā)現是一直在進行的,我們無法承受游戲后期的重大發(fā)現。在理想情況下,我們希望能夠預先發(fā)現我們希望知道的一切,并且完全理解它們?,F實肯定不會是這樣的,所以每個方法都試圖創(chuàng)建出一個環(huán)境,在其中你能夠盡可能早地做出最重要的發(fā)現。一個特定方法最有價值之處就在于它是如何降低在晚期出現的關鍵發(fā)現的風險的。不過,這些答案對每個人來說都是不同的。答案和你的團隊、項目、經驗、問題領域、工作環(huán)境等相關。如果你曾經發(fā)現一個方法很適合于一個項目,誰也無法保證它會適合于下一個項目。如果所列出的這些因素中的任何一個發(fā)生變化,很可能就要對過程進行修訂。它并不完美你已經看到,和算法或者堅固的機器指令序列的質樸之美不同,它并不完美。過程和方法依賴于人去維持它們,去理解將被檢查的要素。而人是很容易犯錯誤的。所以在最后,我們再回到對管理權衡的想法。你可以在一個項目的對象模型上浪費6個月的時間,結果在實現期間卻發(fā)現你錯誤的理解了客戶的性能需求。你可以很早就開始實現,把自己鎖定在一個無法支持一些你還不知道的重要需求的設計和架構上?;蛘撸憧梢詫嗪膺M行評估以最小化總的風險,接著分析一點、設計一點、編碼一點。每個任務所占的相對比例、順序、反饋的數量――所有這些對每個項目、每個實踐者都是不同的。不存在在任何時間、任何場合都正確的答案。所以,一定要注重實效,作出最適合當前問題、當前團隊、當前環(huán)境的選擇。所以,當你下次進行計算機是工程實踐還是藝術的討論時,請考慮一下權衡的藝術。其他的工程學科必須要建立在和物理世界有關的權衡之上;我們必須要面對和我們自己相關的權衡。然后我們就可以開始開發(fā)軟件了?;贑8051F單片機直流電動機反饋控制系統(tǒng)的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現的供暖系統(tǒng)最佳啟停自校正(STR)調節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協議棧的實現基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內核設計及其應用研究基于單片機的遠程抄表系統(tǒng)的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統(tǒng)單片機系統(tǒng)軟件構件開發(fā)的技術研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調儀的研制氣壓式線性摩擦焊機單片機控制系統(tǒng)的研制基于單片機的數字磁通門傳感器基于單片機的旋轉變壓器-數字轉換器的研究基于單片機的光纖Bragg光柵解調系統(tǒng)的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統(tǒng)設計Pico專用單片機核的可測性設計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現基于單片機的電液伺服控制系統(tǒng)用于單片機系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機的時控和計數系統(tǒng)性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統(tǒng)研究單片機控制的后備式方波UPS提升高職學生單片機應用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數據采集系統(tǒng)基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設計基于單片機的單晶金剛石刀具刃磨設備的數控改造基于單片機的溫度智能控制系統(tǒng)的設計與實現基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協議轉換器基于單片機和DSP的變壓器油色譜在線監(jiān)測技術研究基于單片機的膛壁溫度報警系統(tǒng)設計基于AVR單片機的低壓無功補償控制器的設計基于單片機船舶電力推進電機監(jiān)測系統(tǒng)基于單片機網絡的振動信號的采集系統(tǒng)基于單片機的大容量數據存儲技術的應用研究基于單片機的疊圖機研究與教學方法實踐基于單片機嵌入式Web服務器技術的研究及實現基于AT89S52單片機的通用數據采集系統(tǒng)基于單片機的多道脈沖幅度分析儀研究機器人旋轉電弧傳感角焊縫跟蹤單片機控制系統(tǒng)HYPERLINK"/detail.htm?353
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黃金產品知識及優(yōu)勢
- 學校勞動教育的實施方案
- 廚師招聘筆試題及解答(某世界500強集團)
- 寧東煤炭基地排矸場人工植物群落優(yōu)勢種生態(tài)位和種間關系研究
- 專題16有絲分裂和減數分裂的綜合-2022年高考生物一輪復習重難點專項突破(原卷版)
- 2024年度建筑工程設計合同創(chuàng)意與實施標準
- 2024年建筑材料訂購合同:黃沙水泥版
- 2024年城市綠化工程苗木供應與養(yǎng)護服務合同
- 2024年大數據分析平臺建設與技術服務合同
- 畢業(yè)設計開題報告
- 跨國企業(yè)中方外派人員的跨文化適應
- 《道路交叉設計》課件
- 《活著》讀后感-課件
- 體檢報告匯總分析中風險的防范
- 村里建群管理制度
- 【城市軌道交通運營安全管理研究5300字】
- 2024年中核匯能有限公司招聘筆試參考題庫含答案解析
- 上海市2024屆高三7月模擬預測歷史試題(等級考)(解析版)
- 肺炎護理查房課件
- 2024年中國華能集團招聘筆試參考題庫含答案解析
- 服務質量的管理規(guī)定模版
評論
0/150
提交評論