基于javaweb+mysql的ssm+maven学生考勤请假管理系统(java+ssm+jsp+layui+mysql)

基于javaweb+mysql的ssm+maven学生考勤请假管理系统(java+ssm+jsp+layui+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

基于javaweb+mysql的SSM+Maven学生考勤请假管理系统(java+ssm+jsp+layui+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版本; 6.是否Maven项目:是;

技术栈

  1. 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+CSS+JavaScript+layui

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中db.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
        return "";  
    }  
	
	
	/**
	 * springMvc多文件上传
	 * @param files
	 * @param id
	 * @return
	 */
    @RequestMapping(value = "/saveFiles")
    public String saveFiles(@RequestParam("file") CommonsMultipartFile[] files,Integer id,HttpServletRequest request){
		for(int i = 0;i<files.length;i++){
	      	System.out.println("fileName---------->" + files[i].getOriginalFilename());
		  if(!files[i].isEmpty()){
            int pre = (int) System.currentTimeMillis();
	     	try {
			//拿到输出流,同时重命名上传的文件
			 String filePath = request.getRealPath("/upload");
			 File f=new File(filePath);
			 if(!f.exists()){
				f.mkdirs();
			 }
		     String fileNmae=new Date().getTime() + files[i].getOriginalFilename();
		     File file=new File(filePath+"/"+pre + files[i].getOriginalFilename());
			  if(!file.exists()){
				  file.createNewFile();
			 }
			  files[i].transferTo(file);
		     } catch (Exception e) {
				e.printStackTrace();
				System.out.println("上传出错");
			 }
		  }
		}
	  return "";
	}
 // --------------------------------------- 华丽分割线 ------------------------------
	
	
}
package com.kwxy.hyt.controller;
		Object attribute = request.getSession().getAttribute("userId");
		
		if (attribute == null){
			return "redirect:/login/uLogin";	
		}
		Integer userId = Integer.valueOf(attribute.toString());
		qj.setStatus(0);
		
		Student byId = studentService.getById(userId);
		Integer bjId = byId.getBjId();
		Fdy f = new Fdy();
		f.setBjId(bjId);
		List<Fdy> listAllByEntity = fdyService.listAllByEntity(f);
		
		qj.setBjId(bjId);
		qj.setFdyId(listAllByEntity.get(0).getId());
		qj.setStudentId(userId);
		
		qjService.insert(qj);
		return "redirect:/qj/myqj.action";
	}
	
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update")
	public String update(Integer id,Model model) {
		Qj obj = qjService.load(id);
		model.addAttribute("obj",obj);
		return "qj/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/exUpdate")
	public String exUpdate(Qj qj, Model model, HttpServletRequest request, HttpServletResponse response) {
		//1.通过实体类修改,可以多传修改条件
		qjService.updateById(qj);
		//2.通过主键id修改
		//qjService.updateById(qj);
	@RequestMapping(value = "/sp")
	public String sp(Qj qj, Model model, HttpServletRequest request, HttpServletResponse response) {
		//1.通过实体类修改,可以多传修改条件
		Qj byId = qjService.getById(qj.getId());
		byId.setStatus(qj.getStatus());
		byId.setContent(qj.getContent());
		qjService.updateById(byId);
		return "redirect:/qj/findBySql.action";
	}
	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		///1.通过主键删除
		qjService.deleteById(id);
		return "redirect:/qj/myqj.action";
	}
	
	
}
package com.kwxy.hyt.controller;

	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		///1.通过主键删除
		qjService.deleteById(id);
		return "redirect:/qj/myqj.action";
	}
	
	
}
package com.kwxy.hyt.controller;

/**
 * @ClassName:  
 * @Description: 
 */

@Controller
		if (byId== null || byId.getBjId() == null){
			return "redirect:/login/message?type=1";
		}
		student.setBjId(byId.getBjId());
		student.setIsDelete(0);
		studentService.insert(student);
		return "redirect:/student/findBySql.action";
	}
	
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update")
	public String update(Integer id,Model model) {
		Student obj = studentService.load(id);
		model.addAttribute("obj",obj);
		return "student/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/exUpdate")
	public String exUpdate(Student student, Model model, HttpServletRequest request, HttpServletResponse response) {
		//1.通过实体类修改,可以多传修改条件
		studentService.updateById(student);
		//2.通过主键id修改
		//studentService.updateById(student);
		return "redirect:/student/findBySql.action";
	}
	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		Student load = studentService.load(id);
		load.setIsDelete(1);
		studentService.updateById(load);
		return "redirect:/student/findBySql.action";
	}
	
	
}
package com.kwxy.hyt.controller;
		}
        if(!isEmpty(qj.getStatus())){
        	sql += " and status like '%"+qj.getStatus()+"%'";
		}
       sql += " ORDER BY ID DESC ";
		Pager<Qj> pagers = qjService.findBySqlRerturnEntity(sql);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", qj);
		return "qj/qj";
	}
	
	//findBySqlSign
	@RequestMapping(value = "/findBySqlSign")
	public String findBySqlSign(Qj qj, Model model, HttpServletRequest request, HttpServletResponse response) {
		
		//分页查询
		String sql = "SELECT * FROM qj WHERE bjId = "+qj.getBjId();
        if(!isEmpty(qj.getBjId())){
        	sql += " and bjId like '%"+qj.getBjId()+"%'";
		}
        if(!isEmpty(qj.getStudentId())){
        	sql += " and studentId like '%"+qj.getStudentId()+"%'";
		}
        if(!isEmpty(qj.getFdyId())){
        	sql += " and fdyId like '%"+qj.getFdyId()+"%'";
		}
        if(!isEmpty(qj.getStartTime())){
        	sql += " and startTime like '%"+qj.getStartTime()+"%'";
		}
        if(!isEmpty(qj.getEndTime())){
        	sql += " and endTime like '%"+qj.getEndTime()+"%'";
		}
        if(!isEmpty(qj.getStatus())){
        	sql += " and status like '%"+qj.getStatus()+"%'";
		}
       sql += " ORDER BY ID DESC ";
		Pager<Qj> pagers = qjService.findBySqlRerturnEntity(sql);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", qj);
		model.addAttribute("bjId", qj.getBjId());
		return "qj/qjSign";
	}
	
	
	/**
	 * 我的请假
	 * @param qj
	 * @param model
	 * @param request
	 * @param response
	 * @return
	@RequestMapping(value = "/exAdd")
	public String exAdd(Qj qj, Model model, HttpServletRequest request, HttpServletResponse response) {
		
		Object attribute = request.getSession().getAttribute("userId");
		
		if (attribute == null){
			return "redirect:/login/uLogin";	
		}
		Integer userId = Integer.valueOf(attribute.toString());
		qj.setStatus(0);
		
		Student byId = studentService.getById(userId);
		Integer bjId = byId.getBjId();
		Fdy f = new Fdy();
		f.setBjId(bjId);
		List<Fdy> listAllByEntity = fdyService.listAllByEntity(f);
		
		qj.setBjId(bjId);
		qj.setFdyId(listAllByEntity.get(0).getId());
		qj.setStudentId(userId);
		
		qjService.insert(qj);
		return "redirect:/qj/myqj.action";
	}
	
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update")
	public String update(Integer id,Model model) {
		Qj obj = qjService.load(id);
		model.addAttribute("obj",obj);
		return "qj/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/exUpdate")
	public String exUpdate(Qj qj, Model model, HttpServletRequest request, HttpServletResponse response) {
		//1.通过实体类修改,可以多传修改条件
		qjService.updateById(qj);
		//2.通过主键id修改
		//qjService.updateById(qj);
		return "redirect:/qj/myqj.action";
	}
	
	@RequestMapping(value = "/sp")
	public String sp(Qj qj, Model model, HttpServletRequest request, HttpServletResponse response) {
		//1.通过实体类修改,可以多传修改条件
		Qj byId = qjService.getById(qj.getId());
      Object attribute = request.getSession().getAttribute("userId");
      JSONObject j = new  JSONObject();
	   	if (attribute == null){
	   		j.put("res", 0);
	   		return j.toString();
		}
			Integer userId = Integer.valueOf(attribute.toString());
			Fdy byId = fdyService.getById(userId);
			byId.setPassword(password);
			fdyService.updateById(byId);
			j.put("res", 1);
			return j.toString();
			
	}
	
	/**
	 * 添加执行
	 * @return
	 */
	@RequestMapping(value = "/exAdd")
	public String exAdd(Fdy fdy, Model model, HttpServletRequest request, HttpServletResponse response) {
		fdy.setIsDelete(0);
		fdyService.insert(fdy);
		return "redirect:/fdy/findBySql.action";
	}
	
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update")
	public String update(Integer id,Model model) {
		Bj b = new Bj();
		b.setIsDelete(0);
		List<Bj> listAllByEntity = bjService.listAllByEntity(b);
		model.addAttribute("bjs", listAllByEntity);
		
		Fdy obj = fdyService.load(id);
		model.addAttribute("obj",obj);
		return "fdy/update";
	}
	
		if (role == 2){
			Fdy s = new Fdy();
			s.setCode(code);
			s.setPassword(password);
			Fdy byEntity = fdyService.getByEntity(s);
			if(byEntity == null){
				return "redirect:/login/uLogin.action";
			}else{
				request.getSession().setAttribute("role",role);
				request.getSession().setAttribute("username", byEntity.getUsername());
				request.getSession().setAttribute("userId", byEntity.getId());
			}
			
		}
		return "login/index";
	}
	
	/**
	 * 退出
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping("/tuichu")
	public String tuichu( HttpServletRequest request, HttpServletResponse response){
		HttpSession session = request.getSession();
		session.invalidate();
		return "login/uLogin";
	}
	
	/*
	 * 其他角色退出
	 */
	@RequestMapping("/uTui")
	public String uTui( HttpServletRequest request, HttpServletResponse response){
		HttpSession session = request.getSession();
		session.invalidate();
		return "redirect:/login/uLogin";
	}
	

		Qj byId = qjService.getById(qj.getId());
		byId.setStatus(qj.getStatus());
		byId.setContent(qj.getContent());
		qjService.updateById(byId);
		return "redirect:/qj/findBySql.action";
	}
	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		///1.通过主键删除
		qjService.deleteById(id);
		return "redirect:/qj/myqj.action";
	}
	
	
}
package com.kwxy.hyt.controller;

		Integer userId = Integer.valueOf(attribute.toString());
		sign.setTeacherId(userId);
		sign.setStatus(0);
		signService.insert(sign);
		//查询学生,插入记录表
		Student s = new Student();
		s.setBjId(sign.getBjId());
		s.setIsDelete(0);
		List<Student> listAllByEntity = studentService.listAllByEntity(s);
		if (!CollectionUtils.isEmpty(listAllByEntity)){
			
			for (Student ss : listAllByEntity){
				Record re = new Record();
			//	re.setCreateTime(new Date());
				re.setSignId(sign.getId());
				//0 未签到 1 已签到 2 请假
				re.setStatus(0);
				re.setStudentId(ss.getId());
				recordService.insert(re);
			}
		}
		return "redirect:/sign/findBySql.action?bjId="+sign.getBjId();
	}
	
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update")
	public String update(Integer id,Model model) {
		Sign obj = signService.load(id);
		model.addAttribute("obj",obj);
		return "sign/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/sp")
	public String sp(Sign sign, Model model, HttpServletRequest request, HttpServletResponse response) {
		//1.通过实体类修改,可以多传修改条件
		Sign obj = signService.load(sign.getId());
		
		if (sign.getStatus() == 2){
			Fdy f = new Fdy();
			f.setBjId(obj.getBjId());
			Fdy byEntity = null;
			try {
				byEntity = fdyService.listAllByEntity(f).get(0);
	
	/**
	 * 分页查询 返回list对象(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj")
	public String findByObj(Manage manage, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Pager<Manage> pagers = manageService.findByEntity(manage);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", manage);
		return "manage/manage";
	}
	
	/**
	 * 分页查询 返回list对象(通过对By Sql)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findBySql")
	public String findBySql(Manage manage, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		String sql = "SELECT * FROM manage WHERE 1=1 ";
        if(!isEmpty(manage.getUsername())){
        	sql += " and username like '%"+manage.getUsername()+"%'";
		}
        if(!isEmpty(manage.getPassword())){
        	sql += " and password like '%"+manage.getPassword()+"%'";
		}
       sql += " ORDER BY ID DESC ";
		Pager<Manage> pagers = manageService.findBySqlRerturnEntity(sql);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", manage);
		return "manage/manage";
	}
	
	
	/**
	 * 分页查询 返回list对象(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap")
	public String findByMap(Manage manage, Model model, HttpServletRequest request, HttpServletResponse response) {
//		}
//       
//		manageService.deleteByMap(params);
//		//4.状态删除
//		Manage load = manageService.getById(manage.getId())
//		load.setIsDelete(1);
//		manageService.updateById(load);
		//5.状态删除
		//Manage load = manageService.load(id);
		//load.setIsDelete(1);
		//manageService.updateById(load);
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("message", "删除成功");
		return jsonObject.toString();
	}
	/**
	 * 单文件上传
	 * @param file
	 * @param request
	 * @param model
	 * @return
	 */
    @RequestMapping(value = "/saveFile")  
    public String saveFile(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, Model model) {  
  
        System.out.println("开始");  
        String path = request.getSession().getServletContext().getRealPath("/upload");  
        String fileName = file.getOriginalFilename();  
        System.out.println(path);  
        File targetFile = new File(path, fileName);  
        if(!targetFile.exists()){  
            targetFile.mkdirs();  
        }  
        //保存  
        try {  
            file.transferTo(targetFile);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
        return "";  
    }  
	
	
	/**
	 * springMvc多文件上传
	 * @param files
	 * @param id
	 * @return
	 */
    @RequestMapping(value = "/saveFiles")
    public String saveFiles(@RequestParam("file") CommonsMultipartFile[] files,Integer id,HttpServletRequest request){
		for(int i = 0;i<files.length;i++){

	/*********************************查询列表【不分页】***********************************************/
	
	/**
	 * 【不分页 => 查询列表 => 无条件】
	* @Title: listAll 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @return 设定文件 
	* @return String 返回类型 
	* @throws
	 */
	@RequestMapping(value = "/listAllJson", method = RequestMethod.POST)
	@ResponseBody
	public String listAllJson(Manage manage, HttpServletRequest request, HttpServletResponse response){
		List<Manage> listAll = manageService.listAll();
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("list", listAll);
		jsonObject.put("obj", manage);
		return jsonObject.toString();
	}
	
	/**
	 *  【不分页=》查询列表=>有条件】
	* @Title: listByEntity 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @return 设定文件 
	* @return String 返回类型 
	* @throws
	 */
	@RequestMapping(value = "/listByEntityJson", method = RequestMethod.POST)
	@ResponseBody
	public String listByEntityJson(Manage manage,  HttpServletRequest request, HttpServletResponse response){
		List<Manage> listAll = manageService.listAllByEntity(manage);
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("list", listAll);
		jsonObject.put("obj", manage);
		return jsonObject.toString();
	}
	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		Fdy load = fdyService.load(id);
		load.setIsDelete(1);
		fdyService.updateById(load);
		return "redirect:/fdy/findBySql.action";
	}
	
	
	
}
package com.kwxy.hyt.controller;

@Controller
@RequestMapping("/login")
public class LoginController  extends BaseController{
	
	@Autowired
	private ManageService manageService;
	@Autowired
	private FdyService fdyService;
	@Autowired
	private TeacherService teacherService;
	@Autowired
	private StudentService studentService;
	
	/**
	 * 跳转登陆 管理员
	 * @return
	 */
        if(!isEmpty(fdy.getCode())){
        	params.put("code", fdy.getCode());
		}
        if(!isEmpty(fdy.getSex())){
        	params.put("sex", fdy.getSex());
		}
        if(!isEmpty(fdy.getBjId())){
        	params.put("bjId", fdy.getBjId());
		}
		//分页查询
		Pager<Fdy> pagers = fdyService.findByMap(params);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", fdy);
		return "fdy/fdy";
	}
	
	/**********************************【增删改】******************************************************/
	
	/**
	 * 跳至添加页面
	 * @return
	 */
	@RequestMapping(value = "/add")
	public String add(Model model) {
		// 查询班级列表
		Bj b = new Bj();
		b.setIsDelete(0);
		List<Bj> listAllByEntity = bjService.listAllByEntity(b);
		model.addAttribute("bjs", listAllByEntity);
		return "fdy/add";
	}

	/**
	 * 跳至详情页面
	 * @return
	 */
	@RequestMapping(value = "/view")
	public String view(Integer id,Model model) {
		Fdy obj = fdyService.load(id);
		model.addAttribute("obj",obj);
		return "fdy/view";
	}
	
	@RequestMapping(value = "/pass")
	public String pass(Integer id,HttpServletRequest request,Model model) {
	//${ctx}/sign/mySign.do?bjId=${data.bjId}
	
	@RequestMapping(value = "/findBySql")
	public String findBySql(Sign sign, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Object attribute = request.getSession().getAttribute("userId");
		
		if (attribute == null){
			return "redirect:/login/uLogin";	
		}
		Integer userId = Integer.valueOf(attribute.toString());
		
		String sql = "SELECT * FROM sign WHERE bjId= "+sign.getBjId() + " and teacherId="+userId;
        if(!isEmpty(sign.getBjId())){
        	sql += " and bjId like '%"+sign.getBjId()+"%'";
		}
        if(!isEmpty(sign.getTeacherId())){
        	sql += " and teacherId like '%"+sign.getTeacherId()+"%'";
		}
        if(!isEmpty(sign.getName())){
        	sql += " and name like '%"+sign.getName()+"%'";
		}
        if(!isEmpty(sign.getStatus())){
        	sql += " and status like '%"+sign.getStatus()+"%'";
		}
        if(!isEmpty(sign.getFdyId())){
        	sql += " and fdyId like '%"+sign.getFdyId()+"%'";
		}
       sql += " ORDER BY ID DESC ";
		Pager<Sign> pagers = signService.findBySqlRerturnEntity(sql);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", sign);
		model.addAttribute("bjId", sign.getBjId());
		return "sign/sign";
	}
	
	/**
	 * 辅导员列表
	 * @param sign
	 * @param model
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/fdySign")
	public String fdySign(Sign sign, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值