Java实现在线考试系统(老师功能)

在线考试系统老师登录页面
这里写图片描述

//跳转到登录页面
@RequestMapping(value="/login", method = RequestMethod.GET)
	public String userLogin(){
		
		return "/adminUser/login";
	}
	
	//实现登录功能
@RequestMapping(value = "/login", method = RequestMethod.POST)
	public String adminLogin(String id, String password,Model model, HttpServletRequest request){
		//在service实现的登录功能校验
		Teacher teacher = teacherService.login(id, password);
		if (teacher != null){
			HttpSession session = request.getSession();
			session.setAttribute("teacherInfo", teacher);
			return "redirect:/index";
		}
		model.addAttribute("message", "用户名或密码错误!");
		return "/adminUser/login";
	}
	
	//跳转到修改密码页面
	@RequestMapping(value="/updatePassword", method=RequestMethod.GET)
	public String userUpdatePasswordView(){
		
		return "/adminUser/updatePassword";
	}
	
	//实现密码修改功能
	@RequestMapping(value="/updatePassword", method=RequestMethod.POST)
	@ResponseBody
	public AjaxResult userUpdatePassword(String id, String password, String newpassword, String renewpassword){
		
		if (newpassword != null){
			if (newpassword.equals(renewpassword)){
			//在service实现了修改密码功能
				boolean flag = teacherService.updatePassword(id, password, newpassword);
				if (flag){
					return AjaxResult.successInstance("修改密码成功");
				}else{
					return AjaxResult.errorInstance("原密码错误");
				}
			}else{
				return AjaxResult.errorInstance("您两次输入的密码不一致");
			}
		}
		
		return AjaxResult.errorInstance("您两次输入的密码不一致");
	}
	
//退出系统功能代码
@RequestMapping("/logout")
	public String userLogout(HttpServletRequest request){
		
		HttpSession session = request.getSession();
		session.setAttribute("teacherInfo", null);
		return "redirect:/adminUser/login";
	}
//实现登录拦截器
@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		//在handle执行之前处理
		//判断用户是否登录
		//1.获取Session
		HttpSession session = request.getSession();
		Teacher teacher = (Teacher) session.getAttribute("teacherInfo");
		
		if (teacher == null){
			response.sendRedirect("/adminUser/login");
			return false;
		}
		
		return true;
	}

老师登录系统后可以进行考试管理(老师阅卷为流水阅卷,所有教这门课的老师都会进行阅卷,但是老师不知道自己批阅的是哪个班级的哪个学生试卷)
这里写图片描述
本系统批阅试卷采用半自动阅卷方式(选择题和填空题采用电脑后台阅卷,主观题用电脑去阅卷难度太大,因此我们改为老师手工阅卷;为了方便老师阅卷,会在考试的答案下面显示正确答案)
这里写图片描述
这里写图片描述

批阅完的试卷是可以看到是哪个学生的试卷,也可以查看已批阅试卷,方便检查学生试卷。
这里写图片描述

作为老师可以添加试题模块(比如选择题、填空题等,都有哪些题型,在发布考试的时候也容易选择某几个试题进行发布)
这里写图片描述

有添加试题模块功能当然也会有添加试题的功能(在这里老师只能查看自己所教课程的所有试题,没有教的课程试题是没有权限查看的)
这里写图片描述
添加试题功能(如果是选择题,则有ABCD四个选项框,如果非选择题则没有,在这里我们做了联动功能)
这里写图片描述
这里写图片描述
添加试题时,我们对科目也做了权限控制,老师只能添加自己所授科目的试题,不能添加和自己没有关系科目的试题(并且在这里我们做了表单的二级联动,选择科目,下面的试题章节也会变成该科目所对应的章节)
这里写图片描述

//跳转到添加页面
@RequestMapping(value="/add", method=RequestMethod.GET)
	public String addTextView(HttpServletRequest request,Model model){
		
		HttpSession session = request.getSession();
		Teacher teacher = (Teacher) session.getAttribute("teacherInfo");
		List<Subject> textList = subjectService.showList(teacher.getId());
		Subject subject = textList.get(0);
		List<Chapter> chapterList = chapterService.getChapter(subject.getId());
		List<Textmodel> textModelList = textModelService.showList();
		model.addAttribute("textList", textList);
		model.addAttribute("textModelList", textModelList);
		model.addAttribute("chapterList", chapterList);
		return "/text/add";
	}
	//添加试题
	@RequestMapping(value="/add", method=RequestMethod.POST)
	@ResponseBody
	public AjaxResult addText(Text text){
		
		Integer chapterid = text.getChapterid();
		Chapter chapter = chapterService.selectOne(chapterid);
		text.setChaptername(chapter.getName()+"   "+chapter.getTitle());
		
		Integer subjectid = text.getSubjectid();
		Subject subject = subjectService.selectOne(subjectid);
		text.setSubjectname(subject.getName());
		
		Integer texId = text.getTexId();
		Textmodel textmodel = textModelService.selectOne(texId);
		text.setModelname(textmodel.getTexttype());
		
		textService.insert(text);
		return AjaxResult.successInstance("添加成功");
	}
//添加试题模块前端JQuery
<script type="text/javascript">
		$(function(){
			//科目的下拉框change事件
			$("#subjectid").change(function(){
				var subjectid = $("#subjectid").val();
				$.ajax({
					type:"POST",
					url:"<%=path%>/text/showChapter",
					data:{
						id:subjectid
					},
					dataType:"json",
					success:function(data){
						$("#chapterid").empty();
						$.each(data,function(index,item){
							$("#chapterid").append("<option value='"+item.id+"'>"+item.name+"&nbsp;&nbsp;&nbsp;"+item.title+"</option>");
						})
					}
				})
			}
					
			)
			
		})
	</script>
	
	<!-- 当是选择题时出现选择题ABCD框,否则不显示 -->
	<script type="text/javascript">
		//初始情况
		$(function(){
			var model = $("#texId option:selected").text();
			if (model != "选择题"){
				$("#type1,#type2,#type3,#type4").hide();
			}
			
			//当试题模块内容改变
			$("#texId").change(function(){
				var model = $("#texId option:selected").text();
				if (model != "选择题"){
					$("#type1,#type2,#type3,#type4").hide();
				}else{
					$("#type1,#type2,#type3,#type4").show();
				}
			})
			
		})
	</script>

查询成绩功能和管理员的查询功能是一样的,在这里就不重复去写了(因为代码比较多,因此只是挑选一些代码进行粘贴)

发布了39 篇原创文章 · 获赞 157 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_34417749/article/details/81233983