下面是明日科技在线考试系统自动生成试题和核对试题答案源码
1:用order by id desc生成的试题顺序答题时选的正确答案与题库里的正确答案一致,也就是说生成单选题题号的顺序与核对单选题答案顺序一致。
2:用order by newid()生成的试题顺序答题时选的正确答案与题库里的正确答案不一致,也就是说生成单选题题号的顺序与核对单选题答案顺序不一致。
3:怎样才能实现从数据库中选择单选题和核对单选题答案都用order by newid()生成的试题顺序答题时选的正确答案与题库里的正确答案一致
//从数据库中选择单选题
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;
1:用order by id desc生成的试题顺序答题时选的正确答案与题库里的正确答案一致,也就是说生成单选题题号的顺序与核对单选题答案顺序一致。
2:用order by newid()生成的试题顺序答题时选的正确答案与题库里的正确答案不一致,也就是说生成单选题题号的顺序与核对单选题答案顺序不一致。
3:怎样才能实现从数据库中选择单选题和核对单选题答案都用order by newid()生成的试题顺序答题时选的正确答案与题库里的正确答案一致
//从数据库中选择单选题
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 2:
SqlDataAdapter myadapter2 = 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 myds2 = new DataSet();
myadapter2.Fill(myds2);
DataRow[] row1 = myds2.Tables[0].Select();
//计算单选题成
foreach (DataRow answer1 in row1)
{
int_row1 += 1;
if (int_row1<= 10)
{
RadioButtonList rbl = (RadioButtonList)(DataList1.Items[int_row1 - 1].FindControl("RadioButtonList1"));
if (rbl.SelectedValue == "")
{
this.lblSel.Text = int_row1Point.ToString();
}
else
{
float ti = DataList1.Items.Count;
if (answer1["que_answer"].ToString().Trim() == rbl.SelectedValue.ToString().Trim())
{
int_row1Point += 50 / ti;
this.lblSel.Text = int_row1Point.ToString();
}
}
}
}
Break
数据库que_questions表的各个字段如下
; [id]
[que_subject]
[que_type]
[que_joindate]
[que_lessonid]
[que_professionid]
[que_taotiid]
[optionA]
[optionB]
[optionC]
[optionD]
[que_answer]
[note]
是随即抽取,每次都不一样的!
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)
她选abcd,你要存5,6,78,9
标准答案是存5还不是存a
录入的时候,不要出现abcd,这个是自动生成的还有一个就是把标准答案作为字段存在答案选项上,这样你就只要获取ID即可
{
((Label)(DataList1.Items[i].FindControl("lblAnswer"))).Visible = true;
}在前台datalist里面添加hiddenfield控件并绑定数据库<asp:Label ID="lblAnswer" runat="server"
Text='<%# "正确答案:"+DataBinder.Eval(Container.DataItem,"que_answer") %>'