在线随机考试模块

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

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,如下图:

o_Radio%E5%8D%95%E9%80%89.jpg

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

o_Add%E5%8D%95%E9%80%89.jpg

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

o_Datalist%E6%98%BE%E7%A4%BA%E8%AF%95%E9%A2%98.jpg

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

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

o_Datalist%E5%8F%96%E5%87%BA%E6%AD%A3%E7%A1%AE%E7%AD%94%E6%A1%88.jpg

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

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

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

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

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

o_%E6%A0%B8%E5%AF%B9%E7%AD%94%E6%A1%88.jpg

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

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

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

o_DataListItems.jpg

给DataList分页请看benon的博客

源码下载

转载于:https://www.cnblogs.com/hanmeimei/archive/2011/01/30/OnlineExam.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值