赞
踩
基于javaweb+mysql的springboot学生信息管理系统(java+springboot+maven+mybaits+html+easyui+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot学生信息管理系统(java+springboot+maven+mybaits+html+easyui+mysql)
项目介绍
Springboot学生信息管理系统主要分为管理员、教师、学生三种角色。 管理员角色主要功能如下: 学生信息管理:学生查询、新增、编辑、删除等; 班级信息管理:班级查询、新增、编辑、删除等; 教师信息管理:教师查询、新增、编辑、删除等; 课程信息管理:课程查询、新增、编辑、删除等; 选课信息管理:选课查询、新增、编辑、删除等; 考勤信息管理:考勤查询、新增、编辑、删除等; 请假信息管理:请假查询、新增、编辑、删除等; 成绩信息管理:成绩查询、新增、编辑、删除等; 成绩统计:区间统计图、平均统计图; 系统管理:修改密码;
教师主要功能如下: 学生信息管理:学生查询、新增、编辑、删除等; 班级信息管理:班级查询、新增、编辑、删除等; 教师信息管理:教师查询、新增、编辑、删除等; 课程信息管理:课程查询、新增、编辑、删除等; 选课信息管理:选课查询、新增、编辑、删除等; 考勤信息管理:考勤查询、新增、编辑、删除等; 请假信息管理:请假查询、新增、编辑、删除等; 成绩信息管理:成绩查询、新增、编辑、删除等; 教师用户仅可查看自己权限下的信息。
学生主要功能如下: 学生信息管理:学生查询、新增、编辑、删除等; 选课信息管理:选课查询、新增、编辑、删除等; 考勤信息管理:考勤查询、新增、编辑、删除等; 请假信息管理:请假查询、新增、编辑、删除等; 成绩信息管理:成绩查询、新增、编辑、删除等; 学生用户仅可查看自己的信息。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是;
技术栈
后端:SpringBoot+Mybaits
前端:Html+css+easyui+h-ui
使用说明
项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入地址:http://localhost:8080/ 管理员账号、密码:admin/123456 教师账号、密码:张三/111 学生账号、密码:张三纷/123456
} return ajaxResult; } /** * 显示 验证码 * @param request * @param response * @param vl * @param w * @param h */ @GetMapping("/checkCode") public void generateCpacha(HttpServletRequest request, HttpServletResponse response, @RequestParam(value="vl",defaultValue="4",required=false) Integer vl, @RequestParam(value="w",defaultValue="110",required=false) Integer w, @RequestParam(value="h",defaultValue="39",required=false) Integer h){ CpachaUtil cpachaUtil = new CpachaUtil(vl, w, h); String generatorVCode = cpachaUtil.generatorVCode(); request.getSession().setAttribute(Const.CODE, generatorVCode); BufferedImage generatorRotateVCodeImage = cpachaUtil.generatorRotateVCodeImage(generatorVCode, true); try { ImageIO.write(generatorRotateVCodeImage, "gif", response.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } } /** * 跳转后台主页 * @return */ @GetMapping("/index") public String index(){ return "/system/index"; } /** * 登出 * @param session * @return */ @GetMapping("/logout") public String logout(HttpSession session){ session.invalidate(); return "/login"; }
}else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("系统错误,请重新修改"); } } catch (Exception e) { e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("系统错误,请重新修改"); } return ajaxResult; } /** * 删除学生成绩 * @param id * @return */ @PostMapping("/deleteScore") @ResponseBody public AjaxResult deleteScore(Integer id){ AjaxResult ajaxResult = new AjaxResult(); try { int count = scoreService.deleteScore(id); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("删除成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("系统错误,请重新删除"); } } catch (Exception e) { e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("系统错误,请重新删除"); } return ajaxResult; } /** * 导入xlsx表 并存入数据库 * @param importScore * @param response */ @PostMapping("/importScore") @ResponseBody public void importScore(@RequestParam("importScore") MultipartFile importScore, HttpServletResponse response){ response.setCharacterEncoding("UTF-8"); try { InputStream inputStream = importScore.getInputStream(); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream); XSSFSheet sheetAt = xssfWorkbook.getSheetAt(0); int count = 0; String errorMsg = ""; for(int rowNum = 1; rowNum <= sheetAt.getLastRowNum(); rowNum++){
* 登出 * @param session * @return */ @GetMapping("/logout") public String logout(HttpSession session){ session.invalidate(); return "/login"; } /** * 获取图片地址 * @param sid * @param tid * @return */ @RequestMapping("/getPhoto") @ResponseBody public AjaxResult getPhoto(@RequestParam(value = "sid",defaultValue = "0") Integer sid, @RequestParam(value = "tid",defaultValue = "0")Integer tid){ AjaxResult ajaxResult = new AjaxResult(); if(sid != 0){ Student student = studentService.findById(sid); ajaxResult.setImgurl(student.getPhoto()); return ajaxResult; } if(tid!=0){ Teacher teacher = teacherService.findById(tid); ajaxResult.setImgurl(teacher.getPhoto()); return ajaxResult; } return ajaxResult; } @GetMapping("/personalView") public String personalView(){ return "/system/personalView"; } /** * 修改密码 * @param password * @param newpassword * @param session * @return */
public AjaxResult addScore(Score score){ AjaxResult ajaxResult = new AjaxResult(); //判断是否已录入成绩 if(scoreService.isScore(score)){ //true为已签到 ajaxResult.setSuccess(false); ajaxResult.setMessage("已录入,请勿重复录入!"); }else{ int count = scoreService.addScore(score); if(count > 0){ //签到成功 ajaxResult.setSuccess(true); ajaxResult.setMessage("录入成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("系统错误,请重新录入"); } } return ajaxResult; } /** * 修改学生成绩 * @param score * @return */ @PostMapping("/editScore") @ResponseBody public AjaxResult editScore(Score score){ AjaxResult ajaxResult = new AjaxResult(); try { int count = scoreService.editScore(score); if(count > 0){ //签到成功 ajaxResult.setSuccess(true); ajaxResult.setMessage("修改成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("系统错误,请重新修改"); } } catch (Exception e) {
// 上传图片到 -》 “绝对路径” fileImg.transferTo(newFile); } catch (IOException e) { e.printStackTrace(); } student.setPhoto(uuidName+extName); } //保存学生信息到数据库 try{ int count = studentService.addStudent(student); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("保存成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("保存失败"); } }catch (Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("保存失败"); } ajaxResult.setSuccess(true); return ajaxResult; } /** * 修改学生信息 * @param files * @param student * @return */ @PostMapping("/editStudent") @ResponseBody public AjaxResult editStudent(@RequestParam("file") MultipartFile[] files,Student student){ AjaxResult ajaxResult = new AjaxResult(); // 存放上传图片的文件夹 File fileDir = UploadUtil.getImgDirFile(); for(MultipartFile fileImg : files){ String name = fileImg.getOriginalFilename(); if(name.equals("")){ break; } // 拿到文件名 String extName = fileImg.getOriginalFilename().substring(fileImg.getOriginalFilename().lastIndexOf("."));
* @param page * @param rows * @param studentid * @param courseid * @param type * @param date * @param from * @param session * @return */ @RequestMapping("/getAttendanceList") @ResponseBody public Object getAttendanceList(@RequestParam(value = "page", defaultValue = "1")Integer page, @RequestParam(value = "rows", defaultValue = "100")Integer rows, @RequestParam(value = "studentid", defaultValue = "0")String studentid, @RequestParam(value = "courseid", defaultValue = "0")String courseid, String type,String date, String from, HttpSession session){ Map<String,Object> paramMap = new HashMap(); paramMap.put("pageno",page); paramMap.put("pagesize",rows); if(!studentid.equals("0")) paramMap.put("studentid",studentid); if(!courseid.equals("0")) paramMap.put("courseid",courseid); if(!StringUtils.isEmpty(type)) paramMap.put("type",type); if(!StringUtils.isEmpty(date)) paramMap.put("date",date); //判断是老师还是学生权限 Student student = (Student) session.getAttribute(Const.STUDENT); if(!StringUtils.isEmpty(student)){ //是学生权限,只能查询自己的信息 paramMap.put("studentid",student.getId()); } PageBean<Attendance> pageBean = attendanceService.queryPage(paramMap); if(!StringUtils.isEmpty(from) && from.equals("combox")){ return pageBean.getDatas(); }else{ Map<String,Object> result = new HashMap(); result.put("total",pageBean.getTotalsize()); result.put("rows",pageBean.getDatas()); return result; } } /** * 通过 选课信息中的课程id 查询 学生所选择的课程 * @param studentid * @return */ @RequestMapping("/getStudentSelectedCourseList")
* @return */ @PostMapping("/editClazz") @ResponseBody public AjaxResult editClazz(Clazz clazz){ AjaxResult ajaxResult = new AjaxResult(); try { int count = clazzService.editClazz(clazz); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("修改成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } }catch (Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } return ajaxResult; } } /** * @Classname SelectedCourseController * @Description 选课信息控制器
Score score = new Score(); score.setStudentId(studentId); score.setCourseId(courseId); score.setScore(scoreValue); score.setRemark(remark); if(!scoreService.isScore(score)){ // 3)存入数据库 int i = scoreService.addScore(score); if(i > 0){ count ++ ; } }else{ errorMsg += "第" + rowNum + "行已录入,不重复录入!\n"; } } errorMsg += "成功录入" + count + "条成绩信息!"; response.getWriter().write("<div id='message'>"+errorMsg+"</div>"); } catch (IOException e) { e.printStackTrace(); try { response.getWriter().write("<div id='message'>上传错误</div>"); } catch (IOException ex) { ex.printStackTrace(); } } } /** * 导出xlsx表 * @param response * @param score * @param session */ @RequestMapping("/exportScore") @ResponseBody private void exportScore(HttpServletResponse response,Score score,HttpSession session) { //获取当前登录用户类型 Student student = (Student) session.getAttribute(Const.STUDENT); if(!StringUtils.isEmpty(student)){ //如果是学生,只能查看自己的信息 score.setStudentId(student.getId()); } try { response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode("score_list_sid_"+score.getStudentId()+"_cid_"+score.getStudentId()+".xls", "UTF-8"));
ajaxResult.setSuccess(true); session.setAttribute(Const.ADMIN,ad); session.setAttribute(Const.USERTYPE,"1"); break; } case "2":{ Student student = new Student(); student.setPassword(password); student.setUsername(username); Student st = studentService.findByStudent(student); if(StringUtils.isEmpty(st)){ ajaxResult.setSuccess(false); ajaxResult.setMessage("用户名或密码错误"); return ajaxResult; } ajaxResult.setSuccess(true); session.setAttribute(Const.STUDENT,st); session.setAttribute(Const.USERTYPE,"2"); break; } case "3":{ Teacher teacher = new Teacher(); teacher.setPassword(password); teacher.setUsername(username); Teacher tr = teacherService.findByTeacher(teacher); if(StringUtils.isEmpty(tr)){ ajaxResult.setSuccess(false); ajaxResult.setMessage("用户名或密码错误"); return ajaxResult; } ajaxResult.setSuccess(true); session.setAttribute(Const.TEACHER,tr); session.setAttribute(Const.USERTYPE,"3"); break; } } return ajaxResult; } /** * 显示 验证码 * @param request * @param response * @param vl * @param w * @param h */ @GetMapping("/checkCode")
// 拿到文件名 String extName = fileImg.getOriginalFilename().substring(fileImg.getOriginalFilename().lastIndexOf(".")); String uuidName = UUID.randomUUID().toString(); try { // 构建真实的文件路径 File newFile = new File(fileDir.getAbsolutePath() + File.separator +uuidName+ extName); // 上传图片到 -》 “绝对路径” fileImg.transferTo(newFile); Student byId = studentService.findById(student.getId()); File file = new File(fileDir.getAbsolutePath() + File.separator + byId.getPhoto()); if(file != null){ //file.delete(); } } catch (IOException e) { e.printStackTrace(); } student.setPhoto(uuidName+extName); } try{ int count = studentService.editStudent(student); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("修改成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } }catch(Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } return ajaxResult; } }
Student st = studentService.findByStudent(student); if(StringUtils.isEmpty(st)){ ajaxResult.setSuccess(false); ajaxResult.setMessage("用户名或密码错误"); return ajaxResult; } ajaxResult.setSuccess(true); session.setAttribute(Const.STUDENT,st); session.setAttribute(Const.USERTYPE,"2"); break; } case "3":{ Teacher teacher = new Teacher(); teacher.setPassword(password); teacher.setUsername(username); Teacher tr = teacherService.findByTeacher(teacher); if(StringUtils.isEmpty(tr)){ ajaxResult.setSuccess(false); ajaxResult.setMessage("用户名或密码错误"); return ajaxResult; } ajaxResult.setSuccess(true); session.setAttribute(Const.TEACHER,tr); session.setAttribute(Const.USERTYPE,"3"); break; } } return ajaxResult; } /** * 显示 验证码 * @param request * @param response * @param vl * @param w * @param h */ @GetMapping("/checkCode") public void generateCpacha(HttpServletRequest request, HttpServletResponse response, @RequestParam(value="vl",defaultValue="4",required=false) Integer vl, @RequestParam(value="w",defaultValue="110",required=false) Integer w,
student.setPhoto(uuidName+extName); } try{ int count = studentService.editStudent(student); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("修改成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } }catch(Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } return ajaxResult; } } /** * @Classname TeacherController * @Description None */ @Controller
/** * 统计成绩数据 * @param courseid * @param searchType * @return */ @RequestMapping("/getScoreStatsList") @ResponseBody public Object getScoreStatsList(@RequestParam(value = "courseid", defaultValue = "0")Integer courseid, String searchType){ AjaxResult ajaxResult = new AjaxResult(); if(searchType.equals("avg")){ ScoreStats scoreStats = scoreService.getAvgStats(courseid); List<Double> scoreList = new ArrayList<Double>(); scoreList.add(scoreStats.getMax_score()); scoreList.add(scoreStats.getMin_score()); scoreList.add(scoreStats.getAvg_score()); List<String> avgStringList = new ArrayList<String>(); avgStringList.add("最高分"); avgStringList.add("最低分"); avgStringList.add("平均分"); Map<String, Object> retMap = new HashMap<String, Object>(); retMap.put("courseName", scoreStats.getCourseName()); retMap.put("scoreList", scoreList); retMap.put("avgList", avgStringList); retMap.put("type", "success"); return retMap; } Score score = new Score(); score.setCourseId(courseid); List<Score> scoreList = scoreService.getAll(score); List<Integer> numberList = new ArrayList<Integer>(); numberList.add(0); numberList.add(0); numberList.add(0); numberList.add(0); numberList.add(0); List<String> rangeStringList = new ArrayList<String>(); rangeStringList.add("60分以下"); rangeStringList.add("60~70分"); rangeStringList.add("70~80分"); rangeStringList.add("80~90分"); rangeStringList.add("90~100分"); String courseName = "";
/** * 跳转班级页面 * @return */ @GetMapping("/clazz_list") public String clazzList(){ return "/clazz/clazzList"; } /** * 异步加载班级列表 * @param page * @param rows * @param clazzName * @return */ @PostMapping("/getClazzList") @ResponseBody public Object getClazzList(@RequestParam(value = "page", defaultValue = "1")Integer page, @RequestParam(value = "rows", defaultValue = "100")Integer rows, String clazzName, String from){ Map<String,Object> paramMap = new HashMap(); paramMap.put("pageno",page); paramMap.put("pagesize",rows); if(!StringUtils.isEmpty(clazzName)) paramMap.put("name",clazzName); PageBean<Clazz> pageBean = clazzService.queryPage(paramMap); if(!StringUtils.isEmpty(from) && from.equals("combox")){ return pageBean.getDatas(); }else{ Map<String,Object> result = new HashMap(); result.put("total",pageBean.getTotalsize()); result.put("rows",pageBean.getDatas()); return result; } } /** * 添加班级 * @param clazz * @return */ @PostMapping("/addClazz")
} /** * 添加班级 * @param clazz * @return */ @PostMapping("/addClazz") @ResponseBody public AjaxResult addClazz(Clazz clazz){ AjaxResult ajaxResult = new AjaxResult(); try { int count = clazzService.addClazz(clazz); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("添加成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("添加失败"); } }catch (Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("添加失败"); } return ajaxResult; } /** * 删除班级 * @param data * @return */ @PostMapping("/deleteClazz") @ResponseBody public AjaxResult deleteClazz(Data data){ AjaxResult ajaxResult = new AjaxResult(); try { List<Integer> ids = data.getIds(); Iterator<Integer> iterator = ids.iterator(); while (iterator.hasNext()){ //判断是否存在课程关联学生 if(!studentService.isStudentByClazzId(iterator.next())){ ajaxResult.setSuccess(false);
} }catch (Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } return ajaxResult; } } /** * @Classname SelectedCourseController * @Description 选课信息控制器 */ @Controller @RequestMapping("/selectedCourse") public class SelectedCourseController { @Autowired private SelectedCourseService selectedCourseService; @GetMapping("/selectedCourse_list") public String selectedCourseList(){
break; } // 拿到文件名 String extName = fileImg.getOriginalFilename().substring(fileImg.getOriginalFilename().lastIndexOf(".")); String uuidName = UUID.randomUUID().toString(); try { // 构建真实的文件路径 File newFile = new File(fileDir.getAbsolutePath() + File.separator +uuidName+ extName); // 上传图片到 -》 “绝对路径” fileImg.transferTo(newFile); Teacher byId = teacherService.findById(teacher.getId()); File file = new File(fileDir.getAbsolutePath() + File.separator + byId.getPhoto()); if(file != null){ //file.delete(); } } catch (IOException e) { e.printStackTrace(); } teacher.setPhoto(uuidName+extName); } try{ int count = teacherService.editTeacher(teacher); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("修改成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } }catch(Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } return ajaxResult;
int count = clazzService.deleteClazz(data.getIds()); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("删除成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("删除失败"); } }catch (Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("删除失败,该班级存在老师或学生"); } return ajaxResult; } /** * 班级修改 * @param clazz * @return */ @PostMapping("/editClazz") @ResponseBody public AjaxResult editClazz(Clazz clazz){ AjaxResult ajaxResult = new AjaxResult(); try { int count = clazzService.editClazz(clazz); if(count > 0){ ajaxResult.setSuccess(true); ajaxResult.setMessage("修改成功"); }else{ ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } }catch (Exception e){ e.printStackTrace(); ajaxResult.setSuccess(false); ajaxResult.setMessage("修改失败"); } return ajaxResult; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。