简易人力资源管理系统(NetBeans+SQLServer)
人力资源管理系统源文件
将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)
- 四、效果图
- 五、结
一、题目
- 人力资源部门希望建立一个数据库来管理它的员工。一个公司有几个部门,而一个员工属于一个部门。这个部门指派一个经理来全面负责部门事务和部门员工。但为了有助于管理好部门工作,某些工作人员被任命来管理一组人员。当有一个新的员工进入公司时,需要他以前的工作经历和成绩。通常来说,每个员工都需要经历一次面试,这通常由经理来进行的,但有些时候也被指派给一个代表来完成。
- 公司定义了一系列的职业类型,例如经理、业务分析员、销售人员和秘书,而且每个类型都有相关的等级,员工所处的位置决定了员工的工资。在高层,工资是可以通过谈判来决定的。职位依据其工作量来分配给一个部门。例如,一个部门可能分配给两个业务分析员的职位。每个岗位会分配一个员工,随着时间的过去,各个职位都会被跟配给工作人员。
人力资源管理的数据模型:
数据模型及表
二、实验环境
- JDK 1.8 提取码:gehi
- NetBeans IDE 8.1 提取码:4oe2
- Microsoft SQL Server 2008 提取码:5l8c
- sqljdbc驱动程序 提取码:52j2
- 配置说明:应该可以通过这个配置一下就能运行,我也不太确定,因为在之前我就已经配置好了,这是凭经验写的
Netbeans连接SQLserver数据库
数据库连接的用户名为sa,密码为123 - .mdf与.ldf数据文件
添加mdf与ldf文件 - 源程序
三、整体设计
只实现了最基本的增删改查
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);
四、效果图
- 登录界面
- 注册界面
- 主页面
- 部门界面
五、结
Employee表和Department表中互为外键,没整出来,给省略了,如果互相关联之后,不能往这两个表中的其中一个添加数据;因为Employee、Department互相关联后,需要其中一个表中有数据才能往另一个表中添加;或者之前就把数据添加上,再添加两个表的外键,后面不允许往其中添加数据?
写的简单,还是有一些问题没整好
有些提示不够,有的地方需要根据数据之间的联系才能将数据填入
害,翻译也不知道翻译的个啥,感觉就有小部分内容翻译出来的东西有点怪怪的-_-||
。。。
简易人力资源管理系统(NetBeans+SQLServer)相关推荐
- asp毕业设计——基于asp+sqlserver的人力资源管理系统设计与实现(毕业论文+程序源码)——人力资源管理系统
基于asp+sqlserver的人力资源管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的人力资源管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...
- 基于java和sqlserver建立的简易图书管理系统
简易图书管理系统 1.所需功能: 2.流程: 数据库连接 3.环境及其语言: 4.数据库建立 5.操作: 数据库连接:sql.T3.Test1.java 选择需要的操作:sql.T3.Test1.ja ...
- 员工薪资管理系统在netbeans中的全部代码_北京哪家人力资源管理系统比较靠谱...
北京哪家人力资源管理系统比较靠谱 作为一个近十几年的人力资源系统开发员来讲,开发过和使用过多款优秀的人力资源管理系统,也遇到过不好用户体验度比较差的软件,导致人力资源管理越来与困难的事情,觉得十分有必 ...
- 基于SSM开发的简易版人力资源管理系统
文章目录: 1.项目源码链接 2.项目开发前景 3.项目大体介绍 4.项目整体架构 5.项目运行结果图 6.结束语 1.项目源码链接 GitHub链接:https://github.com/26563 ...
- ASP.NET 三层架构技术 人力资源管理系统项目HR (深入WebServic
白菜价, 想要的联系QQ:867635458,非诚勿扰! ASP.NET MVC Linq 技术 企业级通用OA系统 全程开发 大型企业级别OA项目实战全新上线啦!本项目由小孔子讲师全程录制.小孔 ...
- java计算机毕业设计中小企业人力资源管理系统源码+mysql数据库+系统+部署+lw文档
java计算机毕业设计中小企业人力资源管理系统源码+mysql数据库+系统+部署+lw文档 java计算机毕业设计中小企业人力资源管理系统源码+mysql数据库+系统+部署+lw文档 本源码技术栈: ...
- iHRM 人力资源管理系统_第8章POI报表高级应用
iHRM 人力资源管理系统_第8章POI报表高级应用 文章目录 iHRM 人力资源管理系统_第8章POI报表高级应用 八.POI报表高级应用 1.模板打印 <1>.概述 <2> ...
- 计算机毕业设计Java中小企业人力资源管理系统(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java中小企业人力资源管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java中小企业人力资源管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目 ...
- java毕业生设计中小企业人力资源管理系统计算机源码+系统+mysql+调试部署+lw
java毕业生设计中小企业人力资源管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计中小企业人力资源管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构 ...
最新文章
- css3实现不同进度条
- 现代软件工程 第七章 【MSF】练习与讨论
- linux之sort 命令详解
- 02331数据结构 散列表
- li 字多出了省略号_css 超出用省略号当标题字符溢出用省略号表示
- python mongodb 设置密码前一篇ok,csv文件存入mongodb
- java实现格拉布斯准则_格拉布斯准则附件.pdf
- Android 实现最新QQ登陆页面
- 达梦数据库导出sql脚本
- 关于C++、PHP和Swoole-韩天峰
- Python学习记录——십 列表
- 微星 MPG B460I GAMING EDGE WIFI +i5-10400电脑 Hackintosh 黑苹果efi引导文件
- go-pitaya学习笔记(9)-rate_limiting demo分析
- Java1.5泛型指南中文版
- VBA 连接Oracle 数据库
- 日媒:“二战”后70年日本的创新路遇到拐点
- 莫队-一个让查询的高效的方法-并不深刻的讲解文章-但是易懂!
- 异构计算实验——CUDA计算矩阵幂
- 学编程有哪些好点的网站呢?
- Vue3+nodejs全栈项目(资金管理系统)——前端篇