

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 畢 業(yè) 論 文</p><p> 論文題目: 基于Java的在線考試系統(tǒng)的設計 </p><p> 學 生: 馬xx </p><p> 指導教師: 講師 </p>&l
2、t;p> 學 院: 工程學院 </p><p> 專 業(yè): 電子信息工程2008級1班 </p><p><b> 2012年6月</b></p><p> 基于Java的在線考試系統(tǒng)的設計</p><p>&l
3、t;b> 摘 要</b></p><p> 隨著網(wǎng)絡社會的普及與發(fā)展,在線考試已經(jīng)成為現(xiàn)階段研究開發(fā)的一個熱點。它是基于Java語言的在線考試平臺,目標是為了方便培訓學員對近期學習效果的在線測評,客戶端的配置可以極為簡單,使考試不受地域的限制。該考試系統(tǒng)包括考生登錄、在線答題、交卷功能、顯示成績、自動評分、考生信息管理、考試試題管理、題庫管理等多個功能。在線考試系統(tǒng)可以實現(xiàn)考試的自動化,試題
4、可從題庫中隨機抽取,這樣就減少了作弊的可能,并克服了傳統(tǒng)的“人工出題,考生考試,人工閱卷,成績評估及試卷分析”考試模式耗時費力、容易出錯的缺點。</p><p> 關鍵詞:在線考試,java EE,Mysql,NES,MVC,JDBC,數(shù)據(jù)庫。</p><p> Online examination system based on Java</p><p>&l
5、t;b> Abstract</b></p><p> Online Examination has become a hot of the present research and development with the development and popularization of the network society. Based on Java Language, The On
6、line Examination System, which is also called Online examination platform, aimed at facilitating the training students’ recent learning effect of Online assessment. Client configuration can be very simple , make examinat
7、ion is not subject to regional restrictions. The examination system includes the examinee login, online answer</p><p> Key words: Online Exam, Java EE, MySql , NES, MVC, JDBC, Database.</p><p>
8、<b> 目 錄</b></p><p><b> 摘要</b></p><p><b> Abstract</b></p><p><b> 1 緒論1</b></p><p> 1.1 課題研究背景1</p><p&
9、gt; 1.2 課題研究意義1</p><p> 1.3 論文結構1</p><p> 1.4 相關技術1</p><p> 1.4.1 Core Java核心技術1</p><p> 1.4.2 JDBC1</p><p> 1.4.3 MVC架構1</p><p>
10、 1.4.4 Mysql1</p><p> 1.4.5 Swing1</p><p> 1.4.6 Hibernate1</p><p> 2 系統(tǒng)需求分析5</p><p> 2.1 系統(tǒng)設計的目標5</p><p> 2.2 系統(tǒng)設計的功能性需求錯誤!未定義書簽。</p>&l
11、t;p> 2.3 系統(tǒng)的性能需求錯誤!未定義書簽。</p><p> 2.4 對系統(tǒng)功能的規(guī)定錯誤!未定義書簽。</p><p> 2.5 開發(fā)環(huán)境錯誤!未定義書簽。</p><p><b> 3 系統(tǒng)設計5</b></p><p> 3.1 系統(tǒng)總體設計錯誤!未定義書簽。</p>
12、<p> 3.1.1 三層架構的總體設計1</p><p> 3.1.2 增加網(wǎng)絡層的四層整體架構1</p><p> 3.2 基本設計和程序流程圖錯誤!未定義書簽。</p><p> 3.3 數(shù)據(jù)庫設計錯誤!未定義書簽。</p><p> 4 在線考試系統(tǒng)主要功能模塊12</p><p&g
13、t; 4.1 考生登錄模塊錯誤!未定義書簽。</p><p> 4.1.1 歡迎窗口界面1</p><p> 4.1.2 登錄窗口界面1</p><p> 4.1.3 主菜單界面1</p><p> 4.2 考生考試模塊錯誤!未定義書簽。</p><p> 4.3 數(shù)據(jù)管理模塊錯誤!未定義書簽。
14、</p><p><b> 5 結論24</b></p><p><b> 參考文獻</b></p><p><b> 附錄</b></p><p><b> 致謝</b></p><p> 基于Java的在線考試系統(tǒng)的
15、設計 </p><p><b> 1 緒論</b></p><p> 1.1 課題研究背景</p><p> 信息化高速發(fā)展的今天,使得網(wǎng)絡在整個社會的各個領域和部門得到了廣泛的普及與應用?;诨ヂ?lián)網(wǎng)的在線考試,以其巨大的發(fā)展前景,已經(jīng)成為現(xiàn)階段研究開發(fā)的一個熱點。它是建立在國際互聯(lián)網(wǎng)上的應用系統(tǒng),客戶端的配置可以極為簡單,使考試不
16、受地域的限制。</p><p> 一個完備的在線考試系統(tǒng)可以使用戶在網(wǎng)上學習過后及時檢驗自己的學習效果,及時發(fā)現(xiàn)自己的不足,使得學習效率得到很大提高。在線考試系統(tǒng)中題目的生成、試卷的提交、成績的批閱等都可以在網(wǎng)絡上自動完成。只要形成一套成熟的題庫就可以實現(xiàn)考試的自動化,節(jié)約大量的人力物力,并且速度更加快捷。</p><p> 在線考試系統(tǒng),如:公務考試系統(tǒng)、公安部門人員考核系統(tǒng)、駕駛員
17、網(wǎng)上考試系統(tǒng)、網(wǎng)絡在線心理測評、職業(yè)測評等,在社會各行各業(yè)中得到了廣泛的應用,大到國家機關、政府部門及軍事機構對政務人員的考核,還有企事業(yè)單位對各部門員工的素質測評,小到個人網(wǎng)上性格測評、職業(yè)測評等等,均需用到在線考試系統(tǒng)。</p><p> 1.2 課題研究意義</p><p> 在線考試系統(tǒng)借助于完整的考試題庫就可以實現(xiàn)考試的自動化,考試題可以從題庫中隨機抽取,這樣就大大減少了人為
18、作弊的可能性。而作為傳統(tǒng) “人工出題,考生考試,人工閱卷,成績評估及試卷分析”的考試模式,既耗時費力,又容易出錯,也會存在作弊的可能性。在線考試系統(tǒng)就可以避免上述傳統(tǒng)考試模式的缺點。</p><p> 在線考試將逐步取代人工考試,廣泛應用于社會的各個領域當中。軟件系統(tǒng)應用到遠程教育,我國遠程教育的蓬勃發(fā)展,處于起步階段。節(jié)約了大量的人力和物力。將給這個高速發(fā)展的社會帶來極大的便利。</p><
19、;p><b> 1.3 論文結構</b></p><p> 本論文共有以下幾個基本部分:</p><p> 第一部分主要介紹了本課題的研究背景和研究意義,以及研究所用到的相關技術知識。在線考試系統(tǒng)的研究具有廣闊的應用前景,它的出現(xiàn)給現(xiàn)代社會帶來了極大的方便;相關技術包括:Core Java核心技術、JDBC數(shù)據(jù)庫和Java的連接技術、MVC架構的原理應用、
20、Mysql和Swing技術等。這些技術給在線考試系統(tǒng)的設計提供了正確的參考標準。</p><p> 第二部分主要介紹了考試系統(tǒng)的需求分析。系統(tǒng)設計的目標,系統(tǒng)設計的功能性需求,系統(tǒng)的性能需求,對系統(tǒng)功能的規(guī)定以及開發(fā)環(huán)境。</p><p> 第三部分主要介紹了系統(tǒng)的總體設計結構和總體程序流程圖。總體設計結構就是三層架構的整體結構設計,包括表現(xiàn)層、業(yè)務層和數(shù)據(jù)管理層。</p>
21、<p> 程序流程圖主要分析了考試系統(tǒng)的執(zhí)行流程:</p><p> 顯示歡迎窗口界面定時自動切換到登陸界面輸入正確的考生編號和密碼,點擊“登陸”按鈕調用ClientContext對象的login方法,切換到主菜單界面點擊“開始”按鈕,切換到考生考試界面考生開始定時答題,做完第一題,點擊“下一題”按鈕考生答題結束,點擊“交卷”按鈕,執(zhí)行交卷功能點擊“分數(shù)”按鈕,顯示考試成績點擊“離開”按鈕,退出
22、考試,考試結束。</p><p> 這樣的流程使代碼運行過程更加清晰,從而實現(xiàn)了考試的登錄、考生答題、答完交卷、系統(tǒng)自動提交成績并顯示等考試功能,完成了考試的自動化處理。</p><p> 第四部分主要介紹了在線考試系統(tǒng)的主要功能模塊:考生登錄模塊、考生考試模塊和數(shù)據(jù)管理模塊。并帶有相關功能實現(xiàn)的代碼介紹。</p><p><b> 1.4 相關技術
23、</b></p><p> 對于在線系統(tǒng)的設計涉及到了Java語言編程和數(shù)據(jù)庫等相關方面的技術知識。</p><p> 1.4.1 Core Java核心技術</p><p> Java語言是一種簡單、面向對象、分布式、解釋型、穩(wěn)定、安全、結構中立、易移植、高性能、多線程的動態(tài)語言。</p><p> 簡單是指Java采用
24、類C/C++的語法風格,C++程序員可以很快就掌握Java語法。Java摒棄了C++容易引發(fā)程序錯誤的地方,如指針和內(nèi)存管理。另外Java提供了豐富的類庫。</p><p> 面向對象可以說是Java最重要的特性,Java語言的設計完全是面向對象的,它不支持像C語言那樣的面向過程的程序設計技術。Java支持靜態(tài)和動態(tài)風格的代碼繼承及重用。Java包括一個支持HTTP和FTP等基于TCP/IP協(xié)議的子庫。Java
25、致力于檢查程序在編譯和運行過程中的錯誤。Java將它的程序編譯成一種結構中立的中間文件格式。在Java語言里,像指針和釋放內(nèi)存等C++功能被刪除,避免了非法內(nèi)存操作。當Java用來創(chuàng)建瀏覽器時,語言功能和瀏覽器本身提供的功能結合起來,使它更安全。Java編譯器產(chǎn)生的目標代碼是針對一種并不存在的CPU-JAVA虛擬機,而不是某一實際的CPU。多線程功能使得在一個程序里可同時執(zhí)行多個小任務。Java的動態(tài)特性是其面向對象設計方法的發(fā)展。&l
26、t;/p><p> 對象是指一個具體事物實例,Java 類是用來描述事物類型的。Java中的構造器聲明在類內(nèi)部, 方法名與類名一致的方法叫構造方法,構造方法不能聲明返回值類型。構造方法可以包含參數(shù),參數(shù)一般是創(chuàng)建對象實例必須依賴的條件(前提條件)。java方法參數(shù)的傳遞規(guī)則是基于值的傳遞,是變量值的復制。繼承是用來表達概念上具體化延續(xù)的具體概念。子類繼承父類的屬性和方法,構造器不能繼承,實例化子類,會遞歸分配所有父
27、類的空間,子類構造器一定調用父類構造器。</p><p> 1.4.2 JDBC</p><p> JDBC的英文全稱是Java Database Connection。</p><p> JDBC API(interface)是SUN提出的java程序訪問數(shù)據(jù)庫的標準。不同的數(shù)據(jù)庫廠商實現(xiàn)這套標準。程序員通過一套API可以訪問不同類型的數(shù)據(jù)。JDBC默認事務
28、是自動提交的。也可以改為非自動提交(手動提交)。有了JDBC,向各種關系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。</p><p> 常用的接口:java.sql.Connection(連接),java.sql.Statement(語句),java.sql.PreparedStatement(預編譯的語句),java.sql.ResultSet(結果集)。</p><p> 常用的類:Dr
29、iverManage(驅動管理器),接口的實現(xiàn)類(ojdbc14_11g.jar)。</p><p> 1.4.3 MVC架構</p><p> MVC是指:Module(業(yè)務模型),View(視圖 (表現(xiàn))),Controller(控制器)。</p><p> MVC 架構應用如下:</p><p> 1) Module 業(yè)務模型:
30、軟件核心功能的抽象,封裝軟件核心功能。</p><p> 如:注冊,登錄,開始考試,交卷等。</p><p> 2) View 視圖 (表現(xiàn)):軟件的界面視圖,用來呈現(xiàn)用戶數(shù)據(jù)狀態(tài),接受用戶請求。界面中只包含界面顯示處理邏輯。</p><p> 3) Controller 控制器:耦合界面與業(yè)務模型。響應處理用戶請求,將用戶數(shù)據(jù)和請求轉發(fā)給業(yè)務模型,根據(jù)業(yè)務模
31、型的處理結果更新轉發(fā)視圖界面??刂破髦邪缑娴目刂七壿?。</p><p> 4) MVC 請求流程:用戶訪問View,發(fā)起請求,請求由控制器處理,控制器請求業(yè)務模型完成業(yè)務處理,控制器根據(jù)業(yè)務處理結果更新用戶界面。</p><p> 5) MVC 登錄流程實現(xiàn):</p><p> a.增加LoginFrame界面登錄事件響應代碼;</p>&l
32、t;p> b.在 LoginFrame界面增加控制器(ClientContext) 的引用和對象注入代碼;</p><p> c.創(chuàng)建控制器類ClientContext類,添加登錄響應方法,添加界面對象引用和注入方法,達到控制器能夠操作這些對象的目的;</p><p> d.為登錄界面增加方法,用來獲取用戶的ID(編號)和PWD(密碼),務必將idField 引用到界面控件對象
33、;</p><p> e.增加業(yè)務處理模型接口 ExamService,并且提供登錄方法;</p><p> f.為ClientContext 增加業(yè)務層接口的引用;</p><p> g.為MenuFrame界面增加更新用戶信息的方法 updateView。</p><p> 1.4.4 Mysql</p><p
34、> 數(shù)據(jù)庫用來保存和管理數(shù)據(jù),Mysql是數(shù)據(jù)庫中最常見、最基本的一種,它具有體積小、速度快、建立成本低的優(yōu)點,因此被廣泛應用于Internet上的中小型網(wǎng)絡中。目前主要流行的數(shù)據(jù)庫有以下幾種:Oracle,DB2(IBM),Sybase,MySql(Oracle),SQL Server(MS),PostgreSQL,Infomix等。在線考試系統(tǒng)屬于中小型網(wǎng)絡系統(tǒng),適合采用Mysql語言。</p><p&g
35、t; 1.4.5 Swing</p><p> 在線考試系統(tǒng)的圖形用戶界面設計需要使用到Swing,Swing是利用AWT繪圖功能,完整的重新繪制了一套控件系統(tǒng),包括:表格, Tree,等待。Swing適合寫應用軟件。由于Windows對Swing支持不好,很少用Swing開發(fā)桌面應用程序。AWT 具有強大的繪圖功能,它的應用控件 (按鈕, 菜單) 很少,AWT 適合開發(fā)圖形,不適合開發(fā)應用。AWT 使Ja
36、va成功的技術是Applet。SWT 來自IBM 全新的圖形用戶界面(GUI)系統(tǒng),包含少量的C代碼,提供全部平臺的支持。Swt基本實現(xiàn)了跨平臺,代表產(chǎn)品是Eclipse。</p><p> Swing的一些基本內(nèi)容介紹:</p><p><b> 1) 簡單窗口:</b></p><p> JFrame 代表有框的窗口,其中必須放置一個
37、面板;</p><p> JPanel 代表空白矩形區(qū)域面板,在面板上可以添加控件/繪制圖形。</p><p><b> 2) 圖片加載:</b></p><p> Class提供getResource方法,從package中加載,如:</p><p> JFrameDemo.class.getResource(
38、"img.png");</p><p> 使用該語句可以創(chuàng)建一個窗口,在里面顯示一張圖片。</p><p> 3) 布局管理:就是組件在容器(面板) 中的組件(Button)位置和大小。</p><p> A 空布局:(絕對位置布局)絕對布局管理,是指定位置和寬高的布局。如下:</p><p> JFrame (w
39、:574, H:390)</p><p> |-- JPanel (W:568, H:357)</p><p> |-- JButton OK (x:369 ,y:327 , w:92 ,H:21 )</p><p> |-- JButton Cancel (x:466 ,y:327 , w:92 ,H:21 )</p><p> B
40、 布局管理器:(相對位置布局) 絕對布局管理,就是組件的大小和位置有布局管理器控制,大多數(shù)布局均采用這種方式。</p><p> (1)BorderLayout (邊框布局):將一個面板,分為東南西北中,每個位置只能放一個控件,它會自動的向其他的四個方法填充。</p><p> --------------------------------|</p><p>
41、 | 北(North) |</p><p> |------------------------------- |</p><p> | | | |</p><p> | | 中 | |</p><p> | 西 | Center | 東
42、|</p><p> | | | |</p><p> |--------------------------------|</p><p> | 南(South) |</p><p> ---------------------------------|</p>
43、<p> ?。?)FlowLayout (流布局):JPanel的默認布局是FlowLayout,即多個元素順序排序, 一行滿了,排下一行。如下所示:</p><p> ----------------------------</p><p> | [OK][OK][OK][OK][OK][OK] |</p><p> | [OK][OK]
44、[OK] |</p><p> | |</p><p> ----------------------------</p><p> ?。?)GridLayout(表格布局):指定行數(shù),列數(shù),元素按照等寬的行列表格進行布局。</p><p> (4)復雜布局:布局套布局實現(xiàn)
45、復雜界面布局管理。</p><p> 1.4.6 Hibernate</p><p> Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革
46、命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數(shù)據(jù)持久化的重任。</p><p> Hibernate的核心接口一共有6個,分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。這6個核心接口在任何開發(fā)中都會用到。通過這些接口,不僅可以對持久化對象進行存取,還能夠進行事務控制。</p>
47、<p> 2 系統(tǒng)需求分析(內(nèi)容太少)</p><p> 2.1 系統(tǒng)設計的目標</p><p> 系統(tǒng)設計目標就是要完成一個網(wǎng)絡在線考試系統(tǒng),方便學員對近期學習效果的在線測評。傳統(tǒng)考試測評需要經(jīng)過人工出題、考生考試、人工閱卷、計算成績及試卷分析等多個過程,這樣考試既耗時費力,又容易出錯,也會存在作弊的可能性。在線考試系統(tǒng)就可以避免上述傳統(tǒng)考試模式的缺點,在線考試系統(tǒng)借助
48、于完整的考試題庫就可以實現(xiàn)考試的自動化,考試題可以從題庫中隨機抽取,這樣就大大減少了人為作弊的可能性。如此以來,學員每次測評就會很方便,而且節(jié)省時間。</p><p> 該考試系統(tǒng)包括了考生登錄、在線答題、交卷功能、顯示成績、自動評分、考生信息管理、考試試題管理、題庫管理等多個功能。定位于節(jié)省考試過程中的成本,方便培訓機構對學員測評工作的管理。在線考試系統(tǒng)具有廣闊的應用前景,它將逐步取代人工考試,適用于社會的各
49、個領域中,并給這個高速發(fā)展的社會帶來極大的便利。</p><p> 2.2 系統(tǒng)設計的功能性需求</p><p> 系統(tǒng)設計對考試功能的實現(xiàn)提出了需求,根據(jù)三層架構的整體設計思想,系統(tǒng)前臺設計應用在表現(xiàn)層,系統(tǒng)后臺設計應用在數(shù)據(jù)管理層。因此系統(tǒng)功能性可分為考生模塊功能和數(shù)據(jù)管理模塊功能,考生模塊在表現(xiàn)層,數(shù)據(jù)管理模塊在管理層。</p><p> 考生模塊功能:
50、考生登錄(考生編號和密碼)功能、在線答題功能、上/下一題功能、交卷功能和顯示成績功能等。只有考生信息文件中存在的考生才能順利登錄系統(tǒng)答題,這樣確保了考試的安全性和可方便管理性,后來的考生可以通過注冊,即把新考生信息加載到文件中。</p><p> 數(shù)據(jù)管理模塊功能:主要是對考生信息文件和考試試題文件的安全管理,主要功能有:自動評分功能、考生信息管理功能、考試試題管理功能和題庫管理功能等。數(shù)據(jù)管理功能通過導入考生
51、信息文件和試題文件,然后解析這兩個文件分別到Users集合和Questions集合中實現(xiàn)。</p><p> 2.3 系統(tǒng)的性能需求</p><p> 要求系統(tǒng)性能穩(wěn)定,可執(zhí)行多次考試,并能支持多名用戶并發(fā)考試,保證相互之間不受影響??蛻舳隧憫獣r間要短,訂單提交統(tǒng)計時間要短。以測試驅動開發(fā), 步步為營, 逐步遞歸的方式對系統(tǒng)性能進行測試,確保穩(wěn)定性,堅持編碼->測試->De
52、bug。</p><p> 2.4 對系統(tǒng)功能的規(guī)定</p><p> 為了使所有上網(wǎng)用戶都能方便本系統(tǒng),本系統(tǒng)應具備如下特點:</p><p> 方便操作,操作流程合理;支持沒有計算機使用經(jīng)驗、計算機使用經(jīng)驗較少及有較多計算機使用經(jīng)驗的用戶均能方便地使用本系統(tǒng);有一定的容錯能力;操作完成時有統(tǒng)一規(guī)范的提示信息;用戶可自定義等。</p><
53、p><b> 2.4 開發(fā)環(huán)境</b></p><p> 客戶端要求:Windows XP操作系統(tǒng)或更高版本;</p><p> 開發(fā)環(huán)境:Eclipse或者是MyEclipse;開發(fā)工具:Jdk1.6,MySQL 5.1。</p><p><b> 3 系統(tǒng)設計</b></p><p&g
54、t; 3.1 系統(tǒng)總體設計</p><p> 3.1.1 三層架構的總體設計</p><p> 系統(tǒng)整體架構采用三層架構設計:</p><p> 圖3-1 系統(tǒng)總體三層架構圖</p><p> 整體架構有以下三層:</p><p> 1) 表現(xiàn)層:實現(xiàn)數(shù)據(jù)呈現(xiàn)和用戶交互的功能。</p>&l
55、t;p> 表現(xiàn)層所有的類:WelcomeWindow,LoginFrame,MenuFrame,ExamFrame,ClientContext。</p><p> 其中WelcomeWindow類是用來顯示歡迎窗口界面的,運行該類可以顯示一個歡迎考試窗口;而LoginFrame類是顯示用戶登陸界面的,該登陸界面可以讓用戶輸入已注冊的用戶編號(id)和密碼(Password);MenuFrame類是設計考
56、試主菜單界面的,它包含四個圖片按鈕:開始(start)、分數(shù)(result)、考試規(guī)則(msg)、離開(exit);ExamFrame類用來顯示考試框,框中包括考試標題、題目(題干和四個選項)、上/下一題按鈕、定時計數(shù)器倒計時標簽等,它就是考生考試做題的界面。</p><p> 以上的四個類屬于“用戶界面類”。而表現(xiàn)層最核心的類是ClientContext類,即客戶端上下文,也是客戶端控制器,它用來管理和控制以
57、上的四個“用戶界面”類。ClientContext類包括9個核心方法:用戶登陸方法login(),顯示登陸界面方法show(),退出考試方法exit(),開始考試方法start(),切換下一題方法next(),切換上一題方法prev(),交卷方法send(),定時器定時顯示剩余時間方法timerStart(),顯示考試分數(shù)方法result()。</p><p> 以上表現(xiàn)層的五個類都被封裝到ui包中。</
58、p><p> 2) 業(yè)務層(業(yè)務模型):軟件的核心功能。</p><p> 業(yè)務層所有的類:ExamIsOverException,IdOrPwdException,ExamServiceImpl,ExamService。</p><p> 其中ExamIsOverException類是處理異常類,即處理考試是否結束的類;而IdOrPwdException也是處理
59、異常的類,即處理客戶端輸入的是用戶編號還是密碼;ExamServiceImpl類是考試業(yè)務模型的擴展類,它繼承了考試業(yè)務模型類ExamService的屬性和方法,當考試結束后,用來處理異常,即當點擊其他按鈕時的異常,會顯示“考試已經(jīng)結束”;以上的三個類還有ExamService類都被封裝到service包中。</p><p> 在service包中, 核心接口(抽象類)是ExamService類。它包含登錄系統(tǒng)
60、方法login,開始考試方法start(),需要在實現(xiàn)類中實現(xiàn)生產(chǎn)試卷的功能,保存用戶答案到業(yè)務層方法saveUserAnswers,考試結束方法over()。</p><p> 3) 數(shù)據(jù)管理層(數(shù)據(jù)持久化層), 是指提供數(shù)據(jù)的CRUD管理。</p><p> CRUD是數(shù)據(jù)的增刪改查管理。其中:C: 創(chuàng)建, R: 尋回, 查找, U:更新, D:刪除。</p><
61、;p> 數(shù)據(jù)管理層是只關心數(shù)據(jù)操作, 不涉及業(yè)務功能。如: 查找用戶。</p><p> 管理層所有的類:User,Question,QuestionInfo,ExamInfo,EntityContext。</p><p> 其中:用戶序列化接口User類設置用戶的屬性(用戶編號、名字、密碼、電話號碼和Email)、構造器和方法;試題Question類,Question對象代表
62、一道試題,包括題干和四個選項以及正確答案;試題信息類QuestionInfo是問題和用戶答案的值對象,表示界面上的一道題和對應的用戶答案,是值對象。以上所有類被封裝到entity包中。</p><p> 在entity包中, 核心類是EntityContext,即實體上下文,是軟件的數(shù)據(jù)層,提供軟件數(shù)據(jù)管理功能,如導入用戶文件和試題文件,解析用戶文件和試題文件,管理User和Question。</p>
63、;<p> 熟悉了以上三層架構后,我們來了解一下總體執(zhí)行過程:</p><p> ClientContext類不僅可以控制調用用戶界面設計類中的主方法,這是同一層的連接調用,而且它還可以連接調用下一層(業(yè)務層)的核心類ExamService中的主方法。業(yè)務層的核心類ExamService又可以連接調用下一層(數(shù)據(jù)管理層)核心類EntityContext中的主方法,然后執(zhí)行相應功能。</p&
64、gt;<p><b> 開始考試功能實現(xiàn):</b></p><p> 視圖 MenuFrame 中增加事件監(jiān)聽addActionListener方法;</p><p> 更新ExamFrame, 增加updateView()。</p><p> 2) 控制器, 增加事件響應方法start()。</p><
65、;p> 3) 業(yè)務層增加:startExam()和getQuestion();</p><p> 開始考試業(yè)務描述: 開始考試時候, 抽取考卷試題, 每個level抽取2題,返回考試描述信息用ExamInfo類;</p><p> 考卷是有抽取的題目組成的線性表集合;</p><p> 獲取試題是根據(jù)題目序號獲取指定試題。</p><
66、;p> 3.1.2 增加網(wǎng)絡層的四層整體架構</p><p> 圖3-2 系統(tǒng)總體四層架構圖</p><p> 和以上三層架構相比,多了一個網(wǎng)絡層,除了網(wǎng)絡層的其他三層和上述三層架構相同。</p><p> 現(xiàn)在著重介紹網(wǎng)絡層:</p><p> 無持續(xù)狀態(tài)連接協(xié)議的實現(xiàn):</p><p> 1)
67、無連接協(xié)議原理: 建立連接-發(fā)送請求-接收響應-斷開連接。</p><p> 優(yōu)點: 充分重用服務器的網(wǎng)絡服務能力;</p><p> 缺點: 不能保持持久連接狀態(tài), 不能記住是否已經(jīng)連接。</p><p> 客戶端模式: 建立連接-發(fā)送請求-接收響應-斷開連接;</p><p> 服務器模式: 建立連接-接收請求-處理-發(fā)送響應-斷
68、開連接。</p><p> 2) 無連接協(xié)議的狀態(tài)保持:</p><p> 狀態(tài)保持目的: 識別是否已經(jīng)來過; (對齊)</p><p> 采用令牌機制實現(xiàn): 每次發(fā)送請求都帶著令牌發(fā)送, 服務器檢查令牌是否可用:如果不可用創(chuàng)建新的令牌, 服務器每次發(fā)送響應都包含令牌信息。服務器通過比較令牌是否在已登記的集合中來確定是哪個客戶。</p>
69、<p> 3)網(wǎng)絡服務端的實現(xiàn):采用ExamServer類,即考試應用服務器ExamServer類;</p><p> 服務列表, 每個SID對應一個 ExamService 實例, 每個客戶對應一個SID;</p><p> 等待客戶端的連接,接收請求;</p><p> 根據(jù)用戶請求req,找到對應SessionID 的考試服務對象;</
70、p><p> 一個考試服務對象對應于一個考試客戶端(一個考生);</p><p> 如果請求req中沒有SessionID 的getService()方法會創(chuàng)建新的SessionID和ExamService 實例;</p><p> 發(fā)送響應,斷開連接;</p><p> 第一次訪問服務, 需要創(chuàng)建新的service啟動服務器。</
71、p><p> 4)網(wǎng)絡服務端測試:</p><p><b> 模式:</b></p><p> 建立建立-發(fā)送請求-接收響應-斷開連接</p><p> 5)網(wǎng)絡服務器啟動代碼:</p><p> public static void main(String[] args) {</p&
72、gt;<p> ExamServer server = new ExamServer();</p><p> Config config = new Config("server.properties");</p><p> EntityContext entityContext = new EntityContext(config);</p&
73、gt;<p> server.setConfig(config);</p><p> server.setEntityContext(entityContext);</p><p> server.start();</p><p><b> }</b></p><p> 網(wǎng)絡代理層的工作原理:&l
74、t;/p><p> 1) 客戶端業(yè)務請求到網(wǎng)絡代理客戶端;</p><p> 2) 網(wǎng)絡代理將請求通過網(wǎng)絡發(fā)送到服務器;</p><p> 3) 服務器接收請求通過令牌識別客戶端, 找到合適的業(yè)務層實例;</p><p> 4) 服務器利用反射調用業(yè)務層實例的業(yè)務方法;</p><p> 5) 服務器將業(yè)務執(zhí)行結
75、果發(fā)送給客戶端代理;</p><p> 6) 客戶端代理將結果返回給客戶端界面。</p><p> 軟件實現(xiàn)應遵循以下原則:</p><p> 1) 完整實現(xiàn)桌面版為主要目標;</p><p> 2) 實現(xiàn)網(wǎng)絡代理功能為擴展目標;</p><p> 3) 以測試驅動開發(fā), 步步為營, 逐步遞歸達到目的;<
76、;/p><p> 4) 堅持編碼->測試->Debug;</p><p> 5) 完整嘗試重新實現(xiàn)一遍。</p><p><b> 空行去掉</b></p><p> 3.2 基本設計和程序流程圖</p><p><b> 否</b></p>
77、<p><b> 是 </b></p><p><b> 否</b></p><p><b> 是 </b></p><p><b> 等考試時間到</b></p><p><b> 是</b></
78、p><p><b> 否 </b></p><p><b> 是</b></p><p><b> 否</b></p><p><b> 是</b></p><p> 圖3-3 系統(tǒng)程序流程圖</p>&l
79、t;p><b> 3.3 數(shù)據(jù)庫設計</b></p><p> 數(shù)據(jù)庫設計是很重要的一部分,本文在線考試系統(tǒng)需要用到的兩個數(shù)據(jù)庫文件是UserFile(考生信息)文件和QuestionFile(試題信息)文件。</p><p> 傳統(tǒng)的設計方式是不采用數(shù)據(jù)庫技術,而采用第四章要介紹的數(shù)據(jù)管理功能方式EntityContext類,把這兩個文件分別解析到Use
80、rs集合和questions集合中,加載考生屬性和試題屬性,從而實現(xiàn)考生登錄注冊和隨機從題庫文件中抽取考試題的功能。</p><p> 但是采用數(shù)據(jù)庫方式更為簡單,方法如下:</p><p> 采用JDBC技術,即Java和數(shù)據(jù)庫的連接(Java Database Connection)技術,來連接數(shù)據(jù)庫,在MyEclipse環(huán)境下操作,并事先將mysql-connector-java
81、-5.1.6-bin.jar包、jaxen-1.1-beta-7.jar包和dom4j-1.6.1.jar包載入到MyEclipse環(huán)境中,否則不能連接成功。</p><p> 復制三個文本文件user.txt、corejava.txt和client.properties到項目中,把這三個文件放在一個Config文件夾中;然后復制四個java文件到新創(chuàng)建的day2.exam包下:Config.java、Enti
82、tyContext.java、User.java和Question.java文件。以上工作準備完畢后,按照以下說明來創(chuàng)建數(shù)據(jù)庫:</p><p> 將文本文件UserFile(考生信息)和QuestionFile(試題信息)分別裝載到Users和Questions集合中,這個任務通過數(shù)據(jù)管理類EntityContext來完成,也就是上面所說的“解析UserFile文件和QuestionFile文件到Users集
83、合和questions集合中”;然后把集合對象生成為xml文件:users 生成了user.xml文件,questions生成了Questions.xml文件;</p><p> 把xml文件中的數(shù)據(jù)導入到數(shù)據(jù)表中,這事先要做一些準備:</p><p> 1).準備數(shù)據(jù)庫環(huán)境:創(chuàng)建表users_mayongfei和表questions,表users_mayongfei用于存放user.
84、xml文件導入的數(shù)據(jù),而表questions用于存放Questions_mayongfei.xml文件導入的數(shù)據(jù)。</p><p> 2).準備java環(huán)境:導入ojdbc14_11g.jar包;準備jdbc.properties文件,放在數(shù)據(jù)庫項目的src目錄下;將java文件ConnectionUtils.java放在day2.exam包中。</p><p> 代碼有兩個類:Imp
85、ortUserTable類和ImportQuestionTable類。</p><p> ImportUserTable類有兩個方法:importUserTable方法和insertUsers方法。importUserTable方法的功能是讀入指定的user.xml文件,增加到數(shù)據(jù)表users_mayongfei中,insertUsers方法的功能是把users集合中的對象插入到數(shù)據(jù)表users_mayongf
86、ei中;</p><p> ImportQuestionTable類有兩個方法:importQuestionTable方法和insertQuestion方法。importQuestionTable方法的功能是讀入指定的Questions.xml文件,增加到數(shù)據(jù)表Questions_mayongfei中,insertQuestion方法的功能是把Questions集合中的對象插入到數(shù)據(jù)表Questions_may
87、ongfei中;</p><p> 至此,數(shù)據(jù)庫的設計工作已經(jīng)完成。</p><p> 表3-1 考生信息表</p><p> 4 在線考試系統(tǒng)主要功能模塊</p><p> 4.1 考生登陸模塊</p><p> 在第三章系統(tǒng)設計中已經(jīng)提到,考生登陸界面主要有歡迎窗口界面、登陸窗口界面和主菜單界面三個界面
88、,現(xiàn)在就逐一介紹。</p><p> 4.1.1 歡迎窗口界面</p><p> 歡迎窗口如下圖,它的顯示借助WelcomeWindow類來實現(xiàn),具體就是:創(chuàng)建一個窗口,在里面顯示一張圖片。</p><p> 圖4-1 歡迎窗口界面圖(顯示內(nèi)容)</p><p> 歡迎窗口的顯示需要用到Swing技術,它利用AWT繪圖功能,完整的重
89、新繪制了一套控件系統(tǒng)。代碼的編寫首先要導入javax中的Swing包,Swing包中有JPanel、JLabel、JWindow、JFrame和ImageIcon等對象類,其中JFrame代表有框的窗口,其中必須放置一個面板,JPanel代表空白矩形區(qū)域面板,在面板上可以添加控件或是繪制圖形。</p><p> 歡迎窗口中圖片的加載:Class 提供 getResource 方法, 從package中加載,具體
90、通過以下代碼實現(xiàn):</p><p> setSize(430, 300);</p><p> JPanel pane = new JPanel(new BorderLayout());</p><p> ImageIcon ico = new ImageIcon(</p><p> getClass().getResource(&qu
91、ot;welcome.png"));</p><p> JLabel l = new JLabel(ico);</p><p> pane.add(BorderLayout.CENTER, l);</p><p> pane.setBorder(new LineBorder(Color.GRAY));</p><p> se
92、tContentPane(pane);</p><p> 代碼解釋:setSize是用來設置窗口大小,長430,高300,可以自由選擇大小;pane是JPanel類的對象,采用相對布局方法BorderLayout管理;getResource 方法獲取圖片資源,通過package加載,然后ico對象接收圖片,JLabel類的l使得ico圖像以標簽形式顯示;pane對象的add方法加載圖片到窗口;pane對象的se
93、tBorder方法設置圖片顏色為灰色。</p><p> 4.1.2 登陸窗口界面</p><p> 沒有輸入考生編號和密碼時的登錄界面圖:</p><p> 圖4-2 登陸窗口界面圖</p><p> 輸入考生編號和密碼后的登錄界面圖:</p><p> 圖4-3 登陸窗口界面圖</p>
94、<p> 登錄系統(tǒng)的設計是在線考試系統(tǒng)設計中最為核心的一個環(huán)節(jié),它涉及到考生的身份驗證,事關考試的嚴肅性。所有具有考試資格的考生信息文件(user.txt)都被載入到登錄系統(tǒng)中,因此考生必須輸入信息文件(user.txt)當中的正確的考生編號和密碼才能順利的登錄考試系統(tǒng)進行考試,這樣就確保了考試的安全性。</p><p> 考生登錄窗口的設計包括以下幾個模塊:</p><p>
95、; 1).初始化顯示界面(繪制全部界面)</p><p> 主要內(nèi)容有:設置界面標題為“登錄考試系統(tǒng)”;設置界面大小,長300,高180;設置窗口框中間的內(nèi)容面板,生成窗口框中間內(nèi)容面板;設置默認關閉操作;最重要的一項是添加窗口事件偵聽器,即:“關閉”按鈕點擊后調用ClientContext控制器的exit方法,退出登錄界面。添加事件偵聽器的代碼如下:</p><p> addWin
96、dowListener(new WindowAdapter() {//窗口事件偵聽器</p><p> public void windowClosing(WindowEvent e) {//“關閉”按鈕點擊后調用的事件</p><p> clientContext.exit(LoginFrame.this);</p><p><b> }</
97、b></p><p><b> });</b></p><p> 2).創(chuàng)建窗口框中間的內(nèi)容面板</p><p> 先創(chuàng)建一個JPanel對象p,采用相對布局管理器BorderLayout布局內(nèi)容面板;然后在內(nèi)容面板中添加JLabel標簽“登錄系統(tǒng)”,該標簽布局在內(nèi)容面板的上方;添加中心位置面板,將其布局在內(nèi)容面板的中間位置,該中心
98、位置面板用來放置考生編號面板和考生密碼面板,考生編號面板左方添加“編號”標簽和“密碼”標簽,右方添加文本框輸入文本考生編號和密碼;采用流布局FlowLayout方法,在內(nèi)容面板下方添加“登錄”按鈕和“取消”按鈕;同時也要添加事件偵聽器,在兩個按鈕被點擊的時候執(zhí)行該事件,“登錄”按鈕點擊的時候,調用控制器ClientContext的登錄功能Login方法,“取消”按鈕被點擊的時候,調用控制器ClientContext的退出功能exit方法
99、。</p><p> 3).為客戶端控制器clientContext賦值</p><p> 為clientContext賦值,使clientContext引用的值不再為空,必須依賴的屬性值注入方法。代碼如下:</p><p> private ClientContext clientContext;//默認值是null</p><p>
100、 public void setClientContext(ClientContext clientContext){</p><p> System.out.println("Call setClientContext");</p><p> this.clientContext = clientContext;</p><p><
101、b> }</b></p><p> 4).獲取考生編號和密碼</p><p> 在文本框中輸入正確的考生編號和考生密碼后,當點擊“登錄”按鈕時執(zhí)行事件偵聽器事件,調用控制器的登錄功能Login方法,該方法會調用LoginFrame對象的getUserId和getUserPwd方法來獲取考生編號和密碼。代碼如下:</p><p> Login
102、Frame類:</p><p> private JTextField idField;</p><p> private JPasswordField pwdField;</p><p> public int getUserId(){</p><p> String str = idField.getText();</p&g
103、t;<p> return Integer.parseInt(str);</p><p><b> }</b></p><p> public String getUserPwd(){</p><p> char[] pwd = pwdField.getPassword();</p><p> r
104、eturn new String(pwd);</p><p><b> }</b></p><p> ClientContext類:</p><p> int id = loginFrame.getUserId();</p><p> String pwd = loginFrame.getUserPwd();&l
105、t;/p><p> User user = examService.login(id, pwd);</p><p> //實例化接口,ExamServiceImpl examService</p><p> menuFrame.updateView(user);</p><p> 4.1.3 主菜單界面</p><p&
106、gt; 主菜單界面采用可擴展JFrame繼承類的MenuFrame類來實現(xiàn)。</p><p> 圖4-4 主菜單界面圖</p><p> 主菜單界面設計也是考試系統(tǒng)設計中不可缺少的一個環(huán)節(jié),它也包括以下幾個模塊:</p><p><b> 1).界面的初始化</b></p><p> 設置界面標題“個人在線測
107、評系統(tǒng)”;設置界面大小,長600,高400;設置內(nèi)容面板;添加事件偵聽器,將在窗口關閉按鈕windowClosing被點擊的時候執(zhí)行事件,然后調用控制器clientContext的退出功能exit方法。相關代碼如下:</p><p> addWindowListener(new WindowAdapter() {</p><p> public void windowClosing(W
108、indowEvent e) {</p><p> clientContext.exit(MenuFrame.this);</p><p><b> }</b></p><p><b> });</b></p><p> 2).內(nèi)容面板的創(chuàng)建</p><p> 先設置
109、JPanel對象pane,采用相對位置管理方法BorderLayout布局;然后是菜單標題圖片“title.png”的加載,通過getResource方法獲取圖片,以標簽形式顯示,將其放在內(nèi)容面板的上方;創(chuàng)建菜單面板并加載到內(nèi)容面板的中間位置;最后將標簽“東北林業(yè)大學—版權所有,盜版必究”添加到內(nèi)容面板的右下方。</p><p> 3).菜單面板的創(chuàng)建</p><p> 菜單面板主要用
110、來顯示四個菜單按鈕:開始(start)、分數(shù)(result)、考試規(guī)則(message)和離開(exit);在每一個按鈕上面都加載有一張圖片,如下代碼:</p><p> JPanel pane = new JPanel(new FlowLayout());</p><p> JButton start = createImgBtn("exam.png", &quo
111、t;開始");</p><p> JButton result = createImgBtn("result.png", "分數(shù)");</p><p> JButton msg = createImgBtn("message.png", "考試規(guī)則");</p><p>
112、 JButton exit = createImgBtn("exit.png", "離開");</p><p> 將這些按鈕添加到菜單面板上:</p><p> pane.add(start);</p><p> pane.add(result);</p><p> pane.add(msg);
113、</p><p> pane.add(exit);</p><p> 同樣每個面板都加有事件偵聽器,將在每個按鈕被點擊的時候調用控制器的各個功能。</p><p> 4).圖片按鈕的創(chuàng)建</p><p> 需要用到垂直文本對齊位置和水平文本對齊位置,代碼:</p><p> JButton button =
114、new JButton(txt, ico);</p><p> //垂直文本對齊位置</p><p> button.setVerticalTextPosition(JButton.BOTTOM);</p><p> //水平文本對齊位置</p><p> button.setHorizontalTextPosition(JButto
115、n.CENTER);</p><p> 5).菜單界面信息的更新</p><p> private JLabel info;</p><p> public void updateView(User user) {</p><p> info.setText("歡迎"+user.getName()+"參
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于java的在線考試系統(tǒng)(畢業(yè)論文)
- 基于java的在線考試系統(tǒng)畢業(yè)論文
- 基于java的在線考試系統(tǒng)畢業(yè)論文
- 畢業(yè)論文——基于jsp的java在線考試系統(tǒng)
- 基于java的在線考試系統(tǒng)——畢業(yè)論文 (2)
- 畢業(yè)論文——基于jsp的java在線考試系統(tǒng)
- 畢業(yè)論文——基于jsp的java在線考試系統(tǒng)
- 基于JAVA的在線考試系統(tǒng)畢業(yè)論文.DOC
- 基于java技術的在線考試系統(tǒng)的開發(fā)畢業(yè)論文
- 基于java的在線購物系統(tǒng)的設計與實現(xiàn)——畢業(yè)論文
- 基于java的網(wǎng)上考試系統(tǒng)畢業(yè)論文
- 畢業(yè)論文——基于java的在線購物系統(tǒng)的設計與實現(xiàn)
- 基于java的在線購物系統(tǒng)的設計與實現(xiàn)——畢業(yè)論文
- 畢業(yè)設計--基于java的在線考試系統(tǒng)
- 畢業(yè)設計--基于java的在線考試系統(tǒng)
- 畢業(yè)論文---基于bs架構的java考試系統(tǒng)的設計
- 基于java ee的在線考試系統(tǒng)畢業(yè)設計
- 畢業(yè)論文設計java網(wǎng)上考試系統(tǒng)
- 基于jsp在線考試系統(tǒng)畢業(yè)論文設計
- 畢業(yè)論文 基于web在線考試系統(tǒng)的設計與實現(xiàn)
評論
0/150
提交評論