戚娜
(陜西工業(yè)職業(yè)技術學院 陜西 咸陽 712000)
隨著計算機技術與網絡技術的不斷發(fā)展,利用計算機在線考試取代傳統(tǒng)的手工考試已成為一種趨勢。傳統(tǒng)的考試方式至少需要六個步驟,即人工命題、審題、印刷、學生考試、人工閱卷、成績評定。顯然,隨著考試類型的不斷增加及考試要求的不斷提高,首先試題的難度水平難以保持穩(wěn)定,其次題型單調、知識覆蓋面窄,易導致猜題押寶,死記硬背;第三,缺乏有效的辦法保證評分質量,評分誤差大;第四,多采用主觀題,而主觀題難以使用電子計算機閱卷,只有靠教師評閱,使大型考試的評卷工作費時費力[1]。因此,為了適應新形勢的發(fā)展和需要,在線考試系統(tǒng)油然而生。
JSP全名為Java Server Pages,Java服務器端頁面技術,它使用Java編程語言編寫類似XML的標簽,用來封裝產生動態(tài)網頁的處理邏輯[2]。其根本是一個簡化的Servlet設計,它實現了HTML語法中的JAVA擴張。JSP與Servlet一樣,是在服務器端執(zhí)行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易[3]。
JavaScript是適應動態(tài)網頁制作的需要而誕生的一種新的編程語言,是一種由Netscape的Live Script發(fā)展而來的原型化繼承的面向對象的動態(tài)類型的區(qū)分大小寫的客戶端腳本語言,主要目的是為了解決服務器端語言,比如Perl遺留的速度問題,為客戶提供更流暢的瀏覽效果[4]。如今越來越廣泛地應用于Internet網頁制作上。JavaScript在HTML基礎上,開發(fā)出交互式的Web網頁。在Web網頁中,用戶可以添加更多的元素和內容,并且對重復有規(guī)律的HTML文段進行了簡化,縮短了下載的時間,并對用戶的操作及時響應,對提交的表單及時的檢查,無需浪費時間交由CGI驗證。
Tomcat是一個輕量級的Web應用服務器,實際上Tomcat部分是Apache服務器的擴展,但它是獨立運行的,對系統(tǒng)資源占用少,擴展性好,支持郵件服務和負載平衡等常用的功能,而且還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能[5]。在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調試JSP程序的首選。
S2SH(Struts2+Hibernate+Spring)是 Java EE開發(fā)平臺中的框架,典型的三層構架體現MVC(模型Model,視圖View和控制)思想,其中使用Struts作為系統(tǒng)的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,利用Hibernate框架對持久層提供支持,業(yè)務層用Spring支持[6]。具體的做法:首先,以面向對象的思想為指導,把用戶的需求轉化為具體的模型,其次將這些具體的模型用Java的基本對象進行實現,再次編寫基本的DAO接口,最后給出Hibernate的DAO實現。采用 Hibernate架構實現的DAO類來實現Java類與數據庫之間的轉換和訪問,最后由Spring完成業(yè)務邏輯。
本系統(tǒng)在面向對象設計思想的指導下,提出了采用分層的模塊化來設計整個系統(tǒng)。針對學院的各級用戶,把該系統(tǒng)分成幾個相對獨立的模塊,而各個模塊之間采用數據流的方式相互連接,這樣降低了各個模塊之間的耦合性,方便系統(tǒng)運行,提高系統(tǒng)安全性。但這些相對獨立的模塊采用集中式管理的辦法,使該應用程序有較強的可操作性和易擴展性。
本系統(tǒng)是基于B/S架構,采用分層結構設計思想。在這種結構下,用戶工作界面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,但是主要事務邏輯在服務器端(Server)實現,形成了三層3-tier結構。在軟件體系架構的設計中,最常見最重要的就是分層式結構。一般的分層式結構有三層,分別為數據訪問層(持久層)、業(yè)務邏輯層(領域層)和表示層。每層都由一組相關的組件或類構成,共同完成既定的功能。層與層之間存在相互的依賴關系,每層對自己的上層都公開自己的API。因此,上層組件會依賴下層組件的API,而下層組件則不依賴于上層組件。當其中的某一層發(fā)生了變化,只要它的API不變,就不會影響其它層。這樣做既減輕了系統(tǒng)維護和升級的成本又大大減輕了客戶端的負荷,降低了用戶的總成本(TCO)。
在線考試系統(tǒng)是一個為教師、學生以及教務管理員提供幫助的軟件系統(tǒng),本系統(tǒng)的用戶主要有3種,即教師用戶、學生用戶和管理員用戶。只有被授權的用戶才可以使用本系統(tǒng)的資源。其中管理員用戶的權限最大,主要對學生、老師、院系、專業(yè)、試卷等的信息管理,添加修改學生、教師信息,添加試題、試卷和審核教師制作的試卷以及上傳的試題,并在線審核教師提出的課程申請,提供管理員的信息維護;教師用戶通過登錄該系統(tǒng)能夠修改完善個人信息,添加維護試題,在線制作試卷,查詢成績,成績分析,以及在線閱卷,課程申請等;學生用戶通過登錄該系統(tǒng)能夠修改個人信息,進行在線進行考試,成績查詢等。如圖1所示。
圖1 系統(tǒng)功能模塊圖Fig.1 The functionmodule chartof the system
本系統(tǒng)整體部署包括服務器和客戶端,如圖2所示。
圖2 系統(tǒng)部署圖Fig.2 The deployment diagram of the system
3.2.1 系統(tǒng)代碼結構
在線考試系統(tǒng)代碼主要分為3個部分,如圖3所示。src包主要放的是java類、封裝Action和數據庫操作、業(yè)務邏輯、過濾器、攔截器及實體類等重要代碼,以及部分的框架配置文件;JRE System library 下面六個包全是 JAR 包,java、struts、hibernate、spring及數據庫連接驅動等重要的封裝類都在這些jar包中;Web Root包中則主要是JSP頁面,還有就是圖片、Flash動畫、音視頻等資源文件和JavaScript代碼以及CSS樣式表,還有部分的框架配置文件。結構完全遵循了MVC結構的思想,每個模塊處理不同的需求。
3.2.2 登錄模塊
用戶登錄模塊比較簡單,為防止用戶操作錯誤,使用了Ajax技術,使得界面無刷新,動態(tài)更改及顯示界面內容,給用戶比較好的操作體驗。在登錄操作過程中,一般發(fā)生的錯誤有用戶輸入了錯誤的用戶名或密碼、或驗證碼輸入錯誤,系統(tǒng)對上述情況的判斷分別在前臺及后臺檢驗。前臺主要檢驗數據的結構、長度等正確性,在當Ajax將數據提交到后臺后,獲取后臺數據庫的權限信息,并在前臺顯示在權限選擇中,擁有了極大的靈活性。為保證系統(tǒng)的安全,系統(tǒng)使用了驗證碼。
圖3 系統(tǒng)文件結構圖Fig.3 The file structure of the system
3.2.3 教師模塊
教師根據自己的用戶名及密碼成功登陸后,可以查看當前的代課信息是否正確,如不正確,需要進行課程申請;對于新申請的課程,教師需要進行試題庫的建立,以備考試組卷所用;可以查看個人信息是否正確并進行修改;可以管理授課學生信息,為他們指定考試的試題庫;如果試卷中含有主觀性試題,待學生提交試卷后,系統(tǒng)會提醒教師在線批閱試卷。
教師課程申請界面的主要代碼如下:public String ApplyCourse(){if(ca!=null)
{ Teacher te=new Teacher();te.setTeacherId (session.getAttribute ("SESSION_TEACHERID").toString());
ca.setTeacher(te);
Majorm=new Major();
m.setNo(ca.getMajor().getNo());
College co=new College();
co.setNo(ca.getCollege().getNo());
ca.setMajor(m);
ca.setCollege(co);
ca.setState(0);
ca.setNo(ca.getCollege().getNo().substring(0,2)+"-"+(new Date()).getMonth()+
""+(new Date()).getDate()+""+(new Date()).getDay()+""+
ca.getMajor().getNo().substring(0,1));courseApplyService.addCourseApply(ca);return"applySuccess";}
return null;}
3.2.4 學生模塊
這一功能模塊主要是由學生來完成所有的操作。學生根據自己的用戶名和密碼成功登陸后,查看個人信息是否正確,如不正確可單擊個人信息進行個人信息的修改;查看當前的考試科目,考試科目是JSP調用業(yè)務邏輯動態(tài)顯示,與學生所在院校包含的專業(yè)科目保持一致,選擇要進行考試的科目,點擊開始考試進入考試界面,通過action處理隨機組卷得到一張教師設置的符合要求的試卷,進行考試,當試題較多時,后臺action會將數據分頁顯示,由用戶在前臺點擊下一頁進入試題的下一頁顯示;通過試卷瀏覽檢查試卷中的錯誤并進行修改,交卷;通過單擊查詢成績獲得考試分數;通過單擊成績分析可以對本次考試進行綜合分析,幫助學生了解本門課程中存在的問題;安全退出系統(tǒng)。
學生成績的表格顯示用到了struts2的iterator標簽,動態(tài)使用成績數據并表格顯示在前臺,其主要代碼如下:
本系統(tǒng)有很多的用戶和數據,當管理員用戶登錄后要對教師、學生信息進行查看或修改,其中要涉及到教師信息數據、院系信息數據、專業(yè)信息數據、課程信息數據、學生信息數據和用戶權限信息;當教師用戶登錄后,要對課程和考試信息進行查看和修改,其中涉及到課程信息、試題信息、試卷信息和試卷設置信息;當學生用戶登錄后,可以查看個人信息、查詢成績和查看考試科目,這里要涉及到學生成績信息數據和學生個人信息數據。本系統(tǒng)的數據模型如圖4所示。
在線考試系統(tǒng)是實現無紙化考試的重要途徑,是電化教學的不可或缺的輔助手段之一。本系統(tǒng)在實際運行中取得了一定的效果,不僅減輕了傳統(tǒng)考試所花費的人力和物力,而且突破了考試時間與空間的限制,成績更加客觀、公正和準確,大大提高了考務工作的效率,降低了考務管理的成本。
圖4 數據模型部分結構圖Fig.4 The part of datamodel figure
[1]陜西師范大學遠程教育學院.傳統(tǒng)考試存在的弊端[EB/OL](2014-12-08)www.sne.snnu.edu.cn.
[2]張海藩.軟件工程導論[M].4版.北京:清華大學出版社,2003.[3]孫曉龍,《JSP動態(tài)網站技術入門與提高》[M].1版.北京:人民郵電出版社,2001.
[4]Jquery.Javascript[EB/OL].(2014-12-08).http://deanlucky.blog.163.com/blog/static/429215582008311102825633/.
[5]高張.提高Tomcat服務器運行性能的研究[J].計算機與數字工程,2008(10):203-205.GAO Zhang.Research on improving the performance of running Tomcat server[J].Computer&Digital Engineering,2008(10):203-205.
[6]陳亞輝.Struts2+Spring+Hibernate框架技術與項目實戰(zhàn)[M].北京:清華大學出版社,2012.