許錦
摘要:由于傳統(tǒng)的改卷模式效率低下,重復性工作較多。為解決這一問題,提出一種基于ASP.NET的課目考試平臺,該平臺采用SQL server數(shù)據(jù)庫存儲試題庫,運用ASP.NET和C#搭建平臺結(jié)構(gòu),以B/S的形式展示考試界面,界面操作簡單,零安裝,方便學生和教師操作。目前該平臺已完成設計并且投入到實際教學中運用,經(jīng)過調(diào)查發(fā)現(xiàn),平臺運用后明顯減少教師重復性工作。
關(guān)鍵詞:ASP.NET;課目考試平臺;C#;B/S;SQL server
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)08-0092-03
Abstract: The traditional mode of modifying test papers is inefficient, and has more repetitive work. In order to solve this problem, an ASP.NET-based subject examination platform is proposed. The platform uses SQL Server database to store the test question library; ASP.NET and C# are employed to construct the platform structure. The examination interface is shown in the form of B/S, which is simple to operate, needless to install, and convenient for students and teachers to use.? In general, the design and deployment of the platform has been completed, and has been applied to the actual teaching. An relevant investigation found that the platform has achieved significant results in freeing the teachers of the repetitive work.
Key words: ASP.NET; subject examination platform; C#; B/S; SQL server
1 背景
學院傳統(tǒng)的考試要求教師出卷、監(jiān)考、收卷、閱卷、析卷和評卷。這是一個漫長而復雜的過程,需要耗費大量的人力、物力,造成大量紙張的浪費,越來越不適應現(xiàn)代教學和培訓考試的需要[1]。為此,本文采用B/S模式,開發(fā)了一套基于ASP.NET的在線考試平臺。該平臺目前已完成并且投入使用,有效地減少了以往存在的重復性工作問題,將學院教師從傳統(tǒng)的考試模式中解放出來,方便學生隨時隨地通過網(wǎng)絡考試,為學生考試創(chuàng)造了一種新型考試環(huán)境[2]。
2 總體設計
2.1 需求
在線考試平臺首先需要建立一個足夠大的題庫,這樣就可以自動生成各種需求的試卷;其次,在線考試平臺的考試時間要靈活,可以在規(guī)定的時間內(nèi)隨時參加考試;再次,考試地點是靈活的,可以在任何有網(wǎng)的地方登錄考試;然后,在線考試平臺閱卷速度快,平臺可以在考試結(jié)束時給出客觀題分數(shù)。最后,在線考試平臺可以分析和自動保存考試成績。
基于平臺的實際需求,我們采用Visual Studio 2005+Sql Server 2000為平臺開發(fā)ASP.NET Web應用程序,設計并實現(xiàn)了基于B/S體系結(jié)構(gòu)的中小型在線考試平臺,可以隨機從數(shù)據(jù)庫中挑選試題,并且可以自動評出客觀題的分數(shù)。
2.2 功能
基于上述的需求,平臺主要的功能和特點可以包含如下內(nèi)容:
1)平臺在考試時具有自動計時和自動保存試卷功能,試卷的出題方式可以分為自動組卷模式和手工組卷模式,試卷顯示可以分為逐題模式和整卷模式,試題順序隨機變化,可以預防作弊;
2)平臺提供各類常用題型,例如:單選題、多選題、問答題、判斷題等題型,單選和多選題的選項可以支持6個,能夠滿足當前試題的基本要求,還可以方便用戶定義新的題型;
3)平臺支持批量導入和導出試題和賬號,導入過程中自動剔除重復試題和賬號,方便用戶建立題庫和賬號庫;
4)平臺具有客觀題自動改卷功能,主觀題教師閱卷,最后平臺統(tǒng)分,按照成績的高低進行排序,方便查看;
5)平臺不同的賬號具有不同的權(quán)限,賬號分為管理員賬號、教師賬號和學生賬號,管理員賬號權(quán)限最大,可以修改教師和學生賬號的權(quán)限,教師賬號具有修改試題,改卷等權(quán)限,學生賬號具有考試、查分等權(quán)限;
6)支持檢查答卷功能和錯題顯示功能。
2.3 功能結(jié)構(gòu)圖
根據(jù)上述的功能描述,平臺主要規(guī)劃了11個模塊,分別是賬戶管理、系統(tǒng)設置、系別管理、題型設置、題庫管理、試卷管理、成績管理、過程管理、參加考試、參加作業(yè)、成績查詢。其功能結(jié)構(gòu)圖如圖1所示。
3 平臺開發(fā)
3.1 運行環(huán)境
課目考試平臺是采用Visual Studio 2005+Sql Server 2000為平臺開發(fā),以C#作為開發(fā)語言,使用Windows server 2003自帶IIS作為Web服務器,運用ASP.NET 2.0技術(shù)搭建界面,設計并實現(xiàn)了基于B/S體系結(jié)構(gòu)的中小型在線考試平臺[3]。
3.2 數(shù)據(jù)庫設計
在線考試平臺的主要數(shù)據(jù)庫表包括用戶信息表(包含考生信息表、教師信息表、管理員信息表)、部門信息表(包含各系和行政部門)、課目信息表、考試記錄信息表、題型信息表、題庫信息表等。這里以一個主要的數(shù)據(jù)表:用戶信息表(UserInfo)為例進行說明。
UserInfo表用于存放用戶的基本信息,主要包含賬號、姓名、密碼、性別、系別、職務、照片、手機,它的詳細情況如表1所示。
由于賬號是唯一的,不可重復的,所以表格中賬號為主鍵。
將賬戶信息導入到數(shù)據(jù)庫中的部分代碼顯示如下:
public int MyDatabaseMethod(? )
{
string strConn="";
string strSql="";
PublicFunction ObjFun=new PublicFunction();
strConn=ConfigurationSettings.AppSettings["strConn"];
SqlConnection ObjConn = new SqlConnection(strConn);
strSql="Insert into UserInfo(UserID,UserName,UserPwd,UserSex,Birthday,DeptID,JobID,UserPhoto,Phone,UserType) Values (@TmpUserID,@TmpUserName,@TmpUserPwd,@TmpUserSex,@TmpBirthday,@TmpDeptID,@TmpJobID,@TmpUserPhoto ,@Tmpphone ,@TmpUserType)";
SqlCommand ObjCmd=new SqlCommand(strSql,ObjConn);
//更新賬號信息
SqlParameter ParamLoginID=new SqlParameter("@TmpUserID",SqlDbType.VarChar,20);
ParamUserID.Value = strUserID;
ObjCmd.Parameters.Add(ParamUserID);
……
//更新姓名,密碼,性別,出生年月等信息
……
if (imgbin.Length>0)
{
SqlParameter ParamUserPhoto=new SqlParameter("@TmpUserPhoto",SqlDbType.Image);
ParamUserPhoto.Value = imgbin;
ObjCmd.Parameters.Add(ParamUserPhoto);
}
else
{
SqlParameter ParamUserPhoto=new SqlParameter("@TmpUserPhoto",SqlDbType.Image);
ParamUserPhoto.Value = System.DBNull.Value;
ObjCmd.Parameters.Add(ParamUserPhoto);
}
ObjConn.Open();
int numRowsAffected=ObjCmd.ExecuteNonQuery();
ObjConn.Close();
ObjConn.Dispose();
return numRowsAffected;
}
4 系統(tǒng)的實現(xiàn)
4.1 用戶登錄
教師和學生登錄平臺有兩種方式,一種是在后臺賬戶管理中,平臺管理員將用戶信息導入到平臺數(shù)據(jù)庫中,用戶可以通過賬號和密碼登錄到考試平臺。另外一種方式是在線注冊,用戶輸入新賬號和密碼,選擇不同身份注冊,注冊成功之后即可登錄。為了防止學生注冊成教師,后臺數(shù)據(jù)庫已經(jīng)存放了教師的相關(guān)信息(平臺管理員可以對信息進行添加和刪除),教師登錄的時候平臺會比對登錄信息和數(shù)據(jù)庫后臺信息是否一致,如果出現(xiàn)錯誤會顯示“對不起,賬號或密碼錯誤!”,如果登錄成功,則進入到平臺。用戶注冊的核心代碼為:
protected void ButLogin_Click(object sender, System.EventArgs e)
{
string strSql="";
string strConn="";
strLoginID=ObjFun.CheckString(Convert.ToString(Request["LoginID"]).Trim());
strUserPwd=ObjFun.CheckString(Convert.ToString(Request["UserPwd"]).Trim());
if ((Convert.ToInt32(ObjDR["UserState"])==0)&&(strLoginID.ToUpper()!="ADMIN"))//判斷賬號是否被禁用
}
else
{
Session["UserID"]=Convert.ToString(ObjDR["UserID"]);? ? ?Session["LoginID"]=Convert.ToString(ObjDR["LoginID"]);? ? ?Session["UserName"]=Convert.ToString(ObjDR["UserName"]);
Session["UserPwd"]=Convert.ToString(ObjDR["UserPwd"]);
strScript=strScript+"location.href='MainFrame.aspx';";
strScript=strScript+"";
Response.Write(strScript);
}
}
}
else
{
}
ObjDR.Close();
ObjConn.Dispose();
}
4.2 題庫管理
教師進入平臺后,既可以通過導入試題集的方式,也可以通過手動添加試題的方式,將收集到的試題信息導入到題庫中,題庫的題型分為單選題、多選題、填空題、問答題等形式,按照不同的題型給出不同的分值。由于代碼數(shù)量很多,主要是介紹導入單項選擇題的核心代碼:
if (DDLTestTypeName.SelectedItem.Value.IndexOf("單選類")>=0)
{
intOptionNum=Convert.ToInt32(DDLOptionNum.SelectedItem.Value);
for (i=1;i<=intOptionNum;i++)
{
if (Request["txtTestContent"+i.ToString()]=="")
{
return;
}
}
RadioButton rbStr=null;
for (i=1;i<=intOptionNum;i++)
{
rbStr=(RadioButton)Page.FindControl("rbOneSelect"+i.ToString());
if (rbStr.Checked==true)
{
bSelected=true;
strStandardAnswer=strStandardAnswer+rbStr.Text;
}
if (strOptionContent=="")
{
strOptionContent=ObjFun.getStr(Request["txtTestContent"+i.ToString()],300);
}
else
{
strOptionContent=strOptionContent+"|"+ObjFun.getStr(Request["txtTestContent"+i.ToString()],300);
}
}
if (bSelected==false)
{
return;
}
}
4.3 試卷生成
試卷生成模式可以分為自動組卷和手動組卷,自動組卷是系統(tǒng)根據(jù)教師提交的試卷名、時間、難度、題型、分值、人員、顯示模式等要求,從題庫中抽取題目組合成試卷。手動組卷,顧名思義,就是教師自己從題庫中一道一道地把題目篩選出來,然后組合成卷。試卷生成的核心代碼如下:
intUserID=Convert.ToInt32(SqlDS.Tables["PaperUser"].Rows[i]["UserID"]);
ObjCmd=new SqlCommand("CreatePaper",SqlConn);
ObjCmd.CommandType=CommandType.StoredProcedure;//指示CreatePaper為存儲過程? ?ObjCmd.Parameters.Add("@UserID",SqlDbType.Int,4);? ? ?ObjCmd.Parameters["@UserID"].Value=intUserID;? ?ObjCmd.Parameters.Add("@PaperID",SqlDbType.Int,4);? ? ObjCmd.Parameters["@PaperID"].Value=intPaperID;? ? ObjCmd.Parameters.Add("@ExamState",SqlDbType.Int,4);? ? ?ObjCmd.Parameters["@ExamState"].Value=-1;? ? ObjCmd.Parameters.Add("@LoginIP",SqlDbType.VarChar,20);? ? ObjCmd.Parameters
["@LoginIP"].Value=Convert.ToString(Request.ServerVariables["Remote_Addr"]);? ?ObjCmd.Parameters.Add("@UserScoreID",SqlDbType.Int,4);? ObjCmd.Parameters["@UserScoreID"].Direction=ParameterDirection.Output;? ObjCmd.Parameters.Add("@RemTime",SqlDbType.Int,4);
ObjCmd.Parameters["@RemTime"].Direction=ParameterDirection.Output;? ObjCmd.ExecuteNonQuery();//執(zhí)行存儲過程
}
5 結(jié)束語
參考了其他的考試系統(tǒng)[4-8],吸取了部分思想構(gòu)建了平臺,本平臺適用大中專院校局域網(wǎng)或者外網(wǎng)使用,界面友好,操作簡單,能夠從根本上解決教師重復性的工作,整體的效果讓人滿意。但是平臺仍然存在一些問題,比如特殊字符無法顯示,在后續(xù)的開發(fā)中會對平臺進行完善。
參考文獻:
[1] 許禮捷,周洪斌. 基于ASP.NET在線考試平臺的設計與實現(xiàn)[J].沙洲職業(yè)工學院學報,2012(6):3-10.
[2] 郭霞.使用ASP.NET開發(fā)基于B/S模式的在線考試系統(tǒng)[J].電腦知識與技術(shù),2018,14(16):92-94.
[3] 李偉為.基于ASP.NET 2.0的在線考試平臺的設計于實現(xiàn)[J].計算機應用與軟件,2011(9):163-165.
[4] 韓萌,王移芝,王嘉樹.基于Web的通用在線考試系統(tǒng)的設計與實現(xiàn)[J].計算機工程與設計,2008,29(21):5608-5610.
[5] 馬婭婕,田翔川.多媒體網(wǎng)絡教學系統(tǒng)在線考試題庫的設計[J].計算機應用研究,2005,22(1):182-183,186.
[6] 楊昱昺,王紅艷.基于題庫自適應在線考試系統(tǒng)的分析與設計[J].武漢理工大學學報,2008,30(4):157-160.
[7] 劉洪江.在線考試系統(tǒng)的數(shù)據(jù)庫設計與實現(xiàn)[J].電腦知識與技術(shù),2012,8(3):508-511.
[8] 肖自紅,張祖平.基于.NET的試題庫與在線考試系統(tǒng)研究[J].計算機與數(shù)字工程,2008,36(3):136-139.
【通聯(lián)編輯:謝媛媛】