我在做在线考试系统,我在考试页面放了一个DataList,ItemTemplate里面放了一个RadioButtonList,有A,B,C,D四个项,下面的代码就是绑定题目和评分的部分,我想问的就是如何获取用户做错的题目信息。。能给个代码更好了,我是初学者 //用于存储正确答案
public string singleanswer = "";
//用于存储考生答案
public string singlestudentAnswer = "";
//用于存储分数
public int point = 0; //页面加载
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.getCom1(str);//绑定题目
}
}
//获取题目并绑定到DataList上
protected void getCom1(string str)
{ List<SubjectTeble> list =//通过业务层返回题目,SubjectTable字段:id,subject,A,B,C,D,anwser,LessonId 备注:LessonId是知识点表的外键,标识这个题是哪个知识
this.DataList1.DataSource = list;
this.DataList1.DataBind();
//获取正确答案
foreach (SubjectTeble st in list)
{
singleanswer += st.Anwser.ToString();
}
Session["singleanswer"] = singleanswer;//储存单选题的答案
} //提交试卷
protected void btnSubmit_Click(object sender, EventArgs e)
{
string singleanswer = Session["singleanswer"].ToString();
for (int i = 0; i < DataList1.Items.Count; i++)
{
RadioButtonList rbl = (RadioButtonList)(DataList1.Items[i].FindControl("RadioButtonList1"));
if (rbl != null)
{
if (rbl.SelectedValue.ToString() != "")
{
singlestudentAnswer += rbl.SelectedValue.ToString();//因为我用的是字符串将用户选的答案拼接然后与真正答案对比来判分,
}
else
{
singlestudentAnswer += "0";//如果没选就默认答案为0,答案只有ABCD,没有0,就可以算错了一题
} }
}
} //计算分数
//单选题分数
for (int i = 0; i < singleanswer.Length; i++)
{
if (singleanswer.Substring(i, 1).Equals(singlestudentAnswer.Substring(i, 1)))
point += 2;//对一题得2分
}
}
public string singleanswer = "";
//用于存储考生答案
public string singlestudentAnswer = "";
//用于存储分数
public int point = 0; //页面加载
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.getCom1(str);//绑定题目
}
}
//获取题目并绑定到DataList上
protected void getCom1(string str)
{ List<SubjectTeble> list =//通过业务层返回题目,SubjectTable字段:id,subject,A,B,C,D,anwser,LessonId 备注:LessonId是知识点表的外键,标识这个题是哪个知识
this.DataList1.DataSource = list;
this.DataList1.DataBind();
//获取正确答案
foreach (SubjectTeble st in list)
{
singleanswer += st.Anwser.ToString();
}
Session["singleanswer"] = singleanswer;//储存单选题的答案
} //提交试卷
protected void btnSubmit_Click(object sender, EventArgs e)
{
string singleanswer = Session["singleanswer"].ToString();
for (int i = 0; i < DataList1.Items.Count; i++)
{
RadioButtonList rbl = (RadioButtonList)(DataList1.Items[i].FindControl("RadioButtonList1"));
if (rbl != null)
{
if (rbl.SelectedValue.ToString() != "")
{
singlestudentAnswer += rbl.SelectedValue.ToString();//因为我用的是字符串将用户选的答案拼接然后与真正答案对比来判分,
}
else
{
singlestudentAnswer += "0";//如果没选就默认答案为0,答案只有ABCD,没有0,就可以算错了一题
} }
}
} //计算分数
//单选题分数
for (int i = 0; i < singleanswer.Length; i++)
{
if (singleanswer.Substring(i, 1).Equals(singlestudentAnswer.Substring(i, 1)))
point += 2;//对一题得2分
}
}
解决方案 »
- vs2005单步调试不运行,并且显示“VS2005 当前不会命中断点,还没有为该文档加载任何符号”的提示,是什么原因呢?
- jmail 有没有使用过呀,帮帮忙呀
- 关于IDataReader关闭问题
- 自由改变图片的显示大小,但是要让图片看起来跟原来一样清楚应该怎么做?
- ajax 刷新图标 出现问题
- 关于table问题,在线等待!
- 如何才能快速制作塞班S60证书
- 求 www.lipower.org 网站的JS下拉菜单的完整代码及如何在ASCX控件中移植的方法
- 如果想判断上传图片的长宽过大了,要怎样做呀?
- 如何在客户端向DATAGRID或DATALIST添加新行?
- 页面执行时间怎么获取
- DropDownList中的ListItem属性的问题
在这里用一个SortedDictionary类来放答案和题号的信息for (int i = 0; i < singleanswer.Length; i++)
{
if (singleanswer.Substring(i, 1).Equals(singlestudentAnswer.Substring(i, 1)))
point += 2;//对一题得2分
}这里如果是答案是错误的取相应的题号出来
这里就不用字符串了用
SortedList Info=new SortedList();
Info.Add("答案",“题号”);
用一个count来记正确答案的数量
在*分数.
for (int i = 0; i < DataList1.Items.Count; i++)
{
RadioButtonList rbl = (RadioButtonList)(DataList1.Items[i].FindControl("RadioButtonList1"));
if (rbl != null)
{
if (rbl.SelectedValue.ToString() != "")
{
count++;
}
}
}这是计算总分.
如果您想获取用户做错的信息.
把正确答案用红色?
把选过的错误答案用别的颜色?
//计算分数
//单选题分数
for (int i = 0; i < singleanswer.Length; i++)
{
if (singleanswer.Substring(i, 1).Equals(singlestudentAnswer.Substring(i, 1)))
point += 2;//对一题得2分
else{
// 用个list 或其他 装载错误的题号 再处理 不就可以了吗
listErrorAnswer.Add(i.ToString());
}
}
private void ModifyKind(int X)
{
//X= 0:删除帖子 1:普通 3:置顶 4:置顶且首页置顶
for (int i=0;i<DL_Main.Items.Count;i++ )
{
if (((CheckBox)DL_Main.Items[i].FindControl("selected")).Checked==true)
{
string s=((System.Web.UI.WebControls.HyperLink)DL_Main.Items[i].FindControl("Hyperlink3")).Text;
DBOperate.ExcSQL("UPDATE Questions SET kind ="+X.ToString()+" WHERE (Q_ID = "+s+")");
}
}
this.Response.Redirect(this.Request.Url.ToString());
}-----
重点取得它的值的方法:((CheckBox)DL_Main.Items[i].FindControl("selected")).Checked,复选框得名字"selected",修改它就可以找到对应得控件了。
不知道是不是你想得到的结果。