版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄摘要 2Abstract 31、 引言 41.1選題背景 41.2課題意義 52、項(xiàng)目概述 62.1課題簡(jiǎn)要說(shuō)明 62.2可行性研究 62.2.1經(jīng)濟(jì)可行性 62.2.2技術(shù)可行性 72.2.3運(yùn)行可行性 72.2.4時(shí)間可行性 72.2.5法律可行性: 73、需求分析 83.1功能需求 83.1.1功能模塊圖 83.1.2系統(tǒng)E-R圖 93.2性能需求 94、相關(guān)技術(shù)介紹 104.1JSP技術(shù)簡(jiǎn)介 104.2JSP工作原理 104.3JSP體系結(jié)構(gòu) 104.4JSP的特點(diǎn) 114.5系統(tǒng)數(shù)據(jù)庫(kù)連接 124.6SQLSERVER2000數(shù)據(jù)庫(kù) 164.7BS模式與C/S模式的比較分析 174.8JDBC介紹 185、系統(tǒng)設(shè)計(jì) 205.1用戶登陸 205.2管理員功能 225.2.1添加管理員 225.2.2修改管理員密碼 255.2.3普通用戶管理 276、系統(tǒng)調(diào)試與測(cè)試 306.1程序調(diào)試 306.2程序的測(cè)試 306.2.1測(cè)試的重要性及目的 306.2.2測(cè)試的步驟 326.2.3測(cè)試的主要內(nèi)容 32結(jié)束語(yǔ) 34致謝 36參考文獻(xiàn) 37摘要隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,計(jì)算機(jī)在信息管理中應(yīng)用的普及,利用計(jì)算機(jī)在實(shí)現(xiàn)婚紗影樓的管理勢(shì)在必行。當(dāng)今社會(huì)正快速向信息化社會(huì)前進(jìn),信息自動(dòng)化的作用也越來(lái)越大。從而使我們從繁雜的事務(wù)中解放出來(lái),提高了我們的工作效率。目前很多婚紗影樓管理還處于人工管理的階段,效率低下,已經(jīng)遠(yuǎn)遠(yuǎn)落后于當(dāng)今技術(shù)的發(fā)展。并且人工管理的弊端也愈來(lái)愈嚴(yán)重,由于不可避免的人為因素,造成數(shù)據(jù)的遺漏、而造成損失的事例層出不窮。計(jì)算機(jī)信息化管理有著儲(chǔ)存信息量大,速度快等許多優(yōu)點(diǎn),使我們處理信息及時(shí)快捷。因此做出了這個(gè)婚紗影樓管理系統(tǒng)。關(guān)鍵詞婚紗影樓管理系統(tǒng)計(jì)算機(jī)技術(shù)信息管理AbstractAlongwithcomputertechnology'sswiftdevelopment,thecomputerintheinformationmanagementtheapplicationpopularization,isrealizingthenuptialdressshadebuildingmanagementusingthecomputertobeimperative.Thesocietyfasttotheinformationizationsocietyadvance,theinformationautomation'sfunctionisalsonowgettingbiggerandbigger.Thuscausesustoliberatefromthenumerousanddiversebusiness,raisedourworkingefficiency.Atpresentaremanynuptialdressshadebuildingmanagementalsotobeinthelabormanagementthestage,theefficiencyislow,alreadybyfarfellbehindnowthetechnicaldevelopment.Andlabormanagement'smalpracticeisalsogettingmoreandmoreserious,asaresultoftheinevitablehumanfactor,causesthedatatheomission,tocausethelossestheinstancetoemergeoneafteranotherincessantly.Thecomputerinformationizationmanagementhasthestorageinformationcontenttobebig,speedquickandsoonmanymerits,causesourprocessinformationpromptquickly.Thereforehasmadethisnuptialdressshadebuildingmanagementsystemmanagementsystem.KeywordNuptialdressshadebuildingmanagementsystemComputertechnologyInformationmanagement引言1.1選題背景隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用?,F(xiàn)在我國(guó)的信息管理水平還比較落后,這樣的機(jī)制已經(jīng)不能適應(yīng)時(shí)代的發(fā)展,因?yàn)樗速M(fèi)了許多人力和物力,在信息時(shí)代傳統(tǒng)的管理方法必然被計(jì)算機(jī)為基礎(chǔ)的信息管理所取代。軟件作為一項(xiàng)有力的工具,只能當(dāng)此種工具,與我們的實(shí)踐相結(jié)合起來(lái)的時(shí)候,才具有重大的社會(huì)價(jià)值及使用價(jià)值。因此根據(jù)目前實(shí)際的情況開發(fā)這樣一套管理系統(tǒng)是十分必要的。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)進(jìn)行管理,具有著手工管理所無(wú)法比擬的優(yōu)點(diǎn)。例如:可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高工作的效率,也是信息正規(guī)化管理與世界接軌的重要條件。本系統(tǒng)用JSP語(yǔ)言來(lái)編寫社本系統(tǒng),數(shù)據(jù)庫(kù)用SQLSERVER2000來(lái)連接系統(tǒng)。本論文主要涉及軟件,數(shù)據(jù)庫(kù)與網(wǎng)絡(luò)技術(shù)等。涵蓋知識(shí)面廣,可有效地提高學(xué)生綜合運(yùn)用所學(xué)知識(shí)分析解決問(wèn)題的能力,增強(qiáng)學(xué)生對(duì)事物的理解與掌握能力,培養(yǎng)學(xué)生掌握科學(xué)的研究方法,正確的設(shè)計(jì)思想,獨(dú)立思考,勇于進(jìn)取,探索創(chuàng)新,為今后進(jìn)一步學(xué)習(xí)與工作奠定了良好的基礎(chǔ)。1.2課題意義人類社會(huì)正從工業(yè)社會(huì)邁向信息社會(huì),信息技術(shù)是當(dāng)代最具潛力的新的生產(chǎn)力,信息資源是國(guó)民經(jīng)濟(jì)和社會(huì)發(fā)展的戰(zhàn)略資源,信息化水平已成為國(guó)家現(xiàn)代化和綜合國(guó)力的重要標(biāo)志。全球信息化不僅對(duì)我國(guó)的經(jīng)濟(jì)和社會(huì)產(chǎn)生了廣泛而深刻的影響,而且給信息產(chǎn)業(yè)帶來(lái)了難得的發(fā)展機(jī)遇。努力把我國(guó)建設(shè)成為現(xiàn)代化國(guó)家的經(jīng)濟(jì)形式模式,就必須加快信息化建設(shè)步伐?;榧営皹枪芾硐到y(tǒng)就是我們常說(shuō)的MIS(ManagementInformationSystem),在強(qiáng)調(diào)管理,強(qiáng)調(diào)信息的現(xiàn)代社會(huì)中它變得越來(lái)越普及。MIS是一門新的學(xué)科,它跨越了若干個(gè)領(lǐng)域,比如管理科學(xué)、系統(tǒng)科學(xué),運(yùn)籌學(xué)、統(tǒng)計(jì)學(xué)以及計(jì)算機(jī)科學(xué)。在這些學(xué)科的基礎(chǔ)上,形成信息收集和加工的方法,從而形成一個(gè)縱橫交織的系統(tǒng)?;榧営皹枪芾硐到y(tǒng)在最初級(jí)階段是統(tǒng)計(jì)系統(tǒng),所研究的內(nèi)容是數(shù)量數(shù)據(jù)間表面的規(guī)律,它可以把數(shù)據(jù)分成較相關(guān)和比較不相關(guān)的組,然后把數(shù)據(jù)轉(zhuǎn)換為信息。當(dāng)建立了信息數(shù)據(jù)庫(kù),有了計(jì)算機(jī)網(wǎng)絡(luò)從而達(dá)到數(shù)據(jù)共享后,從系統(tǒng)觀點(diǎn)出發(fā),實(shí)施全局規(guī)劃和設(shè)計(jì)信息系統(tǒng)時(shí),就達(dá)到婚紗影樓管理系統(tǒng)的階段。隨著計(jì)算機(jī)技術(shù)的進(jìn)步和人們對(duì)系統(tǒng)的需求進(jìn)一步提高,人們更加強(qiáng)調(diào)婚紗影樓管理系統(tǒng)能否支持信息高層領(lǐng)導(dǎo)的決策這一功能,更側(cè)重于信息外部信息的收集、綜合數(shù)據(jù)庫(kù)、模型庫(kù)、方法庫(kù)和其他人工智能工具能否直接面向決策者,這是決策支持系統(tǒng)(DDS,DecisionSupportSystem)的任務(wù)。目前,在我國(guó)的信息化項(xiàng)目工程建設(shè)中,絕大多數(shù)用戶(信息主)無(wú)法組織隊(duì)伍對(duì)信息系統(tǒng)建設(shè)進(jìn)行專業(yè)化管理,難以勝任從可行性分析、規(guī)劃設(shè)計(jì)、招標(biāo)、方案評(píng)審到工程監(jiān)理和工程驗(yàn)收全過(guò)程的管理與組織協(xié)調(diào)工作,建設(shè)方和承建方在信息建設(shè)過(guò)程中存在嚴(yán)重的信息不對(duì)稱問(wèn)題。應(yīng)用計(jì)算機(jī)輔助審計(jì)技術(shù)對(duì)電子數(shù)據(jù)處理系統(tǒng)本身進(jìn)行審計(jì),即EDI審計(jì)。二十世紀(jì)八十年代、九十年代信息技術(shù)的進(jìn)一步發(fā)展與普及,使得信息越來(lái)越依賴信息及產(chǎn)生信息的信息系統(tǒng)。人們開始更多地關(guān)注信息系統(tǒng)的安全性、保密性、完整性及其實(shí)現(xiàn)信息目標(biāo)的效率、效果,真正意義的信息系統(tǒng)審計(jì)才出現(xiàn)。隨著電子商務(wù)的全球普及,信息系統(tǒng)的審計(jì)對(duì)象、范圍及內(nèi)容將逐漸擴(kuò)大,采用的技術(shù)也將日益復(fù)雜。到目前為止,信息系統(tǒng)審計(jì)在全球來(lái)看,還是一個(gè)新的業(yè)務(wù),說(shuō)明信息系統(tǒng)審計(jì)正逐漸受到重視。2、項(xiàng)目概述2.1課題簡(jiǎn)要說(shuō)明隨著人們生活水平的不斷提高,婚紗影樓這一行業(yè)越來(lái)越受到人們青睞。但是日常業(yè)務(wù)繁多,物品借還、婚紗用品、攝影用品的管理效率低下。所以,特開發(fā)一套婚紗影樓管理系統(tǒng),來(lái)進(jìn)行上述內(nèi)容的管理。2.2可行性研究該階段通過(guò)對(duì)系統(tǒng)目標(biāo)的初步調(diào)研和分析,提出可行性方案并進(jìn)行論證。我們?cè)谶@里主要從技術(shù)可行性、經(jīng)濟(jì)可行性和操作可行性等方面進(jìn)行分析。2.2.1經(jīng)濟(jì)可行性開發(fā)該系統(tǒng)所需的相關(guān)資料可以通過(guò)已存在的相關(guān)系統(tǒng)進(jìn)行調(diào)查采集,所需的其他應(yīng)用軟件、硬件系統(tǒng)也易于獲得.因此,開發(fā)成本較低。而引進(jìn)使用本系統(tǒng)后,與傳統(tǒng)方式相比,具有高效率、低成本、高質(zhì)量的特點(diǎn),可以節(jié)省不少人力、物力及財(cái)力。所以,從經(jīng)濟(jì)的角度來(lái)看,該系統(tǒng)可行。2.2.2技術(shù)可行性技術(shù)可行性要考慮現(xiàn)有的技術(shù)條件是否能夠順利完成開發(fā)工作,軟硬件配置是否滿足開發(fā)的需求等。本網(wǎng)站用的是JSP開發(fā)語(yǔ)言,調(diào)試相對(duì)簡(jiǎn)單,當(dāng)前的計(jì)算機(jī)硬件配置也完全能滿足開發(fā)的需求,因此在技術(shù)上是絕對(duì)可行的。軟件方面:由于目前單機(jī)模式相對(duì)發(fā)展成熟,故軟件的開發(fā)平臺(tái)成熟可行,它們速度快、容量大、可靠性能高、價(jià)格低,完全能滿足系統(tǒng)的需求。2.2.3運(yùn)行可行性運(yùn)行可行性是對(duì)組織結(jié)構(gòu)的影響,現(xiàn)有人員和機(jī)構(gòu)和環(huán)境對(duì)系統(tǒng)的適應(yīng)性及人員培訓(xùn)補(bǔ)充計(jì)劃的可行性。當(dāng)前信息化技術(shù)已經(jīng)相當(dāng)普及,各類操作人員水平都有相當(dāng)?shù)母叨?,所以在運(yùn)行上是可行性的。本系統(tǒng)的開發(fā),是典型的Mis開發(fā),主要是對(duì)數(shù)據(jù)的處理,包括數(shù)據(jù)的收集,數(shù)據(jù)的變換,及數(shù)據(jù)的各種報(bào)表形式的輸出。采用流行的JSP+SQLSERVER2000體系,已無(wú)技術(shù)上的問(wèn)題。2.2.4時(shí)間可行性從時(shí)間上看,在兩個(gè)月的時(shí)間里學(xué)習(xí)相關(guān)知識(shí),并開發(fā)網(wǎng)站,時(shí)間上是有點(diǎn)緊,但是不是不可能實(shí)現(xiàn),通過(guò)兩個(gè)多月的努力功能基本實(shí)現(xiàn)。2.2.5法律可行性:①所有技術(shù)資料都為合法。②開發(fā)過(guò)程中不存在知識(shí)產(chǎn)權(quán)問(wèn)題。③未抄襲任何網(wǎng)站,不存在侵犯版權(quán)問(wèn)題。④開發(fā)過(guò)程中未涉及任何法律責(zé)任。綜上所述,本系統(tǒng)的開發(fā)從技術(shù)上、從經(jīng)濟(jì)上、從法律上都是完全可靠的。3、需求分析3.1功能需求(1)日常操作管理;(2)用戶管理;(3)客戶管理;(4)用品管理;(5)商品外賣管理。3.1.1功能模塊圖婚紗影樓管理系統(tǒng)婚紗影樓管理系統(tǒng)日常操作管理用戶管理客戶管理用品管理商品外賣管理3.1.2系統(tǒng)E-R圖密碼密碼用戶名管理員管理信息客戶管理用戶管理用品管理商品外賣管理3.2性能需求系統(tǒng)對(duì)環(huán)境的要求服務(wù)起端的最低配置是由建立站點(diǎn)所需要的軟件來(lái)決定的,在最底配置的情況下,服務(wù)器的性能往往不進(jìn)人意,現(xiàn)在硬件性能已經(jīng)相當(dāng)出色,而且價(jià)格也很便宜,因此通常應(yīng)給服務(wù)器端配置高性能硬件。本機(jī)器的配置如下:處理器:InterPentium41.6Hz或更高。內(nèi)存:256MB硬件空間:40GB題目主要采用的技術(shù)數(shù)據(jù)庫(kù):MicrosoftSQLServer2000。編程語(yǔ)言:jsp,java。服務(wù)器:Tomcat5.5,jdk1.5開發(fā)環(huán)境:WindowsXP4、相關(guān)技術(shù)介紹4.1JSP技術(shù)簡(jiǎn)介JSP(JavaServerPage服務(wù)器網(wǎng)頁(yè))是從1998年開始出現(xiàn)的新技術(shù)。由Sun公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),是基于JavaServlet以及整個(gè)Java體系的web開發(fā)技術(shù)。在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中加入腳本片段和JSP標(biāo)記(Tag),構(gòu)成JSP網(wǎng)頁(yè)(*.jsp)。JSP技術(shù)為創(chuàng)建顯示動(dòng)態(tài)生成內(nèi)容的web頁(yè)面提供了簡(jiǎn)便的方法。JSP作為Java家族的一員,承襲了Java的特點(diǎn),即跨平臺(tái)的特性,也即一次編譯,到處運(yùn)行。在國(guó)外,己經(jīng)大量使用JSP作為網(wǎng)絡(luò)應(yīng)用程序的開發(fā)工具,而在國(guó)內(nèi),盡管JSP還不是主流開發(fā)技術(shù),但是由于JSP的強(qiáng)大優(yōu)勢(shì),許多網(wǎng)站都已經(jīng)準(zhǔn)備轉(zhuǎn)向JSP,利用JSP來(lái)開發(fā)動(dòng)態(tài)網(wǎng)站。4.2JSP工作原理JSP是面向服務(wù)器的,因此支持任何瀏覽器。當(dāng)Web服務(wù)器和JSP引擎遇到訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),JSP引擎將請(qǐng)求對(duì)象發(fā)送給服務(wù)器端的相關(guān)組件,比如JavaBean組件、Servlet或EJB等,然后由服務(wù)器端組件處理這些請(qǐng)示,可能需要從數(shù)據(jù)庫(kù)或數(shù)據(jù)存儲(chǔ)中檢索信息,然后服務(wù)器端組件再將響應(yīng)對(duì)象返回JSP引擎。JSP引擎將響應(yīng)對(duì)象傳遞給JSP頁(yè)面,根據(jù)JSP頁(yè)面的HTML格式完成數(shù)據(jù)編排,最后Web服務(wù)器和JSP引擎將格式化后的JSP頁(yè)面以HTML格式返回客戶瀏覽器。這就是當(dāng)前網(wǎng)站構(gòu)建中廣泛采用的瀏覽器——Web服務(wù)器——后臺(tái)數(shù)據(jù)庫(kù)的三層架構(gòu)模式。因?yàn)镴SP所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果。4.3JSP體系結(jié)構(gòu)JSP網(wǎng)站開發(fā)標(biāo)準(zhǔn)給出了兩種使用JSP的技術(shù),可以歸納為模式一、模式二。模式一:JSP+JavaBeans技術(shù)在這種模式中,JSP頁(yè)面獨(dú)自響應(yīng)請(qǐng)求并將處理結(jié)果返回給客戶。Bean處理所有數(shù)據(jù)訪問(wèn),JSP實(shí)現(xiàn)頁(yè)面的表現(xiàn),以實(shí)現(xiàn)內(nèi)容生成與顯示相分離。當(dāng)處理復(fù)雜的大型應(yīng)用時(shí),頁(yè)面被嵌入大量的腳本或Java代碼段,當(dāng)需要處理的商業(yè)邏輯復(fù)雜時(shí),這種情況會(huì)變得非常糟糕,大量的內(nèi)嵌代碼使得頁(yè)面程序變得復(fù)雜,對(duì)于前端界面設(shè)計(jì)人員,這是不可思議的事情。所以模式一可用于小型應(yīng)用,不能夠滿足大型應(yīng)用的需要。模式二:JSP+Servlet+JavaBeans技術(shù)Servlet技術(shù)是一種采用Java技術(shù)來(lái)實(shí)現(xiàn)CGI功能的一種技術(shù),Servlet技術(shù)非常適于服務(wù)器端的處理和編程,并且Servlet會(huì)長(zhǎng)期駐留在內(nèi)存。從開發(fā)的觀點(diǎn)看,模式二具有更清晰的頁(yè)面表現(xiàn),清楚的開發(fā)者角色劃分,在大規(guī)模項(xiàng)目開發(fā)中,模式二更被采用,模式二也更符合當(dāng)前流行的MVC結(jié)構(gòu)(Model/view/controller),其中Servlet對(duì)應(yīng)controller,處于控制者的位置,處理HTTP請(qǐng)求,負(fù)責(zé)生成JSP中使用的Beans組件或?qū)ο?,并判斷?yīng)將請(qǐng)求傳遞給哪個(gè)JSP等,JSP對(duì)應(yīng)view,負(fù)責(zé)生成最終的動(dòng)態(tài)網(wǎng)頁(yè)并返回給瀏覽器。而JavaBeans對(duì)應(yīng)的是Model,實(shí)現(xiàn)各個(gè)具體的應(yīng)用邏輯與功能。4.4JSP的特點(diǎn)簡(jiǎn)化的頁(yè)面生成技術(shù)。JSP頁(yè)面用標(biāo)準(zhǔn)的HTML或XML命令來(lái)處理頁(yè)面的格式化和布局設(shè)計(jì),而用類似HTML、XML的標(biāo)記和Java語(yǔ)言編寫的腳本程序生成頁(yè)面內(nèi)容。這使得頁(yè)面形式與頁(yè)面內(nèi)容互相獨(dú)立,非常有利于大型項(xiàng)目的分工合作。與Java平臺(tái)有機(jī)集成。JSP技術(shù)是Java2平臺(tái)的重要組成部分,JSP使用Java語(yǔ)言作為它的腳本語(yǔ)言。在JSP頁(yè)面中可以使用幾乎所有的Java組件和JavaAPI,這就能充分發(fā)揮出Java語(yǔ)言的強(qiáng)大功能。使用JSP技術(shù)可以創(chuàng)建具有高度可伸縮性和可靠性的Web應(yīng)用程序。硬件平臺(tái)和服務(wù)器無(wú)關(guān)性。JSP作為Java家族的一員,秉承了Java技術(shù)的“一次編寫,隨處可用(WriteOnce,RumAnywhere)”的特性,可以運(yùn)行于大多數(shù)流行的操作系統(tǒng)平臺(tái)及Web服務(wù)器,這種與服務(wù)器硬件和操作系統(tǒng)平臺(tái)的無(wú)關(guān)性是JSP相對(duì)于其它動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)最大的一個(gè)優(yōu)點(diǎn)。功能可擴(kuò)展性。如同Microsoft的JSP技術(shù)可以通過(guò)ActiveX/COM組件來(lái)擴(kuò)展功能一樣,JSP可以通過(guò)JavaBean和EJB(EnterpriseJavaBean)以及自定義的標(biāo)記來(lái)擴(kuò)展功能。JSP可以通過(guò)JDBC,與諸如Oracle、SQLServer這樣的大型關(guān)系數(shù)據(jù)庫(kù)進(jìn)行連接。JSP提供了一些隱含對(duì)象。這些隱含對(duì)象在JSP頁(yè)面中可以直接引用,而不必首先聲明。利用JSP提供的這些隱含對(duì)象,可以使腳本功能更加強(qiáng)大,并且編程更加容易、方便。例如,利用request對(duì)象,可以很容易地接收用戶在HTML表單中提交的信息。4.5系統(tǒng)數(shù)據(jù)庫(kù)連接JDBC技術(shù)是JavaDataBaseConnectivity的縮寫,它是SUN公司提供的一種支持基本SQL功能的通用的應(yīng)用程序接口(ApplicationProgrammingInterface)。它由一組用Java語(yǔ)言編寫的類和接口組成。通過(guò)這些類和接口,程序開發(fā)人員可以在Java語(yǔ)言中方便地建立與數(shù)據(jù)庫(kù)的鏈接,通過(guò)執(zhí)行相應(yīng)SQL語(yǔ)句,完成對(duì)不同數(shù)據(jù)庫(kù)的訪問(wèn)。因此,開發(fā)人員使用JDBCAPI可以不必編寫一個(gè)應(yīng)用程序來(lái)訪問(wèn)Sybase數(shù)據(jù)庫(kù),又另外編寫一個(gè)應(yīng)用程序去訪問(wèn)Oracle數(shù)據(jù)庫(kù),再寫一個(gè)應(yīng)用程序訪問(wèn)Microsoft的SQLServer。不但如此,使用Java語(yǔ)言編寫的應(yīng)用程序可以在任何支持Java的平臺(tái)上運(yùn)行,不必在不同的平臺(tái)上開發(fā)不同的應(yīng)用程序。簡(jiǎn)單地說(shuō),JDBC能完成下列三件事:同一個(gè)數(shù)據(jù)庫(kù)建立連接;向數(shù)據(jù)庫(kù)建立連接;處理數(shù)據(jù)庫(kù)返回的結(jié)果。JDBC是一種通用低層的應(yīng)用程序編程接口,它在不同的數(shù)據(jù)庫(kù)功能模塊的層次上提供一個(gè)統(tǒng)一的用戶界面。說(shuō)JDBC是一處低級(jí)的API,是指它直接調(diào)用SQL命令,它比其他的一些數(shù)據(jù)庫(kù)連接API要容易使用些,但它有同樣可以作為更高級(jí)的,用戶辦面更友好的API或開發(fā)工具基礎(chǔ)。很多可視化的Java開發(fā)工具,如VisualAgeForJava、VisualCafé、J++等都提供了基于JDBC的更面向用戶的類和包,直接將關(guān)系數(shù)據(jù)庫(kù)的表或視圖映射為Java類,程序員通過(guò)可視化工具直接對(duì)Java對(duì)象進(jìn)行操作,而真正需要的SQL調(diào)用則根據(jù)程序員發(fā)出的對(duì)對(duì)象的各種屬性、方法的操作來(lái)自動(dòng)產(chǎn)生。另一種使用JDBCAPI的方式為,用戶程序可以提供一個(gè)界面(如菜單等)讓用戶選擇對(duì)數(shù)據(jù)庫(kù)進(jìn)行的操作,選中一個(gè)任務(wù)后,提示用戶輸入一些必要的信息,然后根據(jù)用戶的輸入產(chǎn)生相應(yīng)的SQL命令以及Java程序。通過(guò)這處方式,用戶可以完成對(duì)數(shù)據(jù)庫(kù)的操作,即使他并不了解SQL語(yǔ)法以及JDBC編程。數(shù)據(jù)庫(kù)訪問(wèn)的三層結(jié)構(gòu)如圖5.1所示,瀏覽器端程序要訪問(wèn)數(shù)據(jù)庫(kù),首先通過(guò)中間件,然后由中間件對(duì)數(shù)據(jù)庫(kù)操作權(quán)限進(jìn)行認(rèn)證,認(rèn)證通過(guò)才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。圖5.1使用中間件的數(shù)據(jù)庫(kù)訪問(wèn)三層結(jié)構(gòu)用戶對(duì)數(shù)據(jù)庫(kù)的存取權(quán)限認(rèn)證是中間件中完成,對(duì)數(shù)據(jù)庫(kù)的查詢、插入、更新和刪除操作等都封裝在中間件中,該中間件位于服務(wù)器端,中間件對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作后,再將處理結(jié)果通過(guò)Web服務(wù)器返回到瀏覽器端用戶。這樣,在用戶端輸入的用戶名和密碼,可以通過(guò)加密算法進(jìn)行加密后在網(wǎng)絡(luò)上傳輸,在中間件中進(jìn)行解密認(rèn)證,然后再進(jìn)行數(shù)據(jù)庫(kù)的存取操作,數(shù)據(jù)庫(kù)存取權(quán)限的用戶名和密碼出現(xiàn)在位于服務(wù)器端的中間件中,這樣就更加安全。本系統(tǒng)采用的正是這樣的三層結(jié)構(gòu)的數(shù)據(jù)庫(kù)訪問(wèn)模式。在三層模型中,命令將被發(fā)送到服務(wù)的”中間層”,而”中間層”將SQL語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)處理SQL語(yǔ)句并將結(jié)果返回”中間層”,然后”中間層”將它們返回用戶。其模型如圖5.2所示。圖5.2JDBC的三層模型因?yàn)椤敝虚g層”可以進(jìn)行對(duì)訪問(wèn)的控制并協(xié)同數(shù)據(jù)庫(kù)的更新,并且可以使用一個(gè)易用的高層API,這個(gè)API可以由“中間層”進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成低層的調(diào)用。所以在許多種情況下,三層模型可以提供更好的性能,本系統(tǒng)中所采用的就是此種模型。JDBC是JAVA應(yīng)用程序與數(shù)據(jù)庫(kù)的溝通橋梁。它提供了三項(xiàng)服務(wù)功能:一、與數(shù)據(jù)庫(kù)建立連接。二、將SQL語(yǔ)句傳遞給數(shù)據(jù)庫(kù)。三、從數(shù)據(jù)庫(kù)取得SQL語(yǔ)句的執(zhí)行結(jié)果。當(dāng)JDBC要與數(shù)據(jù)庫(kù)建立連接前,首先,它必須先取得連接此數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng)程序,Class.forName()即是在執(zhí)行此項(xiàng)工作。建立數(shù)據(jù)庫(kù)連接的第一步驟就是將JDBC驅(qū)動(dòng)程序的類載入至JVM(JavaVirtualLMachine)中,本系統(tǒng)中利用java.lang.Class類內(nèi)的forName()靜態(tài)函數(shù)依據(jù)指定的類名稱,將JDBC驅(qū)動(dòng)程序載入進(jìn)來(lái)。完成載入驅(qū)動(dòng)程序的步驟后,必須使用java.sal.DriverManager類所提供的getConnection()靜態(tài)函數(shù),取得與數(shù)據(jù)庫(kù)間的連接對(duì)象。此連接對(duì)象的類類型為java.sal.Connection,必須通過(guò)它才能將SQL指令傳遞給數(shù)據(jù)庫(kù),而執(zhí)行結(jié)果也需要通過(guò)連接對(duì)象來(lái)取得。當(dāng)取得連接對(duì)象后,還必須取得Statement對(duì)象才能對(duì)數(shù)據(jù)庫(kù)執(zhí)行SQL指令。Statement主要實(shí)現(xiàn)兩個(gè)功能:執(zhí)行SQL語(yǔ)句以及取得執(zhí)行結(jié)果。在java.sql.Statement的sql對(duì)象中執(zhí)行查詢或修改命令的函數(shù)后傳回的是一個(gè)ResultSet對(duì)象,這個(gè)對(duì)象提供了一個(gè)存取SQL執(zhí)行結(jié)果的管道,以便通過(guò)它將表格數(shù)據(jù)從數(shù)據(jù)庫(kù)中取出。每個(gè)Statement對(duì)象只能產(chǎn)生一個(gè)ResultSet對(duì)象。數(shù)據(jù)庫(kù)連接如圖5.3所示:圖5.3數(shù)據(jù)庫(kù)的連接處理數(shù)據(jù)庫(kù)的連接處理具體實(shí)現(xiàn)如下://建立JDBC——ODBC橋sun.jdbc.odbc.JdbcOdbcDriver;//橋建立不成功時(shí)的錯(cuò)誤處理catch(ClassNotFoundExceptionevent){}//建立與數(shù)據(jù)庫(kù)的連接,并發(fā)送SQL查詢語(yǔ)句,將結(jié)果保存到rs對(duì)象中 Con=建立JDBC——ODBC橋 Sql=SQL查詢語(yǔ)句 執(zhí)行查詢 Rs=返回結(jié)果//SQL出錯(cuò)處理 catch(SQLExceptione1){}4.6SQLSERVER2000數(shù)據(jù)庫(kù)SQLServer是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的,并于1988年推出了第一個(gè)OS/2版本。SQLServer近年來(lái)不斷更新版本,1996年,Microsoft推出了SQLServer6.5版本;1998年,SQLServer7.0版本和用戶見(jiàn)面;SQLServer2000是Microsoft公司于2000年推出的最新版本。SQLServer特點(diǎn):1.真正的客戶機(jī)/服務(wù)器體系結(jié)構(gòu)。2.圖形化用戶界面,使系統(tǒng)管理和數(shù)據(jù)庫(kù)管理更加直觀、簡(jiǎn)單。3.豐富的編程接口工具,為用戶進(jìn)行程序設(shè)計(jì)提供了更大的選擇余地。4.SQLServer與WindowsNT完全集成,利用了NT的許多功能,如發(fā)送和接受消息,管理登錄安全性等。SQLServer也可以很好地與MicrosoftBackOffice產(chǎn)品集成。5.具有很好的伸縮性,可跨越從運(yùn)行Windows95/98的膝上型電腦到運(yùn)行Windows2000的大型多處理器等多種平臺(tái)使用。6.對(duì)Web技術(shù)的支持,使用戶能夠很容易地將數(shù)據(jù)庫(kù)中的數(shù)據(jù)發(fā)布到Web頁(yè)面上。7.SQLServer提供數(shù)據(jù)倉(cāng)庫(kù)功能,這個(gè)功能只在Oracle和其他更昂貴的DBMS中才有。4.7BS模式與C/S模式的比較分析C/S模式主要由客戶應(yīng)用程序(Client)、服務(wù)器管理程序(Server)和中間件(middleware)三個(gè)部件組成。客戶應(yīng)用程序是系統(tǒng)中用戶與數(shù)據(jù)進(jìn)行交互的部件。服務(wù)器程序負(fù)責(zé)有效地管理系統(tǒng)資源,如管理一個(gè)信息數(shù)據(jù)庫(kù),其主要工作是當(dāng)多個(gè)客戶并發(fā)地請(qǐng)求服務(wù)器上的相同資源時(shí),對(duì)這些資源進(jìn)行最優(yōu)化管理。中間件負(fù)責(zé)聯(lián)結(jié)客戶應(yīng)用程序與服務(wù)器管理程序,協(xié)同完成一個(gè)作業(yè),以滿足用戶查詢管理數(shù)據(jù)的要求。B/S模式是一種以Web技術(shù)為基礎(chǔ)的新型的MIS系統(tǒng)平臺(tái)模式。把傳統(tǒng)C/S模式中的服務(wù)器部分分解為一個(gè)數(shù)據(jù)服務(wù)器與一個(gè)或多個(gè)應(yīng)用服務(wù)器(Web服務(wù)器),從而構(gòu)成一個(gè)三層結(jié)構(gòu)的客戶服務(wù)器體系。第一層客戶機(jī)是用戶與整個(gè)系統(tǒng)的接口??蛻舻膽?yīng)用程序精簡(jiǎn)到一個(gè)通用的瀏覽器軟件,如Netscape
Navigator,微軟公司的IE等。瀏覽器將HTML代碼轉(zhuǎn)化成圖文并茂的網(wǎng)頁(yè)。網(wǎng)頁(yè)還具備一定的交互功能,允許用戶在網(wǎng)頁(yè)提供的申請(qǐng)表上輸入信息提交給后臺(tái),并提出處理請(qǐng)求。這個(gè)后臺(tái)就是第二層的Web服務(wù)器。第二層Web服務(wù)器將啟動(dòng)相應(yīng)的進(jìn)程來(lái)響應(yīng)這一請(qǐng)求,并動(dòng)態(tài)生成一串HTML代碼,其中嵌入處理的結(jié)果,返回給客戶機(jī)的瀏覽器。如果客戶機(jī)提交的請(qǐng)求包括數(shù)據(jù)的存取,Web服務(wù)器還需與數(shù)據(jù)庫(kù)服務(wù)器協(xié)同完成這一處理工作。第三層數(shù)據(jù)庫(kù)服務(wù)器的任務(wù)類似于C/S模式,負(fù)責(zé)協(xié)調(diào)不同的Web服務(wù)器發(fā)出的SQ請(qǐng)求,管理數(shù)據(jù)庫(kù)。B/S模式的優(yōu)勢(shì)首先它簡(jiǎn)化了客戶端。它無(wú)需象C/S模式那樣在不同的客戶機(jī)上安裝不同的客戶應(yīng)用程序,而只需安裝通用的瀏覽器軟件。這樣不但可以節(jié)省客戶機(jī)的硬盤空間與內(nèi)存,而且使安裝過(guò)程更加簡(jiǎn)便、網(wǎng)絡(luò)結(jié)構(gòu)更加靈活。假設(shè)一個(gè)企業(yè)的決策層要開一個(gè)討論庫(kù)存問(wèn)題的會(huì)議,他們只需從會(huì)議室的計(jì)算機(jī)上直接通過(guò)瀏覽器查詢數(shù)據(jù),然后顯示給大家看就可以了。甚至與會(huì)者還可以把筆記本電腦聯(lián)上會(huì)議室的網(wǎng)絡(luò)插口,自己來(lái)查詢相關(guān)的數(shù)據(jù)。其次,它簡(jiǎn)化了系統(tǒng)的開發(fā)和維護(hù)。系統(tǒng)的開發(fā)者無(wú)須再為不同級(jí)別的用戶設(shè)計(jì)開發(fā)不同的客戶應(yīng)用程序了,只需把所有的功能都實(shí)現(xiàn)在Web服務(wù)器上,并就不同的功能為各個(gè)組別的用戶設(shè)置權(quán)限就可以了。各個(gè)用戶通過(guò)HTTP請(qǐng)求在權(quán)限范圍內(nèi)調(diào)用Web服務(wù)器上不同處理程序,從而完成對(duì)數(shù)據(jù)的查詢或修改?,F(xiàn)代企業(yè)面臨著日新月異的競(jìng)爭(zhēng)環(huán)境,對(duì)企業(yè)內(nèi)部運(yùn)作機(jī)制的更新與調(diào)整也變得逐漸頻繁。相對(duì)于C/S,B/S的維護(hù)具有更大的靈活性。當(dāng)形勢(shì)變化時(shí),它無(wú)須再為每一個(gè)現(xiàn)有的客戶應(yīng)用程序升級(jí),而只需對(duì)Web服務(wù)器上的服務(wù)處理程序進(jìn)行修訂。這樣不但可以提高公司的運(yùn)作效率,還省去了維護(hù)時(shí)協(xié)調(diào)工作的不少麻煩。如果一個(gè)公司有上千臺(tái)客戶機(jī),并且分布在不同的地點(diǎn),那么便于維護(hù)將會(huì)顯得更加重要。再次,它使用戶的操作變得更簡(jiǎn)單。對(duì)于C/S模式,客戶應(yīng)用程序有自己特定的規(guī)格,使用者需要接受專門培訓(xùn)。而采用B/S模式時(shí),客戶端只是一個(gè)簡(jiǎn)單易用的瀏覽器軟件。無(wú)論是決策層還是操作層的人員都無(wú)需培訓(xùn),就可以直接使用。B/S模式的這種特性,還使
MIS系統(tǒng)維護(hù)的限制因素更少。最后,B/S特別適用于網(wǎng)上信息發(fā)布,使得傳統(tǒng)的MIS的功能有所擴(kuò)展。這是C/S所無(wú)法實(shí)現(xiàn)的。而這種新增的網(wǎng)上信息發(fā)布功能恰是現(xiàn)代企業(yè)所需的。這使得企業(yè)的大部分書面文件可以被電子文件取代,從而提高了企業(yè)的工作效率,使企業(yè)行政手續(xù)簡(jiǎn)化,節(jié)省人力物力。鑒于B/S相對(duì)于C/S的先進(jìn)性,B/S逐漸成為一種流行的MIS系統(tǒng)平臺(tái)。各軟件公司紛紛推出自己的Internet方案,基于Web的財(cái)務(wù)系統(tǒng)、基于Web的ERP。一些企業(yè)已經(jīng)領(lǐng)先一步開始使用它,并且收到了一定的成效。B/S模式的新穎與流行,和在某些方面相對(duì)于C/S的巨大改進(jìn),使B/S成了MIS系統(tǒng)平臺(tái)的首選。4.8JDBC介紹JDBC(JavaDataBaseConnectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫(kù)開發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開發(fā)人員能夠用純JavaAPI編寫數(shù)據(jù)庫(kù)應(yīng)用程序,同時(shí),JDBC也是個(gè)商標(biāo)名。有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語(yǔ)句就是一件很容易的事。換言之,有了JDBCAPI,就不必為訪問(wèn)Sybase數(shù)據(jù)庫(kù)專門寫一個(gè)程序,為訪問(wèn)Oracle數(shù)據(jù)庫(kù)又專門寫一個(gè)程序,或?yàn)樵L問(wèn)Informix數(shù)據(jù)庫(kù)又編寫另一個(gè)程序等等,程序員只需用JDBCAPI寫一個(gè)程序就夠了,它可向相應(yīng)數(shù)據(jù)庫(kù)發(fā)送SQL調(diào)用。同時(shí),將Java語(yǔ)言和JDBC結(jié)合起來(lái)使程序員不必為不同的平臺(tái)編寫不同的應(yīng)用程序,只須寫一遍程序就可以讓它在任何平臺(tái)上運(yùn)行,這也是Java語(yǔ)言“編寫一次,處處運(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為程序開發(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)格類型定義且高性能實(shí)現(xiàn)的接口。
Java具有堅(jiān)固、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動(dòng)下載等特性,是編寫數(shù)據(jù)庫(kù)應(yīng)用程序的杰出語(yǔ)言。所需要的只是Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話的方法。而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)越多的程序員開始使用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)上。新程序的開發(fā)期很短。安裝和版本控制將大為簡(jiǎn)化。程序員可只編寫一遍應(yīng)用程序或只更新一次,然后將它放到服務(wù)器上,隨后任何人就都可得到最新版本的應(yīng)用程序。對(duì)于商務(wù)上的銷售信息服務(wù),Java和JDBC可為外部客戶提供獲取信息更新的更好方法。簡(jiǎn)單地說(shuō),JDBC可做三件事:與數(shù)據(jù)庫(kù)建立連接、發(fā)送SQL語(yǔ)句并處理結(jié)果。下列代碼段給出了以上三步的基本示例:Connectioncon=DriverManager.getConnection("jdbc:odbc:wombat","login","password");Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable1");while(rs.next()){intx=rs.getInt("a");Strings=rs.getString("b");floatf=rs.getFloat("c");}上述代碼對(duì)基于JDBC的數(shù)據(jù)庫(kù)訪問(wèn)做了經(jīng)典的總結(jié)5、系統(tǒng)設(shè)計(jì)5.1用戶登陸當(dāng)系統(tǒng)登陸時(shí),首先出現(xiàn)的是一個(gè)用戶權(quán)限登陸的界面,權(quán)限設(shè)置主要是維護(hù)系統(tǒng)的安全性和完整性。擁有管理員權(quán)限的操作員能對(duì)其他操作員進(jìn)行相應(yīng)的權(quán)限設(shè)置,沒(méi)有權(quán)限的操作員不能對(duì)相應(yīng)的窗口進(jìn)行操作。如下圖所示:主要代碼如下:packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importutil.Validate;importbean.InsertUpdateDelBean;publicclassAmountServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicAmountServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /** *ThedoGetmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doPost(request,response); } /** *ThedoPostmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312"); Stringid=request.getParameter("id"); Stringamount=request.getParameter("amount"); Stringsql="updateuserssetamount=amount+"+amount+"whereid="+id; InsertUpdateDelBeanib=newInsertUpdateDelBean(); ib.insertANDupdateANDdel(sql); sql="insertintopayment(usersid,name,price)values("+id+",',"+amount+")"; ib.insertANDupdateANDdel(sql); request.setAttribute("message","操作成功!"); RequestDispatcherrd=request.getRequestDispatcher("/admin/users_amount.STRUTS"); rd.forward(request,response); }5.2管理員功能管理員的任務(wù)是添加用戶、系統(tǒng)維護(hù)、添加幫助。5.2.1添加管理員主要代碼如下:packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importutil.Validate;importbean.InsertUpdateDelBean;publicclassAmountServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicAmountServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /** *ThedoGetmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doPost(request,response); } /** *ThedoPostmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312"); Stringid=request.getParameter("id"); Stringamount=request.getParameter("amount"); Stringsql="updateuserssetamount=amount+"+amount+"whereid="+id; InsertUpdateDelBeanib=newInsertUpdateDelBean(); ib.insertANDupdateANDdel(sql); sql="insertintopayment(usersid,name,price)values("+id+",',"+amount+")"; ib.insertANDupdateANDdel(sql); request.setAttribute("message","操作成功!"); RequestDispatcherrd=request.getRequestDispatcher("/admin/users_amount.STRUTS"); rd.forward(request,response); }5.2.2修改管理員密碼當(dāng)選中密碼修改菜單時(shí),輸入一次舊密碼,兩次新密碼,然后按修改按鈕,密碼修改成功。請(qǐng)務(wù)必記住自己的密碼,并注意保密。主要代碼如下:packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importutil.Validate;importbean.InsertUpdateDelBean;publicclassAmountServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicAmountServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /** *ThedoGetmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doPost(request,response); } /** *ThedoPostmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312"); Stringid=request.getParameter("id"); Stringamount=request.getParameter("amount"); Stringsql="updateuserssetamount=amount+"+amount+"whereid="+id; InsertUpdateDelBeanib=newInsertUpdateDelBean(); ib.insertANDupdateANDdel(sql); sql="insertintopayment(usersid,name,price)values("+id+",',"+amount+")"; ib.insertANDupdateANDdel(sql); request.setAttribute("message","操作成功!"); RequestDispatcherrd=request.getRequestDispatcher("/admin/users_amount.STRUTS"); rd.forward(request,response); }5.2.3普通用戶管理可以增加普通用戶、修改普通用戶情況和刪除普通用戶,這是所有系統(tǒng)管理的起始,因?yàn)槿绻胀ㄓ脩舨淮嬖冢敲礋o(wú)法進(jìn)行相應(yīng)的操作。主要代碼如下:packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importutil.Validate;importbean.InsertUpdateDelBean;publicclassAmountServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicAmountServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /** *ThedoGetmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doPost(request,response); } /** *ThedoPostmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312"); Stringid=request.getParameter("id"); Stringamount=request.getParameter("amount"); Stringsql="updateuserssetamount=amount+"+amount+"whereid="+id; InsertUpdateDelBeanib=newInsertUpdateDelBean(); ib.insertANDupdateANDdel(sql); sql="insertintopayment(usersid,name,price)values("+id+",',"+amount+")"; ib.insertANDupdateANDdel(sql); request.setAttribute("message","操作成功!"); RequestDispatcherrd=request.getRequestDispatcher("/admin/users_amount.STRUTS"); rd.forward(request,response); }6、系統(tǒng)調(diào)試與測(cè)試6.1程序調(diào)試在設(shè)計(jì)系統(tǒng)的過(guò)程中,存在一些錯(cuò)誤是必然的。對(duì)于語(yǔ)句的語(yǔ)法錯(cuò)誤,在程序運(yùn)行時(shí)自動(dòng)提示,并請(qǐng)求立即糾正,因此,這類錯(cuò)誤比較容易發(fā)現(xiàn)和糾正。但另一類錯(cuò)誤是在程序執(zhí)行時(shí)由于不正確的操作或?qū)δ承?shù)據(jù)的計(jì)算公式的邏輯錯(cuò)誤導(dǎo)致的錯(cuò)誤結(jié)果。這類錯(cuò)誤隱蔽性強(qiáng),有時(shí)會(huì)出現(xiàn),有時(shí)又不出現(xiàn),因此,對(duì)這一類動(dòng)態(tài)發(fā)生的錯(cuò)誤的排查是耗時(shí)費(fèi)力的。6.2程序的測(cè)試6.2.1測(cè)試的重要性及目的(1)測(cè)試的重要性軟件的測(cè)試在軟件生命周期中占據(jù)重要的地位,在傳統(tǒng)的瀑布模型中,軟件測(cè)試學(xué)僅處于運(yùn)行維護(hù)階段之前,是軟件產(chǎn)品交付用戶使用之前保證軟件質(zhì)量的重要手段。近來(lái),軟件工程界趨向于一種新的觀點(diǎn),即認(rèn)為軟件生命周期每一階段中都應(yīng)包含測(cè)試,從而檢驗(yàn)本階段的成果是否接近預(yù)期的目標(biāo),盡可能早的發(fā)現(xiàn)錯(cuò)誤并加以修正,如果不在早期階段進(jìn)行測(cè)試,錯(cuò)誤的延時(shí)擴(kuò)散常常會(huì)導(dǎo)致最后成品測(cè)試的巨大困難。事實(shí)上,對(duì)于軟件來(lái)講,不論采用什么技術(shù)和什么方法,軟件中仍然會(huì)有錯(cuò)。采用新的語(yǔ)言、先進(jìn)的開發(fā)方式、完善的開發(fā)過(guò)程,可以減少錯(cuò)誤的引入,但是不可能完全杜絕軟件中的錯(cuò)誤,這些引入的錯(cuò)誤需要測(cè)試來(lái)找出,軟件中的錯(cuò)誤密度也需要測(cè)試來(lái)進(jìn)行估計(jì)。測(cè)試是所有工程學(xué)科的基本組成單元,是軟件開發(fā)的重要部分。自有程序設(shè)計(jì)的那天起測(cè)試就一直伴隨著。統(tǒng)計(jì)表明,在典型的軟件開發(fā)項(xiàng)目中,軟件測(cè)試工作量往往占軟件開發(fā)總工作量的40%以上。而在軟件開發(fā)的總成本中,用在測(cè)試上的開銷要占30%到50%。如果把維護(hù)階段也考慮在內(nèi),討論整個(gè)軟件生存期時(shí),測(cè)試的成本比例也許會(huì)有所降低,但實(shí)際上維護(hù)工作相當(dāng)于二次開發(fā),乃至多次開發(fā),其中必定還包含有許多測(cè)試工作。在實(shí)踐中,軟件測(cè)試的困難常常使人望而卻步或敷衍了事,這是由于對(duì)測(cè)試仍然存在一些不正確的看法和錯(cuò)誤的態(tài)度,這包括:①認(rèn)為測(cè)試工作不如設(shè)計(jì)和編碼那樣容易取得進(jìn)展難以給測(cè)試人員某種成就感;②以發(fā)現(xiàn)軟件錯(cuò)誤為目標(biāo)的測(cè)試是非建設(shè)性的,甚至是破壞性的,測(cè)試中發(fā)現(xiàn)錯(cuò)位是對(duì)責(zé)任者工作的一種否定;③測(cè)試工作枯燥無(wú)味,不能引起人們的興趣;④測(cè)試工作是艱苦而細(xì)致的工作;⑤對(duì)自己編寫的程序盲目自信,在發(fā)現(xiàn)錯(cuò)誤后,顧慮別人對(duì)自己的開發(fā)能力的看法。這些觀點(diǎn)對(duì)軟件測(cè)試工作是極為不利的,必須澄清認(rèn)識(shí)、端正態(tài)度,才可能提高軟件產(chǎn)品的質(zhì)量。(2)測(cè)試的目的如果測(cè)試的目的是為了盡可能多地找出錯(cuò)誤,那么測(cè)試就應(yīng)該直接針對(duì)軟件比較復(fù)雜的部分或是以前出錯(cuò)比較多的位置。①軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程;②測(cè)試是為了證明程序有錯(cuò),而不是證明程序無(wú)錯(cuò)誤;③一個(gè)好的測(cè)試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;④一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。這種觀點(diǎn)可以提醒人們測(cè)試要以查找錯(cuò)誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀點(diǎn)可能會(huì)產(chǎn)生誤導(dǎo),認(rèn)為發(fā)現(xiàn)錯(cuò)誤是軟件測(cè)試的唯一目,查找不出錯(cuò)誤的測(cè)試就是沒(méi)有價(jià)值的,事實(shí)并非如此。首先,測(cè)試并不僅僅是為了要找出錯(cuò)誤。通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的分布特征,可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前所采用的軟件過(guò)程的缺陷,以便改進(jìn)。同時(shí),這種分析也能幫助我們?cè)O(shè)計(jì)出有針對(duì)性地檢測(cè)方法,改善測(cè)試的有效性。其次,沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完整的測(cè)試是評(píng)定測(cè)試質(zhì)量的一種方法。6.2.2測(cè)試的步驟與開發(fā)過(guò)程類似,測(cè)試過(guò)程也必須分步驟進(jìn)行,每個(gè)步驟在邏輯上是前一個(gè)步驟的繼續(xù)。大型軟件系統(tǒng)通常由若干個(gè)子系統(tǒng)組成,每個(gè)子系統(tǒng)又由若干個(gè)模塊組成。因此,大型軟件系統(tǒng)的測(cè)試基本上由下述幾個(gè)步驟組成:(1)模塊測(cè)試在這個(gè)測(cè)試步驟中所發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計(jì)的錯(cuò)誤。(2)系統(tǒng)測(cè)試在這個(gè)測(cè)試步驟中發(fā)現(xiàn)的往往是軟件設(shè)計(jì)中的錯(cuò)誤,也可能發(fā)現(xiàn)需求說(shuō)明中的錯(cuò)誤。(3)驗(yàn)收測(cè)試在這個(gè)測(cè)試步驟中發(fā)現(xiàn)的往往是系統(tǒng)需求說(shuō)明書中的錯(cuò)誤。6.2.3測(cè)試的主要內(nèi)容為了保證測(cè)試的質(zhì)量,將測(cè)試過(guò)程分成幾個(gè)階段,即:代碼審查、單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。(1)單元測(cè)試單元測(cè)試集中在檢查軟件設(shè)計(jì)的最小單位—模塊上,通過(guò)測(cè)試發(fā)現(xiàn)實(shí)現(xiàn)該模塊的實(shí)際功能與定義該模塊的功能說(shuō)明不符合的情況,以及編碼的錯(cuò)誤。(2)集成測(cè)試集成測(cè)試是將模塊按照設(shè)計(jì)要求組裝起來(lái)同時(shí)進(jìn)行測(cè)試,主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問(wèn)題。如一個(gè)模塊與另一個(gè)模塊可能有由于疏忽的問(wèn)題而造成有害影響;把子功能組合起來(lái)可能不產(chǎn)生預(yù)期的主功能;個(gè)別看起來(lái)是可以接受的誤差可能積累到不能接受的程度;全程數(shù)據(jù)結(jié)構(gòu)可能有錯(cuò)誤等。(3)確認(rèn)測(cè)試確認(rèn)測(cè)試的目的是向未來(lái)的用戶表明系統(tǒng)能夠像預(yù)定要求那樣工作。經(jīng)集成測(cè)試后,已經(jīng)按照設(shè)計(jì)把所有的模塊組裝成一個(gè)完整的軟件系統(tǒng),接口錯(cuò)誤也已經(jīng)基本排除了,接著就應(yīng)該進(jìn)一步驗(yàn)證軟件的有效性,這就是確認(rèn)測(cè)試的任務(wù),即軟件的功能和性能如同用戶所合理期待的那樣。(4)系統(tǒng)測(cè)試軟件開發(fā)完成以后,最終還要與系統(tǒng)中其他部分配套運(yùn)行,進(jìn)行系統(tǒng)測(cè)試。包括恢復(fù)測(cè)試、安全測(cè)試、強(qiáng)度測(cè)試和性能測(cè)試等。單獨(dú)對(duì)系統(tǒng)的測(cè)試主要從以下幾方面入手:①功能測(cè)試:測(cè)試是否滿足開發(fā)要求,是否提供設(shè)計(jì)所描
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 滾珠絲杠課程設(shè)計(jì)圖紙
- 自行車的人機(jī)課程設(shè)計(jì)
- 荒島植物辨識(shí)課程設(shè)計(jì)
- 泵房的課程設(shè)計(jì)
- 智慧物流課課程設(shè)計(jì)
- 英語(yǔ)思維導(dǎo)圖課程設(shè)計(jì)
- 古泉1100kV千伏GIS安裝施工方案(報(bào)公司審核)
- 植物根莖科學(xué)課程設(shè)計(jì)
- 長(zhǎng)沙交通集團(tuán)日常維修定點(diǎn)項(xiàng)目招標(biāo)文件
- 物體打擊 課程設(shè)計(jì)
- 水利水電工程安全管理制度例文(三篇)
- 2025四川宜賓市南溪區(qū)屬國(guó)企業(yè)招聘融資人員6人管理單位筆試遴選500模擬題附帶答案詳解
- DB45T 2048-2019 微型消防站建設(shè)管理規(guī)范
- 人教版2024-2025學(xué)年第一學(xué)期八年級(jí)物理期末綜合復(fù)習(xí)練習(xí)卷(含答案)
- 《上帝擲骰子嗎:量子物理史話》導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 病例報(bào)告表(CRF)模板
- CCC例行檢驗(yàn)和確認(rèn)檢驗(yàn)程序
- 初中物理競(jìng)賽教程(基礎(chǔ)篇)第16講比熱容
- 親子鑒定書(共3頁(yè))
- 容器支腿計(jì)算公式(支腿計(jì)算主要用于立式容器的支腿受力及地腳螺栓計(jì)算)
- 建設(shè)工程項(xiàng)目施工安全管理流程圖3頁(yè)
評(píng)論
0/150
提交評(píng)論