基于javaweb的SSM在线考试系统(java+ssm+mysql+jsp)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

410023102402

420023102402

430023102402

440023102402

450023102402

460023102402

基于javaweb的SSM在线考试系统(java+ssm+mysql+jsp)

运行环境:jdk1.8、Mysql5.7、Tomcat8.5、IDEA/Eclipse

功能简介:在线考试、历史回顾、个人成绩查询等。

管理员和教师功能有:学院管理、班级管理、课程管理、教师、学生管理、统计分析、试卷试题管理、考试安排管理、历史考试管理等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 * </p>
* <p>
* Description: 科目
* </p>
*/

@Controller
@SuppressWarnings("all")
public class CourseInfoHandler {
@Autowired
private CourseInfoService courseInfoService;
@Autowired
private GradeInfoService gradeInfoService;

private Logger logger = Logger.getLogger(CourseInfoHandler.class);

/**
* 获取科目信息
*
* @param gradeId
* 系部编号
* @param division
* 分科情况
* @return
*/
@RequestMapping("/courses")
public ModelAndView getCourses(@RequestParam(value = "gradeId", required = false) Integer gradeId,
@RequestParam(value = "division", required = false) Integer division) {
ModelAndView model = new ModelAndView();
model.setViewName("/admin/course/courses");

CourseInfo course = new CourseInfo();
if (gradeId != null)
course.getGrade().setGradeId(gradeId);
if (division != null)
course.setDivision(division);
List<CourseInfo> courses = courseInfoService.getCourses(course);
model.addObject("courses", courses);

return model;
}

/**
* 根据科目编号获取学科信息
*
* @param courseId
* 科目编号
* @return
*/
@RequestMapping("/course/{courseId}")
public ModelAndView getCourseById(@PathVariable("courseId") Integer courseId) {
ModelAndView model = new ModelAndView();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
	int examPaperTotal = examPaperInfoService.getExamPpaerTotal();
// 计算总页数
int pageTotal = 1;
if (examPaperTotal % pageShow == 0)
pageTotal = examPaperTotal / pageShow;
else
pageTotal = examPaperTotal / pageShow + 1;
model.addObject("pageTotal", pageTotal);
model.addObject("pageNow", startPage);

return model;
}

/**
* 根据编号获取试卷信息
*
* @param examPaperId
* 试卷编号
* @return
*/
@RequestMapping("/examPaper/{examPaperId}")
public ModelAndView getCourseById(@PathVariable("examPaperId") Integer examPaperId) {
logger.info("获取试卷 " + examPaperId);
ModelAndView model = new ModelAndView();
model.setViewName("/admin/examPaperedit");

ExamPaperInfo paper = examPaperInfoService.getExamPaper(examPaperId);
model.addObject("examPaper", paper);
List<GradeInfo> grades = gradeInfoService.getGrades();
model.addObject("grades", grades);

return model;
}

/**
* 添加/修改试卷信息
*
* @param examPaperId
* 待操作试卷编号
* @param isUpdate
* 标识是否为修改操作
* @param examPaperName
* 试卷名称
* @param subjectNum
* 试卷试题数量
* @param examPaperScore
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
		/** 修改试卷试题总量 */
examPaperInfoService.isUpdateExamPaperSubjects(scoreWithNum);
}

/**
* 删除上传文件
*
* @param filePath
* 文件路径
*/
private void deleteUploadFile(String filePath) {
File file = new File(filePath);

if (file.exists()) {
//file.delete();
logger.info("上传文件已被删除 " + filePath);
}
}

/**
* 预添加试题
*
* @return
*/
@RequestMapping("/preAddSubject")
public ModelAndView preAddStudent() {
logger.info("预添加试卷信息");
ModelAndView model = new ModelAndView();
model.setViewName("/admin/subject-test");
List<GradeInfo> grades = gradeInfoService.getGrades();
model.addObject("grades", grades);
model.addObject("courses", courseInfoService.getCourses(null));
return model;
}

private String trimChar(String str) {
if (str != null) {
return str.replaceAll("^,*|,*$", "");
}
return str;
}

}
package com.yuanlrc.online.exam.controller;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 * 获取学生历史考试记录
* @param studentId 学生编号
* @return
*/
@RequestMapping("/history/{studentId}")
public ModelAndView getExamHistoryInfo(@PathVariable("studentId") Integer studentId) {
ModelAndView model = new ModelAndView();

if (studentId == null) {
logger.error("学生编号 为空");
model.setViewName("error");
return model;
}
logger.info("学生 "+studentId+" 获取考试历史记录");
//获取历史考试信息记录集合
List<ExamHistoryPaper> ehps = examHistoryPaperService.getExamHistoryToStudent(studentId);
model.addObject("ehps", ehps);
model.setViewName("/reception/examHistory");

return model;
}


/**
* 考生提交考试
* @param studentId
* @param examPaperId
* @param classId
* @param gradeId
* @return
*/
@RequestMapping(value="/submit", method={RequestMethod.POST, RequestMethod.GET})
public String examSubmit(
@RequestParam("studentId") Integer studentId,
@RequestParam("examPaperId") Integer examPaperId,
@RequestParam("classId") Integer classId,
@RequestParam("gradeId") Integer gradeId) {
logger.info("学生 "+studentId+" 提交了试卷 "+examPaperId);

//获取当前学生当前试卷所选择的全部答案
Map<String, Object> map = new HashMap<String, Object>();
map.put("studentId", studentId);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public ModelAndView getTeachers(
@RequestParam(value = "startPage", required = false, defaultValue = "1") Integer startPage, // 当前页码,默认第一页
@RequestParam(value = "pageShow", required = false, defaultValue = "10") Integer pageShow /*
* 每页显示数据量
* ,
* 默认10条
*/) {
logger.info("查询教师集合");

ModelAndView model = new ModelAndView();
model.setViewName("admin/teacher/teachers");

List<TeacherInfo> teachers;

Map<String, Object> map = new HashMap<String, Object>();
// 计算当前查询起始数据索引
int startIndex = (startPage - 1) * pageShow;
map.put("startIndex", startIndex);
map.put("pageShow", pageShow);
map.put("teacher", null);
teachers = teacherInfoService.getTeachers(map);
model.addObject("teachers", teachers);

// 获取教师总量
int teacherTotal = teacherInfoService.getTeacherTotal();
// 计算总页数
int pageTotal = 1;
if (teacherTotal % pageShow == 0)
pageTotal = teacherTotal / pageShow;
else
pageTotal = teacherTotal / pageShow + 1;
model.addObject("pageTotal", pageTotal);
model.addObject("pageNow", startPage);

return model;
}

/**
* 预修改教师
*
* @param teacherId
* @return
*/
@RequestMapping(value = "/teacher/{teacherId}", method = RequestMethod.GET)
public ModelAndView preUpdateTeacher(@PathVariable("teacherId") Integer teacherId) {
logger.info("预修改教师处理");

ModelAndView model = new ModelAndView();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
	if (classId != null)
classInfo.setClassId(classId);
if (className != null) {
if (className.trim() != "")
classInfo.setClassName(className);
}

List<ClassInfo> classes = classInfoService.getClasses(classInfo);
model.setViewName("admin/clazz/classes");
model.addObject("classes", classes);

return model;
}

/**
* 预添加班级处理
*
* @return
*/
@RequestMapping("/preAddClass")
public ModelAndView preAddClass(@RequestParam(name = "gid",required = false,defaultValue = "")Integer gid) {

ModelAndView model = new ModelAndView();
// 获取系部信息
List<GradeInfo> grades = gradeInfoService.getGrades();
model.setViewName("admin/clazz/classedit");
model.addObject("grades", grades);
// 获取不是班主任的教师
teacher.setIsWork(0);
Map<String, Object> map = new HashMap<String, Object>();
map.put("startIndex", null);
map.put("pageShow", null);
map.put("teacher", teacher);
List<TeacherInfo> teachers = teacherInfoService.getTeachers(map);
model.addObject("teachers", teachers);
model.addObject("editClass", new ClassInfo());
model.addObject("gid",gid);
return model;
}

/**
* 添加班级
*
* @param classInfo
* 班级信息
* @param request
* @return


项目链接:
https://javayms.github.io?id=091422282105200cj
https://javayms.pages.dev?id=091422282105200cj