我有一个应用程序,在 3 周的时间内一次呈现 3 个不同的测验。它被用作内部员工竞赛,旨在提供有关客户产品之一的知识。我已经使用 .NET aspx 页面对前端进行了编码,它会显示测验。然后我有一个用于给测验评分的类文件。我坚持的是在类里面存储答案的正确方法。显然,答案将是静态的,不会改变。每个测验有 5 个问题。
我想到的一种方法是在对测验进行评分的类中声明一些变量,每个测验每个答案一个,然后传入已完成的测验并使用这些变量的内容对测验进行评分。那不是很面向对象。因此,在不使事情过于复杂的情况下,为每个有答案的测验创建一个类,然后我可以创建该类的一个实例并只读入 Class.Answer1 等会更好吗?一个粗略的例子是:
public class QuizOne {
public property answer1 = "A";
public property answer2 = "B";
public property answer3 = "B";
public property answer4 = "C";
public property answer5 = "E";
}
每次测验我都可以上一节这样的课。然后我可以在评分类中使用一些代码来查找要实例化的类,然后在实例化后我可以这样做:
if(quiz.answer1 == answered1){
// do something for the correct answer
} else {
// do something for the incorrect answer
}
想法或建议?
这是一个有点宽泛的问题,所以这个答案有点宽泛,但听起来您可以在这里进行一些正确的对象设计。
首先,我一般(在 C# 中)将 Quiz
声明为一个类。以下内容:
public class Quiz
{
public Guid Id { get; set; }
public List<Question> Questions { get; set; }
}
然后,我将声明一个 Question
类:
public class Question
{
public string Title { get; set; }
public List<Answer> Answers { get; set; }
}
最后,声明一个Answer
类:
public class Answer
{
public string Text { get; set; }
public int Points { get; set; }
}
应该很清楚从这里去哪里。正确答案将以 Points > 0
表示,错误答案将以 Points = 0
表示。
然后,您可以在未来将其扩展到其他用途。
您可以通过多种方式将其保存到数据库中。最简单的是两列的 Quiz
表,一列用于 Id (uniqueidentifier)
,另一列用于 Questions (nvarchar(max))
.您可以使用内置的 System.Web.Script.Serialization.JavaScriptSerializer
(或 System.Xml.Serialization.XmlSerializer
)将其存入数据库。
然后您根据正确性奖励积分
。 (我有时会在项目中使用它,因为我的一些测验
和测试
有多个正确答案,其中一些比其他的更正确。这意味着如果答案 B 和 C 在技术上都是正确的,而答案 D 是 B 和 C
,那么答案 D 将获得更多分数,依此类推。)您也不必担心此处的 A/B/C/D/E
,因为技术上这是一个显示问题。
另外,请注意:这是我通常如何解决问题的非常基本的表示,但它绝对可以帮助您入门。
此外,这更适合 StackExchange 网站 programmers .
Why?
If you have a question about...
- software requirements
- software architecture and design
- algorithm and data structure concepts
...
...then you're in the right place to ask your question!