二级培训系统_第1页
二级培训系统_第2页
二级培训系统_第3页
二级培训系统_第4页
二级培训系统_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

XVIII5总体设计5.1二级培训管理系统功能设计二级培训管理系统包括考生模块、管理员模块两个模块。其中考生系统包括考生登录功能、考生考试功能、考生修改信息功能、考生查看错题功能。管理员模块包括增删改查考生信息、成绩、进度,还可以增删该查试卷。系统总体功能模块图如下所示:图4.1二级培训管理系统的功能模块图5.2功能子模块设计5.2.1角色管理模块(1)登录模块本模块所完成的功能是登录进二级系统,登录成功后进入考生的主页,登录失败给予相应的提示。(2)考生录入模块管理人员通过批量录入和单独录入来录入考生,不允许考生自行注册账号。5.2.2信息管理模块该模块包括了对考生信息的管理,可以在登录后修改自己的信息,如名字和密码。5.2.3学生管理模块管理人员使用考生管理模块完成对考生的管理,这个模块的功能应包括对考生的增加、查看信息、删除考生、修改考生的信息等。5.2.4试卷管理模块管理人员使用试卷管理模块完成对试卷的管理。其功能应包括对试卷的增加、修改、查看、删除,以及对试卷的。5.2.5考试管理模块考生使用考试管理模块进行考试,考试的结果经过后台系统完成批改和文件录入到数据库,管理人员可以通过管理端系统查看学生的成绩。

6详细设计和实现本部分主要阐述本机房管理系统主要模块的详细设计情况,包括各模块的界面设计、算法描述、模块的流程图以及核心代码。6.1角色管理模块本模块为登录模块,通过此登录模块,考生和管理员方可进入系统,来完成对考试或考生管理。6.1.1界面设计本登录界面实用简洁,在满足功能方面完善的同时,使用了统一的颜色也为使用者提供了视觉上的舒适,本登录模块的界面如下所示:图6.1登录界面6.1.2算法描述此模块的主要功能是让用户登录进系统。登录的过程为:在index页面选择用户的角色,一共有管理员、二级考生、党校考生三个选项,用户可以根据自己的用户类别选择不同的登录系统。在登录页面输入自己的ID和密码,然后点击登录,其实就是一个Type为text的input标签和一个Type为password的input标签,登录按钮是Type为submit的input标签,然后触发事件,js所作的事情一个是此模块的主要功能是方便管理员登录系统。其登录的过程为:用户在主页面index.jsp中通过上述界面输入用户名、密码(且用户名的Type属性被设置为Text,即能在页面上直接显示出来;密码的Type属性被设置为Password,即在页面上不能直接显示出来,而是以圆点代替,这样保护了管理员的密码安全,起到了安全登陆的目的),再经LoginBean.java中的函数验证,并查询数据库,验证所输入信息的合法性。当获取到输入信息时,则系统将其与数据库中的数据进行比较,并查询数据库中是否存在所输入的用户名、密码,若不存在,则在登陆窗口的下方显示“用户名或密码错误”,若存在,则登录成功。6.1.3核心代码负责验证数据库的LoginController核心代码如下所示:@RequestMapping("login")

@ResponseBody

publicJSONObjectlogin(HttpServletRequestrequest){

//获取表单数据

System.out.println("请求进来了");

Stringusername=request.getParameter("userName");

Stringpassword=request.getParameter("password");

JSONObjectjson=newJSONObject();

//判断是否是管理员并验证账号密码正确性

if(username!=null&&!"".equals(username)&&password!=null&&!"".equals(password)){

Useruser=loginService@RequestMapping("login")

@ResponseBody

publicJSONObjectlogin(HttpServletRequestrequest){

//获取表单数据

System.out.println("请求进来了");

Stringusername=request.getParameter("userName");

Stringpassword=request.getParameter("password");

JSONObjectjson=newJSONObject();

//判断是否是管理员并验证账号密码正确性

if(username!=null&&!"".equals(username)&&password!=null&&!"".equals(password)){

Useruser=loginService.userLogin(username,password);

if(user!=null){

request.getSession().setAttribute("user",user);

json.accumulate("msg","登录成功");

Stringstr=user.getUserType()==1?"管理员":"考生";

json.accumulate("userType",str);

}else{

json.accumulate("msg","账号或密码错误");

}

}else{

json.accumulate("msg","账号或密码不得为空");

}

returnjson;

}.userLogin(username,password);

if(user!=null){

request.getSession().setAttribute("user",user);

json.accumulate("msg","登录成功");

Stringstr=user.getUserType()==1?"管理员":"考生";

json.accumulate("userType",str);

}else{

json.accumulate("msg","账号或密码错误");

}

}else{

json.accumulate("msg","账号或密码不得为空");

}

returnjson;

}6.2试卷管理模块6.2.1界面设计本模块的界面如下所示:图6.3上传试卷页面注意大小注意大小6.2.2算法描述管理员上传试卷模块是管理员用来增加试卷的模块,它将页面上的题目和文件经过校验然后上传至服务器,给予操作人员一个操作成功或者失败的反馈。首先,管理人员在页面上填写相应的试卷信息,然后选择初始题目文件,点击提交。浏览器将相关信息封装成HTTP请求发送给服务器,服务器接受请求后,将请求中的数据取出,然后校验存入数据库,接着将反馈信息封装到Response对象中,再封装成HTTP请求,然后发送到操作人员的浏览器。根据以上的算法所设计的上传试卷模块的流程图如下图所示:6.2.3核心代码JSONObjectjson=newJSONObject();

//将当前上下文初始化给CommonsMultipartResolver(多部分解析器)

CommonsMultipartResolvermultipartResolver=newCommonsMultipartResolver(

request.getSession().getServletContext());

//检查form中是否有enctype="multipart/form-data"

if(multipartResolver.isMultipart(request)){

MultipartHttpServletRequestmultiRequest=multipartResolver.resolveMultipart(request);

StringpaperType=multiRequest.getParameter("paperType");

if(paperType!=null){

String[]arr;

intarrNum=PaperChoiceQuestionNum.getArrNum(paperType);

IntegerpaperNum=adminService.getMaxPaperNumber(paperType);

if(paperNum!=null){

paperNum++;

}else{

System.out.println("paperNumnull");

return"/admin/failed";

}

intchoiceQuestionNum=PaperChoiceQuestionNum.getChoiceQuestionNUm(paperType);

intoptionNum=PaperChoiceQuestionNum.getOptionNum(paperType);

arr=newString[arrNum];

for(inti=0;i<arr.length;i++){

Stringstr="arr["+i+"]";

arr[i]=multiRequest.getParameter(str);

}

adminService.selectAndInsertPaper(paperType,paperNum.toString());

adminService.insertPaperQuestion(arr,paperType,paperNum);

Stringanswer=multiRequest.getParameter("answer");

if(answer!=null){

answer=answer.toUpperCase();

for(inti=0;i<answer.length();i++){

if(answer.charAt(i)<'A'||answer.charAt(i)>'D'){

System.out.println("answerwrong");

return"/admin/failed";

}

}

adminService.insertAnswer(answer,paperType,paperNum);

}else{

return"/admin/failed";

}

//获取multiRequest中所有的文件名

Iteratoriterator=multiRequest.getFileNames();

while(iterator.hasNext()){

//一次遍历所有文件

MultipartFilefile=multiRequest.getFile(iterator.next().toString());

Stringstr=request.getServletContext().getRealPath("/papers");

if(paperType.equals("OFFICE")||paperType.equals("C")){

str+="\\computer\\"+paperType+"\\"+paperNum+"\\";

Filef=newFile(str);

f.mkdirs();

}

Stringpath=str+file.getOriginalFilename();

//上传

file.transferTo(newFile(path));

}

}else{

return"/admin/failed";

}

}

return"/admin/success";6.3考试管理模块6.3.1界面设计本模块的界面设计如下所示:图6.5考试页面6.3.2算法描述考试模块,顾名思义,就是考生用来考试的模块,考生在考试页面考试,试卷一般有选择题*n道,加上几道大题,大题一般需要依赖一些资源,会提前将这些依赖的资源存入考生文件夹中,考生只需要下载就行了。然后完成相应的要求,在规定时间内完成试卷,点击提交即可。后台完成的工作就是取值然后与数据库的答案匹对,更新相关数据库的数据,然后将考生完成的文件存入对应的文件夹等待管理员下载。6.3.3核心代码@RequestMapping("getPaper")

@ResponseBody

publicJSONObjectgetPaper(HttpServletRequestrequest){

//获取表单数据

System.out.println("请求进入");

JSONObjectjson=newJSONObject();

System.out.println(request.getParameter("paperType"));

returnjson;

}

@RequestMapping("choicePaper")

publicStringchoicePaper(HttpServletRequestrequest){

StringpaperType=request.getParameter("paperType");

Useruser=(User)request.getSession().getAttribute("user");

if(paperType!=null&&!"".equals(paperType)&&user!=null&&user.getId()!=null){

request.getSession().setAttribute("paperType",paperType);

return"";

}

return"/exam/failed";

}

@RequestMapping("getTotalPaper")

@ResponseBody

publicJSONObjectgetTotalPaper(HttpServletRequestrequest){

//获取表单数据

Useruser=(User)request.getSession().getAttribute("user");

JSONObjectjsonObject=newJSONObject();

if(user!=null&&user.getId()!=null){

PointerPo[]pointer=examService.getPointer(user.getId());

if(pointer!=null){

JSONArrayarray=newJSONArray();

for(PointerPopo:

pointer){

if(po!=null){

JSONObjectjson=newJSONObject();

json.accumulate("paperType",po.getPaperType());

json.accumulate("num",po.getPointer()+"/"+po.getTotalPaperNum());

温馨提示

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

评论

0/150

提交评论