- 相關(guān)推薦
JAVA的動態(tài)考試系統(tǒng)的設(shè)計
基于JAVA的動態(tài)考試系統(tǒng)的設(shè)計與實現(xiàn)
摘 要:隨著計算機技術(shù)的飛速發(fā)展,能否利用現(xiàn)代化的技術(shù)使得繁重的工作由復雜變簡單,是衡量工作效率的一個重要方面。一個完備的考試系統(tǒng)可以使學生及時檢測自己的學習效果,從而發(fā)現(xiàn)自己的不足之處從而查漏補缺,更好的提高自己的學習效率。動態(tài)考題系統(tǒng)中的題目的抽取,試卷提交,成績的批改均是自動完成的。只要有比較成熟的試題庫便可以實現(xiàn)考試的全自動化。動態(tài)考題系統(tǒng)的開發(fā)適應(yīng)了新形勢的發(fā)展要求,是學?荚,輔助教學管理、管理考試以及學生的上機實踐等一系列活動的最佳選擇。
關(guān)鍵詞:動態(tài);考題;窗體
1.系統(tǒng)功能簡介
動態(tài)考試系統(tǒng)由多個窗體組成,在系統(tǒng)的登錄界面可以選擇不同類型的用戶進行登錄,考生身份登錄后可進行考試、查分、修改密碼等操作。系統(tǒng)管理員登錄后有進行添加、編輯、刪除用戶信息和相關(guān)考題等權(quán)限。
2.技術(shù)簡介
2.1 Swing是Java中用戶界面開發(fā)工具包,主要用于開發(fā)Java應(yīng)用程序的用戶界面。其工具包里面有很多以swing來命名的,如:javax.swing;就avax.swing.event.等等。在程序設(shè)計時首先導入swing工具包組件,選擇相應(yīng)的界面風格,同時設(shè)置頂層容器,在容器中添加相應(yīng)組件,如:文本框,按鈕等等。Swing主要應(yīng)用于各種界面中的時間處理,如:動作事件監(jiān)聽,鍵盤和鼠標事件監(jiān)聽等等。
2.2 mySQL是目前最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可搭配Apache和PHP組成良好的開發(fā)環(huán)境,一般的網(wǎng)站開發(fā)均選擇這種數(shù)據(jù)庫,因為其關(guān)聯(lián)數(shù)據(jù)保存在不同的表中,并沒有將所有的數(shù)據(jù)放置在同一個表中,大大提高了速度和靈活性。
3.預設(shè)問題及處理方法
3.1 窗體背景處理
設(shè)置背景的方法可實現(xiàn)將指定的圖片繪制到窗體面板的容器中,從而設(shè)置整個窗體的背景。其主要使用了Graphic類將所需圖片放至JPanel面板中,通過設(shè)置相應(yīng)布局調(diào)整各組件的位置。
3.2 字符處理類
字符處理類的編寫主要是防止對數(shù)據(jù)庫進行讀寫或查詢操作是出現(xiàn)的亂碼現(xiàn)象,該類可對亂碼字符進行轉(zhuǎn)碼。
3.3 時間處理
考試系統(tǒng)需要在主窗口顯示倒計時來提醒考生剩余的時間,系統(tǒng)在設(shè)計這個方法時采用的是單獨線程處理,當?shù)褂嫊r為0是強制交卷。該方法的實現(xiàn)主要是獲取系統(tǒng)時間與管理員設(shè)置的考試時間之間的差,將其作為標簽的顯示值添加到窗體中。
4.登錄窗體
主要有兩種身份登錄考試系統(tǒng),一種是學生身份,登錄之后直接考試。另一種是管理員身份登錄之后進行用戶,試題,管理等操作。
4.1 登錄身份驗證
登錄窗體需要編寫按照用戶名和密碼檢索的方法,同時為了保護用戶信息安全,在數(shù)據(jù)庫中存放的用戶密碼均采用了MD5加密技術(shù)。當用戶輸入時將其密碼加密之后再與數(shù)據(jù)庫中的密碼相驗證。匹配正確則通過登錄,否則提示錯誤。同時設(shè)置字段值0代表未登錄過的用戶,1代表已登錄過的用戶,以此來判斷考生考試與否。若用戶名已經(jīng)使用過,意味著該考生已完成考試,不允許再次考試。
5.考試主窗體
5.1 顯示考生姓名
系統(tǒng)將已經(jīng)完成登錄的用戶的ID號保存在文本文件中。在窗體中通過考生的ID號檢索出考生姓名并且顯示在考試窗體中。
5.2 顯示考題
動態(tài)考題系統(tǒng)中的每套試題都是隨機抽取的,然后將抽取到的試題顯示在考試的主窗體中。首先數(shù)據(jù)表中保存所有的考試題目,編寫好檢索某一類型試題集合的方法之后,從指定的試題集合中隨機抽取一定數(shù)目的試題即可?荚嚧绑w中使用了多個選項卡面板功能,實現(xiàn)同一個窗體中有不同的考試題目類型,如考生選擇“多選題”選項卡則顯示“多選題”的相關(guān)試題。
5.3 自動閱卷
當考生考試結(jié)束單擊“提交試卷”按鈕后將實現(xiàn)自動閱卷,并及時將考試成績顯示給考生。在考生解答試題時,系統(tǒng)會將考生的答案保存到相應(yīng)的集合中,考試結(jié)束后程序?qū)⑼ㄟ^隨即抽取試題數(shù)組中的元素匹配考生選擇的答案,看是否與答案一致,并通過考試參數(shù)表中設(shè)置的各題分數(shù)來決定考生的分數(shù)。
5.4 題目切換
考生解答完成當前題目時,可點擊“下一題”按鈕來解答下一題。若要完成顯示“下一題”的考試題目,需要從保存隨即抽取試題編號的數(shù)組中獲取下一個元素,獲取信息將作為窗口組件內(nèi)容顯示出來。當考生單擊“上一題”將會顯示上一題內(nèi)容,要想實現(xiàn)上一題功能,需要從書籍抽取試題的數(shù)組中獲取當前顯示試題的前一個元素的值,并用它來查詢問題表中的信息,最終將其顯示在窗體的組件中。
6.管理員查分功能
6.1 按考生號查詢成績
當用戶選擇按考生號查詢時,需要查詢值文本框中輸入正確的查詢條件,程序此時將調(diào)用相應(yīng)查詢分數(shù)的方法,并將查詢結(jié)果顯示在窗體中。該方法是通過SQL語句循環(huán)遍歷查詢結(jié)果集來實現(xiàn)的。
6.2 按考生姓名查詢成績
按姓名查詢成績和按考生號查詢方法類似,遍歷時對應(yīng)字段不同,一個是對考生ID,另一個是對考生姓名來進行遍歷。用戶將需要查詢的姓名輸入相應(yīng)的文本框中,程序調(diào)用不同的查詢方法將結(jié)果顯示在窗體中。
7.添加考題
7.1 存儲考題
主要采用List集合來存儲所有考題,在添加考題窗口中不允許用戶更改考題編號。所以采用了只讀形式顯示。
7.2 自動計算考題號
該方法實現(xiàn)主要調(diào)用檢索數(shù)據(jù)表中全部數(shù)據(jù)的方法,獲取數(shù)據(jù)表中最后一條記錄的ID編號,將次ID加1即可實現(xiàn)自動計算考題號。
8.修改和刪除考題
8.1 修改考題
當用戶想修改考題時,單擊修改按鈕后程序會自動將用戶選擇的試題ID寫入相應(yīng)的文本文件中,再從數(shù)據(jù)庫中提取相應(yīng)的數(shù)據(jù)條即檢索出相應(yīng)數(shù)據(jù),再將其設(shè)置為窗體顯示,用戶可在窗體界面中修改試題內(nèi)容,也可以修改答案和備注。
8.2 刪除試題
若有需要刪除的試題,用戶可直接單擊刪除按鈕,產(chǎn)生相應(yīng)事件,程序會提示用戶是否刪除試題。確認之后便可刪除。
9 總結(jié)
絕大多數(shù)學校組織一次考試至少要經(jīng)過五步:出題,考試,人工閱卷,成績評估和試卷分析,這些工作非常繁瑣和極容易出錯,同時教師的工作量非常大。因此傳統(tǒng)的考試模式注定被新型的計算機技術(shù)動態(tài)考試程序來替代。動態(tài)考題系統(tǒng)的出現(xiàn)正是修正了傳統(tǒng)考試的弊端,提高了考試工作效率。
動態(tài)考題系統(tǒng)中設(shè)計了題目的生成、試卷提交、成績評估等功能。只要有比較成熟的試題庫便可實現(xiàn)考試的全自動化,這樣教師只需要精心設(shè)計題目并維護好題庫,大大減少了教師的工作量。
【JAVA的動態(tài)考試系統(tǒng)的設(shè)計】相關(guān)文章:
Java網(wǎng)上考試系統(tǒng)的設(shè)計和實現(xiàn)05-30
JAVA的動態(tài)代理分析09-14
關(guān)于Java動態(tài)實現(xiàn)的方法08-23
java使用動態(tài)代理來實現(xiàn)AOP05-29
Java中如何實現(xiàn)顯示動態(tài)的時間09-28
JNI是怎樣java調(diào)用c動態(tài)庫07-09
JAVA系統(tǒng)程序的運行07-16
java語言程序設(shè)計考試大綱04-27