人力资源管理系统源文件

将NetBeans下的web项目转到eclipse中

文章目录

    • 一、题目
    • 二、实验环境
    • 三、整体设计
      • 1、整体框架
      • 2、实体-关系图
      • 3、关系模型描述
        • (1)用户登录表(Login)
        • (2)部门信息表(Department)
        • (3)员工信息表(Employee)
        • (4)等级信息表(Grade)
        • (5)职等职位信息表(GradePost)
        • (6)机构信息表(Institution)
        • (7)职位信息表(Position)
        • (8)职位类型信息表(PositionType)
        • (9)岗位信息表(Post)
        • (10)前公司信息表(PrevCompany)
        • (11)学历信息表(Qualification)
        • (12)评价信息表(Review)
        • (13)工作历史信息表(WorkHistory)
    • 4、创建数据库
    • 5、功能实现
      • (1)登录判断功能
      • (2)注册判断功能
      • (3) 部门
        • 3.1 部门删除功能
        • 3.2 部门插入功能
        • 3.3 部门查询功能
        • 3.4 部门更新功能
      • (4)其他页面的增删改查功能
      • (5)编码过滤功能(CodeFilter)
      • (6)数据库操作(DBean)
      • (7)格式化功能(Format)
      • (8)登录过滤功能(LoginFilter)
  • 四、效果图
  • 五、结

一、题目

  • 人力资源部门希望建立一个数据库来管理它的员工。一个公司有几个部门,而一个员工属于一个部门。这个部门指派一个经理来全面负责部门事务和部门员工。但为了有助于管理好部门工作,某些工作人员被任命来管理一组人员。当有一个新的员工进入公司时,需要他以前的工作经历和成绩。通常来说,每个员工都需要经历一次面试,这通常由经理来进行的,但有些时候也被指派给一个代表来完成。
  • 公司定义了一系列的职业类型,例如经理、业务分析员、销售人员和秘书,而且每个类型都有相关的等级,员工所处的位置决定了员工的工资。在高层,工资是可以通过谈判来决定的。职位依据其工作量来分配给一个部门。例如,一个部门可能分配给两个业务分析员的职位。每个岗位会分配一个员工,随着时间的过去,各个职位都会被跟配给工作人员。

人力资源管理的数据模型:

数据模型及表

二、实验环境

  1. JDK 1.8 提取码:gehi
  2. NetBeans IDE 8.1 提取码:4oe2
  3. Microsoft SQL Server 2008 提取码:5l8c
  4. sqljdbc驱动程序 提取码:52j2
  • 配置说明:应该可以通过这个配置一下就能运行,我也不太确定,因为在之前我就已经配置好了,这是凭经验写的
    Netbeans连接SQLserver数据库
    数据库连接的用户名为sa,密码为123
  • .mdf与.ldf数据文件
    添加mdf与ldf文件
  • 源程序

三、整体设计

只实现了最基本的增删改查

1、整体框架

  • 包含部门管理、员工管理、等级管理、职等职位管理、机构管理、职位管理、职位类型管理、岗位管理、前公司管理、员工学历管理、员工评价管理以及工作历史管理。

2、实体-关系图

  1. 部门
  2. 员工、等级等的关系图与部门一致
    全部都画上,篇幅有点长,就省略了

3、关系模型描述

(1)用户登录表(Login)

表名:Login 主键:userName

字段名 中文名 类型(长度) 允许空 码型 约束
userName 用户名 CHAR(20) NOT NULL PK 唯一
passWord 密码 CHAR(12) NOT NULL
(2)部门信息表(Department)

表名:Department 主键:departmentNo

字段名 中文名 类型(长度) 允许空 码型 约束
departmentNo 部门编号 CHAR(5) NOT NULL PK 在0000000到9999999之间
departmentName 部门名字 CHAR(30) NOT NULL
deptLocation 部门位置 VARCHAR(50)
managerEmployeeNo 管理人员编号 CHAR(7) NOT NULL
(3)员工信息表(Employee)

表名:Employee 主键:employeeNo

字段名 中文名 类型(长度) 允许空 码型 约束
employeeNo 员工编号CHAR(7) NOT NULLPK 唯一
title 职称 CHAR(20)
firstName CHAR(10) NOT NULL
middleName 教名(中间名) CHAR(10)
lastName CHAR(10) NOT NULL
address 地址 VARCHAR(100)
workTelExt 工作电传 CHAR(11)
homeTelNo 家庭电话号码(座机) CHAR(11)
empEmailAddress 员工电子邮件地址 VARCHAR(32)
socialSecurityNumber 社会安全号码(身份证号码) CHAR(18) NOT NULL UK 唯一
DOB 出生日期 DATE
position 职务 CHAR(30)
sex 性别 CHAR(2) 只能为男或女
salary 薪水 NUMERIC(8,2) 大于0
dateStarted 入职时间 DATE 小于离职时间
dateLeft 离职时间 DATE
departmentNo 部门编号 CHAR(5) NOT NULL FK
supervisorEmployeeNo 主管员工编号 CHAR(7) NOT NULL FK
(4)等级信息表(Grade)

表名:Grade 主键:gradeNo、validFromDate

字段名 中文名 类型(长度) 允许空 码型 约束
gradeNo 等级编号 CHAR(1) NOT NULL PK 从A到E
validFromDate 有效开始日期 DATE NOT NULL PK 开始日期小于截止日期
validToDate 有效截止日期 DATE
gradeDescrible 等级描述 VARCHAR(100)
gradesalary 等级薪水 NUMERIC(8,2) 大于0
noDaysLeaveEntitlement 休假时间天数 SMALLINT 大于0
positionTypeNo 职位类型编号 CHAR(10) NOT NULL FK
(5)职等职位信息表(GradePost)

表名:GradePost 主键:gradeNo、validFromDate、postNo、availableFromDate

字段名 中文名 类型(长度) 允许空 码型 约束
gradeNo 等级编号 CHAR(1) NOT NULL PK、FK 唯一
validFromDate 有效开始日期 DATE NOT NULL PK、FK
postNo 岗位编号 CHAR(10) NOT NULL PK、FK
availableFromDate 开始日期 DATE NOT NULL PK、FK
(6)机构信息表(Institution)

表名:Institution 主键:institutionNo

字段名 中文名 类型(长度) 允许空 码型 约束
institutionNo 机构编号 CHAR(19) NOT NULL PK 唯一
institutionName 机构名称 VARCHAR(60) NOT NULL
instAddress 机构地址 VARCHAR(100)
instTelNo 机构电话号码(座机) CHAR(11)
instFaxNo 机构传真号码 CHAR(11)
instWbeAddress 机构网址CHAR(30)
contactName 联系人姓名 CHAR(20) NOT NULL
contactName 联系人电话号码 CHAR(11) NOT NULL
contactTelNo 联系人传真号码 CHAR(11)
contactEmailAddress 联系人电子邮件地址 VARCHAR(32)
(7)职位信息表(Position)

表名:Position 主键:employeeNo、postNo、startDate

字段名 中文名 类型(长度) 允许空 码型 约束
employeeNo 员工编号 CHAR(7) NOT NULL PK、FK 唯一
postNo 职位编号 CHAR(10) NOT NULL PK、FK
startDate 入职时间 DATE NOT NULL PK、FK 入职时间小于离职时间
endDate 离职时间 DATE PK、FK
(8)职位类型信息表(PositionType)

表名:PositionType 主键:positionTypeNo

字段名 中文名 类型(长度) 允许空 码型 约束
positionTypeNo 职位类型编号 CHAR(10) NOT NULL PK 唯一
positionTypeDescription 职位类型描述 VARCHAR(100)
(9)岗位信息表(Post)

表名:Post 主键:postNo、availableFromDate

字段名 中文名 类型(长度) 允许空 码型 约束
postNo 岗位编号 CHAR(10) NOT NULL PK 唯一
availableFromDate 开始日期 DATE NOT NULL PK 开始时间小于结束时间
availableToDate 结束日期 DATE
postDescription 岗位描述 VARCHAR(100)
salariedHourly 时薪 NUMERIC(6,2) 大于0
fullPartTime 全职或者兼职 CHAR(4) 只能为全职或兼职
temporaryPermanent 实习生或者正式员工 CHAR(8) 只能为实习工或正式员工
freeLaborStandardsActExempt 是否购买五金一险 CHAR(2) 只能为是或否
departmentNo 部门编号 CHAR(5) NOT NULL FK
(10)前公司信息表(PrevCompany)

表名:PrevCompany 主键:prevCompanyNo

字段名 中文名 类型(长度) 允许空 码型 约束
prevCompanyNo 前公司编号 CHAR(19) NOT NULL PK 唯一
pCompanyName 前公司名称 VARCHAR(60) NOT NULL
pCompanyStreet 前公司所在街道 VARCHAR(50)
pCompanyCity 前公司所在城市 CHAR(20)
pCompanyState 前公司所在国家 CHAR(30)
pCompanyZipCode 前公司邮政编码 CHAR(6)
pCompanyTelNo 前公司电话号码(座机) CHAR(12)
pCompanyFaxNo 前公司传真号码 CHAR(12)
pCompanyWebAddress 前公司网址 CHAR(30)
contactName 联系人姓名 CHAR(20) NOT NULL
contactTelNo 联系人电话 CHAR(11) NOT NULL
contactFaxNo 联系人传真号码 CHAR(11)
contactEmailAddress 联系人电子邮件地址 VARCHAR(32)
(11)学历信息表(Qualification)

表名:Qualification 主键:qualificationName、employeeNo

字段名 中文名 类型(长度) 允许空 码型 约束
qualificationName 学历名称 CHAR(10) NOT NULL PK 唯一
employeeNo 员工编号 CHAR(7) NOT NULL PK、FK 唯一
gradeObtained 获得的等级 CHAR(1) 等级编号为A到E
startQualDate 合格开始时间 DATE 合格开始时间小于合格结束时间
endQualDate 合格结束时间 DATE
gpa 绩点 NUMERIC(3,2) 大于0
institutionNo 机构编号 CHAR(19) NOT NULL FK
(12)评价信息表(Review)

表名:Review 主键:revieweeEmployeeNo、reviewerEmployeeNo、reviewDate

字段名 中文名 类型(长度) 允许空 码型 约束
revieweeEmployeeNo 被评价者编号 CHAR(7) NOT NULL PK、FK 被评价者编号编号不等于评价者编号
reviewerEmployeeNo 评价者编号 CHAR(7) NOT NULL PK、FK
reviewDate 评价日期 DATE NOT NULLPK
comments 评价 VARCHAR(255)
(13)工作历史信息表(WorkHistory)

表名:WorkHistory 主键:prevCompanyNo、employeeNo

字段名 中文名 类型(长度) 允许空 码型 约束
prevCompanyNo 前公司编号 CHAR(19) NOT NULL PK、FK 唯一
employeeNo 员工编号 CHAR(7) NOT NULL PK、FK
prevPosition 前任公司职位 CHAR(3)
prevGrade 前任公司岗位等级 CHAR(1) 等级编号为A到E
prevSalary 前任公司薪水 NUMERIC(8,2) 大于0
prevLocation 前任公司位置 VARCHAR(60)
prevResponsibilities 在前任公司负责内容 VARCHAR(100)

4、创建数据库

建表
创建约束
插入数据

5、功能实现

(1)登录判断功能

1)从前端页面获取用户名、密码和记住密码标识;

String username = request.getParameter("username");//从前端页面获取用户名
String password = request.getParameter("password");//从前端页面获取密码
String remember = request.getParameter("remember");//从前端页面获取是否记住密码

2)新建查询语句,用DBean中的Query方法执行查询语句,并保存至sqlRes结果集对象中;

String sql_user = "SELECT passWord FROM Login WHERE userName='"+username+"'";
ResultSet sqlRes = DBean.Query(sql_user);  // 结果集对象

3)查看结果集中是否有值,若有则从结果集对象中取出数据并去掉字符串后的空格,判断密码是否与对应用户名密码相等,若相等则将用户名存入session中,不等则提示错误并跳转至登录界面。

if(sqlRes.next()){// 从数据库中取出来的字符串可能会有空格,需要用trim()方法去掉空格  String sqlPassword = sqlRes.getString("passWord").trim();if (password.equals(sqlPassword)) {//将用户名存入session中request.getSession().setAttribute("nameSession", username);...}
}

(2)注册判断功能

1)从前端页面获取注册的用户名与密码;

String username = request.getParameter("username");
String password = request.getParameter("pwd");

2)新建查询语句select_user,用Query方法执行查询语句,用while循环判断用户名是否存在,若以及存在则提示“用户名已存在”并跳转至注册界面让用户重新注册;

boolean juge = false;   // 初值为不存在
String select_user = "SELECT userName FROM Login";
ResultSet sqlRes = DBean.Query(select_user);
while(sqlRes.next()){String sqlUsername = sqlRes.getString("userName").trim();   if(username.equals(sqlUsername)){ ...out.println("document.location.href=\"Register.jsp\";");juge = true; ...}
}

3)如果juge为假,即不存在该用户,创建插入语句,并通过Update方法执行插入语句;如果为真则代表用户已存在,提示“注册失败”并跳转至主持界面。

if(juge == false){String insert_user = "INSERT INTO Login(userName,passWord) VALUES(" + username + "," + password + ")";int result = DBean.Update(insert_user);
}

(3) 部门

3.1 部门删除功能

1)从前端获取需要删除的部门的编号;

PrintWriter out = response.getWriter();
String departmentNo = request.getParameter("departmentNo");

2)创建db对象,用juge判断部门编号是否存在,创建查询语句select_departmentNo,通过Query方法执行查询语句,如果结果集中有值存在则把juge赋值为真;

DBean db = new DBean();
boolean juge = false;   // 初值为不存在
String select_departmentNo = "SELECT departmentNo FROM Department WHERE departmentNo='" + departmentNo + "'";
ResultSet sqlRes = db.Query(select_departmentNo);
try {if(sqlRes.next()) {juge = true;}
} catch (SQLException ex) {out.println(ex.toString());
}

3)如果juge为真,创建删除语句del_departmentNo,通过Update方法执行删除语句删除部门;为假则提示“不存在部门编号”并返回删除界面。

if (juge) {String del_departmentNo = "DELETE Department WHERE departmentNo='" +departmentNo + "'";int result = db.Update(del_departmentNo);db.closeDB(sqlRes);    // 关闭数据库连接if (result != 0) {           // 如果返回值result不为0则代表删除成功...out.println("document.location.href=\"Department/department_delete.jsp\";");...}
}
3.2 部门插入功能

1)获取部门参数,用juge_departmentNo判断部门编号是否存在,初值为不存在;juge_manager判断管理人员编号是否存在,初值为不存在;

String departmentNo = request.getParameter("departmentNo");
...boolean juge_departmentNo = false;
boolean juge_manager = false;

2)创建db对象,查询语句select_departmentNo、select_manager,通过Query方法执行查询操作,将结果分别存入对应的结果集对象中;

DBean db = new DBean();
// 查询部门编号是否存在
String select_departmentNo = "SELECT departmentNo FROM Department WHERE departmentNo='"+ departmentNo +"'";
ResultSet sqlRes_departmentNo = db.Query(select_departmentNo);// 查询管理人员是否存在
String select_manager = "SELECT employeeNo FROM Employee WHERE employeeNo='"+ managerEmployeeNo +"'";
ResultSet sqlRes_manager = db.Query(select_manager);

3)如果结果集中有值则将juge_departmentNo、juge_manager赋值为真;

try {if (sqlRes_departmentNo.next()) { juge_departmentNo = true; }if (sqlRes_manager.next()) { juge_manager = true; }
} catch (SQLException ex) {out.println(ex.toString());
}

4)调用Foramt方法格式化需要插入的数据;

Format format = new Format();
departmentNo = format.FormatSql(departmentNo);
...

5)如果juge_departmentNo为假(即部门表中,此部门编号不存在,可以插入语)且juge_manager为真(即存在在此管理人员)则创建插入语句,并通过Update方法执行插入操作,然后关闭数据库。

if (!juge_departmentNo && juge_manager) {String insert_sql = "INSERT INTO Department"+" VALUES("+departmentNo+"," + departmentName + "," + deptLocation + "," + managerEmployeeNo + ")";int result = db.Update(insert_sql);db.closeDB(sqlRes_departmentNo);db.closeDB(sqlRes_manager);if (result != 0) {out.println("<script type=\"text/javascript\">");out.println("alert(\"添加成功!\");");out.println("document.location.href=\"Department/department_insert.jsp\";");out.println("</script>");} else {...}
}
3.3 部门查询功能

1)创建public static String数组用来储存查询的数据,方便前端页面(department_query.jsp)获取部门信息的数据

public static String [] departmentNo_Arr = new String[1];
public static String [] departmentName_Arr = new String[1];
public static String [] deptLocation_Arr = new String[1];
public static String [] managerEmployeeNo_Arr = new String[1];

2)创建查询语句,通过Query方法执行查询语句,并通过while循环从结果集中取值,存入对应的数组中,并将juge赋值为真;如果juge为真,则跳转至查看结果界面。

String sql_depart = "SELECT * FROM Department WHERE departmentNo='" + departmentNo +"'";
sqlRes = db.Query(sql_depart);
if(sqlRes.next()) {juge = true;departmentNo_Arr[0] = sqlRes.getString("departmentNo").trim();   // 部门编号// 因为部门位置在数据表中可以为空,所以需要判断值是否为null;if(sqlRes.getString("deptLocation") != null)                      // 部门位置deptLocation= sqlRes.getString("deptLocation").trim();else    deptLocation= "";deptLocation_Arr[0] = deptLocation;...
}
3.4 部门更新功能

1)获取输入的部门数据,创建juge_departmentNo 和juge_manager判断部门编号和管理人员编号

String departmentNo = request.getParameter("departmentNo");
String departmentName = request.getParameter("departmentName");
...
boolean juge_departmentNo = false;   // 判断部门编号是否存在,初值为不存在
boolean juge_manager = false;        // 判断管理人员编号是否存在,初值为不存在

1)创建查询语句select_departmentNo和select_manager; Query方法执行查询操作,如果结果集中有值则将juge_departmentNo、juge_manager = true赋值为真;

DBean db = new DBean();// 部门编号查询
ResultSet sqlRes_departmentNo;        // 结果集对象
String select_departmentNo = "SELECT departmentNo FROM Department WHERE departmentNo='" + departmentNo + "'";
sqlRes_departmentNo = db.Query(select_departmentNo);// 管理人员编号查询
ResultSet sqlRes_manager;        // 结果集对象
String select_manager = "SELECT employeeNo FROM Employee WHERE employeeNo='"+ managerEmployeeNo +"'";
sqlRes_manager = db.Query(select_manager);try {if (sqlRes_departmentNo.next()) {    juge_departmentNo = true;  }if (sqlRes_manager.next()) {    juge_manager = true;   }
} catch (SQLException ex) {out.println(ex.toString());
}

2)若管理人员编号为空则将juge_manager置为true,即不修改管理人员编号;
如果juge_departmentNo、juge_manager 为真则创建对应的更新语句;判断内容是否为空,若不为空则执行更新操作。

if("".equals(managerEmployeeNo))        // 如果管理员工编号为空,即不修改管理人员编号juge_manager = true;
if (juge_departmentNo == true && juge_manager == true) {String update_name = "UPDATE Department SET departmentName='" +departmentName + "' WHERE departmentNo='" + departmentNo +"'";....if (!departmentName.equals(""))   result[0] = db.Update(update_name);....db.closeDB(sqlRes_departmentNo);db.closeDB(sqlRes_manager);// 判断是否更新成功,就是个提示,更新的还是更新了boolean juge_update = true;for (int i : result) {if (i == 0) {juge_update = false;break;}}
}

(4)其他页面的增删改查功能

其余功能没差,与部门的删除、插入、查询和更新功能的实现一致

(5)编码过滤功能(CodeFilter)

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)     throws IOException, ServletException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");...
}

(6)数据库操作(DBean)

1)连接数据库:getconn
将数据库的URL、数据库用户名和密码作为参数使用getConnection函数连接数据库;

public Connection getconn() {try {String dbURL = "jdbc:sqlserver://127.0.0.1; DatabaseName = HRM";String dataBaseName = "sa"; // 数据库用户名String dataBasePwd = "123"; // 数据库密码conn = DriverManager.getConnection(dbURL, dataBaseName, dataBasePwd);} catch (Exception e) {out.println(e.toString());}return conn;
}

2)查询函数:Query
创建DB对象,使用getconn方法连接数据库,在使用sqlState对象的executeQuery方法查询数据库;

public ResultSet Query(String sql) {try {DBean db = new DBean();conn = db.getconn();sqlState = conn.createStatement();  // 创建sqlState对象sqlRes = sqlState.executeQuery(sql);} catch (SQLException e) {out.println(e.toString());}return sqlRes;
}

3)增删改功能:Update
调用sqlState的executeUpdate方法实现增删改功能

public int Update(String sql) {int result = 0;try {DBean db = new DBean();conn = db.getconn();sqlState = conn.createStatement();  // 创建sqlState对象result = sqlState.executeUpdate(sql);} catch (SQLException e) {out.println(e.toString());}return result;
}

4)关闭数据库:closeDB

public void closeDB(ResultSet sqlRes) {if (sqlRes != null) {try {if (sqlRes != null)  sqlRes.close();    // 关闭结果集对象连接if (sqlState != null) sqlState.close(); // 关闭sqlState对象连接        if (conn != null)  conn.close();        // 关闭数据库连接} catch (SQLException e) {out.println(e.toString());}}
}

(7)格式化功能(Format)

如果value为空则返回null,不为空则将其变为value格式

public class Format {public String FormatSql(String value){if(value.equals(""))    return null;elsereturn "'"+value+"'";}
}

(8)登录过滤功能(LoginFilter)

从session中获取属性nameSession,如果为null则代表session没有用户名即未登录,提示错误并跳转至登录界面;不为空则代表session中有值,即有登录;

String user = (String)req.getSession().getAttribute("nameSession");
if(user == null){   //判断session中是否有用户名out.println("<script type=\"text/javascript\">");out.println("alert(\"未登录!请先登录!\");");out.println("document.location.href=\"http://localhost:8080/HRM/Login/Login.jsp\";");out.println("</script>");
}
elsechain.doFilter(request,response);

四、效果图

  1. 登录界面
  2. 注册界面
  3. 主页面
  4. 部门界面

五、结

Employee表和Department表中互为外键,没整出来,给省略了,如果互相关联之后,不能往这两个表中的其中一个添加数据;因为Employee、Department互相关联后,需要其中一个表中有数据才能往另一个表中添加;或者之前就把数据添加上,再添加两个表的外键,后面不允许往其中添加数据?
写的简单,还是有一些问题没整好
有些提示不够,有的地方需要根据数据之间的联系才能将数据填入
害,翻译也不知道翻译的个啥,感觉就有小部分内容翻译出来的东西有点怪怪的-_-||
。。。

简易人力资源管理系统(NetBeans+SQLServer)相关推荐

  1. asp毕业设计——基于asp+sqlserver的人力资源管理系统设计与实现(毕业论文+程序源码)——人力资源管理系统

    基于asp+sqlserver的人力资源管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的人力资源管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  2. 基于java和sqlserver建立的简易图书管理系统

    简易图书管理系统 1.所需功能: 2.流程: 数据库连接 3.环境及其语言: 4.数据库建立 5.操作: 数据库连接:sql.T3.Test1.java 选择需要的操作:sql.T3.Test1.ja ...

  3. 员工薪资管理系统在netbeans中的全部代码_北京哪家人力资源管理系统比较靠谱...

    北京哪家人力资源管理系统比较靠谱 作为一个近十几年的人力资源系统开发员来讲,开发过和使用过多款优秀的人力资源管理系统,也遇到过不好用户体验度比较差的软件,导致人力资源管理越来与困难的事情,觉得十分有必 ...

  4. 基于SSM开发的简易版人力资源管理系统

    文章目录: 1.项目源码链接 2.项目开发前景 3.项目大体介绍 4.项目整体架构 5.项目运行结果图 6.结束语 1.项目源码链接 GitHub链接:https://github.com/26563 ...

  5. ASP.NET 三层架构技术 人力资源管理系统项目HR (深入WebServic

    白菜价, 想要的联系QQ:867635458,非诚勿扰! ASP.NET MVC Linq 技术  企业级通用OA系统  全程开发 大型企业级别OA项目实战全新上线啦!本项目由小孔子讲师全程录制.小孔 ...

  6. java计算机毕业设计中小企业人力资源管理系统源码+mysql数据库+系统+部署+lw文档

    java计算机毕业设计中小企业人力资源管理系统源码+mysql数据库+系统+部署+lw文档 java计算机毕业设计中小企业人力资源管理系统源码+mysql数据库+系统+部署+lw文档 本源码技术栈: ...

  7. iHRM 人力资源管理系统_第8章POI报表高级应用

    iHRM 人力资源管理系统_第8章POI报表高级应用 文章目录 iHRM 人力资源管理系统_第8章POI报表高级应用 八.POI报表高级应用 1.模板打印 <1>.概述 <2> ...

  8. 计算机毕业设计Java中小企业人力资源管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java中小企业人力资源管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java中小企业人力资源管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目 ...

  9. java毕业生设计中小企业人力资源管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计中小企业人力资源管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计中小企业人力资源管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构 ...

最新文章

  1. css3实现不同进度条
  2. 现代软件工程 第七章 【MSF】练习与讨论
  3. linux之sort 命令详解
  4. 02331数据结构 散列表
  5. li 字多出了省略号_css 超出用省略号当标题字符溢出用省略号表示
  6. python mongodb 设置密码前一篇ok,csv文件存入mongodb
  7. java实现格拉布斯准则_格拉布斯准则附件.pdf
  8. Android 实现最新QQ登陆页面
  9. 达梦数据库导出sql脚本
  10. 关于C++、PHP和Swoole-韩天峰
  11. Python学习记录——십 列表
  12. 微星 MPG B460I GAMING EDGE WIFI +i5-10400电脑 Hackintosh 黑苹果efi引导文件
  13. go-pitaya学习笔记(9)-rate_limiting demo分析
  14. Java1.5泛型指南中文版
  15. VBA 连接Oracle 数据库
  16. 日媒:“二战”后70年日本的创新路遇到拐点
  17. 莫队-一个让查询的高效的方法-并不深刻的讲解文章-但是易懂!
  18. 异构计算实验——CUDA计算矩阵幂
  19. 学编程有哪些好点的网站呢?
  20. Vue3+nodejs全栈项目(资金管理系统)——前端篇

热门文章

  1. 内生转换回归(ESR)模型的估计、计算ATT、ATU、ATE-附案例数据、do文件
  2. 如何读群晖硬盘_详解群晖新增硬盘的操作步骤,给群晖NAS添加硬盘就是这么简单...
  3. SuperMap iDesktop常见问题解答集锦(十)
  4. html按钮轮播图,四种方式实现轮播图
  5. qt5 编程入门笔记(持续更新)
  6. 专利申请模板各个内容的例子
  7. 常用服务的通用/默认口令
  8. python中OS的使用
  9. 日记侠:分享赚钱和分享快乐你如何理解?
  10. E-prime其他实验设计