梁紅碩

摘 要:隨著校園網的普及,以及傳統考試方式逐漸凸顯的弊端,基于網絡的在線考試系統越來越受到人們的青睞。本系統采用C/S結構的“胖服務器”模式,服務器端承擔了考生的身份驗證、題目抽取、考生的考試監控以及數據庫的管理等大部分工作,而客戶端僅僅承擔了考生的考試認證,不保存任何數據。本系統設計主要采用C#的三層架構模式,構建了數據訪問層、業務邏輯層和表示層的三層體系架構。
關鍵詞:C#;在線;考試系統
考試是教學工作的一項重要組成部分,是對學生學習情況以及教師的教學情況的考察。而傳統的考試需要教師投入大量的經歷,要經過出題、印卷、閱卷等多個環節,還存在紙張、設備的浪費。而基于網絡的在線考試系統越來越受人們青睞,借助網絡、數據庫等技術實現的在線考試,既省時省力,還節約了資源。該系統中試卷可以根據試題庫中的內容自動生成,避免學生的押題;題目采用的是標準化試題,方便計算機自主閱卷,大大提高了閱卷效率。
本系統采用了C/S結構的“胖服務器”模式,服務器端承擔來了大部分工作,主要包括考生的身份驗證、題目的抽取、考生的考試監控以及數據庫的管理等工作;客戶端僅僅完成考生的考試認證,不保存任何數據,它所完成的大部分功能都是通過調用服務器的遠程對象來實現的。
1 在線考生系統功能設計
該系統用戶主要分為兩類:管理員(老師兼),考生(學生),其中管理員主要完成考試題目的管理、成績瀏覽、考生信息的管理以及對服務器的管理,如上功能集中在服務器端,如圖1所示。而考生主要進行登錄、答題、題目標記、交卷的操作,此功能集中在客戶端。
2 三層模式設計實現
本系統采用經典的三層架構,即數據訪問層、業務邏輯層和表示層。其中,數據訪問層主要實現對數據庫的操作;業務邏輯層主要完成業務邏輯的封裝,對表示層隱藏實現;表示層主要提供用戶的操作界面,具體的業務邏輯由業務邏輯層實現。
2.1 數據庫訪問設計
2.1.1 通用數據訪問類設計
由于每次訪問數據庫的基本步驟是類似的,比如與數據庫的連接操作、執行非查詢命令、執行返回結果集的查詢命令等,所以首先設計一個通用類庫,來完成對數據庫的這些基本訪問操作。對SQL Server的訪問類叫SQLServerHelper,包含五個方法:ExecuteSQLNonQuery、ExecuteSQLReader、ExecuteSQLScalar、ExecuteProcederNonQuery和ExecuteProcederReader,分別用于執行SQL語句不返回結果、執行SQL語句返回只讀、以正向方式訪問數據庫的DataReader對象、執行SQL語句返回標量查詢、執行存儲過程不返回結果、執行存儲過程返回DataReader。這樣,對數據庫的訪問,直接調用相應方法即可完成。
2.1.2 數據訪問層的ORM實現
ORM為Object/Relation Mappinga的簡稱,即對象-關系映射,是隨著面向對象語言的發展而產生的。C#語言是面向對象的程序設計語言,業務實體為對象,而現在通用的數據庫是關系型數據,業務實體為關系數據,因此開發語言和數據庫之間存在不匹配現象。而解決這個問題的方法就是建模。建模是一個很大的話題,不同復雜度的程序有不同的建模方法,建模需要確定的內容就是需要處理的問題領域包含哪些實體。經過分析,該系統抽象出四個實體類,分別是Administrator(管理員、教師)、Examinee(考生)、Exercise(考題)和Grade(成績)4個類。
2.1.3 數據訪問層設計
數據訪問層主要負責數據庫的訪問,即完成對數據庫的增加、修改、刪除、查詢等操作。因為分層結構中各個層職能明確,所以該層的主要功能是通過獲取參數,執行相應命令,然后返回結果。該層主要設計4個類:AdminDAL、ExamineeDAL、ExerciseDAL和GradeDAL,分別完成對用戶的管理、考生的管理、題目的管理和成績的管理。其中ExamineeDAL的設計如下:
public class ExamineeDAL
{ public static bool AddExaminee(Examinee examiee) { } //添加考生
public static bool DeleteExamineeById(string id) { } //根據id刪除考生
...... }
2.2 業務邏輯層設計
業務邏輯層主要封裝相關的業務規則,實現過程中的數據訪問操作通過調用數據訪問層實現。它對流入的邏輯性數據的正確性及有效性負責,對流出的邏輯性數據及用戶數據不負責。由于本系統業務較簡單,該層并沒有實質內容,只是簡單的調用數據訪問層的方法。對應數據訪問層設計了AdministratorBLL、ExamineeBLL、ExercieseBLL和GradeBLL四個類,完成了相應的業務邏輯訪問。
2.3 表示層設計
表示層是一個系統的門面,負責完成與用戶的交互,一方面接收用戶的輸入,同時將輸出數據呈現給用戶,并決定呈現的樣式。它對用戶數據的有效性負責,同時管理會話及頁面跳轉等邏輯。
3 遠程對象設計
本系統采用Remoting技術來完成遠程通信,Remoting技術是在.NET平臺下提供的用于開發分布式應用程序的技術框架,可以在不同應用程序域之間相互通信。該系統中客戶端是通過調用位于服務器端的遠程對象來獲取服務的,因此設計供客戶端調用的遠程對象是該部分的重要內容。
客戶端在登錄時需要驗證考生信息,由于客戶端沒有數據庫,無法獲取考生信息,需要把驗證功能放在服務器端。在ServerObject類中添加ExamineeValidate方法,代碼如下:
public Examinee ExamineeValidate(string name,string passwd)
{ Examinee examer=ExamineeBll.GetExamineeByNameNumber(name,passwd);
if(examer!=null) ExamineeOnlineManager.GetInstant().RegisterExaminee(examer);
return examer; }
登錄成功后,考生便進入到考試窗體進行答題,而考生題目、考試時間等信息也來源于服務器端,所以還需要添加獲取考生信息和考生題目的方法。
4 結語
在線考生系統是一個功能強大的基于通信的應用系統,本設計采用了C/S模式,同時應用了C#的三層架構,構建了數據訪問層、業務邏輯層和表示層的三層體系架構,基于篇幅原因,沒有給出客戶端、服務器端的詳細設計。
[參考文獻]
[1]段海清.基于NET平臺的分成架構與設計模式的設計與實現.碩士論文.電子科技大學,2013.11.
[2]陳青華.C#網絡開發項目教程.電子工業出版社,2012.12.