浅析基于web的在线考试系统的设计与开发——学生考试及教师管理模块内容摘要:

的客户端代码通过调用服务器端的功能接口来提供所需的各种服务 [4]。 控制层集中了系统的业务逻辑处理,他通过接受 请求,经过判断,调用处理该请求的业务代码,分析返回的结果,然后把结果返回到表示层,通过 JSP页面显示出来。 数据层为业务代码提供服务,使业务代码不必关心底层数据库采用哪一种数据库。 数据层封装了所有业务关于数据的处理,由它来和数据库直接交互,只提供数据操作的接口。 系统的用例图 在线考试系统的主要目标是实现在线考试,围绕这一中心任务,必须提供对在线考试的全面支持 ,由于分工合作,本论文主要负责 ,包括动态出卷、自动评卷、成绩查询、用户信息管理、试题库管理、成绩管理等。 整个系统的用户有三类:考生、教师和系统管理员。 这三类用户的相关信息都被存储在数据库中,称之为合法用户。 他们具有不同权限,进入考试系统前,必须经过系统的身份验证,用户只有具有其中一种合法用户身份,才能进入系统,对系统规定资源进行访问。 本论文只负责教师,学生这个两类用户,这两类用户的用例图如图 2图 22所示。 考生登录系统后,可以对自己的信息进行更改,申请考试,开始考试,查看自己的成绩。 教师是考试科目的创建者、考试的实施者,登录系统后可以对题库管理、考生申请维护、查看考生成绩几处进行操作 [5]。 图 21 学生用例图 图 21 学生用例图 6 图 22 教师用例图 在线考试的模块流程 在线考试是系统的核心模块,其中包含选择考试类型、答卷、交卷、自动评卷、保存答案和保存成绩等几个模块,它们之间的关系如图 23所示。 图 23 在线考试模块流程图 进入系统前进行身份验证,通过后学 生便可进入在线考试系统。 另外,系统还对考试时间进行控制,时间到了会要求考试者交卷。 在抽取试卷、进行考试、交卷时都要进行身份验证,考试者选择将答卷提交后,由计算机自动评卷。 自动评卷成绩即记入考试成绩库,以方便查分。 7 3 系统开发 经过前面对在线考试系统进行一系列的分析,经过分析之后开始真正开始实施编码阶段,有了充分的分析和设计结果加上坚实的编程语言功底,这个阶段的工作就能快速平稳的进行,据经验得知只有需求分析充分,在编码阶段才可能迅速进行,否则中途返工将非常浪费时间。 根据前阶段开发出来的用例图,下 一步的工作就是编制实现系统的代码。 本设计我使用的编程语言是 JAVA。 MyEclipse +SQL Server 2020作为开发环境提供了一个统一的集成的开发环境,其中集成了许多可视化辅助工具,因此对于用户界面的建立和代码的生成来说是比较简单的。 图 31 登录界面图 系统登录的主要代码: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { (UTF8)。 8 String examID=(examID).trim()。 String userPassword=request .getParameter(userPassword).trim()。 String msg=。 if(()||()) { msg=信息填写不完整。 请填写完整。 (msg, msg)。 () .forward(request, response)。 } else{ UserDAO userdao=new UserDAO()。 User user=(examID, userPassword)。 if(user==null){ msg=用户名或密码错误。 (msg, msg)。 () .forward(request, response)。 } else{ ().setAttribute(user, user)。 () .forward(request, response)。 } } 9 考生考试的整个流程 考生成功登录考试系统之后,会出现该考生被允许考试的科目,会进入下图界面 图 32 选择考试的界面图 考生点击任何一门允许的考试,会向名为 EXAM的 servlet发送 Http请求, tomcat服务器通过 EXAM的 java servlet类,并向该 servlet类传递一个代表该科目的testid:浏览器中显示为: 8080/G_Online/Exam?Testid = 3 如下图 33所示 图 33 考试界面图 Examservlet 通过该 testid会从数据库中取得该科目下问题数,得到问题数之后,会 10 进行相应的分页初始化(从 ),本系统默认每页只显示一条记录。 QuestionDAO qd=new QuestionDAO()。 int q_amount=(testid)。 if(q_amount==0) { String msg=找不到这门考试的试题。 (msg, msg)。 () .forward(request, response)。 return。 } else{ ().setAttribute(ex_testid, testid)。 ().setAttribute(ex_q_amount, q_amount)。 Properties p=new Properties()。 InputStreamin=(). getResourceAsStream(/)。 int row_count=Integer .parseInt((row_count))。 ()。 } 分页初始化之后, Examservlet会通过科目号( testid)、起始问题的序号( offset)以及问题数从数据库中取得符合该条件的问题列表,并把它写进 session中,由 jsp页面从session中取得该问题列表,并显示出来: int offset=((q_no1)/row_count)*row_count。 ().setAttribute(ex_offset, offset)。 ().setAttribute(ex_r。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。