【高校在线考试平台设计与实现(论文)8800字】_第1页
【高校在线考试平台设计与实现(论文)8800字】_第2页
【高校在线考试平台设计与实现(论文)8800字】_第3页
【高校在线考试平台设计与实现(论文)8800字】_第4页
【高校在线考试平台设计与实现(论文)8800字】_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

图1所示:高校在线考试高校在线考试教师端管理员端学生端教师端管理员端学生端信息模块教师管理班级管理后台登录信息模块试题管理试卷管理考试中心登录模块注册模块考试安排历史考试模块信息模块教师管理班级管理后台登录信息模块试题管理试卷管理考试中心登录模块注册模块考试安排历史考试模块图SEQ图\*ARABIC1系统功能模块图(二)数据库设计1.数据库的概念结构设计通过对在线考试实际情况的分析时,我们发现系统的主要实体有以下这些:学生实体、教师(管理员)实体、班级实体、试题实体、科目实体、考试实体。每一个实体都具有其相应的一些属性,我们根据在线考试功能的分析,对数据库进行相应的设计,这些实体的描述如下图所示:学生姓名学生姓名班级名称编号学生班级名称编号学生密码账号密码账号图SEQ图\*ARABIC2学生功能E-R图姓名姓名教师是否有管理权限ID教师是否有管理权限ID密码账号密码账号图3教师功能E-R图班级名称班级名称ID老师IDID老师ID班级班级年级年级图4班级功能E-R图题目试卷类型题目试卷类型ID分数ID分数试题试题科目科目难度难度图5试题功能E-R图科目名称科目名称ID是否分科科目ID是否分科科目年级ID年级ID图6科目功能E-R图试卷名称试卷名称考试时长ID试卷考试时长ID试卷总分数题目数量总分数题目数量图7试卷功能E-R图系统总体E-R图主要由以上实体组成,如图8所示:1N1组成成成学生班级1N1组成成成学生班级MM选择选择成成NN科目科目MMN教师管理N教师管理成成图8系统总体功能E-R图2.数据库的逻辑结构设计高校在线考试平台设计与实现主要采用MySQL数据库作为我们的物理存储设备,数据库命名为student-management。数据库中的表紧密连接,构成了整个系统的骨架,系统所涉及到的表的设置如下所示。表1是我们系统的学生信息表,主要是用来存储学生的姓名,学生注册的账号,学生填写的密码信息,具体如下图。表1xueshenginfo表字段英文名字段数据类型字段的长度是否为空字段中文说明xsbh.Idint18否学生编号(主键)xs.Namevarchar60否学生注册的姓名xs.Accountvarchar70否学生注册的账号xs.Pwdvarchar60否学生注册的密码bj.Idint18否班级编号表2主要是存储我们的教师的信息,包括教师注册的账号,教师注册的密码,以及教师是否是管理员,具体如下图所示。表2jiaoshiinfo表字段英文名字段数据类型字段的长度是否为空字段中文说明js.Idint18否教师编号(主键)js.Namevarchar20否教师注册的名称js.Accountvarchar20否教师注册的账号js.Pwdvarchar20否教师注册的密码jsgly.Powerint18否教师的管理权限是不是管理员表3主要是用来存放我们的班级信息,年级编号作为班级信息表的外键与年级表的主键年级编号关联,教师编号作为班级信息表的外键与教师信息表的主键教师编号相关联,具体如下所示。表3bjinfo表字段英文名字段数据类型字段的长度是否为空字段中文说明bjbh.Idint20否班级编号(主键)bj.Namevarchar40否班级的名称njbh.Idint30否年级编号jsbh.Idint20是教师编号表4用来存储我们的试题的所有信息,包括考试的试题题目,试题的分数,试题的类型,试题的正确答案等,具体如下图所示。表4stinfo表字段英文名字段数据类型字段的长度是否为空字段中文说明tmbh.Idint20否题目编号(主键)tm.Namevarchar600否题目的名称xx.Avarchar600否A这个选项xx.Bvarchar600否B这个选项xx.Cvarchar600否C这个选项xx.Dvarchar600否D这个选项Right.tmvarchar600否本题的正确答案Subject.fsint20否本题的题目分数Subject.lxint20是所答题目的类型:是单选,还是多选kcbh.Idint20否课程编号njbh.Idint20否年级的编号Subject.kncdint20是本题的题目困难程度:简单还是困难Fkqkint20是学生的分科情况表5是用来存放我们的科目信息的数据表,分科情况作为课程信息表的外键与试题信息表的外键分科情况关联,年级编号作为课程表的外键和年级信息表的主键年级编号关联,学科编号作为课程信息表的主键与试卷信息表的外键学科编号关联,具体如下所示。表5kmInfo表字段英文名字段数据类型字段的长度是否为空字段中文说明xkbh.Idint20否学科编号(主键)xk.Namevarchar100否学科的名称Fkqkint20是所选的分科情况njbh.Idint20是年级编号表6是我们的试卷信息表,主要包括试卷的名称,所答试卷的题目数量,所答试卷所要用到的考试时间,所答试卷的最终分数,具体如下所示。表6sjinfo表字段英文名称字段数据类型字段的长度是否为空字段中文说明kssjbh.Idint20否考试试卷编号(主键)kssj.Namevarchar100否所答试卷的名称km.Numint20否进行考试的科目名称ksjx.Timeint20否进行考试的时间sjScoreint20否考试试卷的分数njbhIdint20否年级编号Fkqkint20是所选的分科情况sjEasyint20是试卷的难易程度表7是我们的试卷试题的答案表,主要包括考生的编号,考生所要考试的试题试卷以及所答试题的题目的正确答案,具体如下所示。表7sjstinfo表字段英文名字段数据类型字段的长度是否为空字段中文说明stbh.Idint20否考试试题编号(主键)xsbh.Idint20否学生编号sjbh.Idint20否试卷编号stbh.Idint20否试题编号tm.Resultvarchar600否所答题目的正确答案表8是考试历史信息查询表,考生和老师可以对该学生考试的历史信息进行回顾,具体如下所示。表8kslsinfo表字段英文名字段数据类型字段的长度是否为空字段中文说明lsbh.Idint20否考试历史编号(主键)xsbh.Idint20否学生编号ksstbh.Idint20否考试试题编号ks.Scoreint20是考试所得的分数表9是考试安排管理表,记录这对班级,科目,考试试卷,开考的时间,具体如下所示。表9ksapinfo表字段英文名字段数据类型字段的长度是否为空字段中文说明ksapbh.Idint20否考试安排编号(主键)kcbh.Idint20否课程编号bjbh.Idint20否班级编号sjbh.Idint20否试卷编号kssy.Timedatetime30是考试所用的时间表10是试卷试题关联表,对试卷题目进行添加,存储在这个表里面,具体如下所示。表10sjstinfo表字段英文名字段数据类型字段的长度是否为空字段中文说明sjstbh.Idint20否试卷试题关联编号(主键)sjbhr.Idint20否试卷编号tmbh.Idint20否题目编号表11是年级管理表,存储着年级信息,具体如下图所示。表11njinfo表字段英文名字段数据类型字段的长度是否为空字段中文说明njbh.Idint30否年级编号(主键)nj.Namevarchar60否年级的名称四、系统的实现(一)注册及登录该基本信息主要是学生可以进行学生账号的注册,注册成功之后进入首页,然后学生在学生端进行登录,如果学生发现没有注册账号,则显示账号不存在,进行学生账号的注册才能够登录考试页面,进行考试。注册登录页面的实现,如图9所示:图9注册登录功能界面基本功能界面的核心代码://学生进行考试,要进行登录的验证@Request.Mapping("/validateLoginiStudent")publicvoidvaliidateLoginiStudent(@RequestParam("xs.Account")Stringxs.Account,HttpServlettResponseresponse)throwsIOE.xcception{ ("学生登录账户"+xs.Account+",开始尝试登录进行考试"); //这是要获取所要登录的学生对象 Student.Infostudent=student.InfoiService.getSttudentByAccounttAndPwd(xs.Account); if(student==nuill){ logger.error("进行学生账户的登录"+student.Account+"该账号不存在"); response.get1Writer().print("n"); }else{ logger.error("进行学生账户的登录"+student.Account+"该账号存在"); response.getiWriter().print(student.getStudent.Pwd()); }}//学生登录进行考试@RequesiitMapping(value="/student.Login",method=Request.Method.POST)publicModelAnd.ViewstudenttLogin(xs.Infostudent,HttipServletRequestrequest){Model1AndiViewmodel=newModel1AndView();StudentiInfologinStudent=studentiInfoService.getStudenttByAccountAnd.Pwd(student.getStudenttAccount());("学生"+login.Student+"这是有效的登录");if(login.Student==null||!student.gettStudent.Pwd().equals(loginiStudent.getStudenttPwd())){ model.setViewName("reception/suc"); model1.addObject("succeess","提示密码错误"); returnmodel; } request.get1Session().setAttriibute("loginStudent",loginiStudent); model.setV1iewName("recepttion/suc1"); model.addObject("succeess","显示登录成功"); returnmodel;}//退出登录的代码如下@Requestt.Mapping("/exit")publicStringstudenttClearLogin(HttpiSessionsession){StudenttInfostudnet=(xs.Info)scession.getAttribute("loginStudent");("学生"+studnet.getSttudentName()+",所选的编号"+studnet.getStiudentId()+"进行退出登录");scession.remove.Attribute("loginStudent");return"rediirect:index.jsp";}(二)学生端功能模块1.考试中心功能当教师进行添加试卷并且给指定班级时,考试中心这个页面这里会根据学生所在的班级来进行判断,这里是否存在需要考试的试卷。考试中心如图10所示:图10考试中心功能界面考试中心功能的核心代码:publicvoidrefreshExamPlan(){List<ExamPlaniInfo>examPlans=examPlianInfoService.getExamPlans(null);("让我们刷新待考记录"+examPlans.size());if(exiamPlans.size()>0){ for(ksjh.Infoksjh.Info:exam.Plans){ Stringksks.Time=ksjh.Info.getksks.Tiime(); intks.Time=.getExamPapier().getks.Time(); //这里验证是不是能够移除 if(valiidateExamPaereBeOverdue(ksks.Time,examPaaperTime)){("这是待考的试卷"+ksjh.Info.getExam.Paper().getExam.PaperId()+这个试卷已经过期,马上要被移除"); //这是移除过期考试安排的代码 introw=ksjh.InfoService.isRemoverksjh(ksjh.Info.getksjhbh.Id()); }else{ ("这是待考试卷"+ksjh.Info.getExamPaper().getExamPaperId()+"试卷还没有过期,我们不能移除它"); continue; } }}2.考试历史功能这个功能模块主要是学生可以自主查看所考试卷的历史记录,在历史记录这里学生可以看到自己的考试成绩。考试历史功能模块,如图11所示:图11考试历史查看界面考试历史查看的核心代码://这是获取学生历史考试信息的代码@RequestiMapping("/history/{xsbh.Id}")publicModeilAndViewgetExamHiistoryInfo(@PathVariiable("xsbh.Id")Integerxsbh.Id){ModeliAndViewmodel=newModellAndView();if(xsbh.Id==null){ logger.error("这里所填的学生编号为空了"); model.setView.Name("error"); returnmodel; }("学生"+xsbh.Id+"我们可以在这里获取考试历史信息了");//这是获取历史考试信息的代码List<ExamHistorryPaper>ehps=examHiistoryPaperSerrvice.getExamHiistoryToStudent(xsbh.Id);model.addObjject("ehps",ehps);model.setViewName("/rececption/examHistory");returnmodel;}(三)教师端功能模块1.班级信息模块班级学习模块主要展示班级管理模块和各个班级总人数的模块,首先教师要在后台管理页面进行登录,教师进行登录之后,系统可以判断该教师是不是管理员身份,如果是,则该教师可以对所有的班级进行添加、删除、修改操作;如果不是,则该教师不能进行这些操作管理。基本信息的实现,如图12所示:图12班级信息界面班级管理功能界面的核心代码://这里我们要获取所有的班级@RequestMapping(value="/classes",method=RequestMethod.GET)publicModelAndViewgetClasses(@RequestParam(value="njibh.Id",required=false)Integernjbh.Id,@RequestParam(value="bj.Name",required=false)Stringbj.Name,@RequestParam(value="bjbh.Id",required=false)Integerbjbh.Id,@RequestParam(value="startPage",required=false,defaultValue="1")IntegerstartPage,//当前页码每页显示的条数@RequestParam(value="pageShow",required=false,defaultValue="10")IntegerpageShow){("获取班级集合条件:njbh.Id:"+njbh.Id+",班级编号:"+bjbh.Id+",班级:"+bj.Name);ModellAndViewmodel=newModellAndView();model.setViewName("admin/classes");intstartIndex=(start1)*pageShow;map.put("startIndex",startIndex);map.put("pageShow",pageShow);classes=classInfoService.getClassesPage(map);model.addObject("classes",classes);//获取教师总量intclassTotal=classInfoService.getClassTotal();//计算总页数intpageTotal=1;if(classTotal%pageShow==0) pageTotal=classTotal/pageShow;else pageTotal=classTotal/pageShow+1; model.addObject("pageTotal",pageTotal); model.addObject("pageNow",startPage); returnmodel;}2.学生信息模块学生学习模块主要包含所有学生的信息和学生进行考试的信息,首先教师通过登录页面进入到到后台管理页面,在这里教师可以对所有学生的信息进行添加、删除、修改、查看功能。学生信息功能的实现,如图13所示:图13学生信息模块学生信息功能界面的核心代码://在这里我们可以获取学生的集合@RequestMapping("/xs")publicModelAndViewgetCourses(@RequestParam(value="xsbh.Id",required=false)Integerxsbh.Id,@RequestParam(value="bjbh.Id",required=false)Integerbjbh.Id,@RequestParam(value="njbh.Id",required=false)Integernjbh.Id,@RequestParam(value="startPage",required=false,defaultValue="1")IntegerstartPage,@RequestParam(value="pageShow",required=false,defaultValue="10")IntegerpageShow){("我们可以获取学生集合bjbh.Id="+bjbh.Id+",njbh.Id="+njbh.Id+",startPage="+startiPage+",pageiShow="+pageShow); ModelAndViiewmodel=newModeilAndView(); model.setViewName("/admin/students"); //这里我们主要用到查询条件处理 xsInfostudent=newxsInfo(); if(xsbh.Id!=null) student.setxsbh.Id(xsbh.Id); if(bjbh.Id!=null){ bj.Info.setbjbh.Id(bjbh.Id); student.setbjInfo(bjInfo); } if(nibh.Id!=null){ nj.setbjbh.Id(njbh.Id); xs.setGrade(nj); } Map<String,Object>map=newHashMap<String,Object>(); //这里我们要计算当前查询起始数据索引 intstartIndex=(start1)*pageShow; map.put("xuesheng",xuesheng); map.put("startIndex",startIndex); map.put("pageShow",pageShow); model.addObject("students",students); //我们可以获取学生的总量 intstudentTotal=studentInfoService.getStudentTotal();}3.试卷试题修改模块该基本信息主要是对所有试卷试题进行操作,首先教师通过登录页面,登录到后台管理页面,然后教师可以实现对试卷试题信息的添加、删除、修改和查看功能。基本信息的实现,如图14所示:图14学生信息界面试卷功能的核心代码://获取试卷信息@RequestMapping("/examPapers")publicModelAndViewgetCourses(@RequestParam(value="njbh.Id",required=false)Integernjbh.Id,@RequestiParam(value="startPage",required=false,defaultValue="1")IntegerstartPage,@RequestiParam(value="pageShow",required=false,defaultValue="10")IntegerpageShow){("获取试卷集合njbh.Id="+njbh.Id+",startPage="+startPage+",pageShow="+pageShow); ModelAndViewmodel=newModelAndView(); model.setViewName("/admin/examPapers"); if(njbh.Id!=null){ nj.setnjbh.Id(njbh.Id); examPaper.setnj(nj);} Map<String,Object>map=newHashMap<String,Object>(); //计算当前查询起始数据索引 intstartiIndex=(start1)*pageShow; List<ExamPaperInfo>examPapers=examPapeirInfoService.getExamPapers(map); model.addObject("examPapers",examPapers); //获取试卷总量 intexamiPaperTotal=examiPaperInfoService.getExamiPpaerTotal(); //计算总页数 intpageTotal=1; if(examPaperTotal%pageShow==0) pageTotal=examPaperTotal/pageShow; else pageTotal=examPaperTotal/pageShow+1; model.addObject("pageTotal",pageTotal); model.addObject("pageNow",startPage); returnmodel;}(四)后台管理员功能模块1.班级修改管理模块班级管理显示班级的名称、所属于的年级情况、每个班级班主任的基本信息,来查询班级的基本信息,通过教师的登录信息来判断该教师是不是管理员,然后对班级来进行删除、添加、修改功能的操作。如图15所示:图15班级信息界面班级管理的核心代码://获取所有班级@RequestMapping(value="/bj",method=RequestMethod.GET)publicModelAndViewgetClasses(@RequestParam(value="njbh.Id",required=false)Integernjbh.Id,@RequestiParam(value="bj.Name",required=false)Stringbj.Name,@RequestiParam(value="bjbh.Id",required=false)Integerbjbh.Id,@RequestiParam(value="startPage",required=false,defaultValue="1")IntegerstartPage,@RequestiParam(value="pageShow",required=false,defaultValue="10")IntegerpageShow){("获取班级集合条件:nibh.Id:"+njbh.Id+",班级编号:"+bjbh.Id+",班级"+bj.Name); ModelAndViewmodel=newModelAndView(); model.setViewName("admin/bj"); bj=bjInfoService.getbjPage(map); model.addObject("classes",classes); //获取教师总量 intclassTotal=bjInfoService.getClassTotal(); //计算总页数 intpageTotal=1; if(classTotal%pageShow==0) pageTotal=classTotal/pageShow; else pageTotal=classTotal/pageShow+1; model.addObject("pageTotal",pageTotal); model.addObject("pageNow",startPage); returnmodel; }}2.教师信息修改模块在教师信息管理的模块,我们可以看到教师的姓名、教师的后台登录账号、后台登录密码、后台管理权限。后台管理员可以对普通教职工进行添加、修改、删除相关信息功能的操作,但是如果是普通的教职工就没有权限对每个教师信息进行添加、修改、删除功能的操作。教师信息的实现,如图16所示:图16教师信息界面教师信息的核心代码://我们可以获取验证教师信息@RequestiMapping(value="/validateiTeacher",method=RequesitMethod.POST)publicvoidqueryTeacherExists(@RequestParam(value="zhanghao")StringteacherAccount,HttpServletResponseresponse)throwsException{("可以获取教师"+js.Account+"的信息");js.Infotjs.Info=null;js.Info=js.InfoService.getTeacherByAccount(js.Account);//发现教师的账户不存在if(js.Info==null){ response.getWriter().print("1"); }else{ response.getWriter().print(js.Info.getjs.Pwd()); }}PublicbjLoginControllerextendsBaseController{@AutowiredprivateUserSeriviceuserService;@AutowiredprivateModuleiServicemoduleService;@RequestMapping(value="/login",xinming="用户登录")publicStringlogin(Stringemail,Stringpassword){//1.判断邮箱和密码是否为空if(StringUtils.isEmpty(email)||StringUtils.isEmpty(password)){//如果邮箱或者密码任一为空则重定向至登录页面return"forward:/login.jsp";}}3.年级信息修改模块在年级信息修改模块我们主要分为年级的信息管理和科目的信息管理,首先教师通过登录页面登录到后台管理页面,然后进行判断该教师是不是管理员身份,如果是管理员身份,就可以对年级休息和科目休息进行添加、删除、修改功能操作;如果不是,就不能进行这些操作管理。基本信息的实现,如图17所示:图17基本功能界面基本功能界面的核心代码:publicclasskm.InfoHandler{@Autowiredprivatekm.InfoServicecourseInfoService;@AutowiredprivateGradeInfoServicenj.InfoService;privateLoggerlogger=Logger.getLogger(km.InfoHandler.bj);//获取科目信息@RequestMapping("/courses")publicModeliAndViewgetCourses(@RequestParam(value="njbh.Id",required=false)Integernjbh.Id,@RequestParam(value="fkqk",required=false)Integerfkqk){("获取科目集合年级条件"+gradeId+"分科条件"+fkqk);ModielAndViewmodel=newModeilAndView();model.setViewiName("/admin/courses");CourseInfokm=newkm.Info();if(njbh.Id!=null) course.getnj().setnjbh.Id(njbh.Id);if(fkqk!=null) course.setfkqk(fkqk);List<kmInfo>km=kmInfoService.getkm(km);model.addObject("km",km);returnmodel;}}4.考试安排管理功能考试安排管理功能主要是后台管理员进行考试信息的添加,还要进行对应考试的班级、所要考试的科目、所要用到的考试试卷、以及开使考试的时间的添加,添加完这些信息之后所对应的考试的班级就会有所要考试的信息,如果该学生不是在对应的班级当中,就没有考试的信息,学生不能进行考试。考试安排功能管理的实现,如图18所示:图18考试安排管理考试安排管理的核心代码://获取所有待考记录@RequestMapping("/ksjh")publicModelAndViewgetksjh(){ModelAndViewmodel=newModelAndView();model.setViewName("admin/ksjh");("获取待考的考试信息");List<ksjh.Info>ksjh=ksjhInfoService.getksjh(null);model.addObject("ksjh",ksjh);returnmodel;}五、系统测试结论(一)测试方法、目的我们对系统的测试是对整个系统,硬件,软件和全体角色进行的测试,主要检查这个系统能不能符合系统的规范,测试的主要目的就是检查我们的产品能不能正常运转,并且在程序中可以尽量检测出更多的错误。(二)系统功能测试1.后台登录测试在完成在线考试系统的一系列开发之后,我们需要对程序进行一定的测试,在这里我们简单的对后台管理页面进行一些测试,在我们的登录过程中,如果没有输入账号或者没有输入密码,那么系统将会提示我们账号或者密码是空的,先登录后台页面。如图19、图20所示:图19后台登录界面登录成功后进行后台首页如下图所示:图20后台登录显示界面2.安全测试进行安全测试的主要目是为了检测系统可能会存在的安全方面的问题,我们通过这些测试发现问题,并且能够及时调整这些安全问题。我们测试系统的登录功能以及普通教师和后台管理员的功能权限。在教师进行登录的过程中,我们要输入正确的教师账号和教师密码,然后与数据库中存在的数据进行一一对应,如果是错误的或者不存在的信息那么将不能进行我们的登

温馨提示

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

评论

0/150

提交评论