基于ASP.NET的课目考试平台的设计与实现

2021-04-22 16:10许锦
电脑知识与技术 2021年8期
关键词:题库账号题型

许锦

摘要:由于传统的改卷模式效率低下,重复性工作较多。为解决这一问题,提出一种基于ASP.NET的课目考试平台,该平台采用SQL server数据库存储试题库,运用ASP.NET和C#搭建平台结构,以B/S的形式展示考试界面,界面操作简单,零安装,方便学生和教师操作。目前该平台已完成设计并且投入到实际教学中运用,经过调查发现,平台运用后明显减少教师重复性工作。

关键词: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 背景

学院传统的考试要求教师出卷、监考、收卷、阅卷、析卷和评卷。这是一个漫长而复杂的过程,需要耗费大量的人力、物力,造成大量纸张的浪费,越来越不适应现代教学和培训考试的需要[1]。为此,本文采用B/S模式,开发了一套基于ASP.NET的在线考试平台。该平台目前已完成并且投入使用,有效地减少了以往存在的重复性工作问题,将学院教师从传统的考试模式中解放出来,方便学生随时随地通过网络考试,为学生考试创造了一种新型考试环境[2]。

2 总体设计

2.1 需求

在线考试平台首先需要建立一个足够大的题库,这样就可以自动生成各种需求的试卷;其次,在线考试平台的考试时间要灵活,可以在规定的时间内随时参加考试;再次,考试地点是灵活的,可以在任何有网的地方登录考试;然后,在线考试平台阅卷速度快,平台可以在考试结束时给出客观题分数。最后,在线考试平台可以分析和自动保存考试成绩。

基于平台的实际需求,我们采用Visual Studio 2005+Sql Server 2000为平台开发ASP.NET Web应用程序,设计并实现了基于B/S体系结构的中小型在线考试平台,可以随机从数据库中挑选试题,并且可以自动评出客观题的分数。

2.2 功能

基于上述的需求,平台主要的功能和特点可以包含如下内容:

1)平台在考试时具有自动计时和自动保存试卷功能,试卷的出题方式可以分为自动组卷模式和手工組卷模式,试卷显示可以分为逐题模式和整卷模式,试题顺序随机变化,可以预防作弊;

2)平台提供各类常用题型,例如:单选题、多选题、问答题、判断题等题型,单选和多选题的选项可以支持6个,能够满足当前试题的基本要求,还可以方便用户定义新的题型;

3)平台支持批量导入和导出试题和账号,导入过程中自动剔除重复试题和账号,方便用户建立题库和账号库;

4)平台具有客观题自动改卷功能,主观题教师阅卷,最后平台统分,按照成绩的高低进行排序,方便查看;

5)平台不同的账号具有不同的权限,账号分为管理员账号、教师账号和学生账号,管理员账号权限最大,可以修改教师和学生账号的权限,教师账号具有修改试题,改卷等权限,学生账号具有考试、查分等权限;

6)支持检查答卷功能和错题显示功能。

2.3 功能结构图

根据上述的功能描述,平台主要规划了11个模块,分别是账户管理、系统设置、系别管理、题型设置、题库管理、试卷管理、成绩管理、过程管理、参加考试、参加作业、成绩查询。其功能结构图如图1所示。

3 平台开发

3.1 运行环境

课目考试平台是采用Visual Studio 2005+Sql Server 2000为平台开发,以C#作为开发语言,使用Windows server 2003自带IIS作为Web服务器,运用ASP.NET 2.0技术搭建界面,设计并实现了基于B/S体系结构的中小型在线考试平台[3]。

3.2 数据库设计

在线考试平台的主要数据库表包括用户信息表(包含考生信息表、教师信息表、管理员信息表)、部门信息表(包含各系和行政部门)、课目信息表、考试记录信息表、题型信息表、题库信息表等。这里以一个主要的数据表:用户信息表(UserInfo)为例进行说明。

UserInfo表用于存放用户的基本信息,主要包含账号、姓名、密码、性别、系别、职务、照片、手机,它的详细情况如表1所示。

由于账号是唯一的,不可重复的,所以表格中账号为主键。

将账户信息导入到数据库中的部分代码显示如下:

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 系统的实现

4.1 用户登录

教师和学生登录平台有两种方式,一种是在后台账户管理中,平台管理员将用户信息导入到平台数据库中,用户可以通过账号和密码登录到考试平台。另外一种方式是在线注册,用户输入新賬号和密码,选择不同身份注册,注册成功之后即可登录。为了防止学生注册成教师,后台数据库已经存放了教师的相关信息(平台管理员可以对信息进行添加和删除),教师登录的时候平台会比对登录信息和数据库后台信息是否一致,如果出现错误会显示“对不起,账号或密码错误!”,如果登录成功,则进入到平台。用户注册的核心代码为:

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 题库管理

教师进入平台后,既可以通过导入试题集的方式,也可以通过手动添加试题的方式,将收集到的试题信息导入到题库中,题库的题型分为单选题、多选题、填空题、问答题等形式,按照不同的题型给出不同的分值。由于代码数量很多,主要是介绍导入单项选择题的核心代码:

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 试卷生成

试卷生成模式可以分为自动组卷和手动组卷,自动组卷是系统根据教师提交的试卷名、时间、难度、题型、分值、人员、显示模式等要求,从题库中抽取题目组合成试卷。手动组卷,顾名思义,就是教师自己从题库中一道一道地把题目筛选出来,然后组合成卷。试卷生成的核心代码如下:

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();//執行存储过程

}

5 结束语

参考了其他的考试系统[4-8],吸取了部分思想构建了平台,本平台适用大中专院校局域网或者外网使用,界面友好,操作简单,能够从根本上解决教师重复性的工作,整体的效果让人满意。但是平台仍然存在一些问题,比如特殊字符无法显示,在后续的开发中会对平台进行完善。

参考文献:

[1] 许礼捷,周洪斌. 基于ASP.NET在线考试平台的设计与实现[J].沙洲职业工学院学报,2012(6):3-10.

[2] 郭霞.使用ASP.NET开发基于B/S模式的在线考试系统[J].电脑知识与技术,2018,14(16):92-94.

[3] 李伟为.基于ASP.NET 2.0的在线考试平台的设计于实现[J].计算机应用与软件,2011(9):163-165.

[4] 韩萌,王移芝,王嘉树.基于Web的通用在线考试系统的设计与实现[J].计算机工程与设计,2008,29(21):5608-5610.

[5] 马娅婕,田翔川.多媒体网络教学系统在线考试题库的设计[J].计算机应用研究,2005,22(1):182-183,186.

[6] 杨昱昺,王红艳.基于题库自适应在线考试系统的分析与设计[J].武汉理工大学学报,2008,30(4):157-160.

[7] 刘洪江.在线考试系统的数据库设计与实现[J].电脑知识与技术,2012,8(3):508-511.

[8] 肖自红,张祖平.基于.NET的试题库与在线考试系统研究[J].计算机与数字工程,2008,36(3):136-139.

【通联编辑:谢媛媛】

猜你喜欢
题库账号题型
离散型随机变量常考题型及解法
彤彤的聊天账号
“勾股定理”优题库
巧妙构造函数 破解三类题型
施诈计骗走游戏账号
“轴对称”优题库
“轴对称”优题库
一次函数中的常见题型
如何查看迅雷数字账号