把明日科技的在线考试改成自动生成试题

zhang530510 2011-04-09 08:02:48
asp.net项目开发全程实录第七章下面是选择单选题和核对单选题答案代码,我想改成自动生成的单选题和核对单选题答案时题号一致,明日科技已经给我提供了几种方案我也试了,由于刚入门没做成。请老师们能不能根据下面的代码给写出来怎样去实现自动生成
switch (i)
{
//从数据库中选择单选题
case 1:
SqlDataAdapter myadapter1 = new SqlDataAdapter("select * "
+ "from tb_Questions where que_type='单选题'and que_lessonid='"
+ dd1 + "'and que_taotiid='" + dd2 + "'order by id desc", con);
DataSet myds1 = new DataSet();
myadapter1.Fill(myds1);
DataList1.DataSource = myds1;
DataList1.DataBind();
//生成单选题题号
for (int tID1 = 1; tID1 <= DataList1.Items.Count; tID1++)
{
Label lblSelect = (Label)DataList1.Items[tID1 - 1].FindControl("Label2");
lblSelect.Text = tID1.ToString() + "、";
}
break;
//核对单选题答案
case 3:
SqlDataAdapter myadapter3 = new SqlDataAdapter("select id,que_answer"
+ " from tb_Questions where que_type='单选题'and que_lessonid="
+ dd1 + " and que_taotiid=" + dd2 + " order by id desc", con);
DataSet myds3 = new DataSet();
myadapter3.Fill(myds3);
DataRow[] row1 = myds3.Tables[0].Select();
//计算单选题成
foreach (DataRow answer1 in row1)
{
int_row1 += 1;
if (int_row1<= 3)
{
RadioButtonList rbl = (RadioButtonList)(DataList1.Items[int_row1 - 1].FindControl("RadioButtonList1"));
if (rbl.SelectedValue == "")
{
this.lblSel.Text = "0";
}
else
{
if (answer1["que_answer"].ToString().Trim() == rbl.SelectedValue.ToString().Trim())
{
int_row1Point += 40 / DataList1.Items.Count;
this.lblSel.Text = int_row1Point.ToString();
}
}
}
}
break;
...全文
155 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hch126163 2011-04-09
  • 打赏
  • 举报
回复
用order by newid() 随机取题是合理的! 不然每次题都一样,那样就无意义了!

验证答案有2中方法!

1、 获取考题时,把答案一起查询出来(连接查询)
把问题(考题) 发送到前台,答案保存到session!(不推荐把答案放到前台!)
提交时,从session 取值,循环判断(根据题的唯一标识来判断)

2、获取考题时,只查询问题
用户提交时,发答案 拼接字符串,(1:a;2:b,c;) 这样的格式可以解决多选问题!

然后数据库端去处理!数据库 字符串分割,循环判断就可以了!
lijing3333 2011-04-09
  • 打赏
  • 举报
回复
什么叫自动生成的? 没明白,。。。。
子夜__ 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dalmeeme 的回复:]

此处不应用隐藏域,隐藏域虽然不显示在网页上,但对方通过浏览器查看网页源代码,还是能查看到的,不安全。即使简单的加密也没用,因为选择题通常只有A、B、C、D四个答案,对应的密文也只有四个结果,对方容易猜到正确的答案。
可以将题号和答案存在一个文本文件中,自定义一种便于处理的格式,比如:1B|2C|3D|4B......
批改时,读出该文本文件,用字符串对象的Split方法分割字符串,即可得到题……
[/Quote]
哈哈 要屏蔽右键哦。
dalmeeme 2011-04-09
  • 打赏
  • 举报
回复
此处不应用隐藏域,隐藏域虽然不显示在网页上,但对方通过浏览器查看网页源代码,还是能查看到的,不安全。即使简单的加密也没用,因为选择题通常只有A、B、C、D四个答案,对应的密文也只有四个结果,对方容易猜到正确的答案。
可以将题号和答案存在一个文本文件中,自定义一种便于处理的格式,比如:1B|2C|3D|4B......
批改时,读出该文本文件,用字符串对象的Split方法分割字符串,即可得到题号和答案。
文本文件的文件名可以起的复杂些,存放的目录层次可以深些,甚至可以对其内容加密。单个字符加密后容易猜到,但多个字符组成的字符串加密后很难猜到。
子夜__ 2011-04-09
  • 打赏
  • 举报
回复
给你一段代码看看

其实也就是添加一个隐藏域。

<asp:Repeater ID="rpQuestion" runat="server">
<ItemTemplate>
<div id="content<%# Container.ItemIndex %>">
<%# (Container.ItemIndex + 1) % 2 != 0 ? "<Table><Tr><TD style='text-align: left;width:400px;'>" : ""%>
第<%# Container.ItemIndex + 1%>题:<%# Eval("Q_Name")%>:<span id="span<%# Container.ItemIndex %>"
style="color: Red;">未平!</span><asp:HiddenField ID="HiddenValue" runat="server" Value='<%# Eval("Q_Value") %>' />
<asp:RadioButtonList ID="rbtList_Question" runat="server">
</asp:RadioButtonList>
<%# (Container.ItemIndex + 1) % 2 != 0 ? "</TD><TD style='text-align: left;width:400px;'>" : ""%>
<%# (Container.ItemIndex + 1) % 2 == 0 ? "</TD></TR></TABLE><br />" : ""%>
</div>
</ItemTemplate>
</asp:Repeater>


<asp:HiddenField ID="HiddenValue" runat="server" Value='<%# Eval("Q_Value") %>' />

这样子。
zhang530510 2011-04-09
  • 打赏
  • 举报
回复
谢谢前辈给写具体点
zhang530510 2011-04-09
  • 打赏
  • 举报
回复
(子夜)老师谢谢您指点。我刚入门非常菜,写不出来。根据上面的代码给写出来好吗?送50分表示感谢
子夜__ 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhang530510 的回复:]

谢谢回复,我的意思是每个客户端从数据库取到的题的顺序都不一样,上面的代码是用order by id desc生成的试题顺序,核对答案时也是用order by id desc,这样题号和正确答案一致,也就是说学生选择正确答案能得到正确的分数,这样所有的客户端取到题的顺序是一样的,相邻的客户端可以作弊使操答案容易。我用order by newid()代替order by id desc每个客户端的试……
[/Quote]

绑定的时候 把生成的数据里最好包含正确答案

然后包含在一个隐藏域里

提交的时候对比 生成积分。
zhang530510 2011-04-09
  • 打赏
  • 举报
回复
谢谢回复,我的意思是每个客户端从数据库取到的题的顺序都不一样,上面的代码是用order by id desc生成的试题顺序,核对答案时也是用order by id desc,这样题号和正确答案一致,也就是说学生选择正确答案能得到正确的分数,这样所有的客户端取到题的顺序是一样的,相邻的客户端可以作弊使操答案容易。我用order by newid()代替order by id desc每个客户端的试题的排列顺序都是不一样的,这样就不好作弊了。这样做所选的正确答案不能得到正确的分数。请问怎样做才能做到所有客户端题的排列顺序不一样,所选正确答案又能得到正确分数

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧