知识大全 利用ASP.NET构建网上考试系统
Posted 知
篇首语:书史足自悦,安用勤与劬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 利用ASP.NET构建网上考试系统相关的知识,希望对你有一定的参考价值。
利用ASP.NET构建网上考试系统 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
随着计算机网络的普及 基于数据库的B/S网上考试系统得到广泛地应用 现以(C#)+SQL server(或ACCESS)为例说明开发网上考试系统的实现方法 一 数据库的设计 建立数据库netexam 在库中添加考生信息表StuInfo 分别建立以下字段 考号ExamId(c)(主键) 考生姓名Name(c) 是否登录考试LogYn(c) 得分Score(c) 随机生成的试题答案mca(c) (注:此处以多选题为例 单选题 判断题同理) 添加多选题题库表mc 建立以下字段 题目question(c) 四个选choice (c) choice (c) choice (c) choice (c) 答案answer(c)(注:多选题答案用 表示未选 表示选择 如选择ABD就用 表示) 二 考生登录 在此处将考生信息插入表StuInfo 此处要防止考生重复登录!给指定唯一的考号 并将考号字段ExamId(c)设为主键 当重复登录时 用Catch捕获错误 给出相应提示 部分代码如下(login aspx) private void ButOk_Click(object sender System EventArgs e) SqlConnection StuConn=new SqlConnection( Data Source=localhost;Integrated Security=SSPI; Initial Catalog=netexam ); SqlCommand LoginCmd=StuConn CreateCommand(); //可根据不同情况选择不同的数据库连接 LoginCmd CommandText= Insert into StuInfo(ExamId Name) values( +TxtId Text Trim()+ +TxtName Text Trim()+ ) ; //将考号 姓名插入相应字段 其中TxtId TxtName分别是输入考号和姓名的文本框 try Session[ Id ]=TxtId Text Trim(); StuConn Open(); LoginCmd ExecuteReader(); Response Redirect( test aspx ); catch(Exception) //捕获相应错误 Response Write( <script language=\\ javascript\\ > + \\n ); Response Write( alert(\\ 不能重复登录 或考号 姓名 密码是否有误!\\ ) + \\n</script> ); 三 试题生成 防止考生刷新页面 由于加载试题页面时将从数据库中随机抽取试题 所以应防止考生刷新面页(刷新页面会重新生成新的试题) 方法是将表StuInfo中的LogYn字段默认值设为 加载试题后设为 交卷评分后设为 加载试题页面时进行相应检查 以防止页面的刷新 代码如下(test aspx): private void Page_Load(object sender System EventArgs e) if(!IsPostBack) QuestCmd CommandText= select LogYn from StuInfo where ExamId= + Session[ Id ] ToString()+ ; QuestConn Open(); SqlDataReader QuestRd=QuestCmd ExecuteReader(); QuestRd Read(); if(QuestRd[ LogYn ] ToString() Trim() Equals( )||QuestRd[ LogYn ] ToString() Trim() Equals( )) //判断是否已加载试题或是否已评分 Response Write( <script language=\\ javascript\\ > + \\n ); Response Write( alert(\\ 不能刷新!请与管理员联系 重新登录 \\ ) + \\n</script> ); else QuestCmd CommandText= update StuInfo set LogYn= ; //已成功加载试题 QuestCmd ExecuteReader(); 随机生成试题 网上考试系统的关键是试题的随机生成 即对于不同的计算机访问系统时将从题库中随机地抽取不同的试题 在此我们可使用SQL语句 select top n * from mc order by newid() 从题库中随机抽取n条记录 其中newid()生成 uniqueidentifier 值(若是ACCESS数据库则用 select top n * from mc order by rnd(id) 其中id为自动编号字段) 在test aspx页面上放置一个Panel容器控件 以便动态生成绑定到试题的控件 并将从表mc中随机生成的试题答案写入表StuInfo表中的mca字段 代码如下(test aspx): private void Page_Load(object sender System EventArgs e) if(!IsPostBack) QuestCmd CommandText= select top * from mc order by newid() ;//以随机生成 道题为例 QuestConn Open(); QuestRd=QuestCmd ExecuteReader(); while(QuestRd Read()) Literal LitTxt=new Literal(); Literal LitBl=new Literal(); CheckBoxList CMc=new CheckBoxList(); CMc ID= CMc +i ToString(); LitTxt Text=i ToString()+ +Server HtmlEncode(QuestRd[ Question ] ToString())+ <BR><Blockquote> ; LitBl Text= </Blockquote> ; CMc Font Size= ; for(int j= ;j<= ;j++) CMc Items Add(Server HtmlEncode(QuestRd[ Choice +j ToString()] ToString())); CMc Items[j ] Value=j ToString(); mcStr+=QuestRd[ Answer ] ToString() Trim(); //mcStr是存储随机生成试题答案的字符串变量 MyPanel Controls Add(LitTxt); MyPanel Controls Add(CMc); MyPanel Controls Add(LitBl); i++; QuestCmd CommandText= update StuInfo set Mca= +mcStr+ where ExamId= +Session[ Id ] ToString()+ ; //将随机生成试题答案写入数据表 QuestConn Open(); QuestRd=QuestCmd ExecuteReader(); 四 交卷评分 当用户点击交卷按钮后 应将用户的答题结果与试题答案进行比对 并给出相应的分值写入数据表 最后将表StuInfo中的LogYn字段设置为 显示考试得分 代码如下(test aspx): private void ButSend_Click(object sender System EventArgs e) for(int i= ;i<= ;i++) //由于随机生成了 道题 所以循环 次 for(int j= ;j< ;j++) if(Request Form[ CMc +i ToString()+ : +j ToString()]!=null) mcs+= ; //mcs是存储考生所选答案的字符串变量 已选用 表示 未选用 表示 else mcs+= ; QuestCmd CommandText= select mca from StuInfo where ExamId= +Session[ Id ] ToString()+ ; QuestConn Open(); SqlDataReader QuestRd=QuestCmd ExecuteReader(); QuestRd Read(); int StuScore= ; //存储得分的变量 for(i= ;i< ;i+= ) if(QuestRd[ mca ] ToString() Substring(i ) Equals(mcs Substring(i ))) StuScore+= ; //从字段mca和mcs中每次取四个字符进行比对 如相等则加上 分 QuestCmd CommandText= update StuInfo set score= +StuScore ToString()+ LogYn= where ExamId= + Session[ Id ] ToString()+ and LogYn= ; //设置已评分标志 QuestRd=QuestCmd ExecuteReader(); Response Redirect( score aspx ); //显示考试得分页面 限于篇幅 在此只列出了实现网上考试系统的几个要点 读者可根据自已的需要进一步完善相应的数据验证 后台管理及界面设计 cha138/Article/program/net/201311/13372相关参考
ASP.NET构建数据层学习笔记 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET构建
构建ASP.NET网站十大必备工具 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 构建ASPNE
构建高性能ASP.NET站点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在用ASPNET开发
知识大全 在Dreamweaver中构建ASP.net开发环境
在Dreamweaver中构建ASP.net开发环境 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 组合ASP.NET 2.0数据控件构建强大用户接口
组合ASP.NET2.0数据控件构建强大用户接口 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NET站点构建之减少不必要的请求 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 前言本篇
为Asp.net应用程序设置构建Web服务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一什么
知识大全 ASP.NET入门教程 11.6 构建配置文件[2]
ASP.NET入门教程11.6构建配置文件[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n
知识大全 ASP.NET入门教程 11.6 构建配置文件[1]
ASP.NET入门教程11.6构建配置文件[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n
优化HTTP前端请求构建高性能ASP.NET站点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!