在线考试系统老师登录页面
//跳转到登录页面
@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+" "+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>
查询成绩功能和管理员的查询功能是一样的,在这里就不重复去写了(因为代码比较多,因此只是挑选一些代码进行粘贴)