使用JavaScript实现考试系统科目选择实践笔记 | 青训营

242 阅读3分钟

1.考试系统模块

考生登录进入考试系统后,开始进行考试,所设计的考试系统中主要包括阅读考试规则,选择考试科目,随机抽取试题,答题计时器以及自动交卷并评分等功能在开发考试系统过程中,如何将试题显示在页面上,如何将试题从数据库中读取出来,一般是将所有试题信息存储在数据库中,然后随机抽取若干试题,动态的显示在页面中。考生答卷完毕后要对考生的答案评分,在线考试系统加入了自动评分模块,当考生答题完毕提交试卷后,系统会根据考生选择的答案与正确答案进行比较,最后进行评分。

2.考试科目选择

在抽取试题之前要进行考试科目的选择,根据考生选择的科目对数据库进行检索,查看数据库中是否有相关的试题,如果存在试题则随机抽取试题,否则提示考生选择的考试科目在数据库中没有试题,开始考试按钮的Click事件代码如下

{
    string StuID = Session["ID"].ToString();				//考生的编号
    string StuKC = ddlKm.SelectedItem.Text;				//选择的考试科目
    SqlConnection conn = BaseClass.DBCon();				//连接数据库
    conn.Open();							
    SqlCommand cmd = new SqlCommand("select count(*) from tb_score where StudentID='" + StuID 
+ "' and LessonName='" + StuKC + "'", conn);				//执行SQL语句
    int i = Convert.ToInt32(cmd.ExecuteScalar());			//获取返回值
    if (i > 0)							//如果返回值大于0
    {
        MessageBox.Show("已参加过此科目的考试");
    }
    else
    {
        cmd = new SqlCommand("select count(*) from tb_test where testCourse='" + StuKC + "'", 
conn);
        int N = Convert.ToInt32(cmd.ExecuteScalar());		//获取返回值
        if (N > 0)						//如果返回值大于0
        {
            cmd = new SqlCommand("insert into tb_score(StudentID,LessonName,StudentName) 
values('" + StuID + "','" + StuKC + "','" + lblName.Text + "')", conn);                             
           cmd.ExecuteNonQuery();
           conn.Close();					//关闭连接
           Session["KM"] = StuKC;
Response.Write("<script>window.open('StartExam.aspx','newwindow','status=1,scrollbars=1,re
sizable=1')</script>");
            Response.Write("<script>window.opener=null;window.close();</script>");
        }
        else
        {
            MessageBox.Show("此科目没有考试题");		//弹出提示信息
            return;
        }
    }
}

3.考试题目抽取

在数据库试题表中存储的主键是具有自己填写规则的字符串,在抽取试题时,将所有的单选、多选、判断分别存到三个集合中,然后使用随机数工具类,要求不同题型多少道就获取多少不重复的随机数,然后分别在集合中获取试题。这种方式较笨重,但删除操作不会造成任何影响,适合题量较少、经常修改的考试系统。

4.进入考试界面

进入考试界面,该套试题是根据该课程的试卷结构在试题库中随机选择。考试时间为试卷的结束时间减去开始时间为考试的总时长。学员进入考试界面时,不能随意退出,只能交卷结束考试;如果强制退出,本次考试结束。如果考试过程出现异常(电脑异常,网络异常)等导致本次考试结束,可以由后台教员进行修改考生状态,进入学员考试。考试界面只显示一个考试试题,考试试题从后台教员老师发布的试题卷中获取,考试试题可以通过点击按钮“上一题”或“下一题”进行翻页,或者通过界面上的试题序号直接跳转到指定题号的试题进行作答。正在作答呈蓝色,已经完成作答的试题号呈绿色,未作答的题号呈白色。考试时间倒计时。

5.交卷评分

在考试页面中会有计时器功能,通过JavaScript脚本可以实现,考生答题完毕后,单击交卷功能,提交试卷,此时系统会将该考生的答题结果提交给自动评分模块,该模块对考生答案进行评分,并将考生的成绩添加到数据表中。