2011-03-08 67 views
3

我正在开发一个网络应用程序,它将处理在线考试。要求是:在线调查问卷/考试应用程序的设计帮助

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

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

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

在此先感谢!

+0

需求#3似乎是不可能的与Web应用程序?除非只能在可配置机器的特定位置(例如在教室中)访问考试。 – 2011-03-08 05:38:07

+0

当然,您可以实施某种门户来访问考试,然后只允许来自上一页的下一页加载? – Simon 2011-03-08 05:47:36

+0

编辑:如果“其他实例”是指“考试网站的其他实例”,#3可能是可能的。我实际上在想“任何网站的其他实例”。对于混淆 – 2011-03-08 06:02:51

回答

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 

当然,这也只有1个多的方法。您需要根据需要添加字段。

至于第2项,我可能做到这一点在应用层(或在VS)。我没有太多的web开发经验,但我认为ASP可以处理。对于第3项,如果试图访问考试的用户正在参加考试,则可以运行简单的SQl语句。

+0

Thanks.I正在寻找关于模式和设计的指导。数据库方面很好... – sajoshi 2011-03-15 04:07:38

4

而不是重新发明轮子,你应该看看一个解决方案,例如开源的DotNetNuke和要么购买/建立特定于您的方案的部分的延伸。

我认为对于用户的应用程序,你应该考虑Silverlight应用程序,因为这将让你在体验颗粒状及安全控制。

总体解决办法是这样的:

  • DotNetNuke的提供了基础的门户/内容管理,所以你可以创建一个高度个性化的体验各地包括用户管理等
  • 支持考试经验DotNetNuke扩展将使授权管理员能够管理考试和考试问题。
  • web服务包装将提供访问由DotNetNuke的扩展使用的业务控制器。
  • 一个Silverlight应用程序将与Web服务交互,使身份验证的用户把他们的考试

总体而言,这样的解决方案会给你一个高度的对用户体验的控制的同时使您能够集中时间/资源只针对您的情况,同时利用现有的,强大且流行的解决方案来构建您的解决方案。

(全面披露:我管理的DotNetNuke公司的联合创始人之一公平地说,你可以代替我的建议,为DotNetNuke与果园或一把umbraco和解决方案也同样有效。)

+0

谢谢。这也没有告诉我关于模式,也没有我对DOTNETNUKE感兴趣。我很久以前就用它了,它的响应时间太慢了..我同意Silverlight应用程序... – sajoshi 2011-03-22 03:01:45

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. 添加表与“学生”,其结果之类的东西。

这需要很多工作,但是当你有这个需求时,你就会明白你需要在设计中加入什么。