小弟在做一个在线考试系统,CS下的
第一:怎样实现随即出题?
题目在数据库中结构是:题目编号、题库类别(那类学员的)、题目类型(选择判断)、题目标题、题目选项、题目答案,请问这样的结构可以吗?第二:用什么来盛放一道一道的题目第三:项目实现题目导航,应该如何实现也就是向下翻或是向需方。
第一:怎样实现随即出题?
题目在数据库中结构是:题目编号、题库类别(那类学员的)、题目类型(选择判断)、题目标题、题目选项、题目答案,请问这样的结构可以吗?第二:用什么来盛放一道一道的题目第三:项目实现题目导航,应该如何实现也就是向下翻或是向需方。
==
用程序产生随机数,可使用System.Random类的Next方法第二:用什么来盛放一道一道的题目
==
一般是数据库第三:项目实现题目导航,应该如何实现也就是向下翻或是向需方。
==
按钮事件
select *, NewID() from table //随机抽取一条纪录
不过这样很容易重复
你可以把题目的主键取出来放到一个List<>里(试题应该不会很多,一次取出来好了)
然后System.Random类的Next方法通过索引随机取一条,回答后移除二
存题目用数据库最方便了三
点击按键,再Random.Next()
2.DataBase
3.+1,-1.
//表示题目的类
private class Subject
{
public int Id;
int type;
int correctAnswer;
...
public int UserAnswer;
} /// <summary>
/// first field is the subject's ID
/// </summary>
Dictionary<int, Subject> subjects = new Dictionary<int, Subject>();
/// <summary>
/// store the subject's id, so you can get the previous/next subject
/// </summary>
List<int> indexList = new List<int>();
int minId = 0;
int maxId = 5000; // 题目编号最大值
int randomId = new Random().Next(minId, maxId); if (subjects.ContainsKey(randomId))
{
// 随机数已经使用过,重新生成一个
}
else
{
Subject sub = new Subject();
sub.UserAnswer = 1;
subjects.Add(sub.Id, sub);
indexList.Add(sub.Id);
} //找到第n个题目
Subject sub = subjects[ indexList[n] ];
产生个随机数,将该数代表的题目显示出来,题号list移除这个数
具体如下:
int n=random.Next(x,y);
另外 new Random 时候,可以用上 DateTime.Now.Ticks 之类的避免重复。