【《基于Java的在线考试系统项目的设计与实现》6700字(论文)】_第1页
【《基于Java的在线考试系统项目的设计与实现》6700字(论文)】_第2页
【《基于Java的在线考试系统项目的设计与实现》6700字(论文)】_第3页
【《基于Java的在线考试系统项目的设计与实现》6700字(论文)】_第4页
【《基于Java的在线考试系统项目的设计与实现》6700字(论文)】_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Java的在线考试系统项目的设计与实现目录TOC\o"1-3"\h\u28809摘要: 24302关键词 2131721绪论 2130781.1开发背景 2265301.2研究的目的及意义

2125671.3论文组织结构 3233202可行性研究 3222512.1需求分析 338752.1.1业务分析 3224822.1.2功能分析 331802.2可行性分析 4231992.2.1技术可行性分析 492672.2.2经济可行性 46022.2.3操作可行性 4289113系统设计 474313.1系统结构设计 4144373.2主要模块设计 5127403.2.1用户模块 591983.2.2答题模块 6124293.2.3成绩模块 6101253.3实体与数据 6228883.4整体E-R图 8304564数据库设计 8240184.1用户表(user) 981454.2学生表(student) 957884.3成绩表(score) 9231874.4考试表(exam) 9147444.5试卷表(paper) 10286754.6答案表(answer) 1055715系统模块实现 11161735.1用户模块实现 11209585.1.1登录功能实现 1141425.1.2修改密码功能实现 12185675.1.3注册功能实现 125975.1.4注销功能实现 13139005.1.5查询个人信息功能实现 1362545.2答题模块实现 14208345.2.1试卷列表功能实现 14154035.2.2答题功能实现 15245305.3成绩模块实现 1866615.3.1得出成绩并列出全部所得成绩功能实现 18185315.3.2查询特定成绩记录功能实现 202776.系统测试 20152456.1测试登录 2037566.2测试注册 21156636.3测试修改密码 21275726.4测试查询个人信息 21237866.5测试退出当前账号 21210316.6测试答题 2167266.7测试试卷列表展示 217916.8测试查询成绩 2169256.9测试查询特定成绩 2123068总结 2219847参考文献 22摘要:随着现代科技的日新月异,在线办公、在线教学、在线考试等都越来越多的被广泛使用。在过去的一段时间,由于疫情的影响,在线考试成为了教学中必不可少的方法,通过在线考试也省去了大量的人力物力、方便快捷、精准了判卷正确性,更加的行之有效。因此开发在线考试系统成为了必不可少的需求。本在线考试系统界面美观大方、功能完整多样、操作简单易懂。并且该系统也没有时间空间限制,只要有网络,在地铁上、公交车上都可以利用碎片化的时间进行在线考试以及学习。关键词:在线考试数据库JavaWeb程序设计1绪论1.1开发背景在互联网飞速发展的时代,网络几乎成了工作、学习、科研等不可缺少的一部分。在新冠肺炎疫情的影响下,为了响应国家的号召,学校以及各类学习机构开始了线上课程的学习以及线上考试。在线考试缓解了学校传统考试的压力,并且只要有网络就能够利用碎片化的时间进行学习。随着在线考试的需求越来越多,因此需要一种完善的在线考试系统,实现更优质的学习以及考试体验。1.2研究的目的及意义

开发此系统的目的是为了使学生们能够更方便快捷的进行考试、学习。在没有条件进行线下考试的情况下,可以有另一种有效的选择,还能够节省大量的人力物力,并且能够高效率,高精准的进行阅卷处理。能够推动教学工作的进一步发展,对促进学习教育也有较为重要的影响。通过对该项目的设计和实现,可以从中获得更多的经验与心得,将在课本上所学的理论知识运用在实践中。1.3论文组织结构为了论述在线考试系统的研究与开发,本文分为6个方面来论述每一过程的工作,从第二章具体布局如下:在本文的第2部分,对该项目进行了需求分析及可行性分析,将该系统主要分为以下功能:登录注册、答题、查询成绩、查询特定考试成绩、管理个人信息,并对各个功能进行简述。在本文的第3部分,对该项目进行了系统结构设计和主要模块设计,主要分为:用户模块、答题模块、成绩模块,并对各个模块进行概述。在本文的第4部分,首先对MySQL数据库进行了简单的介绍,然后分别列出了该项目所需数据库表的详细信息。在本文的第5部分,阐述了系统的基本功能,并对用户模块、答题模块、成绩模块的功能实现进行介绍。在本文的第6部分,对系统登录、注册、答题、查询成绩、查询个人信息、修改密码进行测试,并与预期结果进行对比,确保系统的安全。2可行性研究2.1需求分析2.1.1业务分析本系统面向所有的学生用户,从学生需求考虑出发,分析学生在使用该系统的过程中所需要的主要功能。学生需要登录注册,查看个人信息,修改密码,查询成绩,进行在线答题。2.1.2功能分析由业务分析得到如下主要功能:用户:(1)登录注册:用户可以在注册完成账号之后能够成功的进行登录到该系统。(2)答题:用户可以在该系统中选择相应的考试进行答题。(3)查询成绩:用户可以在该系统中进行查询以往考试所得到的成绩。(4)查询特定考试成绩:用户可以在该系统中通过搜索特定的试卷名称查看相应的成绩。(5)管理个人信息:用户可以在该系统进行个人基本信息的查看,并且能够修改个人的账号密码。2.2可行性分析2.2.1技术可行性分析该系统是基于JDK1.8的一个web项目,编程语言使用Java语言,使用MySQL数据库,前端页面采用JSP技术,服务器使用Tomcat。并且通过在校期间的学习,本人有能力可以独立完成该项目,所以该系统在技术上是可行的。2.2.2经济可行性该系统所使用的开发工具是免费的并且环境容易搭建,并且开发周期较短,所以该系统在开发成本上是经济可行的。2.2.3操作可行性该系统采用可视化WEB应用界面,用户只需要使用浏览器登录系统就可以进行相应的操作及使用,且该系统界面美观大方、功能完整多样、操作简单易懂。3系统设计3.1系统结构设计由该系统的功能分析,将该系统的功能主要分为以下几个模块如图1所示:在线考试系统在线考试系统用户模块答题模块成绩模块登录注册注销修改查询个人信息试卷列表答题操作得出成绩查询成绩查询特定成绩图1系统功能模块该系统为基于JDK1.8的一个web项目,使用三层架构,其包括:表现层、业务逻辑层、数据访问层。在三层架构中,每一层各司其职,如下为每一层所负责的各个方面:一、表现层(UI):在三层架构中,表现层位于最外层,负责显示数据以及接收用户所输入的数据,为用户提供了一种交互式操作的界面。二、业务逻辑层(BLL):处于数据访问层与表现层中间,负责业务逻辑处理,针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑进行处理。三、数据访问层(DAL):负责数据的增添、删除、修改、更新、查找等操作。3.2主要模块设计3.2.1用户模块用户在浏览器中输入相应的网址进入登录页面,输入正确的用户名,密码,验证码之后即可登录成功进入在线考试系统,使用相应的答题、查询个人信息、查询成绩、修改密码等功能。用户如果没有该系统的账号则需先进行账号注册,点击账号注册,进入账号注册页面,输入用户名,密码等相关注册信息,即可成功注册。注册完成后即可使用注册的账号进行登录在线考试系统并进行使用。3.2.2答题模块用户在在线考试系统中点击“我的考试”即可进入“我的考试”页面,页面中有个人的考试试卷,点击试卷名称后的“开始考试”,进入试卷题目页面,然后进行相应的答题操作,答题完成后,点击“交卷”,则完成了相应的考试,跳转到“我的考试”界面。3.2.3成绩模块用户在在线考试系统中点击“考试成绩”即可查询到个人以往所有考试的成绩,或者成绩记录过多而用户需要查询某一特定成绩,则可以在查询框中输入待查询试卷的试卷名,点击“查询”,即可查找到特定的成绩记录。3.3实体与数据为了将用户的数据要求描述清楚,需要建立数据模型。下面给出在线考试系统的数据模型,即系统E-R图。用户实体如图2所示。图2用户实体学生实体如图3所示。图3学生实体成绩实体如图4所示。图4成绩实体考试实体如图5所示。图5考试实体试卷实体如图6所示。图6试卷实体答案实体如图7所示。图7答案实体3.4整体E-R图如图8所示。图8整体E-R图4数据库设计本系统的数据表包含用户表(user),学生表(student),成绩表(score),考试表(exam),试卷表(paper),答案表(answer)。4.1用户表(user)该表包含的字段有:id,用户名,密码;设计如表1所示:表1用户表(user)字段名数据类型长度键字段意义idint10主键编号usernamevarchar50用户名passwordvarchar50密码4.2学生表(student)该表包含的字段有:学号,密码,姓名,班级;设计如表2所示:表2学生表(student)字段名数据类型长度键字段意义stuidVarchar20主键学号passwordVarchar20密码nameVarchar20姓名classnameVarchar20班级4.3成绩表(score)该表包含的字段有:id,学号,试卷名,成绩;设计如表3所示:表3成绩表(score)字段名数据类型长度键字段意义idint20主键编号stuidvarchar20主键学号papernamevarchar50试卷名gradeInt20成绩4.4考试表(exam)该表包含的字段有:学号,试卷编号,试卷名,状态;设计如表4所示:表4考试表(exam)字段名数据类型长度键字段意义Stuidvarchar20主键学号p_idint20主键试卷编号papernamevarchar50试卷名Stateint5状态(默认为1,表示未答题)4.5试卷表(paper)该表包含的字段有:试卷编号,题号,题干,选项A,选项B,选项C,选项D,答案,题目类型;设计如表5所示:表5试卷表(paper)字段名数据类型长度键字段意义p_idint20主键试卷编号t_idint20主键题号questionvarchar150题干questionAvarchar100选项AquestionBvarchar100选项BquestionCvarchar100选项CquestionDvarchar100选项Danswervarchar20答案typevarchar30题目类型4.6答案表(answer)该表包含的字段有:学号,试卷编号,题号,我的答案,状态;设计如表6所示:表6答案表(answer)字段名数据类型长度键字段意义Stuidvarchar20主键学号p_idint20主键试卷编号t_idint20主键题号myanswervarchar20我的答案stateint20状态(默认为1,表示未批改)5系统模块实现5.1用户模块实现5.1.1登录功能实现当用户需要登录到该系统时,在该系统的登录界面,输入用户名、密码、校验码,点击“登录”按钮,点击完成后前端表现层将会发送请求到后端服务器,将用户在表现层填写的登录信息提交到后端服务器,后端服务器接收请求之后,通过servlet业务逻辑处理层处理业务逻辑,调用业务逻辑层的方法获取输入的用户名、密码、校验码。当校验码输入正确时,调用数据持久层的方法与数据库中的用户名和密码进行比较,处理完成之后将结果封装成对象。若登录成功则保存到session,跳转到在线考试系统首页并将用户名回写到表现层;否则,将刷新当前登录界面并提示“用户不存在,请重新登录”。当校验码输入错误时,将刷新当前登录界面并提示“校验码错误”。登录界面如图9所示。图9登录界面5.1.2修改密码功能实现在该系统主页,点击“修改密码”,然后前端表现层将会发送请求到后端服务器,后端服务器接收请求之后,通过业务逻辑处理层处理业务逻辑,调用业务逻辑层的方法获取当前用户的用户名,然后调用数据持久层的方法查找出该用户的原始密码,处理完成后将结果封装成对象,返回到修改密码界面。在修改密码界面,输入新密码,点击“确认保存”按钮。前端表现层发送请求到后端服务器,将用户在表现层填写的新密码提交到后端服务器,服务器接收请求之后,调用业务逻辑层的方法获取新密码,然后调用数据持久层的方法更新记录,更新完成后弹出提示框“修改成功”,并跳转到在线考试系统主页。修改密码界面如图10所示,提示框如图11所示。图10修改密码界面图11弹出框界面5.1.3注册功能实现当新用户需要注册账号时,在浏览器中输入该系统登录页面的网址,在该系统的登录界面,点击“注册账号”,跳转到注册界面;然后在新用户注册页面输入相应的注册信息,点击“提交注册”。点击完成后前端表现层将会发送请求到后端服务器,将用户在表现层填写的数据提交到后端服务器,后端服务器接收请求之后,调用业务逻辑层的方法获取返回值。然后调用数据持久层的方法将注册信息进行存储到用户表,处理完成之后将结果封装成对象,返回到表现层,表现层对数据进行判断是否注册成功。若注册成功则跳转到登录界面,否则,将刷新当前注册界面进行重新注册。在注册账号时,学号、密码、姓名、班级等字段都不可空缺,若空缺则给出相应的提示,并刷新当前注册界面。注册账号界面如图12所示。图12注册账号界面5.1.4注销功能实现在该系统的主界面,点击右上角按钮,网页则注销账号,销毁用户信息对象,并跳转到登录界面。5.1.5查询个人信息功能实现在该系统主页,点击“个人信息”,表现层将会发送请求到服务器,服务器接收请求之后,调用业务逻辑层的方法获取当前用户的用户名,然后调用数据持久层的方法查找出该用户的所有个人信息,处理完成后将结果封装成对象,返回到个人信息界面。并且在页面左上角会显示当前用户。个人信息界面如图13所示。图13个人信息界面5.2答题模块实现5.2.1试卷列表功能实现在该系统主页,点击“我的考试”,表现层将会发送请求到服务器,服务器接收请求之后,调用业务逻辑层的方法获取当前用户的用户名,然后调用数据持久层的方法查找出该用户的所有试卷状态为“待答题”的试卷信息,处理完成后将结果封装成对象,在“我的考试目录”界面进行展示。试卷列表界面如图14所示。图14试卷列表界面5.2.2答题功能实现在试卷列表界面点击“开始答题”跳转到答题界面,在“我的答案”框中输入答案,点击下一题,直到所有题目答完点击“交卷”按钮。跳转到试卷列表界面。答题界面如图15,图16所示。图15答题界面图16答题界面protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringcmd=request.getPathInfo(); PaperDaodao=newPaperDao(); AnswerDaoandao=newAnswerDao(); HttpSessionsession=request.getSession(); if("/begin".equals(cmd)){ Stringstuid=request.getParameter("stuid"); Stringp_id=request.getParameter("p_id"); session.setAttribute("stuid",stuid); session.setAttribute("p_id",p_id); Stringi=request.getParameter("i"); Paperpaper=null; try{ paper=dao.selectByPidTid(p_id,i); }catch(SQLExceptione){ e.printStackTrace(); } request.setAttribute("paper",paper); doPage("/WEB-INF/exam/content_paper.jsp",request,response); }elseif("/next".equals(cmd)){ Stringstuid=(String)session.getAttribute("stuid"); Stringp_id=(String)session.getAttribute("p_id"); Stringth=request.getParameter("th"); Longth1=Long.parseLong(th)-1; Stringmyanswer=request.getParameter("myanswer"); try{ andao.insert(stuid,p_id,th1,myanswer); }catch(SQLExceptione){ e.printStackTrace(); } if("2".equals(th)||"3".equals(th)||"4".equals(th)||"5".equals(th)){ Paperpaper=null; try{ paper=dao.selectByPidTid(p_id,th); }catch(SQLExceptione){ e.printStackTrace(); } request.setAttribute("paper",paper); doPage("/WEB-INF/exam/content_paper.jsp",request,response); return; }else{ ExamDaoexdao=newExamDao(); Stringusername=(String)session.getAttribute("stuid"); p_id=(String)session.getAttribute("p_id"); intstate=1; intstate1=0; try{ exdao.update(username,p_id,state1); }catch(SQLExceptione1){ e1.printStackTrace(); } try{ List<Exam>list=exdao.selectByStuIdState(username,state); request.setAttribute("list",list); doPage("/WEB-INF/exam/index_paper.jsp",request,response); return; }catch(SQLExceptione){ e.printStackTrace(); } return; } } }5.3成绩模块实现5.3.1得出成绩并列出全部所得成绩功能实现点击“考试成绩”会执行相应的改卷操作(批改答案表中状态为未批改的记录),批改完成后,将当前用户所有的成绩记录展示出来。考试成绩目录界面如图17所示。图17成绩列表界面protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringcmd=request.getPathInfo(); ScoreDaodao=newScoreDao(); AnswerDaoandao=newAnswerDao(); ExamDaoexdao=newExamDao(); HttpSessionsession=request.getSession(); if("/list".equals(cmd)){ Stringusername=request.getParameter("username"); intstate=1; List<Answer>anlist=null; try{ anlist=andao.selectByStuIdState(username,state); }catch(SQLExceptione1){ e1.printStackTrace(); } if(anlist.size()>0){ int[]p=newint[2]; try{ p=andao.selectByStuIdState1(username,state); for(inti=0;i<p.length;i++){ intp_id=p[i]; intgrade=0; List<Compare>list=andao.selectByOther(p_id,state,username); for(intj=0;j<list.size();j++){ Stringanswer=list.get(j).getAnswer(); Stringmyanswer=list.get(j).getMyanswer(); if(answer.equals(myanswer)){ grade+=20; } } List<Exam>exlist=exdao.selectByPid(username,p_id); Stringpapername=exlist.get(0).getPapername(); dao.insert(username,papername,grade); intstate1=0; andao.update(username,p_id,state1); } session.setAttribute("usename",username); try{ List<Score>slist=dao.selectById(username); request.setAttribute("list",slist); doPage("/WEB-INF/score/index_score.jsp",request,response); return; }catch(SQLExceptione){ e.printStackTrace(); } }catch(SQLExceptione){ e.printStackTrace(); } }else{ session.setAttribute("usename",username); try{ List<Score>list=dao.selectById(username); request.setAttribute("list",list); doPage("/WEB-INF/score/index_score.jsp",request,response); return; }catch(SQLExceptione){ e.printStackTrace(); } } } }5.3.2查询特定成绩记录功能实现在考试成绩目录界面右上角有个“试卷名”输入框,和“查询”按钮。在输入框中输入需要查询记录的试卷名,点击“查询”按钮,表现层将会发送请求到服务器,服务器接收请求之后,调用业务逻辑层的方法获取当前用户的用户名和所查询成绩的试卷名,然后调用数据持久层的方法查找出该用户的该试卷的成绩信息,处理完成后将结果封装成对象,在“考试成绩目录”界面进行展示。如图18所示。图18特定成绩查询界面6.系统测试6.1测试登录在登录界面输入用户名、密码、验证码,且用户名和密码必须匹配,验证码输入正确,才可登录成功进入系统主页面。若任意一个为空、用户名和密码匹配错误或者验证码输入错误,系统会提示用户不存在或验证码输入错误并刷新跳转回登录界面。测试结果符合预期结果。6.2测试注册在登录界面点击注册账号,跳转到注册界面,输入相应的注册信息,点击提交注册按钮即可注册成功并跳转到登录界面。若在注册界面任意一个注册信息为空则提示该信息不能为空,并刷新跳转回注

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论