zoukankan      html  css  js  c++  java
  • 在线随机考试模块

    随机考试主要有两个关键技术:

    1是保证考题的随机性和不确定性       2是防止随机抽取出现重复考题

    ASP.NET2.0使用System.Random类来产生随机数

    Random rom=new Random(); 

    Random有很多方法适用于产生随机数,并且可以指定这些数的范围,如下面将产生一个大于50小于60的随机数

    int i=rom.Next(50,60);

    double d=rom.NextDouble(); 可以产生一个范围在0.0-1.0之间的双精度浮点数。

    以上是在程序中产生随机数,要在数据库中实现随机选取记录,这里提供两种方法:

    ①先在程序中用Random产生5个随机数,然后select 字段 from 表名 where 字段ID in (产生的5个随机数); 

    使用这种方法是有可能取到相同的随机数的,处理方法是将取到的随机数存到一个数组,然后每随机取一个值就遍历这个数组与其里面的值对比,如果重复,再重新抽取。

    ②使用SQLServer数据库函数newid() 该函数不会产生重复的记录

    select top 10 字段 from 表名 order by newid();

    具体看wenbhappy的博客

    单选题表Radio,如下图:

    添加单选题目使用了LINQ,如下图:

    显示测试题目用了DataList控件,如下图:

    在后置代码中声明了protected int count=0;用于显示第几题。

    在DataList绑定数据时就将抽到题目的答案取出放在ArrayList里,以备后来核对答案,如下图:

    在ItemDataBound事件执行时,先要判断当前行的类型,只有是数据行才能取出其内数据。

    e.Item获取到的就是当前行。

    行视图DataRowView是表视图DataView的一行,更多关于视图看meceky的博客

    有可能遇到的问题--sk-net的博客

    单击提交时核对答案,如下图:

    其中DataList1.Items.Count只包括<ItemTemplate>中项的数量,而DataList1.Controls包括所有<*Template>中的项,在这里由于加一个<HeaderTemplate>,所以要获得ItemTemplate中的控件,索引要从1开始:

    DataList1.Controls[i+1].FindControl()。

    DataList的Items可以获得所有数据项的集合即ItemTemplate (ItemTemplate及其内的控件会不断动态生成直至其内绑定数据结束) 所以也可以如下代码那样写:

    给DataList分页请看benon的博客

    源码下载

  • 相关阅读:
    day 05 讲解java三大特性
    day 02 运算符
    石大 6-9 待提交
    poj分类
    NLog使用总结
    VS 2010下单元测试
    MQTT----物联网常用的消息队列协议
    使用jfreechart生成柱状图、折线图、和饼状图
    JavaBean持久化
    使用maven搭建springMVC开发环境
  • 原文地址:https://www.cnblogs.com/hanmeimei/p/OnlineExam.html
Copyright © 2011-2022 走看看