版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
大學(xué)生理財(cái)信息管理系統(tǒng)摘要當(dāng)今社會(huì)己進(jìn)入信息社會(huì)時(shí)代。信息己經(jīng)受到社會(huì)的廣泛關(guān)注,被看作社會(huì)和科學(xué)技術(shù)發(fā)展的三大支柱(材料、能源、信息)。信息是管理的基礎(chǔ),是進(jìn)行決策的基本依據(jù)。在一個(gè)組織里,信息己作為人力、物力、財(cái)力之外的第四種能源,占有重要的地位。然而,信息是一種非物質(zhì)的,有別于基本資源的新形式的資源。信息也是管理的對(duì)象,必須進(jìn)行管理和控制。本文主要介紹了大學(xué)生理財(cái)系統(tǒng)的設(shè)計(jì),本系統(tǒng)主要采用JSP為編程語(yǔ)言,數(shù)據(jù)庫(kù)采用SQLSERVER2000。可以方便大學(xué)生理財(cái)管理需要。主要包括收入統(tǒng)計(jì)功能、查詢(xún)功能、理財(cái)功能。本系統(tǒng)易于操作,使用方便,具有很高的可靠性。關(guān)鍵字:大學(xué)生理財(cái)系統(tǒng);系統(tǒng)設(shè)計(jì);JSPTheuniversitystudentmanagesfinancesinformationmanagementsystemAbstractSocialoneselftoentertheinformationsocietytimenow.Informationoneselfundergoestosociety'swidespreadattention,isregardedassocialandthescientifictechnologicaladvancethreebigprops(material,energy,information).Theinformationisthemanagementfoundation,iscarriesonpolicy-makingthebasicbasis.Inanorganization,informationoneselftakesoutsidethemanpower,thephysicalresource,thefinancialresourcefourthkindofenergy,holdstheimportantstatus.However,theinformationisonenon-material,isdifferentwiththebaseresourcesthenewformresources.Theinformationisalsothemanagementobject,mustcarryonthemanagementandthecontrol.thisarticlemainlyintroducedtheuniversitystudentmanagesfinancessystem'sdesign,thissystemmainlyusesJSPistheprogramminglanguage,thedatabaseusesSQLSERVER2000.Mayfacilitatetheuniversitystudenttomanagefinancesthemanagementneed.Mainlyincludestheincomestatisticsfunction,theinquiryfunction,themanagingfinancesfunction.Thissystemsimplifyoperation,theeasytooperate,tohavetheveryhighreliability.Keywords:Theuniversitystudentmanagesfinancesthesystem;Systemdesign;JSPTOC\o"1-3"\h\z第1章引言 41.1選題背景 41.2可行性分析 5第2章需求分析 52.1用戶功能需求 52.2性能需求 62.3主要技術(shù)分析 6第3章概要設(shè)計(jì) 83.1功能模塊圖 83.2處理流程設(shè)計(jì) 93.2.1系統(tǒng)操作流程 93.2.2數(shù)據(jù)增加流程 103.2.3數(shù)據(jù)修改流程 103.2.4數(shù)據(jù)刪除流程 113.3系統(tǒng)E-R圖 123.4數(shù)據(jù)庫(kù)設(shè)計(jì) 123.4.1SQLServer2000分析 123.4.2數(shù)據(jù)庫(kù)表結(jié)構(gòu) 133.4.3數(shù)據(jù)庫(kù)連接技術(shù) 13第4章詳細(xì)設(shè)計(jì) 194.1管理員模塊設(shè)計(jì) 194.2注冊(cè)用戶管理 204.3用戶登陸 234.4用戶注冊(cè) 254.5收入統(tǒng)計(jì) 284.6收入查詢(xún)功能 31第5章系統(tǒng)調(diào)試與測(cè)試 325.1程序調(diào)試 325.2程序的測(cè)試 325.2.1測(cè)試的重要性及目的 325.2.2測(cè)試的步驟 345.2.3測(cè)試的主要內(nèi)容 34第6章結(jié)論 366.1系統(tǒng)評(píng)價(jià) 366.2安全性問(wèn)題 37致謝 38參考文獻(xiàn) 39第1章引言1.1選題背景一個(gè)企業(yè)的發(fā)展需要長(zhǎng)遠(yuǎn)的規(guī)劃,長(zhǎng)期、中期與短期目標(biāo)計(jì)劃的相互協(xié)調(diào),日常必要的各種預(yù)測(cè)、考察和盡心盡力的實(shí)踐。同樣,對(duì)個(gè)人而言,人生就是自己最重要的企業(yè),富翁就是一個(gè)成功的企業(yè)經(jīng)營(yíng)者。只有建立充分的自信心和高度的責(zé)任感,才具備成功者的氣魄。20~30歲時(shí),年富力強(qiáng),風(fēng)險(xiǎn)承受能力是最強(qiáng)的。個(gè)人理財(cái)?shù)暮诵氖峭顿Y收益的最大化和個(gè)人資產(chǎn)分配合理化的集合,通過(guò)充分利用各種理財(cái)工具,才能達(dá)到合理分配的目的、滿足對(duì)理財(cái)安全性、收益性等多樣化要求。理財(cái)是現(xiàn)代每個(gè)人都必須要具有的能力。理財(cái)能力是一個(gè)人得以生存不可缺少的一部分,也是素質(zhì)教育不可忽視的一項(xiàng)重要內(nèi)容。那么,大學(xué)生在校期間應(yīng)該如何加強(qiáng)理財(cái)技能的培養(yǎng),做好自己的理財(cái)呢?我認(rèn)為,應(yīng)該努力做好以下幾點(diǎn):首先,養(yǎng)成合理的消費(fèi)習(xí)慣,錢(qián)要花在刀刃上。作為學(xué)生,要樹(shù)立勤儉意識(shí),應(yīng)該把錢(qián)花在必須花的地方,不要一味追求檔次盲目攀比,更多地應(yīng)考慮所購(gòu)物品的性?xún)r(jià)比和自己的承受能力。其次,培養(yǎng)財(cái)務(wù)規(guī)劃意識(shí),學(xué)會(huì)記帳和編制預(yù)算。這是控制消費(fèi)最有效的方法之一。其實(shí)記帳并不難,只要你保留所有的收支單據(jù),做一個(gè)簡(jiǎn)單的T型記帳簿,抽空整理一下,就可以掌握自己的收支情況,做到量人為出,這樣對(duì)自己每筆資金的去向有一個(gè)詳盡的記錄,養(yǎng)成良好的記帳習(xí)慣。第三,理性花錢(qián),遵守一定的生活消費(fèi)原則?;ㄥX(qián)必須要理性,要有計(jì)劃不該花的錢(qián)盡量不花,必須花的錢(qián)決不吝嗇。學(xué)生時(shí)代吃要營(yíng)養(yǎng)均衡;穿要耐穿耐看;住要簡(jiǎn)單實(shí)用;行要省錢(qián)方便。1.2可行性分析1.2.1技術(shù)可行性本系統(tǒng)僅需要一臺(tái)裝有Office軟件的計(jì)算機(jī)即可,對(duì)機(jī)器本身沒(méi)有太高的要求,一般當(dāng)前學(xué)校或個(gè)人電腦完全可滿足要求。對(duì)于軟件技術(shù)要求,現(xiàn)在的程序設(shè)計(jì)語(yǔ)言已非常成熟,要運(yùn)用HTML樣式,圖形圖象制作工具來(lái)制作生動(dòng)活潑的網(wǎng)頁(yè)及美觀的圖形文件或動(dòng)畫(huà)文件。1.2.2經(jīng)濟(jì)可行性由于本系統(tǒng)是為學(xué)生學(xué)習(xí)使用的系統(tǒng),裝上該應(yīng)用軟件,即可使用系統(tǒng),系統(tǒng)成本主要集中在系統(tǒng)軟件的開(kāi)發(fā)上,當(dāng)系統(tǒng)投入運(yùn)行后可以為學(xué)校節(jié)約大量的人力,物力。所帶來(lái)的效益遠(yuǎn)遠(yuǎn)大于系統(tǒng)軟件的開(kāi)發(fā)成本。在經(jīng)濟(jì)上完全可行。1.2.3操作可行性界面設(shè)計(jì)時(shí)充分考慮管理人員的習(xí)慣,使得操作簡(jiǎn)單;數(shù)據(jù)錄入迅速、規(guī)范、可靠;統(tǒng)計(jì)準(zhǔn)確;制表靈活;適應(yīng)力強(qiáng);容易擴(kuò)充。第2章需求分析2.1用戶功能需求本系統(tǒng)設(shè)計(jì)為基于B/S結(jié)構(gòu)的個(gè)人理財(cái)系統(tǒng),憑借設(shè)計(jì)的軟件系統(tǒng),通過(guò)數(shù)據(jù)庫(kù)的連接和訪問(wèn),進(jìn)行相關(guān)數(shù)據(jù)的統(tǒng)計(jì)和查詢(xún),還可以通過(guò)相應(yīng)的計(jì)算功能,完成一些經(jīng)濟(jì)方面的實(shí)用計(jì)算。本系統(tǒng)的思路是:通過(guò)系統(tǒng)的數(shù)據(jù)錄入,可以將數(shù)據(jù)保存在相應(yīng)的數(shù)據(jù)庫(kù)里面,而數(shù)據(jù)庫(kù)的設(shè)計(jì)方式,使錄入的數(shù)據(jù)更加有效,合理。對(duì)數(shù)據(jù)的統(tǒng)計(jì)有比較完善的設(shè)計(jì),對(duì)各種輸入錯(cuò)誤的情況有著比較合理的考慮,通過(guò)代碼提示用戶輸入完整,合理的數(shù)據(jù),以便于查找,統(tǒng)計(jì)。在記錄中有計(jì)算統(tǒng)計(jì)功能,避免用戶手動(dòng)計(jì)算出錯(cuò);有相關(guān)的用戶登陸,密碼檢測(cè),密碼修改的功能,保護(hù)用戶數(shù)據(jù)的安全性。2.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)存:512MB硬件空間:160GB題目主要采用的技術(shù)數(shù)據(jù)庫(kù):MicrosoftSQLServer2000。編程語(yǔ)言JSP服務(wù)器:Tomcat5.5,jdk1.6開(kāi)發(fā)環(huán)境:WindowsXP2.3主要技術(shù)分析JSP(JavaServerPages)作為一種新的Web應(yīng)用開(kāi)發(fā)技術(shù),越來(lái)越受到開(kāi)發(fā)人員的關(guān)注。它為創(chuàng)建高度動(dòng)態(tài)的Web應(yīng)用提供了一個(gè)獨(dú)特的開(kāi)發(fā)環(huán)境,能夠適應(yīng)市場(chǎng)上絕大多數(shù)的服務(wù)器產(chǎn)品。JSP是由多個(gè)公司參與合作建立起來(lái)的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP的具體特征如下:(1)分離內(nèi)容的生成和演示。使用JSP技術(shù),Web頁(yè)面開(kāi)發(fā)人員可以使用HTML標(biāo)識(shí)設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者Java片段來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBean組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。(2)生成可用的組件。絕大多數(shù)JSP頁(yè)面依賴(lài)于可重用的、跨平臺(tái)的組件來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開(kāi)發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者讓這些組件為更多的使用者或者客戶集體所使用。(3)采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開(kāi)發(fā)。Web頁(yè)面開(kāi)發(fā)人員不一定都是熟悉腳本語(yǔ)言。JavaServerPage技術(shù)封裝了許多功能,這些功能都是在易用的、與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成時(shí)所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問(wèn)和實(shí)例化JavaBean組件、設(shè)置或者檢索組件屬性、下載Applet以及執(zhí)行用其它方法更難于編碼或耗時(shí)的功能。通過(guò)開(kāi)發(fā)定制標(biāo)準(zhǔn)庫(kù),JSP技術(shù)可以進(jìn)行相當(dāng)?shù)臄U(kuò)展,第三方開(kāi)發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識(shí)庫(kù)。這使得Web頁(yè)面開(kāi)發(fā)人員能夠使用熟悉的工具和同標(biāo)識(shí)一樣執(zhí)行特定功能的構(gòu)件來(lái)工作。第3章概要設(shè)計(jì)3.1功能模塊圖用戶登陸用戶登陸理財(cái)功能系統(tǒng)設(shè)置收支管理資產(chǎn)管理理財(cái)計(jì)算收支統(tǒng)計(jì)收支查詢(xún)助學(xué)貸款本外幣換算利率計(jì)算基金收益新用戶注冊(cè)密碼修改按日統(tǒng)計(jì)按月統(tǒng)計(jì)按年統(tǒng)計(jì)3.2處理流程設(shè)計(jì)3.2.1系統(tǒng)操作流程系統(tǒng)登錄界面輸入操作員及密碼系統(tǒng)主界面系統(tǒng)管理錯(cuò)誤信息系統(tǒng)登錄界面輸入操作員及密碼系統(tǒng)主界面系統(tǒng)管理錯(cuò)誤信息數(shù)據(jù)庫(kù)檢查密碼錯(cuò)誤 數(shù)據(jù)庫(kù)檢查密碼錯(cuò)誤密碼正確功能界面功能處理密碼正確功能界面功能處理3.2.2數(shù)據(jù)增加流程添加信息時(shí),編號(hào)字段由系統(tǒng)自動(dòng)生成,且不能修改,其他信息由用戶輸入,之后對(duì)數(shù)據(jù)進(jìn)行合法判斷,合法則寫(xiě)入保存至數(shù)據(jù)庫(kù),不合法則重新輸入數(shù)據(jù)。數(shù)據(jù)增加流程圖:開(kāi)始開(kāi)始自動(dòng)生成編號(hào)輸入數(shù)據(jù)是否合法寫(xiě)入數(shù)據(jù)庫(kù)結(jié)束圖3.2數(shù)據(jù)增加流程圖3.2.3數(shù)據(jù)修改流程在修改信息時(shí),先選中一條待修改的記錄,然后直接輸入數(shù)據(jù),判斷合法性,合法則保存至數(shù)據(jù)庫(kù),不合法重新輸入。數(shù)據(jù)修改流程圖如圖3.3所示。開(kāi)始開(kāi)始選擇需要修改記錄輸入數(shù)據(jù)是否合法寫(xiě)入數(shù)據(jù)庫(kù)結(jié)束圖3.3數(shù)據(jù)修改流程圖3.2.4數(shù)據(jù)刪除流程當(dāng)用戶選定一條記錄時(shí),單擊刪除按鈕,會(huì)提示用戶是否確定刪除,然后刪除數(shù)據(jù)庫(kù)相關(guān)內(nèi)容。數(shù)據(jù)刪除流程圖如圖3.4所示。開(kāi)始開(kāi)始選擇需要?jiǎng)h除記錄是否刪除更新數(shù)據(jù)庫(kù)圖3.4數(shù)據(jù)刪除流程圖3.3系統(tǒng)E-R圖密碼密碼用戶名用戶管理信息資產(chǎn)管理收支管理理財(cái)計(jì)算密碼修改3.4數(shù)據(jù)庫(kù)設(shè)計(jì)3.4.1SQLServer2000分析本系統(tǒng)采用SQLServer2000數(shù)據(jù)庫(kù),SQLServer是由Microsoft開(kāi)發(fā)和推廣的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開(kāi)發(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中才有。3.4.2數(shù)據(jù)庫(kù)表結(jié)構(gòu)系統(tǒng)用戶表:系統(tǒng)用戶表(表3.1)用來(lái)存儲(chǔ)用戶名、密碼,權(quán)限等信息,是用戶登錄的關(guān)鍵表。表3.1系統(tǒng)用戶表user_info序號(hào)名稱(chēng)編碼類(lèi)型寬度標(biāo)志備注1編號(hào)(流水號(hào))user_idN10Y系統(tǒng)自動(dòng)管理,自動(dòng)產(chǎn)生。2用戶名user_nameC50NN系統(tǒng)的登錄用戶名。用戶的唯一標(biāo)識(shí),不重復(fù)。3登錄密碼user_pwdC50NN密碼。未加密。3.4.3數(shù)據(jù)庫(kù)連接技術(shù)JDBC技術(shù)是JavaDataBaseConnectivity的縮寫(xiě),它是SUN公司提供的一種支持基本SQL功能的通用的應(yīng)用程序接口(ApplicationProgrammingInterface)。它由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。通過(guò)這些類(lèi)和接口,程序開(kāi)發(fā)人員可以在Java語(yǔ)言中方便地建立與數(shù)據(jù)庫(kù)的鏈接,通過(guò)執(zhí)行相應(yīng)SQL語(yǔ)句,完成對(duì)不同數(shù)據(jù)庫(kù)的訪問(wèn)。因此,開(kāi)發(fā)人員使用JDBCAPI可以不必編寫(xiě)一個(gè)應(yīng)用程序來(lái)訪問(wèn)Sybase數(shù)據(jù)庫(kù),又另外編寫(xiě)一個(gè)應(yīng)用程序去訪問(wèn)Oracle數(shù)據(jù)庫(kù),再寫(xiě)一個(gè)應(yīng)用程序訪問(wèn)Microsoft的SQLServer。不但如此,使用Java語(yǔ)言編寫(xiě)的應(yīng)用程序可以在任何支持Java的平臺(tái)上運(yùn)行,不必在不同的平臺(tái)上開(kā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或開(kāi)發(fā)工具基礎(chǔ)。很多可視化的Java開(kāi)發(fā)工具,如VisualAgeForJava、VisualCafé、J++等都提供了基于JDBC的更面向用戶的類(lèi)和包,直接將關(guān)系數(shù)據(jù)庫(kù)的表或視圖映射為Java類(lèi),程序員通過(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ù)的查詢(xún)、插入、更新和刪除操作等都封裝在中間件中,該中間件位于服務(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)程序的類(lèi)載入至JVM(JavaVirtualLMachine)中,本系統(tǒng)中利用java.lang.Class類(lèi)內(nèi)的forName()靜態(tài)函數(shù)依據(jù)指定的類(lèi)名稱(chēng),將JDBC驅(qū)動(dòng)程序載入進(jìn)來(lái)。完成載入驅(qū)動(dòng)程序的步驟后,必須使用java.sal.DriverManager類(lèi)所提供的getConnection()靜態(tài)函數(shù),取得與數(shù)據(jù)庫(kù)間的連接對(duì)象。此連接對(duì)象的類(lèi)類(lèi)型為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í)行查詢(xún)或修改命令的函數(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查詢(xún)語(yǔ)句,將結(jié)果保存到rs對(duì)象中 Con=建立JDBC——ODBC橋 Sql=SQL查詢(xún)語(yǔ)句 執(zhí)行查詢(xún) Rs=返回結(jié)果//SQL出錯(cuò)處理 catch(SQLExceptione1){}有了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ì)話的方法。而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可為外部客戶提供獲取信息更新的更好方法。簡(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é)。第4章詳細(xì)設(shè)計(jì)4.1管理員模塊設(shè)計(jì)當(dāng)系統(tǒng)登陸時(shí),首先出現(xiàn)的是一個(gè)用戶登陸的界面,主要是維護(hù)系統(tǒng)的安全性和完整性。擁有管理員權(quán)限的操作員能進(jìn)行相應(yīng)操作,沒(méi)有權(quán)限的操作員不能對(duì)相應(yīng)的窗口進(jìn)行操作。如下圖所示:主要代碼如下:packageutil;importjava.sql.*;publicclassDBConn{static{try{ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");// Class.forName("com.mysql.jdbc.Driver");//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(Exceptionex){ex.printStackTrace();}}publicstaticConnectiongetConn(){try{ Connectionconn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databasename=hshygl","sa","123");// conn=DriverManager.getConnection("jdbc:mysql://localhost/fzshop","root","123");// Connectionconn=DriverManager.getConnection("jdbc:odbc:temp");returnconn;}catch(Exceptionex){ex.printStackTrace();returnnull;}}publicstaticvoidclose(Connectionconn,Statementst,ResultSetrs){ if(rs!=null){try{rs.close();}catch(SQLExceptionex){}}if(st!=null){try{st.close();}catch(Exceptionex){}}if(conn!=null){try{conn.close();}catch(Exceptionex){}4.2注冊(cè)用戶管理該模塊主要功能教職工信息進(jìn)行管理,包括對(duì)注冊(cè)用戶的刪除功能,界面如下圖所示:packageutil;importjava.io.UnsupportedEncodingException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassValidate{ /** *是否為數(shù)字和英文驗(yàn)證 * */ publicintgetIntAndChar(Stringstr){ charc; inti; for(i=0;i<str.length();i++){ c=str.charAt(i); if(!((c>='0'&&c<='9')||(c>='a'&&c<='z')||(c>='A'&&c<='Z'))){ break; } }//判斷字符是否在某個(gè)區(qū)間 if(i<str.length()){ return-1; }else{ return0; } } /** *是否為整數(shù)驗(yàn)證 * */ publicintgetInt(Stringstr){ charc; inti; for(i=0;i<str.length();i++){ c=str.charAt(i); if(!(c>='0'&&c<='9')){ break; } }//判斷字符是否在某個(gè)區(qū)間 if(i<str.length()){ return-1; }else{ return0; } } /** *是否為非法字符驗(yàn)證 * */ publicbooleangetLawlessChar(Stringstr){ booleanflag=false; charc; for(inti=0;i<str.length();i++){ c=str.charAt(i); switch(c){ case'<':flag=true;break; case'>':flag=true;break; case'"':flag=true;break; case'&':flag=true;break; case'':flag=true;break; } } returnflag; }4.3用戶登陸用于用戶登陸進(jìn)入系統(tǒng)的界面,用戶需要建立一個(gè)賬號(hào)和密碼才能進(jìn)入使用系統(tǒng),當(dāng)用戶輸入自己的賬號(hào)和密碼時(shí),系統(tǒng)進(jìn)行驗(yàn)證,如果正確,進(jìn)入系統(tǒng);如果錯(cuò)誤,則提示用戶輸入的信息不正確,重新輸入信息.該界面還為新用戶設(shè)置了專(zhuān)門(mén)的注冊(cè)組件,通過(guò)點(diǎn)擊注冊(cè)按鈕直接進(jìn)入新用戶的注冊(cè)界面.在登陸的時(shí)候,密碼框采用密文形式輸入,保護(hù)用戶登陸的安全性。界面如下圖所示:主要代碼如下: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.jsp"); rd.forward(request,response); }4.4用戶注冊(cè)用于未注冊(cè)的用戶進(jìn)行賬號(hào)的注冊(cè),當(dāng)新用戶使用該系統(tǒng)時(shí),在登陸界面上點(diǎn)擊新用戶注冊(cè)的按鈕可以進(jìn)入新用戶注冊(cè)的界面.該界面輸入新的用戶名稱(chēng),輸入兩次用戶密碼.如果用戶名稱(chēng)和密碼符合要求并且兩次輸入的密碼都一致,則提示用戶注冊(cè)成功,如果用戶名稱(chēng)已經(jīng)被注冊(cè)了或者是兩次輸入的密碼不一致,會(huì)提示相應(yīng)的錯(cuò)誤提示信息,并且清空輸入框,重新輸入.在該界面上有提示返回登陸框的組件,如果登陸成功以后,則可以直接點(diǎn)擊該組件,回到登陸界面,進(jìn)行用戶登陸。界面如下圖所示:主要代碼如下:packageservlet;importjava.io.IOException;importjava.util.ArrayList;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importutil.Validate;importbean.AllBean;importbean.InsertUpdateDelBean;importbean.SelectBean;publicclassBegindateServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicBegindateServlet(){ 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"); Stringusersid=request.getParameter("usersid"); Stringitem=request.getParameter("item"); Validatev=newValidate(); AllBeanab=newAllBean(); SelectBeansb=newSelectBean(); ArrayListalItem=ab.getItem(item); if(alItem.get(2)==null||alItem.get(2).equals("")){ Stringsql="select*fromuserswheredatediff(day,getdate(),begindate)<0anddatediff(day,getdate(),enddate)>0andid="+usersid; Stringargs[]={"id","name","age","sex","phone","address","yearcard","begindate","enddate","amount","loss"}; ArrayListal=sb.select(args,sql); if(al==null||al.size()==0){ request.setAttribute("message","凍結(jié)"); }else{ sql="insertintoconsume(usersid,name)values('"+usersid+"','"+alItem.get(1)+"')"; InsertUpdateDelBeanib=newInsertUpdateDelBean(); ib.insertANDupdateANDdel(sql); request.setAttribute("message","操作成功!"); }4.5收入統(tǒng)計(jì)該模塊作為該系統(tǒng)的一個(gè)主要模塊,其主要功能是按日,月,年進(jìn)行收入開(kāi)銷(xiāo)的統(tǒng)計(jì),是體現(xiàn)理財(cái)功能的主要模塊.這個(gè)模塊分為日收支統(tǒng)計(jì),月收支統(tǒng)計(jì),年收支統(tǒng)計(jì)三個(gè)部分,每個(gè)部分有相關(guān)的一些收入統(tǒng)計(jì),和日常的衣食住行方面的開(kāi)銷(xiāo)統(tǒng)計(jì),統(tǒng)計(jì)的時(shí)候必須輸入所統(tǒng)計(jì)的日期,如果忘了輸入或者輸入錯(cuò)誤的日期,則要提示錯(cuò)誤信息.還有相應(yīng)的備注信息輸入框,以對(duì)自己的收支信息進(jìn)行相應(yīng)的補(bǔ)充說(shuō)明.在這三種收支統(tǒng)計(jì)模塊中,都設(shè)置有計(jì)算功能,該功能可以計(jì)算每個(gè)界面中所有收入的總和,所有支出的總和,以及計(jì)算出凈收入的數(shù)目來(lái).基本上具有完善的收入統(tǒng)計(jì)功能.三種按統(tǒng)計(jì)時(shí)間區(qū)分的模塊,可以分別按不同的時(shí)間段來(lái)進(jìn)行統(tǒng)計(jì),而其相應(yīng)的統(tǒng)計(jì)范圍也有所調(diào)整。界面如下圖所示:主要代碼如下:packageutil;importjava.io.UnsupportedEncodingException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassValidate{ /** *是否為數(shù)字和英文驗(yàn)證 * */ publicintgetIntAndChar(Stringstr){ charc; inti; for(i=0;i<str.length();i++){ c=str.charAt(i); if(!((c>='0'&&c<='9')||(c>='a'&&c<='z')||(c>='A'&&c<='Z'))){ break; } }//判斷字符是否在某個(gè)區(qū)間 if(i<str.length()){ return-1; }else{ return0; } } /** *是否為整數(shù)驗(yàn)證 * */ publicintgetInt(Stringstr){ charc; inti; for(i=0;i<str.length();i++){ c=str.charAt(i); if(!(c>='0'&&c<='9')){ break; } }//判斷字符是否在某個(gè)區(qū)間 if(i<str.length()){ return-1; }else{ return0; } } /** *是否為非法字符驗(yàn)證 * */ publicbooleangetLawlessChar(Stringstr){ booleanflag=false; charc; for(inti=0;i<str.length();i++){ c=str.charAt(i); switch(c){ case'<':flag=true;break; case'>':flag=true;break; case'"':flag=true;break; case'&':flag=true;break; case'':flag=true;break; } } returnflag; }4.6收入查詢(xún)功能該模塊也是作為理財(cái)系統(tǒng)的模塊,和收入統(tǒng)計(jì)模塊一起,實(shí)現(xiàn)個(gè)人理財(cái)系統(tǒng)的重要功能:收入支出的統(tǒng)計(jì).在此查詢(xún)模塊中,分為按日查詢(xún),按月查詢(xún),按年查詢(xún),分別對(duì)應(yīng)著統(tǒng)計(jì)記錄模塊中的按日統(tǒng)計(jì),按月統(tǒng)計(jì),按年統(tǒng)計(jì);如果要按日查詢(xún)的話,就輸入年,月,日的信息,點(diǎn)擊查詢(xún)按鈕,如果輸入信息正確,則在下面的窗體中會(huì)顯示曾經(jīng)統(tǒng)計(jì)過(guò)的相應(yīng)項(xiàng)目的相應(yīng)數(shù)據(jù),用戶可以直觀的看到自己在某個(gè)日期的統(tǒng)計(jì)數(shù)據(jù).在這個(gè)界面中也帶有統(tǒng)計(jì)計(jì)算的功能,以便于用戶計(jì)算;并且?guī)в行薷?刪除所統(tǒng)計(jì)的數(shù)據(jù)的功能.其他兩個(gè),按月,按日查詢(xún)也是如此.該模塊和收入統(tǒng)計(jì)模塊,也可以算是一個(gè)整體的模塊.一起完成收支統(tǒng)計(jì)的功能。界面如下圖所示:第5章系統(tǒng)調(diào)試與測(cè)試5.1程序調(diào)試在設(shè)計(jì)系統(tǒng)的過(guò)程中,存在一些錯(cuò)誤是必然的。對(duì)于語(yǔ)句的語(yǔ)法錯(cuò)誤,在程序運(yùn)行時(shí)自動(dòng)提示,并請(qǐng)求立即糾正,因此,這類(lèi)錯(cuò)誤比較容易發(fā)現(xiàn)和糾正。但另一類(lèi)錯(cuò)誤是在程序執(zhí)行時(shí)由于不正確的操作或?qū)δ承?shù)據(jù)的計(jì)算公式的邏輯錯(cuò)誤導(dǎo)致的錯(cuò)誤結(jié)果。這類(lèi)錯(cuò)誤隱蔽性強(qiáng),有時(shí)會(huì)出現(xiàn),有時(shí)又不出現(xiàn),因此,對(duì)這一類(lèi)動(dòng)態(tài)發(fā)生的錯(cuò)誤的排查是耗時(shí)費(fèi)力的。5.2程序的測(cè)試5.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)的開(kāi)發(fā)方式、完善的開(kāi)發(fā)過(guò)程,可以減少錯(cuò)誤的引入,但是不可能完全杜絕軟件中的錯(cuò)誤,這些引入的錯(cuò)誤需要測(cè)試來(lái)找出,軟件中的錯(cuò)誤密度也需要測(cè)試來(lái)進(jìn)行估計(jì)。測(cè)試是所有工程學(xué)科的基本組成單元,是軟件開(kāi)發(fā)的重要部分。自有程序設(shè)計(jì)的那天起測(cè)試就一直伴隨著。統(tǒng)計(jì)表明,在典型的軟件開(kāi)發(fā)項(xiàng)目中,軟件測(cè)試工作量往往占軟件開(kāi)發(fā)總工作量的40%以上。而在軟件開(kāi)發(fā)的總成本中,用在測(cè)試上的開(kāi)銷(xiāo)要占30%到50%。如果把維護(hù)階段也考慮在內(nèi),討論整個(gè)軟件生存期時(shí),測(cè)試的成本比例也許會(huì)有所降低,但實(shí)際上維護(hù)工作相當(dāng)于二次開(kāi)發(fā),乃至多次開(kāi)發(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ì)自己編寫(xiě)的程序盲目自信,在發(fā)現(xiàn)錯(cuò)誤后,顧慮別人對(duì)自己的開(kāi)發(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ì)量的一種方法。5.2.2測(cè)試的步驟與開(kāi)發(fā)過(guò)程類(lèi)似,測(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ō)明書(shū)中的錯(cuò)誤。5.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)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《客房服務(wù)管理》課件
- 《孟非的激勵(lì)人生》課件
- 《實(shí)驗(yàn)室管理》課件
- 2024-2025學(xué)年浙江省9+1聯(lián)考高一上學(xué)期期中考試歷史試題(解析版)
- 單位管理制度集合大合集【人事管理】十篇
- 單位管理制度集粹匯編【人力資源管理篇】
- 單位管理制度匯編大合集職員管理篇
- 單位管理制度合并匯編人力資源管理篇十篇
- 《漢字的結(jié)構(gòu)特點(diǎn)》課件
- 單位管理制度范例選集【員工管理篇】
- 2024年財(cái)務(wù)風(fēng)險(xiǎn)評(píng)估和控制培訓(xùn)資料
- 2024建筑消防設(shè)施檢測(cè)報(bào)告書(shū)模板
- 兒童流行性感冒的護(hù)理
- 萬(wàn)科保安公司測(cè)評(píng)題及答案
- 揭露煤層、貫通老空專(zhuān)項(xiàng)安全技術(shù)措施
- 醫(yī)美項(xiàng)目水光培訓(xùn)課件
- 個(gè)人在工作中的服務(wù)態(tài)度和客戶滿意度
- 部長(zhǎng)述職答辯報(bào)告
- 2024年中國(guó)航空油料集團(tuán)公司招聘筆試參考題庫(kù)含答案解析
- 中央廣播電視大學(xué)畢業(yè)生登記表-8
- 工業(yè)工程師的年終總結(jié)
評(píng)論
0/150
提交評(píng)論