JavaWeb项目实战----员工管理系统《HRSystem》

系统展示

JavaWeb项目实战----员工管理系统《HRSystem》_第1张图片
JavaWeb项目实战----员工管理系统《HRSystem》_第2张图片
JavaWeb项目实战----员工管理系统《HRSystem》_第3张图片

一、系统简介

1.1 系统功能简介

基于J2EE的线上员工管理平台,满足工厂对雇员的人员调整,出勤,薪水记录与缺勤申请的审核**

		(1)有两种身份《经理》《员工》
		(2)实现的功能有
		(1)员工添加;
		(2)员工上、下班打卡
		(3)员工月内出勤记录查看;
		(4)员工申请休假;
		(5)经理审核员工的请假申请 ;
		(6)每月自动计算工资;

1.2 系统技术平台简介
使用了MySql+Struts+Spring+Hibernate技术。
Mysql 版本:mysql-5.7.13
Struts版本:struts-2.1.7
使用的所有jar包打包在同一目录下的lib文件夹中。

二、总体设计

JavaWeb项目实战----员工管理系统《HRSystem》_第4张图片


2.1 设计概述**
2.1数据库(蓝色代表主键,红色代表外键)
1.emp_table
emp_id emp_type emp_name emp_password emp_salary mgr_id dept_name

2.attend_table
attend_id punch_time ,is_come emp_id

2.app_table
app_id attend_id app_reason type_id attend_id

4.pay_table
pay_id pay_month pay_amount emp_id

5.Check_table
check_id app_id check_result mgr_id

**

## 系统架构如图所示:

**
JavaWeb项目实战----员工管理系统《HRSystem》_第5张图片
下面分别对各个包,及其作用进行介绍:
1.doamin
JavaWeb项目实战----员工管理系统《HRSystem》_第6张图片
domian包下包括所有表的实体类。通过Hiberbate注解方式进行配置。有每个表的属性,以及他们之间的一对一映射、一对多,多对一映射。Setter,getter方法。
2.dao 和daoImpl
JavaWeb项目实战----员工管理系统《HRSystem》_第7张图片
dao层是包含了各个与数据库进行交互的方法的接口,daoImpl是对这些接口的实现包括对员工的增删改,员工申请保存等等操作。后面会细讲。
3.service 和serviceImpl
JavaWeb项目实战----员工管理系统《HRSystem》_第8张图片
service是包含了业务逻辑的各个方法的接口,serviceImpl是对这些接口的实现。对各个表的业务逻辑操作都被包含在了EmpManager和MgrManager两张表中。
4.action 和action.authority和base
JavaWeb项目实战----员工管理系统《HRSystem》_第9张图片
action是包含了接收前端数据,给前端返回数据的所有方法。

5.总体的功能有:

员工可以登录自己的账号,查看出勤记录,本月薪水,可以申请出勤假条。经理可以登录自己账号,可以进行上班打卡,查看出勤记录。

三、详细设计

3.1 本章节将详细列举出已有功能的介绍和自己的理解。
(1)登录验证
(2)员工打卡
(3)员工申请出勤异常
(4)经理审核请假表
(5)添加员工、删除员工
(6)计算月工资
实现经理登录与员工登录的验证区分。
(对照源码理解)
3.2 新增或修改功能介绍
本章节主要用来简要介绍自己修改或新增的功能及其介绍,如表2-1所示。
表2-1 修改和添加的功能说明
序号 功能 功能说明
1.添加(删除员工的功能) 经理登录后可选择删除该一个自己主管部门的员工
2.修改header.jsp,员工经理主页面 修改页面使呈现更加清晰简洁
3.修复了经理审核提交的bug
4.修改了员工打卡逻辑 员工只能在固定打卡时间进行打卡,否则打卡失败。

public int punch(String user, boolean isCome)
	{
		Employee emp = empDao.findByName(user);
		if (emp == null)
		{
			return PUNCH_FAIL;
		}
		//找到员工本次打卡对应的出勤记录
		Attend attend =new Attend();
		System.out.println("============打卡==========");
		//获取打卡时间
		int punchHour = Calendar.getInstance()
			.get(Calendar.HOUR_OF_DAY);
		attend.setPunchTime(new Date());
		attend.setIsCome(isCome);
		attend.setEmployee(emp);
		//随时可以打卡,但是上午按下班打卡没有用不插入记录。
		if(punchHour<LATE_LIMIT) {
		//上班打卡
		if (isCome)
		{
			// 9点之前算正常
			if (punchHour < COME_LIMIT)
			{
				attend.setType(typeDao.get(1));
			}
			// 9~11点之间算迟到
			else if (punchHour < LATE_LIMIT)
			{
				attend.setType(typeDao.get(4));
			}
			attendDao.save(attend);
			return PUNCH_SUCC;
		}else {
			return PUNCH_FAIL;
		}
			//11点之后算旷工,无需理会
		//最晚8点下班打卡,否则不能打卡
		}
		else if(punchHour>EARLYNOON_LIMIT&&punchHour<ULTIMATE_LIMIT){
			//下班打卡
		if(!isCome) {
			if (punchHour > LEAVE_LIMIT)
			{
				attend.setType(typeDao.get(1));
			}
			//16~18点之间算早退
			else if (punchHour < EARLY_LIMIT)
			{
				
				attend.setType(typeDao.get(5));
			}
			attendDao.save(attend);
			return PUNCH_SUCC;
		}
		}else
			return PUNCH_FAIL;
		return PUNCH_FAIL;  //如果前面都没执行,就返回打卡失败
	}`
```



你可能感兴趣的:(java后端,java,spring,javascript,mysql,经验分享)