畢業(yè)設計(論文)基于JAVA的輔助考試系統(tǒng)_第1頁
畢業(yè)設計(論文)基于JAVA的輔助考試系統(tǒng)_第2頁
畢業(yè)設計(論文)基于JAVA的輔助考試系統(tǒng)_第3頁
畢業(yè)設計(論文)基于JAVA的輔助考試系統(tǒng)_第4頁
畢業(yè)設計(論文)基于JAVA的輔助考試系統(tǒng)_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、綏化學院2004級本科生畢業(yè)論文 摘 要輔助考試系統(tǒng)旨在實現(xiàn)考試的無紙化管理,對一些科目的考試可以通過互聯(lián)網(wǎng)絡或局域網(wǎng)進行,方便校方考務的管理,也方便了考生,尤其適合考生分布廣,不易集中的遠程教育。此次主要開發(fā)系統(tǒng)的后臺管理系統(tǒng)java在線考試管理子系統(tǒng),它包括試題管理、考生管理、在線制作試卷、控制學生考試的設置、試卷審批等功能。本論文主要介紹了對java在線考試管理子系統(tǒng)的分析、設計和開發(fā)的全部過程。運用er圖,程序流程圖等對在線管理子系統(tǒng)的設計過程進行詳細的說明。全文共分為開發(fā)方案、需求分析、系統(tǒng)設計、關鍵技術解決,結論五部分。開發(fā)方案中主要介紹開發(fā)在線考試系統(tǒng)的目的、開發(fā)方案的選擇及開發(fā)

2、框架的技術的確定;需求分析介紹了在線考試系統(tǒng)的總體需求及系統(tǒng)各模塊的功能需求;系統(tǒng)設計介紹了系統(tǒng)設計的指導思想、數(shù)據(jù)庫的設計、系統(tǒng)模塊的設計;關鍵技術介紹了在具體實現(xiàn)時需解決的一些技術,如開發(fā)框架的整合技術、開發(fā)框架與數(shù)據(jù)庫的連接及數(shù)據(jù)的備份與還原。關鍵詞: jsp;java;mysql5.0數(shù)據(jù)庫;b/s模式abstractassistance examination system aim at realization examination of have no the paper turn management, examining some category can carry on

3、through internet net or bureau area net, convenience school square test duty of management, also convenience the examinee is particularly suitable for examinee to distribute wide, not easy concentration of long range education.this time main development system of backstage management system-java on-

4、line examination management sub- system, it include to try management, examinee management, on-line creation try book, control student examination of constitution, try a winding examination and approval etc. function.this thesis was main introduction on-line to java examination management sub- syste

5、m of analysis, design and development of all process.usage er diagram, procedure flow chart etc. rightness on-line management sub- system of design the process carry on expatiation.the full text is total to is divided into a development a project, need analysis, system design, the key technique solv

6、e, conclusion five part.development project in main introduction develop on-line examination system get purpose, development project of choice and development frame of technique really settle;need analysis introduction the total need of the on-line examination system and the function request of each

7、 mold of system piece;system design introduction system design of instruction thought, database of design, system mold piece of design;key technique introduction at concrete realization need some technique for solve, such as development frame of integration technique, development frame and database

8、of conjunction and data of backup and revivification.key word: jsp;java; mysql5.0 database; b/s mode目 錄摘要iabstractii前言1第1章 設計原則21.1項目目的21.2方案選擇21.3開發(fā)模式21.4 開發(fā)框架技術3第2章 功能模塊劃分72.1子系統(tǒng)分為以下功能模塊7第3章 技術實現(xiàn)113.1系統(tǒng)工程的流程思想113.2面向對象機制的設計思想113.3系統(tǒng)結構圖123.4數(shù)據(jù)庫設計13第4章 具體實現(xiàn)154.1系統(tǒng)架構與數(shù)據(jù)庫的連接154.2連接池(connectionpool)與資源

9、管理16結論19參考文獻20附錄21致謝3535前 言隨著信息技術的廣泛使用,各類計算機考試也應運而生,這類考試多為上機考試,因此,考試的環(huán)境,即考試系統(tǒng)的設計和實現(xiàn)非常重要。在網(wǎng)絡技術逐漸滲入社會生活各個層面的今天,采用網(wǎng)絡考試是一個很重要的方向。目前,網(wǎng)絡考試系統(tǒng)的實現(xiàn),可以采用傳統(tǒng)的客戶機/服務器模式,也可以采用目前流行的瀏覽器/服務器模式,即基于web的方式。本系統(tǒng)采用的后一種模式,因此,本文簡單的介紹了該模式的實現(xiàn)方法。現(xiàn)今,不管是國內還是國外的各大廠家,都在不斷的推出一系列的考試、認證。如微軟的mcse、cisco的ccna等。我們國家的自考或是成考,以及各省市的各種考試,現(xiàn)在都在

10、朝著信息化的道路前進在走。我們相信在今后這一系列的考試將會走向網(wǎng)絡化考試的。這樣才是符合信息發(fā)展的。所以我們考慮這是一個機會。我們要給不同的考試一個好的解決方案。 這個方案在技術上來講我們是采用b/s模式。 在windows平臺上,使用ie瀏覽器,完成抽題、考試、交卷等考試任務。第1章 設計原則1.1項目目的在線考試系統(tǒng)的總體目標: 在線考試系統(tǒng)可以幫助教師完成一個考試從題目設計,考試安排,考試實施,考卷批改到分數(shù)統(tǒng)計總結的所有工作。 所有的考試數(shù)據(jù)和其它數(shù)據(jù)庫需要一種主流的方式進行存儲和管理,例如使用數(shù)據(jù)庫技術。 考試數(shù)據(jù)的存放和處理必須對考試保密,需要一定的安全性保障。對考試的系統(tǒng)目標:

11、這個軟件是分布式的,這意味著只要有考試客戶端可以連接到考試應用服務器,任何考生在任何地方進行身份確認,都能完成考試。 題目最好有一定的穩(wěn)定性和隨機性。穩(wěn)定性可以保證每一次考試對每一個考生是公平的,隨機性可以避免作弊的發(fā)生。 考試的部分結果在考生考完之后就可以知道,同時提供一個機會讓考生知道自己哪里做錯了,并給出反饋信息說明理由。對教師的系統(tǒng)目標 提供一個功能全面的考核管理客戶端,可以進行考試設計和安排。 通過管理客戶端,教師可以進行考試的身份管理。 考生的考試結果可以被保存下來,供教師進行分析統(tǒng)計和察看。1.2方案選擇開發(fā)在線考試系統(tǒng),提出以下解決方案:選擇mysql作為后臺的數(shù)據(jù)庫,選擇ja

12、va、jsp、javascript、html作為應用程序開發(fā)工具,運用tomcat服務器技術,整個系統(tǒng)完全基于b/s (browser/server)模式進行設計。1.3開發(fā)模式在網(wǎng)絡技術逐漸滲入社會生活各個層面的今天,傳統(tǒng)的考試方式也面臨著變革,而網(wǎng)絡考試則是一個很重要的方向?;跀?shù)據(jù)庫和網(wǎng)絡應用的考試系統(tǒng)有多種實現(xiàn)技術,可以采用傳統(tǒng)的客戶機/服務器(client/server)模式,也可以采用目前流行的瀏覽器/服務器(browser/web)模式,即基于web的方式。所謂client/server模式,是指把數(shù)據(jù)庫內容(比如試題庫)放在遠程的服務器上,在客戶機上安裝相應軟件。client/

13、server結構在技術上雖然很成熟,但該結構的程序往往只局限在小型的局域網(wǎng)內部,不利于擴展。并且,該結構的每臺客戶機都需要安裝相應的客戶端程序。由于考試系統(tǒng)擁有的用戶量比較多,因此,如果采用該結構,系統(tǒng)的安裝與維護工作比較繁重。同時,由于應用程序直接安裝在客戶機,客戶機直接和數(shù)據(jù)庫服務器交換數(shù)據(jù),系統(tǒng)的安全性也受到一定影響。基于web的方式其實是一種特殊的client/server方式。在這種方式中,客戶端是各種各樣的瀏覽器,瀏覽器作為通用的用戶程序界面,主要提供人機接口服務,而服務器則響應用戶請求并提供用戶需要的信息。browser/web模式采用三層體系結構,即包括數(shù)據(jù)庫服務器、web服務

14、器、客戶瀏覽器三部分。由于采用了互聯(lián)網(wǎng)的相關技術,browser/web結構的系統(tǒng)開放性好,易維護和擴展??蛻魹g覽器只跟web服務器交換數(shù)據(jù),數(shù)據(jù)安全性比較高,同時,由于客戶端不需要安裝專用程序,可大大降低運行維護費用。當然,browser/web結構在網(wǎng)絡安全方面也有其弱點。在client/server結構中,應用程序是在客戶機上運行的獨立程序,如果這臺計算機安全的話,那么應用程序就是安全的。而在browser/web結構中,眾多的客戶瀏覽器訪問同一個web服務器,web服務器會成為攻擊活動的對象?;谏鲜隹紤],用browser/web模式來設計考試系統(tǒng)比較合適,服務器端采用webserve

15、r+數(shù)據(jù)庫系統(tǒng)+asp組件來構成考試的應用服務系統(tǒng);客戶端采用瀏覽器來完成考試全過程。所有的系統(tǒng)升級和更新均只要在服務器端完成,這樣可較靈活地適應考試內容的不斷更新,從而減少系統(tǒng)升級、更新的工作量,同時可進行遠程系統(tǒng)維護和管理。1.4 開發(fā)框架技術本系統(tǒng)使用了mvc框架技術 mvc與模板概念的理解mvc本來是存在于desktop程序中的,m是指數(shù)據(jù)模型,v是指用戶界面,c則是控制器。使用mvc的目的是將m和v的實現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。比如一批統(tǒng)計數(shù)據(jù)可以分別用柱狀圖、餅圖來表示。c存在的目的則是確保m和v的同步,一旦m改變,v應該同步更新。 模型視圖控制器(mvc

16、)是xerox parc在八十年代為編程語言smalltalk80發(fā)明的一種軟件設計模式,至今已被廣泛使用。最近幾年被推薦為sun公司j2ee平臺的設計模式,并且受到越來越多的使用 coldfusion 和 php 的開發(fā)者的歡迎。模型視圖控制器模式是一個有用的工具箱,它有很多好處,但也有一些缺點。 mvc如何工作 mvc是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用mvc應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。 a) 視圖視圖是用戶看到并與之交互的界面。對老式的web應用程序來說,視圖就是由html元素組成的界面,在新式的web應用程序中,h

17、tml依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括macromedia flash和象xhtml,xml/xsl,wml等一些標識語言和web services. 如何處理應用程序的界面變得越來越有挑戰(zhàn)性。mvc一個大的好處是它能為應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。 b) 模型 模型表示企業(yè)數(shù)據(jù)和業(yè)務規(guī)則。在mvc的三個部件中,模型擁有最多的處理任務。例如它可能用象ejbs和coldfusion components這樣的構件對象來處理數(shù)據(jù)庫。被模型

18、返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關,這樣一個模型能為多個視圖提供數(shù)據(jù)。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。c) 控制器 控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求。所以當單擊web頁面中的超鏈接和發(fā)送html表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后用確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。 現(xiàn)在我們總結mvc的處理過程,首先控制器接收用戶的請求,并決定應該調用哪個模型來進行處理,然后模型用業(yè)務邏輯來處理用戶的請求并返回數(shù)據(jù),最后控制器用相應的視圖格式化模型返回的數(shù)據(jù),并通過表示

19、層呈現(xiàn)給用戶。 為什么要使用mvc大部分web應用程序都是用像asp,php,或者cfml這樣的過程化語言來創(chuàng)建的。它們將像數(shù)據(jù)庫查詢語句這樣的數(shù)據(jù)層代碼和像html這樣的表示層代碼混在一起。經(jīng)驗比較豐富的開發(fā)者會將數(shù)據(jù)從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。mvc從根本上強制性的將它們分開。盡管構造mvc應用程序需要一些額外的工作,但是它給我們帶來的好處是無庸質疑的。首先,最重要的一點是多個視圖能共享一個模型,現(xiàn)在需要用越來越多的方式來訪問應用程序。對此,其中一個解決之道是使用mvc,無論用戶想要flash界面或是 wap 界面;用一個模型就能處理它們。由于

20、已經(jīng)將數(shù)據(jù)和業(yè)務規(guī)則從表示層分開,所以可以最大化的重用自己的代碼了。由于模型返回的數(shù)據(jù)沒有進行格式化,所以同樣的構件能被不同界面使用。例如,很多數(shù)據(jù)可能用html來表示,但是它們也有可能要用macromedia flash和wap來表示。模型也有狀態(tài)管理和數(shù)據(jù)持久性處理的功能,例如,基于會話的購物車和電子商務過程也能被flash網(wǎng)站或者無線聯(lián)網(wǎng)的應用程序所重用。因為模型是自包含的,并且與控制器和視圖相分離,所以很容易改變應用程序的數(shù)據(jù)層和業(yè)務規(guī)則。如果想把數(shù)據(jù)庫從mysql移植到oracle,或者改變基于rdbms數(shù)據(jù)源到ldap,只需改變模型即可。一旦正確的實現(xiàn)了模型,不管數(shù)據(jù)來自數(shù)據(jù)庫或是

21、ldap服務器,視圖將會正確的顯示它們。由于運用mvc的應用程序的三個部件是相互獨立,改變其中一個不會影響其它兩個,所以依據(jù)這種設計思想能構造良好的松偶合的構件。所以,控制器提供了一個好處,就是可以使用控制器來聯(lián)接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據(jù)用戶的需求選擇模型進行處理,然后選擇視圖將處理結果顯示給用戶。 mvc的缺點mvc的缺點是由于它沒有明確的定義,所以完全理解mvc并不是很容易。使用mvc需要精心的計劃,由于它的內部原理比較復雜,所以需要花費一些時間去思考。將不得不花費相當可觀的時間去考慮如何將m

22、vc運用到應用程序,同時由于模型和視圖要嚴格的分離,這樣也給調試應用程序到來了一定的困難。每個構件在使用之前都需要經(jīng)過徹底的測試。一旦構件經(jīng)過了測試,就可以毫無顧忌的重用它們了。根據(jù)開發(fā)者經(jīng)驗,由于開發(fā)者將一個應用程序分成了三個部件,所以使用mvc同時也意味著將要管理比以前更多的文件,這一點是顯而易見的。這樣好像我們的工作量增加了,但是請記住這比起它所能帶給我們的好處是不值一提。mvc并不適合小型甚至中等規(guī)模的應用程序,花費大量時間將mvc應用到規(guī)模并不是很大的應用程序通常會得不償失。mvc是一條創(chuàng)建軟件的好途徑mvc設計模式是一個很好創(chuàng)建軟件的途徑,它所提倡的一些原則,像內容和顯示互相分離可

23、能比較好理解。但是如果要隔離模型、視圖和控制器的構件,可能需要重新思考應用程序,尤其是應用程序的構架方面。如果肯接受mvc,并且有能力應付它所帶來的額外的工作和復雜性,mvc將會使軟件在健壯性,代碼重用和結構方面上一個新的臺階。第2章 功能模塊劃分2.1子系統(tǒng)分為以下功能模塊在線考試管理子系統(tǒng)信息管理評卷管理試卷管理題庫管理 成績管理考試管理用戶管理權限管理圖21題庫管理:用于對單個試題的增、刪、改、查等基本維護,還可對題庫進行數(shù)據(jù)備份和數(shù)據(jù)還原。我們針對不同題型、不同應用范圍及不同科目對試題進行維護。試卷管理:可進行三種組卷方式的維護:隨機組卷、人工組卷、綜合組卷。還可對考生的基本信息進行維

24、護??荚嚬芾恚簩荚嚪峙湓嚲恚荚嚨幕拘畔⑦M行維護。相當于人工安排考試的過程。評卷管理:對試卷的客觀題分配評卷人,并對評卷人基本信息進行管理。成績管理:對每次考試的學生成績的基本信息進行維護,并提供學生成績的統(tǒng)計管理。用戶管理:對使用本系統(tǒng)的用戶基本信息進行維護,用戶多數(shù)為:系統(tǒng)管理員、老師、教務處人員、其他人等。權限管理:對系統(tǒng)的訪問權限進行管理,并對用戶可進行權限的分配。系統(tǒng)應該具備的基本功能。各模塊需完成以下功能:題庫管理試卷管理試卷其他維護試卷信息維護其它維護試題維護基本維護綜合組卷人工組卷隨機組卷題型維護科目維護范圍維護圖22題型維護:對試題的題型進行增、刪、改、查操作。在操作

25、之后會自動刷新主頁,以使信息更新。范圍維護:對試題的應用范圍進行增、刪、改、查操作。在操作之后會自動刷新主頁,以使信息更新??颇烤S護:對試題的科目進行增、刪、改、查操作。在操作之后會自動刷新主頁,以使信息更新。試題維護:對試題的基本信息進行增、刪、改、查操作。在操作之后會自動刷新主頁,以使信息更新。其他維護:對試題信息的批量查詢,并可進行數(shù)據(jù)導出、數(shù)據(jù)備份、數(shù)據(jù)恢復。隨機組卷:用戶只需對試卷題型進行設置就可組卷的方式。人工組卷:可使用戶選擇試卷的題型中的試題的組卷方式。綜合組卷:是隨機組卷與人工組卷的混合組卷方式,即用戶對某一類型的試題可進行選擇,也可對試題不進行選擇。試卷其他維護:對試卷信息

26、的批量查詢,對試題的數(shù)據(jù)備份與還原。考試管理考試信息維護分配評卷人評卷管理成績管理評卷人評卷考生信息維護考生成績維護成績其他維護圖23考試信息維護:對考試的時間、地點、監(jiān)考人、考試用的試卷、試卷總分數(shù)及答卷總時間等考試的基本要素進行設置。考生信息維護:對考試的學生的基本信息進行增、刪、改、查操作,在操作之后會自動刷新主頁,以使信息更新。分配評卷人:對考試所用試卷的客觀題分配評卷人,并對評卷的基本信息進行維護。評卷人評卷:對分配試卷的評卷人可以在此進行評卷。考生成績維護:對考試的考生成績信息進行統(tǒng)計與匯總,對有權限的人可進行成績的增、刪、改、查操作。成績其他維護:對考生成績信息的批量查詢,并可進

27、行數(shù)據(jù)導出、數(shù)據(jù)備份、數(shù)據(jù)恢復。用戶管理權限管理信息管理權限信息維護用戶基本信息信息基本維護用戶分配權限圖24用戶基本信息維護:對使用本系統(tǒng)的用戶進行維護,而用戶的權限由權限管理進行維護,并分配給用戶,使用戶只能訪問自己擁有的權限內。權限信息維護:對基本的權限進行維護,用戶可自定義維護權限。用戶分配權限:對未分配權限的用戶進行權限的分配,即對 分配權限的增、刪、改、查操作。信息基本維護:我們的信息除了有關考試的信息外,還有公告、新聞、留言信息需要我們維護,其中公告、新聞由后臺有權限的人進行增、刪、改、查操作,而留言是由前臺的用戶(學生)或游客錄入的,我們要防止垃圾數(shù)據(jù)顯示,即對留言有權更改等操

28、作。第3章 技術實現(xiàn)3.1系統(tǒng)工程的流程思想我們在系統(tǒng)開發(fā)過程中,采用軟件工程的開發(fā)管理,在開發(fā)的過程中也遵循軟件工程的思想,軟件工程的主要環(huán)節(jié)有:人員管理(自己模擬)、項目管理(小組模擬)、可行性與需求分析、系統(tǒng)設計、程序設計、測試、維護等,如下所示。人員管理項目管理維護測試程序設計系統(tǒng)設計可行性與需求分析圖313.2面向對象機制的設計思想所有計算機均由兩種元素組成:代碼和數(shù)據(jù)。精確的說,有些程序是圍繞著什么正在發(fā)生而編寫,有些則是圍繞誰正在受影響而編寫的。第一種編程方式叫做面向過程的模型,按這種模型編寫的程序以一系列的線性步驟(代碼)為特征,可被理解為作用于數(shù)據(jù)的代碼。如 c 等過程化語言

29、。第二種編程方式叫做面向對象的模型,按這種模型編寫的程序圍繞著程序的數(shù)據(jù)(對象)和針對該對象而嚴格定義的接口來組織程序,它的特點是數(shù)據(jù)控制代碼的訪問.通過把控制權轉移到數(shù)據(jù)上,面向對象的模型在組織方式上有:抽象、封裝、繼承和多態(tài)的好處。3.3系統(tǒng)結構圖本系統(tǒng)分為學生前臺子系統(tǒng)和考試管理子系統(tǒng),整個系統(tǒng)的結構圖如下在線考試系統(tǒng)考生前 臺后臺管 理題庫管理 評卷管理考試管理試卷管理成績管理用戶管理權限管理學生登陸圖32圖333.4數(shù)據(jù)庫設計 數(shù)據(jù)庫實現(xiàn)圖34 主要數(shù)據(jù)庫表的結構定義(數(shù)據(jù)詞典): 數(shù)據(jù)庫表名的定義使用:重點字_table;重點字可以是多個英文單詞的組合,從組合的第二單詞起首字母大寫

30、,字段命名是能表達字段內容的英文單詞的組合,組合方式同表名重點字相同。 nn 表示not null 不填表可為空。 數(shù)據(jù)類型不使用固定數(shù)據(jù)庫的類型,標識大眾類型,如字符串、字符、數(shù)字等。這樣在更改數(shù)據(jù)庫時需求的數(shù)據(jù)是可移植的 輸寫數(shù)據(jù)表在數(shù)據(jù)庫中的物理名稱,可用自己熟悉的語言再定義表名稱,方便溝通。 長度定義又數(shù)據(jù)類型決定:如字符串可選8000以下,數(shù)字可在50位之間,字符只允許一位。 輸入方式表示數(shù)據(jù)的來源:生成表由程序或數(shù)據(jù)庫的索引自動生成,而不需人工錄入;輸入表示通過文本框等輸入的數(shù)據(jù);選擇表單選框、復選框、下拉列表等通過選擇輸入的數(shù)據(jù);自定獲取是為外碼的輸入設定的,它由程序自動獲取。第

31、4章 具體實現(xiàn)4.1系統(tǒng)架構與數(shù)據(jù)庫的連接數(shù)據(jù)庫應用,在許多軟件系統(tǒng)中經(jīng)常用到,是開發(fā)中大型系統(tǒng)不可缺少的輔助。但如果對數(shù)據(jù)庫資源沒有很好地管理(如:沒有及時回收數(shù)據(jù)庫的游標(resultset)、statement、連接(connection)等資源),往往會直接導致系統(tǒng)的穩(wěn)定。這類不穩(wěn)定因素,不單單由數(shù)據(jù)庫或者系統(tǒng)本身一方引起,只有系統(tǒng)正式使用后,隨著流量、用戶的增加,才會逐步顯露。在b基于java開發(fā)的系統(tǒng)中,jdbc是程序員和數(shù)據(jù)庫打交道的主要途徑,提供了完備的數(shù)據(jù)庫操作方法接口。但考慮到規(guī)范的適用性,jdbc只提供了最直接的數(shù)據(jù)庫操作規(guī)范,對數(shù)據(jù)庫資源管理,如:對物理連接的管理及緩沖

32、,期望第三方應用服務器(applicationserver)的提供。在標準jdbc對應用的接口中,并沒有提供資源的管理方法。所以,缺省的資源管理由應用自己負責。雖然在jdbc規(guī)范中,多次提及資源的關閉/回收及其他的合理運用。但最穩(wěn)妥的方式,還是為應用提供有效的管理手段。所以,jdbc為第三方應用服務器(application server)提供了一個由數(shù)據(jù)庫廠家實現(xiàn)的管理標準接口:連接緩沖(connection pooling)。引入了連接池( connection pool )的概念 ,也就是以緩沖池的機制管理數(shù)據(jù)庫的資源。 jdbc最常用的資源有三類: connection: 數(shù)據(jù)庫連接。

33、 statement: 會話聲明。 resultset: 結果集游標。 分別存在以下的關系 : 圖41這是一種 爺-父-子 的關系,對connection的管理,就是對數(shù)據(jù)庫資源的管理。舉個例子: 如果想確定某個數(shù)據(jù)庫連接(connection)是否超時,則需要確定其(所有的)子statement是否超時,同樣,需要確定所有相關的resultset是否超時;在關閉connection前,需要關閉所有相關的statement和resultset。 因此,連接池(connection pool)所起到的作用,不僅僅簡單地管理connection,還涉及到 statement和resultset。

34、4.2連接池(connectionpool)與資源管理 connectionpool以緩沖池的機制,在一定數(shù)量上限范圍內,控制管理connection,statement和resultset。任何數(shù)據(jù)庫的資源是有限的,如果被耗盡,則無法獲得更多的數(shù)據(jù)服務。 在大多數(shù)情況下,資源的耗盡不是由于應用的正常負載過高,而是程序原因。 在實際工作中,數(shù)據(jù)資源往往是瓶頸資源,不同的應用都會訪問同一數(shù)據(jù)源。其中某個應用耗盡了數(shù)據(jù)庫資源后,意味其他的應用也無法正常運行。因此,connectionpool的第一個任務是限制:每個應用或系統(tǒng)可以擁有的最大資源。也就是確定連接池的大小(poolsize)。 conn

35、ectionpool的第二個任務:在連接池的大小(poolsize)范圍內,最大限度地使用資源,縮短數(shù)據(jù)庫訪問的使用周期。許多數(shù)據(jù)庫中,連接(connection)并不是資源的最小單元,控制statement資源比connection更重要。以oracle為例: 每申請一個連接(connection)會在物理網(wǎng)絡(如 tcp/ip網(wǎng)絡)上建立一個用于通訊的連接,在此連接上還可以申請一定數(shù)量的statement。同一連接可提供的活躍statement數(shù)量可以達到幾百。 在節(jié)約網(wǎng)絡資源的同時,縮短了每次會話周期(物理連接的建立是個費時的操作)。但在一般的應用中,多數(shù)按照2.1范例操作,這樣有10個

36、程序調用,則會產生10次物理連接,每個statement單獨占用一個物理連接,這是極大的資源浪費。 connectionpool可以解決這個問題,讓幾十、幾百個statement只占用同一個物理連接, 發(fā)揮數(shù)據(jù)庫原有的優(yōu)點。 通過connectionpool對資源的有效管理,應用可以獲得的statement總數(shù)到達 : (并發(fā)物理連接數(shù)) x (每個連接可提供的statement數(shù)量) 例如某種數(shù)據(jù)庫可同時建立的物理連接數(shù)為 200個,每個連接可同時提供250個statement,那么connectionpool最終為應用提供的并發(fā)statement總數(shù)為: 200 x 250 = 50,00

37、0個。這是個并發(fā)數(shù)字,很少有系統(tǒng)會突破這個量級。所以在本節(jié)的開始,指出資源的耗盡與應用程序直接管理有關。 對資源的優(yōu)化管理,很大程度上依靠數(shù)據(jù)庫自身的jdbc driver是否具備。有些數(shù)據(jù)庫的jdbc driver并不支持connection與statement之間的邏輯連接功能,如sqlserver,我們只能等待它自身的更新版本了。對資源的申請、釋放、回收、共享和同步,這些管理是復雜精密的。所以,connectionpool另一個功能就是,封裝這些操作,為應用提供簡單的,甚至是不改變應用風格的調用接口。以下是本程序中數(shù)據(jù)庫連接池的代碼:package com.bsw.database;im

38、port java.sql.connection;import java.sql.sqlexception;import com.devdaily.opensource.database.ddconnectionbroker;/* * 數(shù)據(jù)庫連接池,負責數(shù)據(jù)庫的連接 * * author 張廣宇 * */public class dbmanager string driver = org.gjt.mm.mysql.driver;string url = jdbc:mysql:/localhost:3306/examonline;public connection conn = null;str

39、ing username = root;string password = 123;int minconnections = 5;int maxconnections = 10;long timeout = 100;long leasetime = 60000;string logfile = c:/temp/ddconnectionbroker.log;ddconnectionbroker broker = null;/* * 連接數(shù)據(jù)庫 * * return返回一個連接 */public connection getconnection() try broker = new ddconne

40、ctionbroker(driver, url, username, password,minconnections, maxconnections, timeout, leasetime, logfile);conn = broker.getconnection(); catch (sqlexception e) e.printstacktrace(); finally broker.freeconnection(conn);return conn;結 論當今許多高校都非常關注無紙化網(wǎng)絡考試的開發(fā)與應用,本文是通過考試方面進行的嘗試,實踐證明,該方法是可行的;本人結合企業(yè)的開發(fā)技術及在校所學

41、理論知識(軟件工程,操作系統(tǒng),數(shù)據(jù)結構等學科),開發(fā)一套在線考試系統(tǒng),基本上實現(xiàn)了在線考試及考試管理等功能。由于時間倉促,一些技術和設備所限,該系統(tǒng)存在一些不足之處,有待進一步改進和完善,具體說來有:(1)對后臺數(shù)據(jù)庫中數(shù)據(jù)的日常維護,包括自動清理過時數(shù)據(jù)。(2)程序中錯誤處理和輸入控制不夠全面,可能導致輸入無效引發(fā)錯誤。參考文獻1bruce eckel, java編程思想,第三版,66頁85頁2 周亞輝,java數(shù)據(jù)庫編程寶典,第一版,北京,電子工業(yè)出版社,2003,88275頁3 薩師煊,數(shù)據(jù)庫平臺概論,第三版,北京,高等教育出版社,2003,84149頁4 陳宏剛,軟件開發(fā)過程與案例 ,

42、北京,清華大學出版社,2001,214-265頁 5 施伯樂,數(shù)據(jù)庫平臺教程,北京,高等教育出版社,2000,78-92頁6 張海藩,軟件工程導論,北京,清華大學出版社,1998,126161頁附錄package com.bsw.run;import java.sql.connection;import java.sql.resultset;import java.sql.sqlexception;import java.sql.statement;import java.util.arraylist;import com.bsw.database.dbmanager;import com.b

43、sw.exam.exam;/* * 更新數(shù)據(jù)庫中的試題 * * author 張廣宇 * */public class updatetextstoredao private connection con = null;private statement sta = null;private resultset res = null;private dbmanager db = new dbmanager();/* * 對試題進行更新 */public updatetextstoredao() con = db.getconnection();try sta = con.createstatem

44、ent(); catch (sqlexception e) e.printstacktrace();/* * 查詢正確答案 * * param answerid * param rightnum * return */public int queryrightanswer(int answerid, int rightnum) string sql = select id from rightanswer where answerid= + answerid+ and rightnum= + rightnum + ;int array = new int6;try res = sta.exec

45、utequery(sql);int m = 0;while (res.next() arraym = res.getint(id);m+; catch (sqlexception e) e.printstacktrace();return array;/* * 查詢試題 * * param id * return */public arraylist querytext(int id) arraylist list = new arraylist();string sql = select text,score from examinfo where id= + id;try res = st

46、a.executequery(sql);while (res.next() string text = res.getstring(text);float score = res.getfloat(score);exam exam = new exam(text, score);list.add(exam); catch (sqlexception e) e.printstacktrace();return list;/* * 查詢試題編號 * * param textid * return */public int querytextid(int textid) string sql = s

47、elect textid from examtext where textid= + textid;int temp = 0;try res = sta.executequery(sql);res.next();temp = res.getint(1); catch (sqlexception e) / todo auto-generated catch blocke.printstacktrace();return temp;/* * 更新試題 * * param text * param score * param typeid * param questionid */public vo

48、id updatetext(string text, float score, int typeid, int questionid) string sql = update examinfo set text= + text + ,score= + score+ ,typeid= + typeid + where id= + questionid;try sta.executeupdate(sql); catch (sqlexception e) e.printstacktrace();/* * 更新選項 * * param answercontent * param id */public

49、 void updatechoose(string answercontent, int id) string sql = update chooseanswer set answercontent= + answercontent+ where id= + id;try sta.executeupdate(sql); catch (sqlexception e) e.printstacktrace();/* * 更新正確答案 * * param rightid * param answerid * param rightnum * param id */public void updater

50、ightanswer(int rightid, int answerid, int rightnum,int id) string sql = update rightanswer set rightid= + rightid+ ,answerid= + answerid + ,rightnum= + rightnum+ where id= + id;try sta.executeupdate(sql); catch (sqlexception e) e.printstacktrace();/* * 刪除正確答案 * * param answerid * return */public int

51、 deleteanswer(int answerid) string sql = delete from rightanswer where answerid= + answerid;int temp = 0;try temp = sta.executeupdate(sql); catch (sqlexception e) e.printstacktrace();return temp;/* * 刪除選擇答案 * * param question * return */public int deletechooseanswer(int question) string sql = delete

52、 from chooseanswer where question= + question;int temp = 0;try temp = sta.executeupdate(sql); catch (sqlexception e) e.printstacktrace();return temp;/* * 刪除試題 * * param question * return */public int deleteexam(int question) string sql = delete from examinfo where id= + question;int temp = 0;try temp = sta.executeupdate(sql); catch (sqlexception e) e.printstacktrace();return temp;package com.bsw.servlet;import java.io.ioexception;import java.io.printwriter;import java.util.arraylist;import java.util.random;import javax.servlet.servletexcepti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論