读书人

asp.net 动态生成试卷的有关问题

发布时间: 2013-06-26 14:29:32 作者: rapoo

asp.net 动态生成试卷的问题
要实现生成网上试卷的功能,试卷题目类型有单选,多选,和问答题。单选,多选题选项个数不确定,题目个数也不确定。数据库中有试题表,试题选项表,用户答案表。我怎样从数据库中读取试题和选项动态生成试卷? ASP.NET
[解决办法]
弄自定义的选择,由创建试卷的人来选定各种类型题目的数量,然后你去对应的题目里面随即抽取对应数量的题目出来即可-[喽水把子]
[解决办法]
试题是属于试卷的,首先要根据哪套试卷来遍历所有题目,根据题目类型分别加载本类型下的试题,再根据具体题目找出所有选项

分块会比较好,单选区域、多选区域、问答区域,然后分别遍历显示
[解决办法]
你可以在没有读数据库之前用随机数生成三种题型各个的题目数量,让后再到数据库随机读取每个题型相应的题数量
[解决办法]
根据具体情况,后台给个方向,让管理员添加试题的时候选择选择类型:单选,多选(给这栏设置个字段)

前台试题调用的时候,根据选择类型,在后台设置控件,服务器控件实现起来太麻烦,建议使用ajax的方式
追加服务器控件,实现多选和单选

下边是个例子,和你说的差不多


/// <summary>
/// 创建控件
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
private string createControl(Model.ProductAttribute item)
{
string input = "";
if (item.OptionalType.Value == 0)
{
if (item.EntryType.Value == 0) /*input*/
{
input += string.Format("<div><input type=\"text\" class=\"ipt1\" name=\"attr_[{0}]\"/></div>", item.ID);
}
else if (item.EntryType.Value == 1)/*select*/
{
input += string.Format("<div><select name=\"attr_[{0}]\">", item.ID);
input += "<option value=\"请选择\">请选择</option>";
foreach (string option in Regex.Split(item.OptionalValueList, "\r\n"))
{
if (!string.IsNullOrEmpty(option))
{
input += "<option value=\"" + option + "\">" + option + "</option>";


}
}
input += "</select></div>";
}
else if (item.EntryType.Value == 2)/*textarea*/
{
input += string.Format("<div><textarea class=\"ipt3\" name=\"attr_[{0}]\" cols=\"35\" rows=\"4\"></textarea></div>", item.ID);
}
}
else if (item.OptionalType.Value == 1
[解决办法]
item.OptionalType.Value == 2)
{
if (item.EntryType.Value == 0)
{
input += string.Format("<input name=\"hid_attr_{0}\" type=\"hidden\" value=\"1\" /><div><a href=\"javascript:;\" onclick=\"addControl(this,{0});\">[+]</a> <input type=\"text\" class=\"ipt1\" name=\"attr_[{0}]_1\"/>", item.ID);
input += string.Format("  属性价格 <input class=\"ipt1\" style=\"width:50px;\" type=\"text\" name=\"attr_price_[{0}]_1\"/></div>", item.ID);
}
if (item.EntryType.Value == 1)
{
input += string.Format("<input name=\"hid_attr_{0}\" type=\"hidden\" value=\"1\" /><div><a href=\"javascript:;\" onclick=\"addControl(this,{0});\">[+]</a> <select name=\"attr_[{0}]_1\">", item.ID);
input += "<option value=\"请选择\">请选择</option>";
foreach (string option in Regex.Split(item.OptionalValueList, "\r\n"))
{
if (!string.IsNullOrEmpty(option))
{
input += "<option value=\"" + option + "\">" + option + "</option>";


}
}
input += string.Format("</select>  属性价格 <input class=\"ipt1\" style=\"width:50px;\" type=\"text\" name=\"attr_price_[{0}]_1\"/></div>", item.ID);
}
else if (item.EntryType.Value == 2)
{
input += string.Format("<input name=\"hid_attr_{0}\" type=\"hidden\" value=\"1\" /><div><a href=\"javascript:;\" onclick=\"addControl(this,{0});\">[+]</a> <textarea class=\"ipt3\" name=\"attr_[{0}]_1\" cols=\"35\" rows=\"4\"></textarea>  属性价格 <input style=\"width:50px;\" type=\"text\" class=\"ipt1\" name=\"attr_price_[{0}]_1\"/></div>", item.ID);
}
}

return input;
}


[解决办法]
这个问题应该和你数据库设计关系要多一点,如果数据库设计好了,就生成试卷和答题很容易搞定的,

外部使用jquery 遍历出所有的答题答案 在把每个题的正确答案放在隐藏与对比一下就ok了.
[解决办法]
你是纠结客户端与服务器控件的问题吧?

那你就把所有的服务器控件都设置成:CheckBoxList

通过JS控制实现单选 还是多选

读书人网 >asp.net

热点推荐