关于在线考试系统的一些问题,分不够可以再加!

时间:2022-04-28 21:30:31
偶系菜鸟,要做一个在线考试系统。
1. 怎么在页面上显示填空题(从DB中读出填空题后,如何将要填空的地方用控件代替)
2. 如何设计数据库表比较好(题型不是固定的,靠老师选择一些题型及每种题型的数量生成试卷)
3. 教师端如何做到可以调出考生已考的试卷查看学生作答情况(不要使用静态页面)

如上,希望各高手及高高手帮小弟一把,小弟将感激涕零!!!(分不够一定加!)

11 个解决方案

#1


录入试题的时候填空题用特殊做个记号,到时候用替换的。

最近要毕业了还是杂的,那么多人问这个问题,我建议你去搜索一下,天天看到,汗。。

#2


2、一门考试两个表,一个表试题,至少有题目序号、题型、内容字段
一个表答案,一个学生一道题的回答占一条记录,至少学号、题目序号、答案三个字段

3、可以单独生成一个页面用来浏览全部题目,答题的页面每5个一组,每完成5个点“下一页”或“上一页”的时候将答案保存到数据库,老师就可以基本上实时看到解答的情况了。

#3


问题是怎么替换啊,(声明:我才大三,不是毕业设计)

#4


问题没那么简单,一门考试有N种题型的,内容字段也就可能代表N种格式,(而且选什么题型不是固定的)如果试卷中同时有选择题和论述题,对于大型的考试,数据库空间浪费太大了!

老师无需实时看到解答情况,倒是大量的试卷及学生答案怎么绑定存在数据库里的问题(注意:因为题型多才有这个麻烦的,如果都是选择题,我也不用问了)

#5


非要替换吗?
留一条下划线,然后在题目后面留textbox不行吗?

#6


不好,如果可以的话,最好要替换掉

#7


数据库空间浪费问题不用考虑,现在的数据库处理几万人的考试很轻松,用SqlServer几十万也能应付(真几十万人的话一般就不能只用一台服务器了)
有时候不用死扣这一点空间,硬盘上百G呢,不用不是浪费吗?

存放答案的表再加上这个题目的题型,取出内容来根据类型处理还不容易吗?

当然想解决这个问题也可以,每种题型建一个表就可以。不过这样浪费代码和体力。

#8


我不是一般的菜,问具体点,知道题号和考生的作答,如何将题目和答案绑定后显示在页面上呢(要考虑题型的)有没有一种搞法就是建立一个模板,然后对于学生的作答只要直接向模板上导就生成学生的答卷啊?

#9


是不是所有的答案都可以用字符串表示呢?如果是的话偷懒一下就直接显示字符串了。

如果要根据题型将答案格式化,需要自定义一个函数,一个参数是从数据库中读出来的答案,另一个参数是题型,返回格式化了的答案(字符串/HTML/ControlCollection),在数据绑定的时候调用,就可以处理已知的题型了

#10


填空替换有办法了,刚刚试验成功,给你一段:
private void Page_Load(object sender, System.EventArgs e)
{
string test1 = "你今年<blank>岁了?上<blank>年级?";

while (test1.IndexOf("<blank>") >= 0)
{
Panel1.Controls.Add( new LiteralControl( test1.Substring(0, test1.IndexOf("<blank>")) ));
TextBox tb = new TextBox();
Panel1.Controls.Add(tb);
test1 = test1.Remove(0, test1.IndexOf("<blank>") + 7);
}
Panel1.Controls.Add( new LiteralControl(test1) );
}

private void Button1_Click(object sender, System.EventArgs e)
{
foreach ( Control ctrl in Panel1.Controls )
{
if ( ctrl.GetType().ToString() == "System.Web.UI.WebControls.TextBox" )
{
Response.Write( ((TextBox)ctrl).Text );
}
}
}

#11


一直没有结贴,很不好意思,现在要走了,结了帖,顺便说一句:不好意思了

#1


录入试题的时候填空题用特殊做个记号,到时候用替换的。

最近要毕业了还是杂的,那么多人问这个问题,我建议你去搜索一下,天天看到,汗。。

#2


2、一门考试两个表,一个表试题,至少有题目序号、题型、内容字段
一个表答案,一个学生一道题的回答占一条记录,至少学号、题目序号、答案三个字段

3、可以单独生成一个页面用来浏览全部题目,答题的页面每5个一组,每完成5个点“下一页”或“上一页”的时候将答案保存到数据库,老师就可以基本上实时看到解答的情况了。

#3


问题是怎么替换啊,(声明:我才大三,不是毕业设计)

#4


问题没那么简单,一门考试有N种题型的,内容字段也就可能代表N种格式,(而且选什么题型不是固定的)如果试卷中同时有选择题和论述题,对于大型的考试,数据库空间浪费太大了!

老师无需实时看到解答情况,倒是大量的试卷及学生答案怎么绑定存在数据库里的问题(注意:因为题型多才有这个麻烦的,如果都是选择题,我也不用问了)

#5


非要替换吗?
留一条下划线,然后在题目后面留textbox不行吗?

#6


不好,如果可以的话,最好要替换掉

#7


数据库空间浪费问题不用考虑,现在的数据库处理几万人的考试很轻松,用SqlServer几十万也能应付(真几十万人的话一般就不能只用一台服务器了)
有时候不用死扣这一点空间,硬盘上百G呢,不用不是浪费吗?

存放答案的表再加上这个题目的题型,取出内容来根据类型处理还不容易吗?

当然想解决这个问题也可以,每种题型建一个表就可以。不过这样浪费代码和体力。

#8


我不是一般的菜,问具体点,知道题号和考生的作答,如何将题目和答案绑定后显示在页面上呢(要考虑题型的)有没有一种搞法就是建立一个模板,然后对于学生的作答只要直接向模板上导就生成学生的答卷啊?

#9


是不是所有的答案都可以用字符串表示呢?如果是的话偷懒一下就直接显示字符串了。

如果要根据题型将答案格式化,需要自定义一个函数,一个参数是从数据库中读出来的答案,另一个参数是题型,返回格式化了的答案(字符串/HTML/ControlCollection),在数据绑定的时候调用,就可以处理已知的题型了

#10


填空替换有办法了,刚刚试验成功,给你一段:
private void Page_Load(object sender, System.EventArgs e)
{
string test1 = "你今年<blank>岁了?上<blank>年级?";

while (test1.IndexOf("<blank>") >= 0)
{
Panel1.Controls.Add( new LiteralControl( test1.Substring(0, test1.IndexOf("<blank>")) ));
TextBox tb = new TextBox();
Panel1.Controls.Add(tb);
test1 = test1.Remove(0, test1.IndexOf("<blank>") + 7);
}
Panel1.Controls.Add( new LiteralControl(test1) );
}

private void Button1_Click(object sender, System.EventArgs e)
{
foreach ( Control ctrl in Panel1.Controls )
{
if ( ctrl.GetType().ToString() == "System.Web.UI.WebControls.TextBox" )
{
Response.Write( ((TextBox)ctrl).Text );
}
}
}

#11


一直没有结贴,很不好意思,现在要走了,结了帖,顺便说一句:不好意思了