# JSP实现OA办公系统_人事管理系统 **Repository Path**: zhongweiing/PersonnelManagementSystem ## Basic Information - **Project Name**: JSP实现OA办公系统_人事管理系统 - **Description**: 这是一套智能OA办公系统,里面包含了人事管理系统,这套功能的主干都已经完成,大多数功能用到的都是ajax技术,极个别界面采用传统MVC方法。代码规范化,基本上每个类和每个方法都写有注释。具体的介绍可以看博客详情:https://blog.csdn.net/qq_42376617/article/details/108439167 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 2 - **Created**: 2020-09-11 - **Last Updated**: 2022-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OA办公系统_人事管理系统 ## 介绍 这是一套智能OA办公系统,里面包含了人事管理系统,这套功能的主干都已经完成,大多数功能用到的都是ajax技术,极个别界面采用传统MVC方法。代码规范化,基本上每个类和每个方法都写有注释。 目前这套系统有一套毕业设计论文,包括开题报告、文献综述、一稿、二稿及终稿,维普查重率6%左右,大学生毕业论文不会录入知网和维普等查重系统,可以用于毕业设计。 提供后续服务,包括代码讲解,疑难解答和答辩的注意事项,有需要可以联系`863772270` ## 1.前言 本套系统主要实现的是OA办公系统中一些常用发功能,还有一些功能因为时间的原因没有开发,但主线功能基本完善。前端页面模板用的是GitHub上面一位老兄OA系统办公模板,但功能上面的话我都进行了重新编写,用自己的代码方式改了过来,并添加了很多功能点。 ## 2.准备工作 **开发环境**:MySQL8.0,JDK1.8,Tomcat9.0 **开发工具**:eclipse2020,Navicat15,HBuilder X,vscode。 **开发语言**:java、html、css、javascript **第三方工具库**:hutool、fastjson、jstl、bootstrap、jQuery、echarts、font-awesome ## 3.项目结构   ## 4.部分界面截图         由于系统的页面很多,就不一一截图了,总体的功能较为丰富,主线功能都完成。在人事管理中心的一个管理界面,对员工的一些信息进行了数据可视化分析,用到了echarts.js库,主要是把员工的学历、居住地、毕业学校、专业的数据进行了分析。 ## 5.部分代码分析 ### 5.1.1 ajax登录和添加员工功能 这部分实现的原理在[《基于JavaEE(JSP)的共享资料平台的设计与实现》](https://blog.csdn.net/qq_42376617/article/details/108309396)的第五点有说明,在这边就不继续介绍了。其JS代码部分基本上都是一样,唯一有差别的就是在jsp文件中,表单的格式不一样罢了。 ### 5.1.2 考勤打卡功能 这是打卡日历图的代码,实现的功能为打卡日历图的显示,上班打卡一次,刷新一次会报红,因为没有继续打卡第二次,只有下班打卡后才会显示正常,下面环形也会显示全勤。日历图展示的时间数据是取最早打卡记录和最晚打卡记录, 数据库查询语句为`SELECT EMP_ID,ATT_DATE,min(ATT_SIGNIN) as ATT_SIGNIN,max(ATT_SIGNOUT) as ATT_SIGNOUT from ATTENDANCE GROUP BY ATT_DATE `,就用到了最大的时间和最小的时间。 ```js /** 打卡日历模块 */ (function(undefined) { var _global; //工具函数 //配置合并 function extend(def, opt, override) { for(var k in opt) { if(opt.hasOwnProperty(k) && (!def.hasOwnProperty(k) || override)) { def[k] = opt[k] } } return def; } //日期格式化 function formartDate(y, m, d, symbol) { symbol = symbol || '-'; m = (m.toString())[1] ? m : '0' + m; d = (d.toString())[1] ? d : '0' + d; return y + symbol + m + symbol + d } function Schedule(opt) { var def = {}, opt = extend(def, opt, true), curDate = opt.date ? new Date(opt.date) : new Date(), year = opt.selectYear || curDate.getFullYear(), month = opt.selectMonth || curDate.getMonth(), day = curDate.getDate(), currentYear = curDate.getFullYear(), currentMonth = curDate.getMonth(), currentDay = curDate.getDate(), selectedDate = '', //缺勤 qqDate = opt.qqDate || "", zcDate = opt.zcDate || "", el = document.querySelector(opt.el) || document.querySelector('body'), _this = this; var bindEvent = function() { // if(el.dataset['cc']){ el.addEventListener('click', function(e) { switch(e.target.id) { case 'nextMonth': _this.nextMonthFun(); break; case 'nextYear': _this.nextYearFun(); break; case 'prevMonth': _this.prevMonthFun(); break; case 'prevYear': _this.prevYearFun(); break; default: break; }; if(e.target.className.indexOf('currentDate') > -1) { opt.clickCb && opt.clickCb(year, month + 1, e.target.innerHTML,e.target); selectedDate = e.target.title; day = e.target.innerHTML; render(); } }, false) // el.dataset['cc']=1; // } } var init = function() { var scheduleHd = '
| # | 部门编号 | 部门名称 | 负责人 | 创建时间 | 操作 |
|---|
```java