一、源码特点
   SSM人事请假签到管理系统是一套完善的完整人事请假薪酬加班管理,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
视频链接: https://www.bilibili.com/video/BV1Vw411p7wk/
 前段主要技术css javascript jsp html LayUi jquery
 后端主要技术 SpringMVC spring mybatis
 数据库 mysql
 开发工具 eclipse  JDK TOMCAT
二、功能介绍
 系统主要角色包括员工和管理员
 (1)管理员管理:对管理员信息进行添加、删除、修改和查看
 (2)部门管理:对部门信息进行添加、删除、修改和查看
 (3)员工管理:对员工信息进行添加、删除、修改和查看
 (4)部门调换管理:对部门调换信息进行添加、删除、修改和查看
 (5)薪资管理:对薪资信息进行添加、删除、修改和查看
 (6)考勤管理:对考勤信息进行添加、删除、修改和查看
 (7)任务管理:对任务信息进行添加、删除、修改和查看
 (8)薪资申请管理:对薪资申请信息进行添加、删除、修改和查看
 (9)用户修改个人信息,登录验证有校验码
数据库设计
| [表gly] 管理员列属性表格 | |||||
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 | 
| 1 | glyid | INTEGER | 11 | 是 | 管理员编号 | 
| 2 | yhm | VARCHAR | 40 | 否 | 用户名 | 
| 3 | mm | VARCHAR | 40 | 否 | 密码 | 
| 4 | xm | VARCHAR | 40 | 否 | 姓名 | 
| [表bumen] 部门列属性表格 | |||||
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 | 
| 1 | bmid | INTEGER | 11 | 是 | 部门编号 | 
| 2 | bmmc | VARCHAR | 40 | 否 | 部门名称 | 
| 3 | js | VARCHAR | 40 | 否 | 介绍 | 
| [表yuangong] 员工列属性表格 | |||||
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 | 
| 1 | ygid | INTEGER | 11 | 是 | 员工编号 | 
| 2 | yhm | VARCHAR | 40 | 否 | 用户名 | 
| 3 | mm | VARCHAR | 40 | 否 | 密码 | 
| 4 | xm | VARCHAR | 40 | 否 | 姓名 | 
| 5 | lxdh | VARCHAR | 40 | 否 | 联系电话 | 
| 6 | lxdz | VARCHAR | 40 | 否 | 联系地址 | 
| 7 | bm | VARCHAR | 40 | 否 | 部门 | 
| 8 | jbgz | VARCHAR | 40 | 否 | 基本工资 | 
| 9 | cqgz | VARCHAR | 40 | 否 | 出勤工资 | 
| 10 | jiabgz | VARCHAR | 40 | 否 | 加班工资 | 
| [表bmdh] 部门调换列属性表格 | |||||
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 | 
| 1 | bmdhid | INTEGER | 11 | 是 | 部门调换编号 | 
| 2 | bt | VARCHAR | 40 | 否 | 标题 | 
| 3 | nr | VARCHAR | 40 | 否 | 内容 | 
| 4 | dhbm | VARCHAR | 40 | 否 | 调换部门 | 
| 5 | ybm | VARCHAR | 40 | 否 | 原部门 | 
| 6 | yh | VARCHAR | 40 | 否 | 用户 | 
| 7 | sqsj | VARCHAR | 40 | 否 | 申请时间 | 
| 8 | zt | VARCHAR | 40 | 否 | 状态 | 
| [表xinzi] 薪资列属性表格 | |||||
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 | 
| 1 | xzid | INTEGER | 11 | 是 | 薪资编号 | 
| 2 | yf | VARCHAR | 40 | 否 | 月份 | 
| 3 | yg | VARCHAR | 40 | 否 | 员工 | 
| 4 | jbgz | VARCHAR | 40 | 否 | 基本工资 | 
| 5 | cqts | VARCHAR | 40 | 否 | 出勤天数 | 
| 6 | cqgz | VARCHAR | 40 | 否 | 出勤工资 | 
| 7 | jbsj | VARCHAR | 40 | 否 | 加班时间 | 
| 8 | jiabgz | VARCHAR | 40 | 否 | 加班工资 | 
| 9 | fbsj | VARCHAR | 40 | 否 | 发布时间 | 
控制层代码
@RequestMapping(value="/add")
	public String add(kaoqin kaoqin,HttpServletRequest request){
		Map<String,Object> map= new HashMap<String,Object>();
		//String name=(String)request.getParameter("name");
		map.put("kqid", kaoqin.getKqid());//考勤编号
		map.put("rq", kaoqin.getRq());//日期
		map.put("sbsj", kaoqin.getSbsj());//上班时间
		map.put("xbsj", kaoqin.getXbsj());//下班时间
		map.put("yg", kaoqin.getYg());//员工
		map.put("zt", kaoqin.getZt());//状态
		map.put("jbsj", kaoqin.getJbsj());//加班时间
		String kqid=(String)kaoqin.getKqid();//考勤编号
		String rq=(String)kaoqin.getRq();//日期
		String sbsj=(String)kaoqin.getSbsj();//上班时间
		String xbsj=(String)kaoqin.getXbsj();//下班时间
		String yg=(String)kaoqin.getYg();//员工
		String zt=(String)kaoqin.getZt();//状态
		String jbsj=(String)kaoqin.getJbsj();//加班时间
		DBO db=new DBO();
		String sql="";
		ResultSet rs=null;
		int num=0;
		try{
			sql="select count(1) as num from kaoqin where rq='"+rq+"' and yg='"+yg+"'";
			rs=db.query(sql);
			if(rs.next()){
				
				num=rs.getInt("num");
			}
			if(num>0){
				request.setAttribute("msg", "<script>alert('考勤失败、当日已经产生数据');</script>");
				
			}else{
				kaoqindao.save(map);
				
				
				request.setAttribute("msg", "<script>alert('添加成功');</script>");
			}
			
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			db.close();
		}
		
		System.out.println("addok");
		return "kaoqin/kaoqinadd";
	}
	
	/**删除 
	 * 
	 */
	@RequestMapping(value="/del")
	public String  del(Integer id,HttpServletRequest request,Map<String,Object> map){
	//	Map<String,Object> map= new HashMap<String,Object>();
		String a=(String)request.getParameter("keyid");
		id=Integer.parseInt(a);
		request.setAttribute("msg", "<script>alert('删除成功');</script>");
		kaoqindao.del(id);
		return selectall(null,map,request);
	}
	/**删除 
	 * 
	 */
	@RequestMapping(value="/xiaban")
	public String  xiaban(Integer id,HttpServletRequest request,Map<String,Object> map){
	//	Map<String,Object> map= new HashMap<String,Object>();
		String a=(String)request.getParameter("keyid");
		id=Integer.parseInt(a);
		DBO db=new DBO();
		String sql="";
		ResultSet rs=null;
		String rqa="";
		
		StaticMethod st=new StaticMethod();
		String sj=st.getStringDate();
		
		try{
			sql="select * from kaoqin where kqid='"+a+"'";
			rs=db.query(sql);
			if(rs.next()){
				rqa=rs.getString("rq");
			}
		
		
	
		
		
		String rq=sj.substring(0,10);
		
		String hsj=sj.substring(11,13);
		
		
		int num=0;
		if(rq.equals(rqa)){
			
			if(Integer.parseInt(hsj)>=18){//加班了
				num=Integer.parseInt(hsj)-18;
				
				sql="update kaoqin set zt='加班',jbsj='"+num+"',xbsj='"+sj+"'  where kqid='"+a+"'";
				
			}else{
				
				sql="update kaoqin set zt='下班',xbsj='"+sj+"' where kqid='"+a+"'";
				
			}
			db.update(sql);
			
		}else{
			request.setAttribute("msg", "<script>alert('下班失败、只能当日操作');</script>");
		}
		}catch(Exception e){
			
			e.printStackTrace();
		}finally{
			db.close();
		}
		
		
	
		return list(null,map,request);
	}持久层代码
	 */
	public void save(Map<String, Object> map) {
		sqlSession.insert("com.renwu.insertrenwu", map);
		
	}
	/**
	 * 删除aa
	 * @param id
	 */
	public void del(Integer id) {
		sqlSession.delete("com.renwu.delrenwu", id);
	}
	/**
	 * 修改renwu信息
	 * @param map
	 */
	public void update(Map<String, Object> map) {
		sqlSession.update("com.renwu.updaterenwu", map);
	}
	/**
	 * 查询renwu信息
	 * @param id
	 * @return 
	 */
	public List<Map<String, Object>> select(Integer id) {
		return sqlSession.selectList("com.renwu.selectrenwu", id) ; 
	}
三、注意事项
 1、管理员账号:admin密码:admin 数据库配置文件datasource.properties
 2、开发环境为ECLIPSE开发,数据库为mysql,使用java语言开发。
 3、数据库文件名是jspssmgcgl.sql 系统名称ssmgcgl
 4、后台地址:http://127.0.0.1:8080/ssmgcgl/login.jsp 
四系统实现





 源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓



















