位置: IT常识 - 正文

【C#+JavaScript+SQL Server】实现Web端在线考试系统 五:考试模块设计(附源码和资源)

编辑:rootadmin
【C#+JavaScript+SQL Server】实现Web端在线考试系统 五:考试模块设计(附源码和资源)

推荐整理分享【C#+JavaScript+SQL Server】实现Web端在线考试系统 五:考试模块设计(附源码和资源),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

需要源码请点赞关注收藏后评论区留言私信~~~

一、考试模块概述

在线考试系统中的考试模块主要包括阅读考试规则,选择考试科目,随机抽取试题,答题计时器以及自动交卷并评分等功能

在开发考试系统过程中,需要考虑的一点是如何将试题显示在页面上,如何将试题从数据库中读取出来,比较合理的做法是将所有试题信息存储在数据库中,然后随机抽取若干试题,动态的显示在页面中

在线考试系统和普通考试的流程是一样的,考生答卷完毕后要对考生的答案评分,根据实际的需要,在线考试系统加入了自动评分模块,当考生答题完毕提交试卷后,系统会根据考生选择的答案与正确答案进行比较,最后进行评分

 二、选择考试科目【C#+JavaScript+SQL Server】实现Web端在线考试系统 五:考试模块设计(附源码和资源)

在随机抽取试题之前,考生要选择考试的科目,然后根据选择的科目随机从数据库中抽取试题给考生

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

protected void Button2_Click(object sender, EventArgs e){ 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 { //执行SQL语句 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,resizable=1')</script>"); Response.Write("<script>window.opener=null;window.close();</script>"); } else { MessageBox.Show("此科目没有考试题");//弹出提示信息 return; } }} 三、设计考试页面

新建一个网页作为考试页面,它的主要控件如下

四、随机抽取试题

 当开始考试页面加载时,根据考生选择的科目在数据库中随机抽取试题,并显示在Panel控件中

public string Ans = null;//建立存储正确答案的公共变量public int tNUM;//记录考题数量protected void Page_Load(object sender, EventArgs e){ lblEndtime.Text = "考试时间为10分钟,每小题5分,考试已用时:";//显示考试提示 lblStuNum.Text = Session["ID"].ToString();//显示考生编号 lblStuName.Text = Session["name"].ToString();//显示考生姓名 lblStuSex.Text = Session["sex"].ToString();//显示考生性别 lblStuKM.Text = "[" + Session["KM"].ToString() + "]" + "考试试题";//显示考试科目 int i = 1;//初始化变量 SqlConnection conn = BaseClass.DBCon();//连接数据库 conn.Open();//打开连接 SqlCommand cmd = new SqlCommand("select top 10 * from tb_test where testCourse='" + Session["KM"].ToString() + "' order by newid()", conn); SqlDataReader sdr = cmd.ExecuteReader();//创建记录集 while (sdr.Read()) { Literal littxt = new Literal();//创建Literal控件 Literal litti = new Literal();//创建Literal控件 RadioButtonList cbk = new RadioButtonList();//创建RadioButtonList控件 cbk.ID = "cbk" + i.ToString(); littxt.Text = i.ToString() + "、" + Server.HtmlEncode(sdr["testContent"].ToString()) + "<br>ckquote>"; litti.Text = "</Blockquote>"; cbk.Items.Add("A. " + Server.HtmlEncode(sdr["testAns1"].ToString()));//添加选项A cbk.Items.Add("B. " + Server.HtmlEncode(sdr["testAns2"].ToString()));//添加选项B cbk.Items.Add("C. " + Server.HtmlEncode(sdr["testAns3"].ToString()));//添加选项C cbk.Items.Add("D. " + Server.HtmlEncode(sdr["testAns4"].ToString()));//添加选项D cbk.Font.Size = 11;//设置文字大小 for (int j = 1; j <= 4; j++) { cbk.Items[j - 1].Value = j.ToString(); } Ans += sdr[6].ToString();//获取试题的正确答案 if (Session["a"] == null)//判断是否第一次加载 { //如果第一次加载则将正确答案赋值给Session["Ans"] Session["Ans"] = Ans; } Panel1.Controls.Add(littxt);//将控件添加到Panel中 Panel1.Controls.Add(cbk);//将控件添加到Panel中 Panel1.Controls.Add(litti);//将控件添加到Panel中 i++;//使i递增 tNUM++;//使tNUM递增 } sdr.Close(); conn.Close();//关闭连接 Session["a"] = 1;}五、计时器功能的实现

在考试页面中具有考试计时的功能,该功能是通过JavaScript脚本实现的

<script language="javascript"> var sec = 0; var min = 0; var hou = 0; flag = 0; idt = window.setTimeout("countDown();", 1000); function countDown() { sec++; if (sec == 60) { sec = 0; min += 1; } if (min == 60) { min = 0; hou += 1; } document.getElementById("lbltime").innerText = min + "分 " + sec + " 秒"; idt = window.setTimeout("countDown();", 1000); if (min == 10) { document.getElementById("btnsubmit").click(); } }</script>六、交卷功能的实现

考生在规定的时间内进行考试,当考生答题完毕后,单击交卷功能,提交试卷,此时系统会将该考生的答题结果提交给自动评分模块,交卷按钮的Click事件代码如下

protected void btnsubmit_Click(object sender, EventArgs e){ string msc = "";//建立变量msc存储考生答案 for (int i = 1; i <= 10; i++) { RadioButtonList list = (RadioButtonList)Panel1.FindControl("cbk" + i.ToString()); if (list != null) { if (list.SelectedValue.ToString() != "") msc += list.SelectedValue.ToString();//存储考生答案 else msc += "0";//如果没有选择则为0 } } Session["Sans"] = msc;//考生答案 string sql = "update tb_score set RigthAns='" + Ans + "',StudentAns='" + msc + "' where StudentID='" + lblStuNum.Text + "'";//更新考试结果数据表 BaseClass.OperateData(sql); Response.Redirect("result.aspx?BInt=" + tNUM.ToString());}七、自动评分功能的实现

考生将试题提交到自动评分模块,该模块对考生答案进行评分,并将考生的成绩添加到数据表中

protected void Page_Load(object sender, EventArgs e){ string Rans = Session["Ans"].ToString();//获取正确答案 int j = Convert.ToInt32(Request.QueryString["BInt"]);//获取试题数量 string Sans = Session["Sans"].ToString();//获取考生答案 int StuScore = 0;//将考试成绩初始化为0 for (int i = 0; i < j; i++) { if (Rans.Substring(i, 1).Equals(Sans.Substring(i, 1)))//将考生答案与正确答案作比较 { StuScore += 5;//如果答案正确加5分 } } this.lblResult.Text = StuScore.ToString();//显示考试成绩 this.lblkm.Text = Session["KM"].ToString();//显示考试科目 this.lblnum.Text = Session["ID"].ToString();//显示考生编号 this.lblname.Text = Session["name"].ToString();//显示考生姓名 //更新考试结果数据表 string strsql = "update tb_score set score='" + StuScore.ToString() + "' where StudentID='" + Session["ID"].ToString() + "' and LessonName='" + Session["KM"].ToString() + "'"; BaseClass.OperateData(strsql);}

创作不易  觉得有帮助请点赞关注收藏~~~

本文链接地址:https://www.jiuchutong.com/zhishi/297757.html 转载请保留说明!

上一篇:【论文导读】 - 关于联邦图神经网络的3篇文章(论文 导论)

下一篇:基于html的旅游网站的设计与实现(基于html的旅游网站设计源代码)

  • 让孩子精彩一生的十个励志故事(让每个孩子的一生成为精彩的故事)

    让孩子精彩一生的十个励志故事(让每个孩子的一生成为精彩的故事)

  • office2010配置进度怎么去除(office2010配置进度每次打开)

    office2010配置进度怎么去除(office2010配置进度每次打开)

  • airplay什么意思(airplay)(投屏出现airplay什么意思)

    airplay什么意思(airplay)(投屏出现airplay什么意思)

  • 微信一码通不是本人怎么改

    微信一码通不是本人怎么改

  • 小米mix3动态壁纸怎么设置(小米mix3怎么设置动态锁屏壁纸)

    小米mix3动态壁纸怎么设置(小米mix3怎么设置动态锁屏壁纸)

  • 抖音qq登录授权失败(抖音qq登录授权怎么设置在哪里)

    抖音qq登录授权失败(抖音qq登录授权怎么设置在哪里)

  • 小米手机激活时间怎么看(小米手机激活时间查询不到)

    小米手机激活时间怎么看(小米手机激活时间查询不到)

  • 华为nova7se手机怎么长截屏(华为nova7se手机屏幕多少钱)

    华为nova7se手机怎么长截屏(华为nova7se手机屏幕多少钱)

  • 华为Mate30和Mate30Pro区别对比(华为mate30和mate30pro的区别)

    华为Mate30和Mate30Pro区别对比(华为mate30和mate30pro的区别)

  • qq关闭麦克风对方看得见吗(qq关闭麦克风对面能看到么)

    qq关闭麦克风对方看得见吗(qq关闭麦克风对面能看到么)

  • 为什么建议退货退款重拍(为什么建议退货呢)

    为什么建议退货退款重拍(为什么建议退货呢)

  • 抬起唤醒是什么意思(抬起唤醒是什么时候出的)

    抬起唤醒是什么意思(抬起唤醒是什么时候出的)

  • 苹果8p喇叭左边不响(iphone8plus左边喇叭不响)

    苹果8p喇叭左边不响(iphone8plus左边喇叭不响)

  • 小米电视盒子4c和4se有什么区别(小米电视盒子4c和4s有什么区别)

    小米电视盒子4c和4se有什么区别(小米电视盒子4c和4s有什么区别)

  • ps怎么画动漫(ps怎么画动漫人物)

    ps怎么画动漫(ps怎么画动漫人物)

  • 华为手机nova6上市时间(华为手机nova6上面有个圆圈)

    华为手机nova6上市时间(华为手机nova6上面有个圆圈)

  • 怎么在表格里查找内容(怎么在表格里查找数据有几个)

    怎么在表格里查找内容(怎么在表格里查找数据有几个)

  • 手机数据备份怎么弄(手机数据备份怎么样才能一点不丢失)

    手机数据备份怎么弄(手机数据备份怎么样才能一点不丢失)

  • 皮卡堂怎么刷金卡视频(皮卡堂怎么刷金卡和皮卡豆)

    皮卡堂怎么刷金卡视频(皮卡堂怎么刷金卡和皮卡豆)

  • 华为dlg一tl10是什么型号(华为lldtl10什么价钱)

    华为dlg一tl10是什么型号(华为lldtl10什么价钱)

  • 怎样发抖音短视频(怎样发抖音短视频可以上热门)

    怎样发抖音短视频(怎样发抖音短视频可以上热门)

  • Linux中df命令查询磁盘信息和fdisk命令分区的用法(linux命令df -h结果详解)

    Linux中df命令查询磁盘信息和fdisk命令分区的用法(linux命令df -h结果详解)

  • Linux下用gzip和unzip命令来压缩和解压文件的用法(linux中gzip的用法)

    Linux下用gzip和unzip命令来压缩和解压文件的用法(linux中gzip的用法)

  • 穆尔森林国家纪念碑,加利福尼亚州旧金山 (© Mia2you/Shutterstock)(穆尔官网)

    穆尔森林国家纪念碑,加利福尼亚州旧金山 (© Mia2you/Shutterstock)(穆尔官网)

  • CentOS7部署ELK(Elasticsearch+ Logstash + Kibana)过程记录(centos7安装keepalived)

    CentOS7部署ELK(Elasticsearch+ Logstash + Kibana)过程记录(centos7安装keepalived)

  • 贸易公司开发票进项跟销项不符合怎么办
  • 建筑劳务公司的工资计入什么科目
  • 收到退所得税款的会计分录
  • 企业所得税税前扣除凭证管理办法
  • 固定资产出售账户处理
  • 企业发生破产清算
  • 挂失申请怎么写
  • 商业汇票的申请人是谁
  • 商贸公司可以用加工厂的商标委托加工生产吗
  • 贷款利息进项税额
  • 建设单位对施工单位的管理要求
  • 固定资产折旧成本费用科目
  • 个人转到公司账上的钱能开发票吗
  • 融资租赁分摊差额扣除会计处理?
  • 母公司不经营分公司能报税吗?
  • 年薪12万个人所得税交多少钱
  • 有限合伙企业对外转让财产份额
  • 关于建筑工程发包与承包下列说法正确的是
  • 跨境税法
  • 子女继承房地产怎么交税
  • 因公出差的人身故怎么办
  • 清算所得计算例题
  • 财产清查的方法和财产清查结果的会计处理
  • 买手机5000预算
  • 应收账款的内容包括
  • 进销存账本怎么做
  • 冲减坏账准备和计提坏账准备
  • windows11关机在哪
  • mac 10.11系统
  • 银河麒麟操作系统价格
  • 坏账准备期末余额怎么计算
  • 材料明细账的登记范本手写
  • PHP:imagecolorsforindex()的用法_GD库图像处理函数
  • 后端怎么把图片传给前端的
  • 前端请求方式
  • php根据经纬度计算距离
  • 加油费属于什么费用类别的
  • 谈谈社会公德普通话三分钟
  • yolo s
  • php搜索功能怎么实现
  • 反写必须15号之前吗
  • 工商登记备案在哪查
  • 年终奖税金怎么扣
  • 开发区政府退税政策合法吗
  • 应收票据贴现的实收金额一定小于票据面值
  • 土地增值税预缴计算方法70号公告
  • sql server 2008有什么用
  • 仓库物资盘盈盘亏怎么办
  • 银行存款日记账电子表格模板
  • 可供出售金融资产属于什么科目
  • 个体户没有税务登记怎么开发票
  • 调账和调帐区别
  • 商誉的会计核算怎么核算
  • 经济纠纷引发的盗窃
  • 预付工程款会计分录
  • 税法对企业费用的限定
  • 财务费用在贷方表示增加还是减少
  • 签劳动合同的员工有哪些
  • 账户信息变更说明
  • 全国统一电子发票查询
  • 保险公司的返点能要吗
  • 应付账款暂估可以法人付款吗
  • sql注入修补方法
  • sqlbean
  • windows7计算机管理拒绝访问
  • win10怎么关闭防火系统
  • service5.exe - service5是什么进程 有什么用
  • win7 windows安全中心
  • win个性化设置没反应
  • win7怎么查看电脑主板型号
  • js正则表达式gi
  • node.js基础入门
  • unity 读取txt
  • Protecting Content With AssetBundle[Unity]
  • android studio 开发语言
  • 3.0排量 车船税
  • 晋江劳动局地址
  • 衰竭期矿山开采的矿产品减征幅度
  • 实收资本印花税税率多少
  • 云南2021高考改革
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设