知识大全 利用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构建数据层学习笔记

ASP.NET构建数据层学习笔记  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET构建

知识大全 构建ASP.NET网站十大必备工具

构建ASP.NET网站十大必备工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  构建ASPNE

知识大全 构建高性能ASP.NET站点

构建高性能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站点构建之减少不必要的请求

ASP.NET站点构建之减少不必要的请求  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前言本篇

知识大全 为Asp.net应用程序设置构建Web服务

为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站点

优化HTTP前端请求构建高性能ASP.NET站点  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!