【问题标题】:Design help for a Online Questionnaire /Exam Application在线问卷/考试申请的设计帮助
【发布时间】:2011-03-08 05:27:25
【问题描述】:

我正在开发一个处理在线考试的网络应用程序。要求是:

  1. 中可以有 n 个部分 考试和管理员用户应该是 能够创建问题/答案和 添加到考试中。
  2. 应该显示问题 在一定时间内 带有时钟的浏览器,它应该 自动移至下一个问题。
  3. 如果正在进行考试,则不应允许用户打开任何其他浏览器实例或从其他 IP 登录。

我正在寻求社区对某人如何设计应用程序以满足所有这些标准的投票?应该使用什么模式?哪些组件可以帮助减少开发时间等。

我的技术堆栈是 C#、ASP.NET MVC 或带有 SQL Server 的 ASP.NET。

提前致谢!!!

【问题讨论】:

  • 要求 #3 似乎对于网络应用程序是不可能的?除非,考试只能从可以配置机器的特定位置访问,例如在教室中。
  • 您肯定可以实现某种门户来访问考试,然后只允许加载来自上一页的下一页?
  • edit:如果“其他实例”表示“考试站点的其他实例”,则可能会出现 #3。我实际上在想“任何网站的其他实例”。很抱歉造成混乱
  • 查看 Respondus Lockdown Browser 的要求 #3,这是您最复杂的要求。您无法在 Web 应用程序中满足此要求,但您可以将 Web 应用程序限制为仅在特定浏览器中运行。 respondus.com/products/lockdown.shtml
  • 如果学生作弊不能成功,而且这是一项与编程相关的测试,那么无论如何他们都应该失败;)

标签: c# asp.net design-patterns


【解决方案1】:

您不应重新发明轮子,而应查看诸如开源 DotNetNuke 之类的解决方案,并为特定于您的场景的部分购买/构建扩展。

我认为对于用户应用程序,您应该考虑使用 Silverlight 应用程序,因为它可以让您对体验进行精细而安全的控制。

整体解决方案是这样的:

  • DotNetNuke 提供基础门户/内容管理,因此您可以围绕考试体验创建高度定制的体验,包括对用户管理等的支持。
  • DotNetNuke 扩展将使授权管理员能够管理考试和试题。
  • Web 服务包装器将提供对 DotNetNuke 扩展所使用的业务控制器的访问。
  • Silverlight 应用程序将与 Web 服务交互,以使经过身份验证的用户能够参加考试

总体而言,这样的解决方案可以让您高度控制用户体验,同时让您能够专注于仅针对您的情况的时间/资源,同时利用现有、强大且流行的解决方案来构建您的解决方案.

(完全披露:我是管理 DotNetNuke 的公司的联合创始人之一。公平地说,您可以将我对 DotNetNuke 的建议替换为 Orchard 或 Umbraco,该解决方案同样有效。)

【讨论】:

  • 谢谢。这既没有告诉我有关模式的信息,也没有我对 DOTNETNUKE 感兴趣。我很久以前就用过它,它的响应时间太慢了。我同意 Silverlight 应用程序...
【解决方案2】:

对于数据库方面的事情,你会想要这样的东西:

Table Exams (ExamID, ExamName) //to hold all exams
Table Users(UserID, Username, Login, Password) //to hold all users
Table OpenExams(Exam_ID, User_ID) //to hold open exams
Table ExamSections(SectionID, Exam_ID, SectionName) //to hold sections of exams
Table Questions(QuestionID, Section_ID, QuestionName, Question, Answer) //to hold questions

这当然是最基本的,也是众多方法中的一种。您需要在需要的地方添加字段。

至于第 2 项,我可能会在应用层(或 VS)中进行。我在网络开发方面没有太多经验,但我认为 ASP 可以处理。对于第 3 项,您可以运行一个简单的 SQl 语句来获取尝试访问考试的用户当前是否正在参加考试。

【讨论】:

    【解决方案3】:

    让我们也开始映射进程: 用户: 1. 用户登录(防止一个用户多次考试)。 2. 用户“开始”考试 -> 服务器端记录时间,客户端触发计时器。用户获得动态考试页面 1。 3. 用户完成第 1 页,点击下一步 -> Ajax-重新加载页面内容(问题部分)。第 2 页的计时器已启动(服务器和客户端) 3.a) 检测到来自不同 IP 的登录 - 会话中断,用户被标记为作弊者:) 或者登录被拒绝。

    1. 用户在第 2 页超时 -> 自动提交页面内容(答案)。计时器设置为第 3 页。用户获取第 3 页。
    2. 用户点击完成 -> 考试结束。 管理员:
    3. 登录 -> 显示“添加考试”选项和现有考试表
    4. 添加考试 - 打开“考试页面”,添加新的“考试”实体
    5. 添加一个页面 -> 新的“页面”实体添加到此考试,问题表加载到 gui 中
    6. 添加一个问题 -> 新的“问题”对象添加到页面
    7. 结束页面 -> 页面已保存。结束考试或添加页面的选项在这里。
    8. 添加页面 -> 转到第 3 步
    9. 完成考试 -> 保存考试
    10. 可选择将考试标记为“活动/非活动”
    11. 添加带有“学生”的表格及其结果和类似内容。

    这需要大量的工作,但是当你有了这个之后,你就会知道你需要在你的设计中加入什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 2019-08-09
      • 2023-04-06
      • 1970-01-01
      • 2021-04-11
      相关资源
      最近更新 更多