版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 網(wǎng)上考試系統(tǒng)1 緒論</p><p><b> 1.1課題背景</b></p><p> 隨著人們對(duì)信息管理及其運(yùn)用需求的日益迫切及信息技術(shù)的迅速發(fā)展,信息系統(tǒng)的整合及運(yùn)用在辦公管理中得到越來(lái)越廣泛和深入的應(yīng)用。在線考試系統(tǒng)是典型的集管理信息系統(tǒng)以及網(wǎng)絡(luò)編程技術(shù),是高校教學(xué)工作的重要工作內(nèi)容之一。但隨著高等學(xué)校管理工作的內(nèi)容、對(duì)象不斷變化,
2、煩瑣的手工操作和一般的計(jì)算機(jī)軟件已經(jīng)不能滿足現(xiàn)代化考試的需要。運(yùn)用先進(jìn)的管理信息系統(tǒng)及友好的界面,對(duì)學(xué)生息資源以及試題資源進(jìn)行科學(xué)化和系統(tǒng)化管理,己經(jīng)成為高校考試系統(tǒng)的發(fā)展趨勢(shì)。</p><p> 目前,幾乎所有高校的教學(xué)工作部門都已經(jīng)建立了針對(duì)日常職能工作的管理信息系統(tǒng),例如,財(cái)務(wù)處的財(cái)務(wù)管理信息系統(tǒng)、教務(wù)處綜合教務(wù)系統(tǒng)、科研處的科研管理信息系統(tǒng)、圖書館的圖書檢索信息系統(tǒng)等。這些系統(tǒng)在很大程度上提高了部門的工
3、作效率和管理水平。然而,對(duì)于高校中的在線考試系統(tǒng)來(lái)說(shuō),目前還缺乏較為完善的系統(tǒng)化信息管理及其有效利用。</p><p> 正是認(rèn)識(shí)到在線考試系統(tǒng)在整個(gè)學(xué)校信息化過(guò)程中的重要地位,才需要利用先進(jìn)的系統(tǒng)開發(fā)工具和技術(shù),實(shí)現(xiàn)管理工作的信息化、科學(xué)化管理;真正做到“充分利用現(xiàn)有資源和信息”,開發(fā)出對(duì)現(xiàn)有信息的充分整合及操作,減少不必要的、繁雜的手工勞動(dòng),提高辦公效率,加快教育體制改革的進(jìn)程。因此,建設(shè)開發(fā)一個(gè)功能完備、
4、操作簡(jiǎn)便的在線考試系統(tǒng)己經(jīng)迫在眉睫。</p><p> 1.2主要內(nèi)容及目的</p><p> 在線考試是現(xiàn)階段研究開發(fā)的一個(gè)熱點(diǎn)。它是建立在國(guó)際互聯(lián)網(wǎng)上的應(yīng)用系統(tǒng),客戶端的配置可以極為簡(jiǎn)單,使考試不受地域的局限。一個(gè)完備的在線考試系統(tǒng)可以使用戶在網(wǎng)上學(xué)習(xí)過(guò)后及時(shí)檢驗(yàn)自己的學(xué)習(xí)效果,已發(fā)現(xiàn)自己的不足,使得學(xué)習(xí)效率得到很大提高。在線考試系統(tǒng)中題目的生成、試卷的提交、成績(jī)的批閱等都可以在網(wǎng)
5、絡(luò)上自動(dòng)完成。只要形成一套成熟的題庫(kù)就可以實(shí)現(xiàn)考試的自動(dòng)化。這樣一來(lái),教師所要做的只是精心設(shè)計(jì)題目、維護(hù)題庫(kù),而不是組織考試,從而大大減輕了教師的負(fù)擔(dān),這表明其經(jīng)濟(jì)性是相當(dāng)可觀的。為了適應(yīng)新形勢(shì)的發(fā)展,進(jìn)行了這一系統(tǒng)的初步設(shè)計(jì)工作,也可以說(shuō)是做一個(gè)初步的探索,希望它能夠在各類考試中發(fā)揮高效、便捷的作用,把老師從繁重的工作中解脫出來(lái)!該系統(tǒng)采用C/S模式來(lái)設(shè)計(jì),服務(wù)器端采用Mysql數(shù)據(jù)庫(kù)系統(tǒng)和SWing組件來(lái)構(gòu)成考試的應(yīng)用服務(wù)系統(tǒng),同時(shí)
6、可進(jìn)行遠(yuǎn)程系統(tǒng)維護(hù)和管理;客戶端采用Frame窗口來(lái)完成考試全過(guò)程。</p><p> 課題研究的內(nèi)容主要是針對(duì)學(xué)校考試的實(shí)際情況和自身特點(diǎn),利用數(shù)據(jù)庫(kù)管理信息系統(tǒng)技術(shù)設(shè)計(jì)開發(fā)出一個(gè)基于C/S結(jié)構(gòu)的在線考試系統(tǒng),提高學(xué)生對(duì)知識(shí)的掌握以及教師對(duì)學(xué)生學(xué)習(xí)水平測(cè)試。按照系統(tǒng)開發(fā)的流程,首先通過(guò)詳細(xì)的系統(tǒng)需求分析,設(shè)計(jì)出系統(tǒng)的整體框架結(jié)構(gòu);在此基礎(chǔ)上,采用My Sql實(shí)現(xiàn)數(shù)據(jù)庫(kù)設(shè)計(jì),利用服務(wù)器端的有好界面實(shí)現(xiàn)對(duì)試卷以及
7、學(xué)生信息信息的錄入、刪除、修改、瀏覽、查詢等功能。</p><p> 課題研究的主要目的是通過(guò)本畢業(yè)設(shè)計(jì),將數(shù)據(jù)庫(kù)理論知識(shí)以及Socket網(wǎng)絡(luò)編程轉(zhuǎn)化為實(shí)踐經(jīng)驗(yàn),并藉此進(jìn)一步理解數(shù)據(jù)庫(kù)理論;掌握數(shù)據(jù)庫(kù)應(yīng)用程序的開發(fā)步驟、設(shè)計(jì)方法及編程技巧,熟練使用SQL語(yǔ)言,學(xué)會(huì)使用Java進(jìn)行面向?qū)ο蟮木幊?;在編程的過(guò)程中,提高自己的動(dòng)手能力,以及分析和解決問(wèn)題的能力,為將來(lái)能夠開發(fā)出高效信息管理系統(tǒng)打好基礎(chǔ)。</p&
8、gt;<p><b> 1.3論文組織結(jié)構(gòu)</b></p><p> 第一部分:緒論。介紹了論文的選題背景、主要內(nèi)容和研究意義。</p><p> 第二部分:系統(tǒng)概述。對(duì)考試系統(tǒng)的發(fā)展趨勢(shì)和作用的概述。</p><p> 第三部分:需求分析。對(duì)系統(tǒng)需要解決的問(wèn)題和具備功能進(jìn)行需求分析。</p><p&g
9、t; 第四部分:系統(tǒng)總體設(shè)計(jì)。從整體上對(duì)整個(gè)系統(tǒng)的模塊進(jìn)行概述。</p><p> 第五部分:系統(tǒng)實(shí)現(xiàn)。對(duì)服務(wù)器模塊實(shí)現(xiàn)方法的介紹。</p><p> 第六部分:系統(tǒng)測(cè)試。對(duì)問(wèn)題的解決方法以及系統(tǒng)的測(cè)試進(jìn)行概述。</p><p> 第七部分:總結(jié)與展望。對(duì)整個(gè)設(shè)計(jì)進(jìn)行歸納總結(jié)和對(duì)未來(lái)的展望。</p><p><b> 2系
10、統(tǒng)概述</b></p><p> 2.1國(guó)內(nèi)外網(wǎng)上考試系統(tǒng)研究現(xiàn)狀與發(fā)展趨勢(shì)</p><p> 隨著計(jì)算機(jī)應(yīng)用的迅猛發(fā)展,網(wǎng)絡(luò)應(yīng)用不斷擴(kuò)大,現(xiàn)在很多國(guó)外的大學(xué)和社會(huì)其他部門都已經(jīng)開設(shè)了遠(yuǎn)程教育,通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)異地教育和培訓(xùn),且這些應(yīng)用正逐步深入到千家萬(wàn)戶。人們迫切要求利用這些技術(shù)來(lái)進(jìn)行網(wǎng)上在線考試,以減輕教師的工作負(fù)擔(dān)及提高工作效率,與此同時(shí)也提高了考試的質(zhì)量,從而使考
11、試更趨于公證、客觀,更加激發(fā)學(xué)生的學(xué)習(xí)興趣。</p><p> 例如目前許多國(guó)際著名的計(jì)算機(jī)公司所舉辦的各種認(rèn)證考試絕大部分采用這種方式。在英國(guó),已經(jīng)實(shí)現(xiàn)了英語(yǔ)資格考試的網(wǎng)上學(xué)習(xí)和水平認(rèn)證全過(guò)程。</p><p> 遠(yuǎn)程教育包括很多環(huán)節(jié),例如教學(xué)系統(tǒng)、答疑系統(tǒng)和考試系統(tǒng)等等。其中很重要的一個(gè)環(huán)節(jié)就是網(wǎng)上考試系統(tǒng),同時(shí)它也是最難實(shí)現(xiàn)的環(huán)節(jié)。</p><p> 在
12、我國(guó),雖然遠(yuǎn)程教育已經(jīng)蓬勃地發(fā)展起來(lái),但是目前學(xué)校與社會(huì)上的各種考試大都采用傳統(tǒng)的考試方式,在此方式下,組織一次考試至少要經(jīng)過(guò)五個(gè)步驟,即人工出題、考生考試、人工閱卷、成績(jī)?cè)u(píng)估和試卷分析。顯然,隨著考試類型的不斷增加及考試要求的不斷提高,教師的工作量將會(huì)越來(lái)越大,并且其工作將是一件十分煩瑣和非常容易出錯(cuò)的事情,可以說(shuō)傳統(tǒng)的考試方式已經(jīng)不能適應(yīng)現(xiàn)代考試的需要。</p><p> 網(wǎng)上考試系統(tǒng)是建立在國(guó)際互聯(lián)網(wǎng)上的
13、應(yīng)用系統(tǒng),客戶端的配置可以極為簡(jiǎn)單,使考試不受地域的局限。</p><p> 2.2網(wǎng)上考試系統(tǒng)的作用</p><p> 一個(gè)完備的網(wǎng)上考試系統(tǒng)可以使用戶在網(wǎng)上學(xué)習(xí)過(guò)后及時(shí)檢驗(yàn)自己的學(xué)習(xí)效果和已發(fā)現(xiàn)自己的不足,使得學(xué)習(xí)效率得到很大提高。在線考試系統(tǒng)中題目的生成、試卷的提交、成績(jī)的批閱等都可以在網(wǎng)絡(luò)上自動(dòng)完成。只要形成一套成熟的題庫(kù)就可以實(shí)現(xiàn)考試的自動(dòng)化。這樣一來(lái),教師所要做的只是精心設(shè)
14、計(jì)題目、維護(hù)題庫(kù),而不是組織考試,從而減輕了教師的負(fù)擔(dān)及提高工作效率,與此同時(shí)也提高了考試的質(zhì)量,從而使考試更趨于公證、客觀,更加激發(fā)學(xué)生的學(xué)習(xí)興趣。</p><p><b> 3系統(tǒng)需求分析</b></p><p> 該網(wǎng)絡(luò)考試系統(tǒng)主要采用Mysql數(shù)據(jù)庫(kù)、SQL語(yǔ)言,Java技術(shù),JDBC技術(shù)和MyEclipse工具,整體設(shè)計(jì)遵循軟件工程的方法,這幾種技術(shù)和方
15、法要實(shí)現(xiàn)一個(gè)軟件系統(tǒng),首先應(yīng)該進(jìn)行需求分析,這樣才能令設(shè)計(jì)出的軟件滿足用戶的各項(xiàng)功能。</p><p> 3.1 系統(tǒng)需要解決的主要問(wèn)題</p><p> 首先,因?yàn)榭荚囀敲嫦蛱囟ǖ哪承?duì)象的,所以考試者進(jìn)入系統(tǒng)應(yīng)該進(jìn)行身份驗(yàn)證。因?yàn)楸鞠到y(tǒng)是針對(duì)具體科目的考試系統(tǒng),所以考試者進(jìn)入考試系統(tǒng)后,不需要選擇考試的科目,只能針對(duì)本系統(tǒng)規(guī)定的科目進(jìn)行考試。在線考試于一般的單機(jī)考試是不同的。鑒于考
16、試環(huán)境一般為機(jī)房,考試者之間的距離很近,為了在線考試做到規(guī)范,對(duì)于每個(gè)應(yīng)試者來(lái)說(shuō),試卷的試題和題量都應(yīng)是相同的,但試題并不相同。在線考試基于網(wǎng)絡(luò)環(huán)境,試卷應(yīng)該從服務(wù)器的數(shù)據(jù)庫(kù)隨機(jī)抽取試題后動(dòng)態(tài)生成的。另外,系統(tǒng)還應(yīng)該對(duì)考試時(shí)間進(jìn)行控制,時(shí)間到了會(huì)要求考試者交卷??荚囌哌x擇答案提交后,應(yīng)該由計(jì)算機(jī)自動(dòng)判卷,得到成績(jī)后顯示出來(lái)??荚囃戤吅?,可以返回登錄界面或繼續(xù)考試。此外,應(yīng)該能夠方便、快捷的對(duì)在線考試系統(tǒng)管理。</p>&l
17、t;p> 3.2 系統(tǒng)相關(guān)原理的概述</p><p> 該網(wǎng)絡(luò)考試系統(tǒng)主要采用Mysql數(shù)據(jù)庫(kù)、SQL語(yǔ)言,Java技術(shù),JDBC技術(shù)和MyEclipse工具。下面就對(duì)這幾種技術(shù)做一個(gè)概述。</p><p> 3.2.1 MyEclipse 6.0概述 </p><p> MyEclipse企業(yè)級(jí)工作平臺(tái)(MyEclipse Enterprise W
18、orkbench ,簡(jiǎn)稱MyEclipse)是對(duì)Eclipse IDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, JavaScript, SQL, Hibernate。</p><p> 在結(jié)構(gòu)上,MyEclipse的特征可
19、以被分為7類:</p><p> (1) J2EE模型 </p><p> ?。?) WEB開發(fā)工具 </p><p> (3) EJB開發(fā)工具 </p><p> ?。?) 應(yīng)用程序服務(wù)器的連接器 </p><p> ?。?) J2EE項(xiàng)目部署服務(wù)
20、</p><p> ?。?) 數(shù)據(jù)庫(kù)服務(wù) </p><p> ?。?) MyEclipse整合幫助 </p><p> 對(duì)于以上每一種功能上的類別,在Eclipse中都有相應(yīng)的功能部件,并通過(guò)一系列的插件來(lái)實(shí)現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們?cè)诓挥绊懫渌K的情況下,對(duì)任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。 &
21、lt;/p><p> 簡(jiǎn)單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配置、測(cè)試以及除錯(cuò)。</p><p> 3.2.2 JDBC概述</p><p> JDBC(Java Data Base Connectivity,Java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供
22、統(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ā)人員能夠用純 Java API 編寫數(shù)據(jù)庫(kù)應(yīng)用程序,同時(shí),JDBC也是個(gè)商標(biāo)名。 </p><p> 有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語(yǔ)句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問(wèn)Sybase數(shù)據(jù)庫(kù)專門寫一個(gè)程序,為訪問(wèn)Oracle數(shù)據(jù)庫(kù)
23、又專門寫一個(gè)程序,或?yàn)樵L問(wèn)Informix數(shù)據(jù)庫(kù)又編寫另一個(gè)程序等等,程序員只需用JDBC API寫一個(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ì)。</p><p> Java數(shù)據(jù)庫(kù)連接體系結(jié)構(gòu)是用于Java應(yīng)用程序連接數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)方法。JD
24、BC對(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)的接口。 </p><p> Java 具有堅(jiān)固、安全、易于使用
25、、易于理解和可從網(wǎng)絡(luò)上自動(dòng)下載等特性,是編寫數(shù)據(jù)庫(kù)應(yīng)用程序的杰出語(yǔ)言。所需要的只是 Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話的方法。而 JDBC 正是作為此種用途的機(jī)制。 </p><p> JDBC 擴(kuò)展了 Java 的功能。例如,用 Java 和 JDBC API 可以發(fā)布含有 applet 的網(wǎng)頁(yè),而該 applet 使用的信息可能來(lái)自遠(yuǎn)程數(shù)據(jù)庫(kù)。企業(yè)也可以用 JDBC 通過(guò) Intranet 將所有
26、職員連到一個(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ù)的要求也在日益增加。 </p><p> MIS 管理員們都喜歡 Java 和 JDBC 的結(jié)合,因?yàn)樗剐畔鞑プ兊萌菀缀徒?jīng)濟(jì)。企業(yè)可繼續(xù)使用它們安裝好的數(shù)據(jù)庫(kù),并能便捷地存取信息,即使這些信息是
27、儲(chǔ)存在不同數(shù)據(jù)庫(kù)管理系統(tǒng)上。新程序的 開發(fā)期很短。安裝和版本控制將大為簡(jiǎn)化。程序員可只編寫一遍應(yīng)用程序或只更新一次,然后將它放到服務(wù)器上,隨后任何人就都可得到最新版本的應(yīng)用程序。對(duì)于 商務(wù)上的銷售信息服務(wù), Java 和JDBC 可為外部客戶提供獲取信息更新的更好方法。 </p><p> JDBC API 既支持?jǐn)?shù)據(jù)庫(kù)訪問(wèn)的兩層模型(C/S),同時(shí)也支持三層模型(B/S)。在兩層模型中,Java applet
28、或應(yīng)用程序?qū)⒅苯优c數(shù)據(jù)庫(kù)進(jìn)行對(duì)話。這將需要一個(gè)JDBC驅(qū)動(dòng)程序來(lái)與所訪問(wèn)的特定數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行 通訊。用戶的SQL語(yǔ)句被送往數(shù)據(jù)庫(kù)中,而其結(jié)果將被送回給用戶。數(shù)據(jù)庫(kù)可以位于另一臺(tái)計(jì)算機(jī)上,用戶通過(guò)網(wǎng)絡(luò)連接到上面。這就叫做客戶機(jī)/服務(wù)器配置,其中用戶的計(jì)算機(jī)為客戶機(jī),提供數(shù)據(jù)庫(kù)的計(jì)算機(jī)為服務(wù)器。網(wǎng)絡(luò)可以是 Intranet(它可將公司職員連接起來(lái)),也可以是 Internet。 </p><p> 在三層模型中
29、,命令先是被發(fā)送到服務(wù)的"中間層",然后由它將SQL 語(yǔ)句發(fā)送給數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)對(duì) SQL 語(yǔ)句進(jìn)行處理并將結(jié)果送回到中間層,中間層再將結(jié)果送回給用戶。MIS 主管們都發(fā)現(xiàn)三層模型很吸引人,因?yàn)榭捎弥虚g層來(lái)控制對(duì)公司數(shù)據(jù)的訪問(wèn)和可作的的更新的種類。中間層的另一個(gè)好處是,用戶可以利用易于使用的高級(jí)API,而中間層將把它轉(zhuǎn)換為相應(yīng)的低級(jí)調(diào)用。最后,許多情況下三層結(jié)構(gòu)可提供一些性能上的好處。 </p><
30、p> 到目前為止,中間層通常都用 C 或 C++ 這類語(yǔ)言來(lái)編寫,這些語(yǔ)言執(zhí)行速度較快。然而,隨著最優(yōu)化編譯器(它把 Java 字節(jié)代碼轉(zhuǎn)換為高效的特定于機(jī)器的代碼)的引入,用 Java 來(lái)實(shí)現(xiàn)中間層將變得越來(lái)越實(shí)際。這將是一個(gè)很大的進(jìn)步,它使人們可以充分利用 Java 的諸多優(yōu)點(diǎn)(如堅(jiān)固、多線程和安全等特征)。JDBC 對(duì)于從Java的中間層來(lái)訪問(wèn)數(shù)據(jù)庫(kù)非常重要。 </p><p> 簡(jiǎn)單地說(shuō),JDB
31、C 可做三件事:與數(shù)據(jù)庫(kù)建立連接、發(fā)送 SQL 語(yǔ)句并處理結(jié)果。下列代碼段給出了以上三步的基本示例: </p><p> Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login","password");</p><p> Statement
32、 stmt = con.createStatement(); </p><p> ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1"); </p><p> while (rs.next()) { </p><p> int x = rs.getInt("a&
33、quot;); </p><p> String s = rs.getString("b"); </p><p> float f = rs.getFloat("c"); </p><p> 盡管JDBC在Java語(yǔ)言層面實(shí)現(xiàn)了統(tǒng)一,但不同數(shù)據(jù)庫(kù)仍舊有許多差異。為了更好地實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)操作,于是誕生了Hibernate項(xiàng)目
34、,Hibernate是對(duì)JDBC的再封裝,實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫(kù)操作更寬泛的統(tǒng)一和更好的可移植性。</p><p> 3.2.3 My Sql 簡(jiǎn)介</p><p> 數(shù)據(jù)庫(kù)是與日常應(yīng)用緊密相連的,在沒有出現(xiàn)數(shù)據(jù)庫(kù)之前,人們通過(guò)手工記錄處理各種信息。當(dāng)需要記錄處理的信息非常多時(shí),手工處理效率就顯得及其低下了。比如病人到醫(yī)院就醫(yī),需要通過(guò)掛號(hào)、就診、買藥、住院、治療、康復(fù)等一系列程序。掛號(hào)就要登
35、記病人姓名、性別、年齡等情況。買藥的時(shí)候醫(yī)院依據(jù)藥單從成千上萬(wàn)種藥物中挑出符合要求的藥品,需要知道藥的品名、具體位置、庫(kù)存多少、存取多少等等。如果病人很多,醫(yī)院選藥就很復(fù)煩了。如果手工處理,工作量大,而且有可能調(diào)拿錯(cuò)藥。這時(shí)如果通過(guò)數(shù)據(jù)庫(kù)處理,只需簡(jiǎn)單地輸入藥品名就馬上可以知道具體位置、庫(kù)存還有多少等詳細(xì)情況。這樣是不是很方便、提高了效率,并且還避免了拿錯(cuò)藥的情況。</p><p> 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)主要包括數(shù)據(jù)
36、庫(kù)(DataBase,簡(jiǎn)稱DB)、數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System,簡(jiǎn)稱DBMS)、數(shù)據(jù)庫(kù)應(yīng)用3大部分。</p><p> 實(shí)際的數(shù)據(jù)庫(kù)可能相當(dāng)復(fù)雜,對(duì)數(shù)據(jù)庫(kù)的操作就更加復(fù)雜。我了更有效地管理和操作數(shù)據(jù)庫(kù),人們研制出數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System,簡(jiǎn)稱DBMS)。DBMS是人們用于操作數(shù)據(jù)庫(kù)的軟件產(chǎn)品。我們平常說(shuō)的數(shù)據(jù)庫(kù)Oracle、MS
37、 SQL Server、MySQL、Sybase、FoxPro、Access等等,都是屬于DBMS范疇。雖然這些DBMS產(chǎn)品的功能各有所異,但是基本功能到大同小異差不多。</p><p> MySQL是現(xiàn)在流行的關(guān)系數(shù)據(jù)庫(kù)中其中的一種,相比其它的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)來(lái)說(shuō),MySQL具有小巧、功能齊全、查詢迅捷等優(yōu)點(diǎn),關(guān)鍵的是它是免費(fèi)的,可以在Internet上免費(fèi)下載到,并可免費(fèi)使用,對(duì)于一般中小型,甚至
38、大型應(yīng)用都能夠勝任。</p><p> 3.2.4 多線程概述</p><p> 多線程是與單線程比較而言的,普通的Windows采用單線程程序結(jié)構(gòu),其工作原理是:主程序有一個(gè)消息循環(huán),不斷從消息隊(duì)列中讀入消息來(lái)決定下一步所要干的事情,一般是針對(duì)一個(gè)函數(shù),只有等這個(gè)函數(shù)執(zhí)行完之后,主程序才能接收另外的消息來(lái)執(zhí)行。比如子函數(shù)功能是在讀一個(gè)網(wǎng)絡(luò)數(shù)據(jù),或讀一個(gè)文件,只有等讀完這個(gè)數(shù)據(jù)或文件才
39、能接收下一個(gè)消息。在執(zhí)行這個(gè)子函數(shù)過(guò)程中你什么也不能干。但往往讀網(wǎng)絡(luò)數(shù)據(jù)和等待用戶輸入有很多時(shí)間處于等待狀態(tài),多線程利用這個(gè)特點(diǎn)將任務(wù)分成多個(gè)并發(fā)任務(wù)后,就可以解決這個(gè)問(wèn)題。</p><p> 要學(xué)會(huì)Java中的多線程編程,就得知道如何實(shí)現(xiàn)支持多線程的類。Java中實(shí)現(xiàn)多線程的類有兩種方法:</p><p> 擴(kuò)展java.lang.Thread類,用它覆蓋Thread類的run方法。
40、</p><p> 生成實(shí)現(xiàn)java.lang.Runnable接口的類并將其它的實(shí)例與java.lang.Thread實(shí)例相關(guān)聯(lián)。</p><p> Thread類是負(fù)責(zé)向其它類提供線程支持的最主要的類,要使用一個(gè)類具有線程功能,在Java中只要簡(jiǎn)單地從Thread類派生一個(gè)子類就可以了擴(kuò)展Thread類,如printThread.java。</p><p>
41、; Thread類最重要的方法是run方法。run方法是新線程執(zhí)行的方法,因此生成java.lang.Thread的子類時(shí),必須有相應(yīng)的run方法。</p><p><b> 3.3系統(tǒng)用戶特點(diǎn)</b></p><p> 本系統(tǒng)的用戶主要有:(1)學(xué)生用戶。由于本系統(tǒng)是用于學(xué)生考試的系統(tǒng),面向?qū)ο笫菙?shù)量眾多的學(xué)生。(2)老師用戶。老師是考試系統(tǒng)中關(guān)鍵的一環(huán),考試
42、系統(tǒng)能否推廣,老師起到?jīng)Q定性的作用,因?yàn)槔蠋熢诓坏诳荚囍懊妙},還要組織考試,對(duì)試卷進(jìn)行回收、批改。一個(gè)優(yōu)秀的考試系統(tǒng)要在不但要考慮到學(xué)生的使用方便性,還要顧及到老師的使用簡(jiǎn)便性。</p><p><b> 3.4系統(tǒng)設(shè)計(jì)目標(biāo)</b></p><p> 在線考試系統(tǒng)的設(shè)計(jì)目標(biāo)是:用標(biāo)準(zhǔn)化的計(jì)算機(jī)機(jī)房,建立安全快捷的考試系統(tǒng),取代傳統(tǒng)的人工出題,人工改卷,人工
43、計(jì)分的模式,實(shí)現(xiàn)勞動(dòng)力的解放,提高教育水平,最終設(shè)計(jì)出一個(gè)界面友好、操作簡(jiǎn)單、便于維護(hù)的集成化的考試系統(tǒng)。</p><p><b> 3.5系統(tǒng)功能需求</b></p><p> 在線考試系統(tǒng)的開發(fā)主要包括客戶端的登陸系統(tǒng),服務(wù)端的數(shù)據(jù)庫(kù)管理系統(tǒng)。以及考試服務(wù)的開啟,對(duì)于前者要求能耐夠通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)的通信。而對(duì)于后者則要求能夠通過(guò)有好的界面操作數(shù)據(jù)實(shí)現(xiàn)對(duì)學(xué)生信息
44、以及試卷信息,和學(xué)生成績(jī)的有效管理,以及參加考試科目的發(fā)布。</p><p> 本系統(tǒng)主要用來(lái)實(shí)現(xiàn)對(duì)學(xué)生信息和考卷綜合信息的整合,通過(guò)網(wǎng)絡(luò)編程實(shí)現(xiàn)計(jì)算機(jī)上的考試,避免以往人工操作等繁雜的勞動(dòng),其主要功能包括考卷信息錄入、修改、刪除、瀏覽、綜合查詢以及學(xué)生信息的錄入和設(shè)定,以及參加考試信息的設(shè)定等工作。根據(jù)相關(guān)的調(diào)查研究以及結(jié)合實(shí)際工作生活中的體會(huì),此在線考試系統(tǒng)的功能需求如下:</p><p
45、> ?。?)系統(tǒng)集成化,界面風(fēng)格簡(jiǎn)潔,易于操作;</p><p> (2)服務(wù)端具有對(duì)考卷信息的錄入、修改、刪除、更新等功能;</p><p> ?。?)服務(wù)端具有對(duì)學(xué)生信息的插入,瀏覽和查詢功能;管理員通過(guò)查看功能實(shí)現(xiàn)信息的可視化管理;</p><p> ?。?)服務(wù)端具有試卷選擇和對(duì)每個(gè)用戶發(fā)布的試題不相同的功能防止用戶之間的抄襲,并且能向各個(gè)用戶發(fā)布交
46、卷提醒的功能;</p><p> (5)客戶端具有用戶認(rèn)證和接收服務(wù)端發(fā)布的試題以及自動(dòng)記分并且提交成績(jī)的功能。</p><p> 3.6系統(tǒng)功能模塊設(shè)計(jì)</p><p> 為了實(shí)現(xiàn)系統(tǒng)集成化、界面簡(jiǎn)潔及易于操作的要求,考試系統(tǒng)服務(wù)端將功能模塊劃分為開啟服務(wù)模塊、服務(wù)器配置模塊、試卷選擇功能模塊、試卷及試題添加功能模塊、在線考試用戶查看功能模塊、已經(jīng)持久化的學(xué)
47、生信息瀏覽功能模塊和學(xué)生信息的錄入功能模塊。</p><p> 考試系統(tǒng)服務(wù)端實(shí)現(xiàn)功能如下:</p><p> ?。?)開啟服務(wù)模塊:管理員通過(guò)友好的操作界面能夠開啟/停止考試系統(tǒng)的服務(wù)。</p><p> ?。?)服務(wù)器配置模塊:該模塊為系統(tǒng)管理員操作,通過(guò)配置信息持久化的方式以及客戶端的連接參數(shù),從而使開啟服務(wù)模塊的功能能夠正常運(yùn)轉(zhuǎn)。</p>&
48、lt;p> ?。?)試卷選擇功能模塊:該模塊功能的正常實(shí)現(xiàn)需要服務(wù)器配置模塊的正確配置。通過(guò)該功能模塊能夠?qū)崿F(xiàn)考試科目的選擇、所選科目試題的查看、考試題目數(shù)的設(shè)定以及對(duì)其中試題的增加和刪除功能;</p><p> ?。?)試卷及試題添加功能模塊:該功能模塊的正常運(yùn)轉(zhuǎn)也需要服務(wù)器配置的成功。通過(guò)該模塊能夠?qū)崿F(xiàn)添加一個(gè)新科目,以及向指定科目添加試題的功能。</p><p> ?。?)在線
49、考試用戶查看功能模塊:該模塊的實(shí)現(xiàn)需要服務(wù)器的正常開啟,通過(guò)該模塊能夠?qū)崿F(xiàn)對(duì)正在參加在線考試的學(xué)生的查看。從而使教師能夠及時(shí)了解參加人數(shù)的輕快</p><p> ?。?)已經(jīng)持久化的學(xué)生信息瀏覽功能模塊:該功能模塊的使用需要服務(wù)器配置的成功,通過(guò)該功能模塊能夠?qū)崿F(xiàn)對(duì)已經(jīng)持久化的考生信息和成績(jī)的簡(jiǎn)單查詢。</p><p> ?。?)學(xué)生信息的錄入功能模塊:該模塊的實(shí)現(xiàn)需要服務(wù)器配置信息的正確
50、及成功。通過(guò)該功能模塊能夠?qū)崿F(xiàn)學(xué)生信息的持久化存儲(chǔ)便于后期的管理和查詢。</p><p> 3.7 系統(tǒng)體系結(jié)構(gòu)選擇</p><p> 目前流行的應(yīng)用系統(tǒng)的系統(tǒng)結(jié)構(gòu)主要有兩種模式,即客戶機(jī)/服務(wù)器模式(C/S模式)和瀏覽器/服務(wù)器模式(B/S模式)。這兩種方式從本質(zhì)上說(shuō),都是基于提供了標(biāo)準(zhǔn)接口的后臺(tái)數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)的,但在具體實(shí)現(xiàn)上,兩種開發(fā)方法有很大差別。</p><
51、p> C/S模式是當(dāng)前數(shù)據(jù)庫(kù)應(yīng)用程序中極為流行的一種方式,尤其是網(wǎng)絡(luò)技術(shù)的充分發(fā)展后,當(dāng)前很多系統(tǒng)都采用這種方式進(jìn)行構(gòu)造。它是為了解決傳統(tǒng)數(shù)據(jù)庫(kù)的弊端,適應(yīng)網(wǎng)絡(luò)的發(fā)展而產(chǎn)生的。它包括前端和后臺(tái)兩部分,前端是面向用戶的人機(jī)界面,后臺(tái)是數(shù)據(jù)存儲(chǔ)與管理部分和文件服務(wù)器。其主要優(yōu)點(diǎn)是交互性強(qiáng),在客戶端有一套完整的應(yīng)用程序,在管理、統(tǒng)計(jì)分析、打印等方面功能較強(qiáng),能提供安全的存取模式,對(duì)相同的任務(wù),C/S模式完成速度更快。由于這種體系結(jié)構(gòu)把
52、數(shù)據(jù)和對(duì)數(shù)據(jù)的管理都統(tǒng)一放在了服務(wù)器上,因此就保證了數(shù)據(jù)的安全性和完整性,同時(shí)也可以充分利用服務(wù)器的高性能特點(diǎn)。</p><p> B/S模式是TCP/IP協(xié)議和www服務(wù)在C/S方式上的一種應(yīng)用和擴(kuò)展,把用戶程序、服務(wù)器、網(wǎng)絡(luò)數(shù)據(jù)庫(kù)有機(jī)地結(jié)合起來(lái)。其特點(diǎn)是簡(jiǎn)化了客戶端工作,客戶端無(wú)需連接數(shù)據(jù)庫(kù),系統(tǒng)維護(hù)簡(jiǎn)單,支持利用統(tǒng)一的用戶程序訪問(wèn)不同的系統(tǒng),可以充分利用基于Internet的數(shù)據(jù)訪問(wèn)方式和新的開發(fā)工具。&
53、lt;/p><p> 在線考試系統(tǒng)主要為了滿足學(xué)校對(duì)教員學(xué)生學(xué)習(xí)情況掌握的需要。根據(jù)對(duì)考試系統(tǒng)的功能和特點(diǎn)的分析,考慮到考試系統(tǒng)主要運(yùn)用在學(xué)校機(jī)房并且服務(wù)器的配置不是很高的特點(diǎn),所以在在線考試系統(tǒng)中,采用了交互性強(qiáng),選作服務(wù)器的主機(jī)性能不要求很高并且通訊開銷較低,具有較強(qiáng)的數(shù)據(jù)操縱和事務(wù)處理能力的客戶機(jī)/服務(wù)器模式(C/S模式)實(shí)現(xiàn)。</p><p> 3.7.1 C/S模式介紹</
54、p><p> 所謂C/S模式是指具有主從分布與協(xié)作處理特征的計(jì)算機(jī)體系結(jié)構(gòu)。它是指用一個(gè)主機(jī)連接若干個(gè)客戶機(jī),主機(jī)上安裝DBMS,以滿足客戶機(jī)對(duì)數(shù)據(jù)訪問(wèn)的各種要求。客戶機(jī)具有單獨(dú)的處理事務(wù)的能力,可以對(duì)數(shù)據(jù)的輸入進(jìn)行預(yù)處理,也可以對(duì)主機(jī)返回的結(jié)果進(jìn)行再加工整理,并且與用戶進(jìn)行交互式對(duì)話。</p><p> 它采用客戶機(jī)請(qǐng)求服務(wù)方式,即服務(wù)器根據(jù)請(qǐng)求提供相應(yīng)的服務(wù)。該模式下所有的客戶機(jī)與數(shù)據(jù)
55、庫(kù)服務(wù)器相連,服務(wù)器負(fù)責(zé)數(shù)據(jù)的處理,客戶端負(fù)責(zé)與用戶的交互,向后臺(tái)的服務(wù)器發(fā)出請(qǐng)求,其數(shù)據(jù)業(yè)務(wù)流程如圖3-1所示: </p><p> 圖3-1 C/S模式結(jié)構(gòu)</p><p> C/S結(jié)構(gòu)的數(shù)據(jù)交互性強(qiáng),能夠處理大量的數(shù)據(jù)流,存取安全,處理速度快,界面友好。根據(jù)該特點(diǎn),C/S模式適合于固定小范圍、安全性要求高、處理數(shù)據(jù)量大的領(lǐng)域。</p&g
56、t;<p> 3.7.2 C/S模式的主要技術(shù)特征</p><p> (1)共享資源,節(jié)約經(jīng)費(fèi)</p><p> 服務(wù)器可以同時(shí)為多個(gè)客戶機(jī)提供服務(wù),并且具有并發(fā)控制、封鎖等能力協(xié)調(diào)多用戶對(duì)于共享資源的訪問(wèn)。</p><p><b> (2)不對(duì)稱協(xié)議</b></p><p> 在客戶機(jī)與服務(wù)器之
57、間存在著一種多對(duì)一的主從關(guān)系,客戶機(jī)是主動(dòng)的,服務(wù)器是被動(dòng)的。</p><p> ?。?)基于消息的交換</p><p> 客戶機(jī)與服務(wù)器是一種一對(duì)藕合的系統(tǒng),它們通過(guò)消息傳遞機(jī)制互相協(xié)作,消息是服務(wù)請(qǐng)求與服務(wù)響應(yīng)的媒介。</p><p><b> 4總體設(shè)計(jì)</b></p><p><b> 4.1系統(tǒng)
58、結(jié)構(gòu)圖</b></p><p> 根據(jù)需求分析,設(shè)計(jì)出了學(xué)生考試子系統(tǒng)和考試管理子系統(tǒng)。</p><p> 考試系統(tǒng)模塊如圖4-1所示:</p><p> 圖4-1 考試系統(tǒng)模塊總圖</p><p> 學(xué)生考試子系統(tǒng)分為三個(gè)模塊:學(xué)生登錄模塊,選擇科目模塊和開始考試模塊。如圖4-2所示:</p><p&
59、gt; 圖4-2學(xué)生考試子系統(tǒng)模塊</p><p> 考試管理子系統(tǒng)主要是針對(duì)管理員的,管理員可以通過(guò)登錄考試管理子系統(tǒng)查看學(xué)生信息,添加學(xué)生信息,添加試題和管理試卷。考試管理子系統(tǒng)的模塊如圖4-3所示:</p><p> 圖4-3考試管理子系統(tǒng)模塊</p><p> 4.2學(xué)生考試子系統(tǒng)</p><p> 本系統(tǒng)采用Java+JD
60、BC+MySQL的C/S模式來(lái)實(shí)現(xiàn)學(xué)生考試。考試界面美觀,學(xué)生操作方便,主要由以下幾個(gè)模塊組成:</p><p><b> ?。?)用戶登陸 </b></p><p> 驗(yàn)證學(xué)生的登陸信息是否合法,登記學(xué)生的登陸信息。考試開始時(shí),考生在客戶端機(jī)器上使用學(xué)號(hào)和密碼登陸進(jìn)入考試系統(tǒng)。所有考生的信息(包括學(xué)號(hào),姓名和密碼)都保存在MySQL中的student表中。<
61、/p><p><b> ?。?)科目生成 </b></p><p> 接收服務(wù)器傳送的考試科目信息,生成科目列表,提供考試選擇科目界面,供考生選擇考試科目。</p><p> 當(dāng)學(xué)生選擇好科目后,點(diǎn)擊開始考試就進(jìn)入了考試界面。</p><p><b> (3)考試界面</b></p>
62、<p> 接受服務(wù)器端傳送的考卷信息,依次將每道題顯示出來(lái),供學(xué)生進(jìn)行考試。</p><p> 在考試界面的上面顯示出了考生信息,包括學(xué)號(hào),姓名,密碼,和考試科目??荚嚱缑娴淖筮咃@示出了剩余的試題數(shù)量。</p><p> 考試界面的右邊顯示出了考生的剩余時(shí)間,當(dāng)時(shí)間到時(shí),系統(tǒng)會(huì)自動(dòng)提交考生的試卷,并立刻顯示考生的分?jǐn)?shù)。</p><p> 這時(shí),
63、客戶端會(huì)自動(dòng)的把考生的分?jǐn)?shù)和考生的答卷發(fā)送到服務(wù)器端,服務(wù)器端會(huì)把考生的分?jǐn)?shù)同時(shí)保存在MySQL數(shù)據(jù)庫(kù)中的xxxsco表中和xxx.sco文件中,供老師查看。(注意:xxx表示考試科目名稱,例如考生考試的是Java,他的分?jǐn)?shù)就保存在MySQL中的javasco表中和java.sco文件中。)</p><p> 考試界面的最下面顯示的是試題的選項(xiàng)和考生可以做的操作。</p><p> 學(xué)
64、生考試子系統(tǒng)的用例圖如圖4-4所示:</p><p> 圖4-4 學(xué)生考試子系統(tǒng)用例圖</p><p> 4.3 考試管理子系統(tǒng)</p><p> 考試管理子系統(tǒng)主要是用來(lái)控制考生考試的后臺(tái)系統(tǒng),由于面向的操作管理用戶較少,又需實(shí)現(xiàn)較多、較復(fù)雜的功能,故采用較常用的后臺(tái)管理程序開發(fā)方法開發(fā)。 本系統(tǒng)主要有以下幾個(gè)模塊組成: 系統(tǒng)配置模塊,系統(tǒng)服務(wù)模塊,用戶管
65、理模塊,在線用戶模塊,試題管理模塊,試卷管理模塊。</p><p> 管理員登陸考試管理子系統(tǒng)后首先需要配置系統(tǒng)參數(shù),接著就可以進(jìn)行開啟考試服務(wù),管理學(xué)生,管理試題,設(shè)置試卷等操作。如圖4-5所示:</p><p> 圖4-5 考試管理子系統(tǒng)用例圖 </p><p> 4.4系統(tǒng)包結(jié)構(gòu)及類說(shuō)明</p><p> 4.4.1系統(tǒng)主要
66、的包和類</p><p> ?。?)客戶端包結(jié)構(gòu):</p><p> exam.model包:</p><p> AnswerPaper.java類</p><p> Paper.java類</p><p> Request.java類</p><p> Response.java類&
67、lt;/p><p> Student.java類</p><p> examclient包:</p><p> LoginFrame.java類</p><p> SelectSubjectFrame.java類</p><p> ExamMainFrame.java類</p><p>
68、 QuestionPanel.java類</p><p> ExamClient.java類</p><p> FillWidth.java類</p><p> ?。?)服務(wù)器端包結(jié)構(gòu):</p><p> examserver.dao包:</p><p> StudentDao.java接口</p>
69、<p> StudentDaoFromMySQL.java類</p><p> CourseDao.java接口</p><p> CourseDaoFromMySQL.java類</p><p> PaperDao.java接口</p><p> PaperDaoFromMySQL.java類</p>
70、<p> JDBCUtil.java工具類</p><p> examserver.gui包:</p><p> ServerFrame.java類</p><p> ServerMain.java類</p><p> examserver.gui.panel包:</p><p> Service
71、Panel.java類</p><p> ServiceProcessBar.java類</p><p> ConfigPanel.java類</p><p> UserManagePanel.java類</p><p> OnLinePanel.java類</p><p> QuestionPanel.ja
72、va類</p><p> AddQuestionFrame.java類</p><p> PaperManagePanel.java類</p><p> MyDefaultTableModel.java類</p><p> FillWidth.java類</p><p> QueryWay.java類<
73、/p><p> examserver.tools包:</p><p> DateDeal.java類</p><p> GetParameter.java類</p><p> 4.4.2 客戶端類圖及說(shuō)明</p><p> 客戶端主要的類有LoginFrame,ExamClient,SelectSubjectFr
74、ame,QuestionPanel和ExamMainFrame。如圖4-6所示:</p><p><b> 圖4-6客戶端類圖</b></p><p><b> 主要類圖說(shuō)明:</b></p><p> ?。?)LoginFrame, 它是登錄的主窗口,同時(shí)也包含了main()函數(shù)。它是運(yùn)行客戶端的首要類。類說(shuō)明如表4
75、-1所示:</p><p> 表4-1 LoginFrame類說(shuō)明 </p><p> ?。?)ExamClient類主要用來(lái)與服務(wù)器端進(jìn)行交互。它里面的方法都是用來(lái)</p><p> 發(fā)送和接受數(shù)據(jù)的。類說(shuō)明如表4-2所示:</p><p> 表4-2 ExamClient類說(shuō)明 </p>&l
76、t;p> 4.4.3 客戶端model類說(shuō)明</p><p> Student:純粹的一個(gè)javaBean,類里不包含任何業(yè)務(wù)代碼。類里定義的屬性</p><p> 有:學(xué)號(hào),姓名,班級(jí),密碼,在線,登陸時(shí)間。這個(gè)javaBean對(duì)應(yīng)著MySQL數(shù)據(jù)庫(kù)里的student表。</p><p> Question:試題類。屬性有:題號(hào),題目描述,試題選項(xiàng),
77、正確答案。其中試題選項(xiàng)用了一個(gè)ArrayList來(lái)存放。</p><p> Paper:考卷類。只有一個(gè)試題屬性。使用了一個(gè)ArrayList來(lái)存放考試試題。這些考試試題都是隨機(jī)的從MySQL數(shù)據(jù)庫(kù)中相應(yīng)的試題表中的取出的。</p><p> AnswerPaper:答卷類。用了一個(gè)HashMap來(lái)存放考生的答案。其中HashMap中的key存放的是題號(hào),value存放的是考生做的答案
78、。</p><p> 4.4.4 服務(wù)器端類圖及說(shuō)明</p><p> 服務(wù)器端的類主要有ServerMain,ServerFrame,ServerPanel,ConfigPanel,</p><p> UserManagePanel,OnLinePanel,QuestionPanel。如圖4-7所示:</p><p> 圖4-7
79、服務(wù)器端類圖</p><p><b> 主要類圖說(shuō)明:</b></p><p> (1)ServerMain,此類只有一個(gè)功能。那就是啟動(dòng)服務(wù)器端。它只包括一個(gè)方法:Main()方法。類說(shuō)明如表4-3所示:</p><p> 表4-3 ServerMain類說(shuō)明</p><p> (2)ServerFrame,此
80、類就是服務(wù)器端的Frame,里面有6個(gè)Panel。服務(wù)器端的界面設(shè)置都在這個(gè)類里。類說(shuō)明如表4-4所示:</p><p> 表4-4 ServerFrame類說(shuō)明</p><p> (3)ServerPanel,系統(tǒng)服務(wù)模塊的Panel。一些系統(tǒng)服務(wù)模塊的設(shè)置都在這個(gè)類里進(jìn)行。里面有開始系統(tǒng)服務(wù),停止系統(tǒng)服務(wù)和記錄系統(tǒng)日志功能。類說(shuō)明如表4-5所示:</p><p&
81、gt; 表4-5 ServerPanel類說(shuō)明</p><p> 4.4.5 服務(wù)器端DAO描述 </p><p> DAO(Data Access Object)主要用于訪問(wèn)數(shù)據(jù)庫(kù)。為了建立一個(gè)健壯的J2EE應(yīng)用,應(yīng)該將所有對(duì)數(shù)據(jù)源的訪問(wèn)操作抽象封裝在一個(gè)公共API中。用程序設(shè)計(jì)的語(yǔ)言來(lái)說(shuō),就是建立一個(gè)接口,接口中定義了此應(yīng)用程序中將會(huì)用
82、到的所有事務(wù)方法。在這個(gè)應(yīng)用程序中,當(dāng)需要和數(shù)據(jù)源進(jìn)行交互的時(shí)候則使用這個(gè)接口,并且編寫一個(gè)單獨(dú)的類來(lái)實(shí)現(xiàn)這個(gè)接口在邏輯上對(duì)應(yīng)這個(gè)特定的數(shù)據(jù)存儲(chǔ)。通過(guò)定義一些DAO接口,可以使程序的擴(kuò)展性更好,同時(shí)也符合面向接口編程的設(shè)計(jì)模式。DAO包下的接口和實(shí)現(xiàn)類說(shuō)明如表4-6所示:</p><p> 表4-6 DAO包下的類描述</p><p> 4.4.6 數(shù)據(jù)庫(kù)連接的工具類說(shuō)明</p&
83、gt;<p> 工具類JDBCUtil主要用于連接數(shù)據(jù)庫(kù)。有了這個(gè)工具類后,在程序中用到數(shù)據(jù)庫(kù)連接時(shí)就不用再每次都重新生成了,避免了許多麻煩,提高了程序的可重用性和可維護(hù)性。數(shù)據(jù)庫(kù)的連接參數(shù)只需要在這個(gè)工具類里設(shè)置一次就可以了,非常的方便。一般情況下,由于工具類里面的函數(shù)是通過(guò)工具類直接來(lái)調(diào)用的,所以都把里面的屬性定義為靜態(tài)屬性,把里面的方法定義為靜態(tài)方法。在使用完資源后,都要求釋放資源,所以在工具類JDBCUtil里,
84、不僅有g(shù)etConnection()方法,還有release()方法用來(lái)釋放資源。當(dāng)管理員不設(shè)置數(shù)據(jù)庫(kù)的連接參數(shù)時(shí),系統(tǒng)就會(huì)采用在代碼里設(shè)置的默認(rèn)連接參數(shù)。這些默認(rèn)的連接參數(shù)是在一個(gè)靜態(tài)塊里設(shè)置的。代碼如下:</p><p><b> static{ </b></p><p> if(DRIVERNAME==null){</p><p>
85、 DRIVERNAME = "com.mysql.jdbc.Driver";</p><p><b> }</b></p><p> if(URL==null){</p><p> URL="jdbc:mysql://localhost:3306/exam";</p><p&g
86、t;<b> }</b></p><p> if(USERNAME==null){</p><p> USERNAME = "root";</p><p><b> }</b></p><p> if(PASSWORD==null){</p><p&
87、gt; PASSWORD = "123456";</p><p><b> }</b></p><p><b> }</b></p><p> 工具類說(shuō)明如表4-7所示:</p><p> 表4-7 工具類描述</p><p><b>
88、 5 服務(wù)器模塊</b></p><p> 服務(wù)器配置模塊主要考慮的是關(guān)于信息的存儲(chǔ)方式的選擇及配置,此設(shè)計(jì)主要實(shí)現(xiàn)了基于MySql數(shù)據(jù)庫(kù)的持久化存儲(chǔ)方式(但是根據(jù)Java的開閉設(shè)計(jì)原則,本設(shè)計(jì)提供了一個(gè)接口通過(guò)擴(kuò)展接口實(shí)現(xiàn)多種方式的存儲(chǔ)無(wú)需更改源代碼只需擴(kuò)展)。</p><p> 由于采用了JDBC技術(shù)來(lái)連接數(shù)據(jù)庫(kù),所有首先需要管理員配置數(shù)據(jù)庫(kù)的連接參數(shù)。參數(shù)配置好
89、以后需要啟動(dòng)服務(wù),客戶端才能連接。</p><p><b> 5.1系統(tǒng)配置模塊</b></p><p> 該模塊主要用來(lái)配置數(shù)據(jù)庫(kù)的連接參數(shù)。(文件方式我們?cè)戎谱髁?,但是后?lái)用了MySQL數(shù)據(jù)庫(kù)后,我們感覺有點(diǎn)多余,就又把它給去除了。)連接數(shù)據(jù)庫(kù)的參數(shù)主要有:驅(qū)動(dòng)程序,連接參數(shù),有戶名和密碼,數(shù)據(jù)庫(kù)名。</p><p> 系統(tǒng)在工具類
90、GetParameter中配置了數(shù)據(jù)庫(kù)的默認(rèn)連接參數(shù),這些參數(shù)的參數(shù)名和參數(shù)值都是保存在一個(gè)String類型的數(shù)組中:</p><p> public static String[] keys = {</p><p> "DriverName",</p><p> "ConnParameter",</p>
91、<p> "UserName",</p><p> "Password",</p><p><b> "DBName",</b></p><p><b> "DataWay"</b></p><p>&
92、lt;b> };</b></p><p> public static String[] values = {</p><p> "com.mysql.jdbc.Driver",</p><p> "jdbc:mysql://127.0.0.1:3306/",</p><p>
93、;<b> "root",</b></p><p><b> "123456",</b></p><p><b> "exam",</b></p><p><b> "0"</b></p
94、><p><b> };</b></p><p> 管理員也可以根據(jù)自己的需要配置數(shù)據(jù)庫(kù)的連接參數(shù),當(dāng)管理員設(shè)置好數(shù)據(jù)庫(kù)的連接參數(shù)之后,點(diǎn)擊保存配置,就可以將數(shù)據(jù)庫(kù)的連接參數(shù)保存到服務(wù)器端的一個(gè)名為server.properties文件中,管理員可以直接查看這個(gè)文件或修改這個(gè)文件。保存配置的代碼如下:</p><p> public stat
95、ic boolean saveProp(String[] keys,String[] values) throws IOException{</p><p> if(keys.length==values.length){</p><p> Properties prop = new Properties();</p><p> FileOutputStrea
96、m fos = new FileOutputStream(new </p><p> File(path));</p><p> for(int i=0;i<keys.length;i++)</p><p> prop.setProperty(keys[i], values[i]);</p><p> prop.store(fo
97、s, "jihuaqiang");</p><p> fos.flush();</p><p> fos.close();</p><p><b> }else</b></p><p> return false;</p><p> return true;</
98、p><p><b> }</b></p><p> 系統(tǒng)就是通過(guò)讀取這個(gè)文件來(lái)獲得數(shù)據(jù)庫(kù)的連接的。讀取配置文件的代碼如下:</p><p> public static Properties getProp() throws Exception{</p><p> Properties prop = new Prop
99、erties();</p><p><b> try {</b></p><p> prop.load(new FileInputStream(new File(path)));</p><p> } catch (FileNotFoundException e) {</p><p> setDefault();
100、</p><p> prop.load(new FileInputStream(new File(path)));</p><p> } catch (IOException e) {</p><p> setDefault();</p><p> prop.load(new FileInputStream(new File(path
101、)));</p><p><b> }</b></p><p> return prop;</p><p><b> }</b></p><p> 系統(tǒng)配置界面如圖5-1所示:</p><p> 圖5-1 系統(tǒng)配置界面</p><p><
102、;b> 5.2系統(tǒng)服務(wù)</b></p><p> 用來(lái)啟動(dòng)服務(wù)器端的服務(wù)和停止服務(wù)器端的服務(wù)。只有管理員啟動(dòng)了服務(wù),客戶端才能進(jìn)行登陸考試。</p><p> 當(dāng)管理員啟動(dòng)了服務(wù)后,就會(huì)有一個(gè)進(jìn)度條一直在運(yùn)動(dòng),用來(lái)提示管理員服務(wù)器端的服務(wù)正在運(yùn)行當(dāng)中。</p><p> 當(dāng)管理員停止了服務(wù)或服務(wù)器端因?yàn)楫惓6K止了,進(jìn)度條就會(huì)停止。用來(lái)提示
103、管理員服務(wù)器端的服務(wù)已經(jīng)停止了,客戶端的考生就能再進(jìn)行考試了。</p><p> 此進(jìn)度條,我們專門設(shè)計(jì)了一個(gè)類來(lái)實(shí)現(xiàn):</p><p> public class ServiceProcessBar extends JLabel implements ActionListener{</p><p> private Timer timer = null;&l
104、t;/p><p> private boolean isPaintLeft = true;</p><p> /** 漸變矩形的寬度 */</p><p> private int width = 0;</p><p> /** 漸變矩形的高度 */</p><p> private int height = 0
105、;</p><p> /** 漸變矩形的水平位置 */</p><p> private int nowX = 0;</p><p> /** 漸變舉行的垂直位置 */</p><p> private int nowY = 0;</p><p> /** 是否從左邊往右邊移動(dòng) */</p>&
106、lt;p> private boolean isLeft = true;</p><p> /** 是否開始滾動(dòng) */</p><p> private boolean isBeginRoll = false;</p><p> public ServiceProcessBar(int width,int height) {</p>&l
107、t;p> setBackground(Color.WHITE);</p><p> timer = new Timer(16,this);</p><p> this.width = width*3/4;</p><p> this.height = height;</p><p> setSize(width,height)
108、;</p><p> setPreferredSize(new Dimension(width,height));</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> if(isLeft){</p
109、><p> if(nowX<=getWidth())</p><p><b> nowX+=3;</b></p><p><b> else</b></p><p> isLeft = false;</p><p><b> }else{</b&g
110、t;</p><p> if(nowX>=-1*width)</p><p><b> nowX-=3;</b></p><p><b> else</b></p><p> isLeft = true;</p><p><b> }</b&g
111、t;</p><p> repaint();</p><p><b> }</b></p><p><b> /**</b></p><p><b> * 開始滾動(dòng)滾動(dòng)條</b></p><p><b> */</b>&l
112、t;/p><p> public void startRoll(){</p><p> nowX = -1*this.width;</p><p><b> nowY = 0;</b></p><p> isBeginRoll = true;</p><p> timer.start();&
113、lt;/p><p><b> }</b></p><p><b> /**</b></p><p> * 停止?jié)L動(dòng)滾動(dòng)條。</p><p><b> */</b></p><p> public void stopRoll(){</p>
114、<p> isBeginRoll = false;</p><p> timer.stop();</p><p> repaint();</p><p><b> }</b></p><p><b> }</b></p><p> 啟動(dòng)服務(wù)和停止服務(wù)
115、的代碼如下:</p><p> public void startServer() throws IOException {</p><p> isServiceRun= true;</p><p> server = new ServerSocket(6666);</p><p> new Thread(this).start();
116、</p><p> writeSysLog(DateDeal.getCurrentTime() + ",服務(wù)器服務(wù)啟動(dòng)成功!等待學(xué)生進(jìn)行考試...");</p><p><b> }</b></p><p> public void stopServer() throws IOException {</p>
117、<p> isServerRun = false;</p><p> if (server != null)</p><p> server.close();</p><p> server = null;</p><p> writeSysLog(DateDeal.getCurrentTime() + ",
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ǎng)上考試系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上考試系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上考試系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)----網(wǎng)上在線考試系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文---jsp網(wǎng)上考試系統(tǒng)
- 網(wǎng)上考試書店系統(tǒng)畢業(yè)設(shè)計(jì)論文
- [優(yōu)秀畢業(yè)設(shè)計(jì)精品] 網(wǎng)上考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上購(gòu)物系統(tǒng)-畢業(yè)設(shè)計(jì)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上考勤系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----網(wǎng)上購(gòu)物系統(tǒng)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上售票系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-網(wǎng)上招聘系統(tǒng)
- 網(wǎng)上訂餐系統(tǒng)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----網(wǎng)上花店系統(tǒng)
- 畢業(yè)設(shè)計(jì)---網(wǎng)上訂餐系統(tǒng)
- 網(wǎng)上招聘系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論