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