在线调查问卷/考试申请的设计帮助

时间:2011-03-08 05:27:26

标签: c# asp.net design-patterns

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

  1. 可以有n个部分 考试和管理员用户应该是 能够创建问题/答案和 加入考试。
  2. 应显示问题 在一段时间内 浏览器与时钟,它应该 自动转到下一个问题。
  3. 如果考试正在进行中,则不允许用户打开浏览器的任何其他实例或从其他IP登录。
  4. 我正在寻求社区投票,有人会如何设计应用程序以满足所有这些标准?应该使用哪些模式?哪些组件可以帮助缩短开发时间等。

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

    提前致谢!!!

3 个答案:

答案 0 :(得分:4)

您应该查看开源DotNetNuke等解决方案,而不是重新发明轮子,并购买/构建特定于您的方案的部分的扩展。

我认为对于用户应用程序,您应该考虑使用Silverlight应用程序,因为这将为您提供对体验的精确和安全控制。

总的来说,解决方案是这样的:

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

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

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

答案 1 :(得分: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)中进行。我在web开发方面没有太多经验,但我认为ASP可以解决这个问题。对于第3项,如果尝试访问考试的用户正在参加考试,您可以运行一个简单的SQl语句。

答案 2 :(得分:1)

让我们也开始映射进程: 用户: 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. 添加“学生”表及其结果和类似内容。
  12. 这需要做很多工作,但是如果你有了这个,你就会知道你需要在设计中加入什么。