摘要:目前教育形式日益多樣性,考試的種類和規模也逐漸擴大,對試卷的命題和管理工作需要進一步完善和發展。該文以某考試院為對象,針對其在管理高等教育自學考試的試卷中存在的實際情況,開發了一種基于Client/Server結構的試卷管理系統。文章闡述了在VC++6.0平臺上結合數據庫實現系統所需要的主要技術和算法,并且從系統的框架結構、模塊設計等方面給出了軟件設計思路和方法。
關鍵詞:試卷管理系統;VC++6.0;C/S;數據庫
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)04-1022-03
Analysis and Design of The Test Paper Management System Based on C/S Structure
SHEN Shun-cheng, SANG Qing-yu
(School of Mechanical and Electronical Engineering,Wuhan University of Technology,Wuhan 430070,China)
Abstract: Currently, various forms of education have arisen, the examination’s scale is getting larger and larger, so the management of papers needs to further improve and develop. This article deals with the study of a certain examination administration, develops a paper management system based on Client/Server focuses on real problems in the management of the papers of The Self-Study Examination. The article elaborated the main technology and algorithms to realize the system on the VC++6.0 platform integrated with database, and gives the design and methods of software from the system framework and the module design.
Key words: the test paper management system;VC++6.0;C/S;database
1 引言
考試作為教學的一個必不可少的重要環節,是衡量教學質量的重要指標,同時考試也是保證客觀、準確、及時地選拔人才的重要手段。目前教育形式日益多樣性,考試種類越來越多,規模也越來越大,相關的命題及試卷管理工作如果仍用傳統的人工來完成的話,效率不高而且還不一定能滿足要求。以某考試院為例,在高等教育自學考試的命題及試卷管理工作中主要存在以下幾個方面的問題:1)試卷流程管理問題。對于每個專業的每門課程,相關工作人員從職能上可以分為課程負責人、命題人、試卷校閱人等。當有考試任務需要命題時,課程負責人發布命題任務給命題人,以及命題人提交試卷給校閱人等之間的工作全部通過人工完成,尤其是當試卷需要多次修改時,試卷轉接工作更加頻繁,容易出差錯,效率不高,也不利于試卷的保密性要求;2)試卷及其相關信息的存儲、查閱問題。在試卷的命題及校閱過程中,試卷多用光盤存儲,而很多相關信息,例如課程的命題細目表、命題人、校閱人及校閱時間、校閱意見、試卷修改記錄以及一些備注的信息等,多是用書面方式記錄,即使集中管理,但由于數量太大,不利于保存和日后的跟蹤查詢;3)試卷版本問題。同一課程的某一份試卷,由于不同考試的需要,可能需要兩個或多個版本,不同版本之間僅有部分試題不同,區別很小,人工管理就容易出差錯。總的來說,就是缺少一個能使相關工作人員各司其責高效辦公的平臺。
基于實際的使用環境和試卷特殊的保密性要求,本文提出在VC++6.0平臺下,結合SQL Server 2000數據庫開發出一套試卷管理系統,將試卷及其相關信息集中的存儲到系統里,同時也將不同的用戶按角色分成課程負責人、出題人,校閱人,使用人等,每個用戶按照自己的權限完成對試卷的管理工作。這樣既可以減少失誤,也將試卷管理者從簡單、重復的環節中解脫出來,提高效率。
2 基于C/S結構的系統結構模型
傳統C/S(客戶機/服務器)結構一般分為兩層:客戶端和服務器端。但隨著應用系統的不斷擴大,兩層C/S結構表現出效率低下、維護困難、安全性差和伸縮性差等缺點。本系統從試卷的特點及用戶的角度出發,采用三層的C/S結構,系統以分布式數據庫技術為支撐,在兩層結構的基礎上增加一個中間層,可以減輕客戶端的負擔,并改善兩層C/S結構的性能,而且功能集中在中間層,當功能需求變化時,僅需修改應用服務器,從而提高了可維護性,也增強了數據的一致性。系統在Visual C++ 6.0平臺上開發,采用ODBC接口訪問SQL Server 2000數據庫。如圖1所示為系統的體系結構圖。
3 基于角色-對象的訪問控制模型
對于一個多用戶的試卷管理系統來說,采用的訪問控制模型至關重要。鑒于試卷特殊的保密性,以及各課程工作人之間的不相關性,本系統采用基于角色-對象的訪問控制模型。
3.1基于角色的訪問控制模型
基于角色的訪問控制模型(RBAC Mobel,Rolebaced Access Mobel)是一種在數據管理系統中常用的訪問控制模型,其基本思想是將訪問許可權分配給一定的角色,用戶通過飾演不同的角色獲得角色所擁有的訪問許可權。角色可以看作是一組操作的集合,不同的角色具有不同的操作集,這些操作集由系統的管理員分配給角色。用戶在一定的部門中具有一定的角色,其所執行的操作與其所扮演的角色的職能相匹配。
3.2 基于角色-對象的訪問控制模型
在本系統中運用基于角色-對象的訪問控制模型,在基于角色的訪問控制模型基礎上,將訪問控制權限設置與對象相關聯,在給用戶定義角色的同時必須定義訪問對象。在這一模型中,角色僅僅是一組操作的集合,并不與對象直接關聯,通過用戶、角色、對象3項屬性來唯一標識1項訪問控制權限。系統中的角色包括:命題人、校閱人、使用人、課程負責人等。每種角色都對應一組操作的集合,例如命題人對應的操作包括讀數據對象、寫數據對象、提交等,即讀取命題任務信息,編制命題細目表,在系統里已經存在的試卷模板里編制試題,命題完成后提交等。當用戶被定義為某種角色,即擁有了執行該角色對應的操作的權限。但定義角色僅僅只是設置了允許用戶執行的操作,還必須同時定義操作的對象,這樣才能完成訪問控制的設置。其示例圖如圖2所示。
4 系統的模塊設計
從試卷管理的實際需求出發,對系統的設計進行模塊劃分。首先,系統要求能批量導入試卷信息,簡化數量龐大的試卷錄入工作,提高工作效率;其次需限定用戶的權限、用戶登陸、用戶管理等功能;然后需實現試卷從命題到使用的流程管理功能、試卷狀態跟蹤查詢功能、試卷及其相關信息查詢功能、操作歷史跟蹤記錄和查詢功能、科目信息添加修改刪除等維護功能、工作人員添加修改維護功能等。另外,從用戶的角度出發,盡量使操作簡單、界面友好。總體功能劃分如圖3所示。
5 系統主要模塊的詳細設計
5.1 登陸驗證模塊及用戶權限判定的規則
該模塊負責判斷用戶的合法登陸權限并區分不同的用戶來實現其相應的權限管理。在系統里將對象劃分為三層,全系統、專業和課程。當用戶進行某項操作的時候,判斷操作是否通過的程序為:當用戶提出對某對象進行某項操作時,先判斷該對象的最小范圍,既課程。如果用戶可以在該課程子目錄下進行該項操作則操作通過,不再做其它判斷;否則判斷專業內的操作,若操作通過,則不再做其它判斷;否則在全系統范圍內進行判斷。如果該操作仍不能通過,則該操作被拒絕。主要的實現過程為:在SQL Server2000數據庫中建立User和UserRole2張表,分別用來保存用戶設置和權限設置的數據。User表包含UserID、UserName、PassWord3個字段,其中UserID為主鍵,唯一標識一個用戶,UserName為用戶名,PassWord為經過加密的密碼。UserRole表包含UserRoleID、UserID、ObjectID和Role4個字段,其中UserRoleID為主鍵,唯一標識一項權限設置,UserID即User表中的UserID,ObjectID為系統中試卷數據對象的ID,每個數據對象都用一個ObjectID唯一標識, Role用于標識角色,為了方便使用,在系統中將角色映射為整數,用不同整數代表不同操作。這樣就將用戶、角色、操作相關聯。然后對應這2張表創建User和UserRole2個類,用于完成其功能操作。再設計CUserManager和CUserRoleManager2個類分別用于用戶管理和權限管理,這2個類都繼承MFC中的CObList類,類中包含1個用來存放對象指針的雙向鏈表。這4個類的UML類圖如圖4所示。
5.2 試卷的流程管理模塊
鑒于目前試卷管理部門的現狀,系統管理的對象包括試卷及其所有的相關信息,其格式有文本文檔、數據文檔、方正格式文件、圖紙文檔等,系統的流程管理就是對這些文檔進行一系列的操作。由此出發設置如圖5的工作流程。每門試卷均有編輯、待校、待用、已用四種版本狀態。
以校閱事件為例,校閱人對版本為待校狀態的當前試卷版本進行校閱流程。此時,校閱人可以點擊“同意”表示此次校閱未發現任何問題,試卷進入待用版本狀態,等待什么時候考試時安排使用;也可以點擊“再修改”,則試卷退回到命題狀態,要求命題者對試卷修改;如果修改量較大,可以點擊“新版本”以保存原試卷而創建一個版本為編輯狀態的新版本試卷要求命題人修改。在校閱過程中校閱人可以寫上自己的意見,以備查閱。修改和校閱可以多次反復進行,系統對每次修改和校閱的信息記錄在案。其工作對話框如圖6所示。
在流程操作中,實際就是對試卷歷史記錄內容的讀寫,其中主要的兩個相關類如下:
1) Paper類。記錄了試卷及其相關信息的一般屬性,包括試卷名稱、試卷文檔流程、權限和狀態等消息。
2) PaperHistory類。記錄所有試卷流程歷史信息,包括操作人、時間、備注信息、試卷狀態等。其詳細數據表及程序設計限于篇幅不再詳述。
5.3 系統的主體功能
界面如圖7所示,其中左視圖為用戶個人工作區和試卷資料樹,右視圖為試卷的相關信息,與試卷資料綁定顯示,清晰明了。
6 結論
本文從實際出發,分析了當前試卷流程管理中的問題,并在VC++6.0平臺上成功實現,目前已在某考試院試用。使用本系統可以提高效率和試卷管理水平,最大限度地減少出錯機會;并且規范了試卷管理工作流程,有助于試卷的質量管理;與試卷有關的全面信息都可通過系統得到,管理者可方便地加強對命題流程及試卷維護的管理;也保證了數據的安全性、完整性、權威性和可靠性。
此外,系統還不是很完善,在試卷的項目管理及試卷的自動生成等方面,有待于進一步研究和開發。
參考文獻:
[1] David J,Wingo K S.Visual C++技術內幕6.0[M].北京:北京希望電子出版社.1999.
[2] 袁鵬飛,孫軍安.SQL Server2000數據庫系統管理[M].北京:人民郵電出版社,2001.
[3] 陳堅.實用VisualC++編程大全[M].西安:西安電子科技大學出版社,2002.
[4] 祝雪金.基于C/S的試題管理系統的設計與實現[D].上海:同濟大學碩士學位論文,2006.
沈順成(1959-),男,湖北武漢人,武漢理工大學副教授,碩士研究生導師,主要研究方向:制造業信息化、智能設計與智能制造基礎理論及應用,機電一體化技術與應用。