c# - 为测验评分的正确方法

标签 c# asp.net oop

<分区>

我有一个应用程序,在 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!

关于c# - 为测验评分的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30674771/

相关文章:

c# - 方法参数线程安全吗?

c# - 缺少 System.Web.UI 和 System.Web.Security

c# - 在构建 Linq-to-Sql 代码时强制 Entity Framework 不生成 NCLOB(模型优先)

php - 非静态调用静态方法

c# - 是否放置方法来检索与单独类中的类相关的数据

javascript - Google map js api 在纯 html 页面中工作正常,但在 asp.net mvc 页面中不起作用

javascript - ASP.NET、母版页和 jQuery

asp.net - 防止 ASP.Net MVC 中的 Cookie 重放攻击

asp.net - ASP.NET 中缓存的模式和最佳实践是什么?

objective-c - 类实例方法?对象方法?