Java项目:考试在线报名管理系统(java+SSM+HTML+JS+jsp+mysql)

源码获取:俺的博客首页 "资源" 里下载!

项目介绍

考务管理员角色包含以下功能:
考务管理员登录,教务办公室管理,考场管理,考试管理,考场分配管理,报名管理等功能。

管理员角色包含以下功能:
管理员登录,学院管理,班级管理,学生管理,考务管理员管理,管理员管理等功能。

学生角色包含以下功能:
学生登录,查看我的报名,报名考试,密码修改,缴费等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 5.7版本;


技术栈

1. 后端:Spring+SpringMVC+Mybatis
2. 前端:HTML+CSS+JavaScript+jsp


使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ 登录

 

 

 

 

 

学生考试信息管理控制层:

@Controller
public class StudentExamInfoHandler {

	@Autowired
	private StudentExamInfoService studentExamInfoService;
	@Autowired
	private ClassInfoService classInfoService;
	@Autowired
	private StudentInfoService studentInfoService;
	@Autowired
	private Gson gson;

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

	/**
	 * 所有学生考试信息 图表 Json 字符串生成
	 * 
	 * @param teacherId
	 * @param response
	 * @throws IOException
	 */
	@RequestMapping("/examCount")
	public void getStudentExamCount(@RequestParam("tid") Integer teacherId, HttpServletResponse response)
			throws IOException {
		if (teacherId == null) {
			response.getWriter().print("TID-NULL");
		} else {
			// 获取当前班主任对应的班级
			ClassInfo classInfo = classInfoService.getClassByTeacherId(teacherId);
			// 获取学生考试信息
			List<StudentExamInfo> stuExamInfos = studentExamInfoService
					.getStudentExamCountByClassId(classInfo.getClassId());

			response.getWriter().print(StudentExamInfoCharts.createExamCountBarJson(stuExamInfos));
		}
	}

	/**
	 * 获取班级中的所有学生
	 * 
	 * @param teacherId
	 * @param response
	 * @throws IOException
	 */
	@RequestMapping("/stus")
	public void getStudentsByClassId(@RequestParam("tid") Integer teacherId, HttpServletResponse response)
			throws IOException {
		if (teacherId == null) {
			response.getWriter().print("TID-NULL");
		} else {
			// 获取当前班主任对应的班级
			ClassInfo classInfo = classInfoService.getClassByTeacherId(teacherId);
			// 获取所有学生信息
			List<StudentInfo> stus = studentInfoService.getStudentsByClassId(classInfo.getClassId());

			response.getWriter().print(gson.toJson(stus));
		}
	}

	/**
	 * 班级下所有学生考试平均分等信息 图表 Json 生成
	 * 
	 * @param teacherId
	 * @param response
	 * @throws IOException
	 */
	@RequestMapping("/avgcounts")
	public void getAllStudentAvgScoreCount(@RequestParam("tid") Integer teacherId, HttpServletResponse response)
			throws IOException {
		if (teacherId == null) {
			response.getWriter().print("TID-NULL");
		} else {
			// 获取当前班主任对应的班级
			ClassInfo classInfo = classInfoService.getClassByTeacherId(teacherId);
			// 获取所有学生信息 平局分等信息
			List<StudentExamInfo> stuExamInfos = studentExamInfoService
					.getAllStudentAvgScoreCount(classInfo.getClassId());

			response.getWriter().print(StudentExamInfoCharts.createAvgCountLineJson(stuExamInfos));
		}
	}

	@RequestMapping("/stuexam")
	public void getStudentExamInfoById(@RequestParam("stuId") Integer studentId, HttpServletResponse response)
			throws IOException {
		// 获取学生考试信息
		List<StudentExamInfo> stuExamInfos = studentExamInfoService.getStudentExamInfo(studentId);

		response.getWriter().print(StudentExamInfoCharts.createStudentExamLineJson(stuExamInfos));
	}
}

班级管理控制层:

@Controller
@SuppressWarnings("all")
public class ClassInfoHandler {

	@Autowired
	private ClassInfoService classInfoService;
	@Autowired
	private GradeInfoService gradeInfoService;
	@Autowired
	private TeacherInfoService teacherInfoService;
	@Autowired
	private TeacherInfo teacher;
	@Autowired
	private ClassInfo classInfo;
	@Autowired
	private Gson gson;

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

	/**
	 * 获取所有班级
	 * 
	 * @param gradeId
	 *            系部编号
	 * @param className
	 *            班级名称 可用于模糊查询
	 * @param classId
	 *            班级编号
	 * @return
	 */
	@RequestMapping(value = "/classes", method = RequestMethod.GET)
	public ModelAndView getClasses(@RequestParam(value = "gradeId", required = false) Integer gradeId,
			@RequestParam(value = "className", required = false) String className,
			@RequestParam(value = "classId", required = false) Integer classId) {
		ModelAndView model = new ModelAndView();
		ClassInfo classInfo = new ClassInfo();
		/* 处理查询条件 */
		if (gradeId != null) {
			GradeInfo gradeInfo = new GradeInfo();
			gradeInfo.setGradeId(gradeId);
			classInfo.setGrade(gradeInfo);
		}
		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
	 */
	@RequestMapping(value = "/class", method = RequestMethod.POST)
	public String isAddClass(ClassInfo classInfo, HttpServletRequest request) {
		//判断班级名是否存在
		ClassInfo byClassName = classInfoService.findByClassName(classInfo.getClassName());
		if(byClassName!=null){
			request.setAttribute("error", "该班级名称已存在!");
			return "error";
		}
		// 修改教师班主任状态
		String returnMsg = isChangeTeacherWork(1, classInfo.getTeacher().getTeacherId());
		if (returnMsg != null) {
			request.setAttribute("error", "修改教师班主任状态 对应教师编号有误");
			return "error";
		}

		// 添加
		int row = classInfoService.isAddClass(classInfo);
		if (row < 1) {
			request.setAttribute("error", "班级 " + classInfo.getClassName() + " 添加失败,请稍后再试!");
			return "error";
		}

		return "redirect:/classes";
	}

	/**
	 * 删除班级
	 * 
	 * @param classId
	 *            班级编号
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/del/class/{classId}", method = RequestMethod.DELETE)
	public String isDelClass(@PathVariable("classId") Integer classId, HttpServletRequest request) {
		logger.info("删除班级 " + classId);

		// 将删除班级对于之前班主任改为 非班主任状态
		// 需要在删除班级之前修改,如果先删除了班级,再根据班级获取教师编号,就不能获取
		ClassInfo delClass = classInfoService.getClassById(classId);
		String returnMsg = isChangeTeacherWork(0, delClass.getTeacher().getTeacherId());
		if (returnMsg != null) {
			request.setAttribute("error", "修改教师班主任状态 对应教师编号有误");
			return "error";
		}

		// 删除
		int row = classInfoService.isDelClass(classId);
		if (row < 1) {
			logger.error("班级 " + classId + " 删除失败");

			request.setAttribute("error", "班级删除失败,请稍后再试!");
			return "../error";
		}

		return "redirect:/classes";
	}

	/**
	 * 预修改班级处理
	 * 
	 * @param classId
	 *            班级编号
	 * @return
	 */
	@RequestMapping(value = "edit/class/{classId}", method = RequestMethod.GET)
	public ModelAndView preUpdateClass(@PathVariable("classId") Integer classId) {
		logger.info("预修改班级处理");

		ModelAndView model = new ModelAndView();
		// 获取要修改班级
		ClassInfo classInfo = classInfoService.getClassById(classId);
		model.setViewName("/admin/clazz/classedit");
		model.addObject("editClass", classInfo);
		List<GradeInfo> grades = gradeInfoService.getGrades();
		// 获取不是班主任的教师
		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);
		// 如果没有可用班主任
		if (teachers.size() == 0 || teachers == null) {
			teacher.setTeacherId(classInfo.getTeacher().getTeacherId());
			teacher.setTeacherName("暂无剩余教师");
			teachers.add(teacher);
		}
		model.addObject("teachers", teachers);
		model.addObject("grades", grades);

		return model;
	}

	/**
	 * 修改班级信息
	 * 
	 * @param classInfo
	 *            班级信息
	 * @param request
	 * @param lastTeacherId
	 *            上一个班主任编号,修改其 班主任状态
	 * @return
	 */
	@RequestMapping(value = "edit/class/class", method = RequestMethod.POST)
	public String isUpdateClass(ClassInfo classInfo, HttpServletRequest request,
			@RequestParam(value = "lastTeacher", required = false) Integer lastTeacherId) {
		ClassInfo byClassName = classInfoService.findByClassName(classInfo.getClassName());
		if(byClassName!=null){
			if(!byClassName.getClassId().equals(classInfo.getClassId())){
				request.setAttribute("error", "该班级名称已存在!");
				return "../../error";
			}
		}
		// 修改上一教师不为班主任状态
		if (lastTeacherId != null) {
			String returnMsg = isChangeTeacherWork(0, lastTeacherId);
			if (returnMsg != null) {
				request.setAttribute("error", "修改教师班主任状态 对应教师编号有误");
				return "../error";
			}
		}
		// 修改当前教师为班主任状态
		String returnMsg = isChangeTeacherWork(1, classInfo.getTeacher().getTeacherId());
		if (returnMsg != null) {
			request.setAttribute("error", "修改教师班主任状态 对应教师编号有误");
			return "../error";
		}

		int row = classInfoService.isUpdateClass(classInfo);
		if (row < 1) {
			logger.error("班级 " + classInfo + " 修改失败");

			request.setAttribute("error", "班级修改失败,请稍后再试!");
			return "../error";
		}
		return "redirect:/classes";
	}

	/**
	 * 获取指定系部下的班级
	 * 
	 * @param gradeId
	 *            系部编号
	 * @param response
	 * @throws IOException
	 */
	@RequestMapping(value = "/gradeclass/{gradeId}", method = RequestMethod.GET)
	public void getClassesByGradeId(@PathVariable("gradeId") Integer gradeId, HttpServletResponse response)
			throws IOException {
		List<ClassInfo> classes = classInfoService.getClassByGradeId(gradeId);
		String json = gson.toJson(classes);
		response.getWriter().print(json);
	}

	/**
	 * 修改教师(班主任)工作状态
	 * 
	 * @param status
	 *            是否为班主任标识
	 * @param teacherId
	 *            教师编号
	 */
	private String isChangeTeacherWork(int status, Integer teacherId) {
		teacher.setIsWork(status);
		if (teacherId == null) {
			logger.error("修改教师班主任状态 对应教师编号有误");
			return "修改教师班主任状态 对应教师编号有误";
		}
		teacher.setTeacherId(teacherId);
		int row = teacherInfoService.updateTeacherIsWork(teacher);
		return null;
	}

	@RequestMapping("/stuCount")
	public void getStudentCountForClass(@RequestParam(value = "gradeId", required = false) Integer gradeId,
			HttpServletResponse response) throws IOException {
		Map<String, Object> map = classInfoService.getStudentCountForClass(gradeId);
		String json = StudentCount.createBarJson(map);

		response.getWriter().print(json);
	}

	/**
	 * 预添加班级处理
	 * 
	 * @return
	 */
	@RequestMapping("/preStudentCount")
	public ModelAndView preStudentCount() {

		ModelAndView model = new ModelAndView();
		// 获取系部信息
		List<GradeInfo> grades = gradeInfoService.getGrades();
		model.setViewName("admin/charts/studentCount");
		model.addObject("grades", grades);

		return model;
	}

}

科目管理控制层: 

@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();
		model.setViewName("/admin/course/courseedit");

		CourseInfo course = courseInfoService.getCourseById(courseId);
		model.addObject("course", course);
		/** 获取所有系部列表 */
		List<GradeInfo> grades = gradeInfoService.getGrades();
		model.addObject("grades", grades);

		return model;
	}

	/**
	 * 添加/修改科目信息
	 * 
	 * @param courseId
	 *            科目编号
	 * @param isUpdate
	 *            标识是否为修改操作
	 * @param courseName
	 *            科目名称
	 * @param division
	 *            分科情况
	 * @param gradeId
	 *            系部编号
	 * @return
	 */
	@RequestMapping(value = "/course/course", method = RequestMethod.POST)
	public String isUpdateOrAddCourse(@RequestParam(value = "courseId", required = false) Integer courseId,
			@RequestParam(value = "isupdate", required = false) Integer isUpdate,
			@RequestParam("courseName") String courseName, @RequestParam("division") Integer division,
			@RequestParam("gradeId") Integer gradeId) {

		CourseInfo course = new CourseInfo();
		course.setCourseId(courseId);
		course.setCourseName(courseName);
		course.setDivision(division);
		GradeInfo grade = new GradeInfo();
		grade.setGradeId(gradeId);
		course.setGrade(grade);
		// 修改
		if (isUpdate != null) {
			int row = courseInfoService.isUpdateCourse(course);
		}
		// 添加
		else {
			int row = courseInfoService.isAddCourse(course);
		}
		return "redirect:/courses";
	}

	/**
	 * 删除科目
	 * 
	 * @param courseId
	 *            待删除科目编号
	 * @return
	 */
	@RequestMapping(value = "/course/{courseId}", method = RequestMethod.DELETE)
	public String isDelTeacher(@PathVariable("courseId") Integer courseId) {
		int row = courseInfoService.isDelCourse(courseId);
		return "redirect:/courses";
	}

	/**
	 * 预添加科目信息
	 * 
	 * @return
	 */
	@RequestMapping("/preAddCourse")
	public ModelAndView preAddCourse() {
		ModelAndView model = new ModelAndView();
		model.setViewName("/admin/course/courseedit");
		/** 获取系部集合 */
		List<GradeInfo> grades = gradeInfoService.getGrades();
		model.addObject("grades", grades);
		return model;
	}
}

 源码获取:俺的博客首页 "资源" 里下载!

猜你喜欢

转载自blog.csdn.net/yuyecsdn/article/details/125018748