数据库课程设计人力资源管理系统.docx
《数据库课程设计人力资源管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计人力资源管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
数据库课程设计人力资源管理系统
华北科技学院
《数据库原理与应用》
课程设计说明书
学号:
************
班级:
计科B143姓名:
吴天宏
设计题目:
《人力资源管理系统》
设计地点:
____________信息楼_____________
设计时间:
2016.12.19至2016.12.30
成绩评定:
1、工作量:
A(),B(),C(),D(),F()
2、难易度:
A(),B(),C(),D(),F()
3、答辩情况:
基本操作:
A(),B(),C(),D(),F()
代码理解:
A(),B(),C(),D(),F()
4、报告规范度:
A(),B(),C(),D(),F()
5、学习态度:
A(),B(),C(),D(),F()
总评成绩:
___________________________
****:
________***_____________
目 录
1引言
1.1课程设计选题
《人力资源管理系统》
1.2课程设计的目的
通过数据库系统课程设计,熟悉了SQLSERVER数据库管理系统的结构与组成;掌握了SQLSERVER数据库管理系统的应用技术和的使用;应用PowerDesigner1.6工具实践了《人力资源管理系统》的数据库应用系统的设计方法、开发过程和SQL
SERVER数据库的管理与维护。
最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。
1.3本选题的设计背景
我选择的是人力资源管理系统,这是因为伴随着时代的进步,计算机已经成为现代不可或缺的生活必需品,对每一个公司而言都是非常重要的。
随着计算机的普及,现代化的各企业,不再单单依赖人工记录来实现员工的基本信息记录以及工资的结算,以往的单一检索已经不能满足当下人们的需求,无论是在公司人员流动上还是在最终的工资结算,过去传统的人工记录往往是投入大量的人力物力却得不到高效的管理效率,在信息量如此巨大的今天已趋于淘汰。
逐渐地随着计算机在社会各领域的广泛应用,大量繁杂的工作得以快速、高效的完成,使人们从繁重的劳动中解脱出来,提高了工作效率和工作量。
在计算机应用的众多领域中,管理信息系统占据着十分重要的地位。
以计算机科学和现代化的通信技术为基础,对某一组织或机构中有关管理的数据进行收集、处理,并输出有用信息,从而支持组织决策的系统,使大量的手工劳动自动完成,避免了因人工操作带来的各种错误。
在社会不断进步的同时,各企业对人力的利用及财务的支出要求更加合理化,此时若采用一套行之有效的人力资源管理系统来管理员工的基本信息、各项津贴及月工资结算会方便很多。
为了便于员工的工资管理、考勤管理、公司部门管理以及缩短工资结算速度,减少财务人员的工作量,提高管理质量和水平,做到高效、智能化的管理,各企业仅需要一套有效的人力资源管理系统软件。
系统以其系统性、全面性和技术手段的多样性和先进性、使用的安全性和稳定性以及应用的广泛性为其特点,性能优良,极大地减轻了人事布管理人员的工作强度,提高了人事管理工作的现代化水平。
2系统分析与设计
2.1系统的需求分析
2.1.1功能需求
能对雇员的基本信息进行管理;
能对岗位的基本信息进行管理;
能对雇员在公司内的换岗经历进行管理;
能对部门的基本信息进行管理;
能对部门的位置信息进行管理;
能对部门所在国家的基本信息进行管理;
能对国家所在洲的基本信息进行管理;
公司只有销售人员才按收入拿佣金(有佣金百分比),其它人员没有;
公司的每个岗位都有自己的最低薪水和最高薪水;
公司的员工可以根据需要在部门内部和不同的部门之间调换岗位:
员工入职要记录入职日期;
员工都有一个经理来管理;
公司的部门遍布不同的洲、国家和城市;
部门实行经理负责制。
2.1.2性能需求
1)安全性要求
系统安全性要求体现在数据库安全性,信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统的视图,这样可提供系统数据一定程度上的安全性,在通过分配权限,设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性,计算机系统的安全性和网络的安全性等方面。
2)一致性
数据库的一致性是保证了数据库里面的保持一致性,不会出现数据混乱。
读取一致性是在任何时间访问集群中任一结点,得到的数据结果一致;用户一致性对同一用户,访问集群期间得到的数据一致;解决用户一致性:
使用粘性会话,将会话绑定到特定结点来处理;点来处理;最终一致性集群中各结点间由于数据同步不及时造成暂时的数据不一致,但数据同步完成后,最终具有一致性;数据库的更新也同样保持一致性。
2.1.3数据流图表示
人力资源管理系统
2.2系统的开发运行环境
本系统开发平台:
powerdesigner+sqlserver2008+eclipse+java.
本系统采用架构:
客户端服务器架构.
本系统运行环境:
windows7或以上版本.
2.3系统总体设计
能对雇员的基本信息进行管理;
能对岗位的基本信息进行管理;
能对雇员在公司内的换岗经历进行管理;
能对部门的基本信息进行管理;
能对部门的位置信息进行管理;
能对部门所在国家的基本信息进行管理;
能对国家所在洲的基本信息进行管理;
人力资源管理系统
3数据库设计
3.1数据库概念结构
人力资源管理系统E-R图如下:
进行数据抽象,设计局部E—R图,即设计用户视图。
再集成各局部ER模型,即视图集成。
E—R方法是实体-联系方法的简称,它是描述现实世界结构模型的有效方法。
建立局部模型,就是根据系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,作为设计的出发点。
在本次设计中,雇员、部门、位置、岗位、国家、洲分别进行局部设计,每个实体列出必需的属性,再寻找各个实体中间的联系,组合成系统的E-R图,再进行优化得出基本E-R图。
3.2数据库逻辑结构
3.2.1关系模型
人力资源管理系统物理模型图如下:
人力资源管理系统逻辑模型图如下:
3.2.2关系模型的优化
所谓关系规范化就是按统一标准对关系进行优化,以提高关系的质量,为构造一个高效的数据库应用系统打下基础。
关系模式的优化是经过分析各个关系模式后确定各关系模式中均不存在部分函数依赖,传递函数依赖等,经过这些分析后可以确定各个关系模式达到了三范式的要求而且确定是三范式。
3.2.3视图的设计
1.创建一个视图employee,员工可以查询自己的信息情况。
2.创建一个视图location,用户可以查询部门位置信息。
3.创建一个视图department,用户可以查询岗位基本信息。
3.3数据库的实现
3.3.1表
1)雇员表:
employee_idchar(30)
employee_namevarchar(20)
Sexvarchar
(2)
brith_dateint
Ageint
Schoolchar(30)
identity_cardchar(18)
employee_adderssvarchar(50)
Phonechar(11)
department_idchar(20)
job_namechar(20)
job_idchar(20)
hire_dateint
2)部门表:
department_namechar(20)
Numberchar(20)
department_idchar(20)
department_addresschar(20)
Managerchar(20)
3)位置表:
Addresschar(20)
City_namechar(20)
city_idchar(20)
country_idchar(20)
department_idchar(20)
3.3.2视图
1)雇员的基本信息视图
createviewemploy
as
select*
fromemployee
2)岗位视图
createviewj
as
select*
fromjob
3.3.3索引设计
createuniqueclusteredindexix_employeeonemployee(employeedesc)
createuniqueclusteredindexix_departmentonsalary(departmentdesc)
createuniqueclusteredindexix_locationondepartment(locationdesc)
3.3.4数据库编程
1)触发器的设计:
--添加触发器过程
createtriggersal
onsalaryforinsert,updateasupdatesalary
setrealsal=addid+salary
whereaddidin(selectaddidfrominserted)
2.存储过程的设计:
--插入雇员信息存储过程
createPROCEDUREemp1
@employee_idchar(30),
@employee_namevarchar(20),
@sexvarchar
(2),
@brith_dateint,
@ageint,
@schoolchar(30),
@identity_cardvarchar(50),
@phone_addersschar(11),
@phonechar(11),
@department_idchar(20),
@job_namechar(20),
@job_idchar(20),
@hire_dateint,
as
insertintoemployee
values(@employee_id,@employee_name,@sex,@brith_date,@age,@school,@identity_card,@phone_adderss,@phone,@department_id,@job_name,@job_id,@hire_date);
4主要功能的详细设计与实现
4.1登录模块
1)界面截图如下:
2)模块算法:
————删除雇员信息
packagecom.hbkj.renli.department.controller;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.hbkj.renli.department.dao.DepDao;
importcom.hbkj.renli.util.ResponseUtil;
importnet.sf.json.JSONObject;
/**
*删除雇员信息
*/
//@WebServlet("/empDeleteServlet")。
注意:
在web.xml中配置了servlet映射后,就不能
//再使用该注解,否则发生重复映射错误
publicclassDepDeleteServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
this.doPost(request,response);//get请求也交给doPost来处理
}
@Override
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//得到请求参数delid的值
StringdelId=request.getParameter("delId");
//得到dao对象
DepDaodepDao=newDepDao();
//删除雇员
intdelNums=depDao.deleteDep(delId);
//准备响应对象
JSONObjectresult=newJSONObject();
//在响应对象中保存操作结果
if(delNums==1){
result.put("success","true");
}else{
result.put("success","false");
result.put("errorMsg","删除失败");
}
try{
//把响应对象发送给浏览器
ResponseUtil.write(response,result);
}catch(Exceptione){
e.printStackTrace();
}
}
}
—————显示雇员信息
packagecom.hbkj.renli.department.controller;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.hbkj.renli.department.dao.DepDao;
importcom.hbkj.renli.util.ResponseUtil;
importnet.sf.json.JSONArray;
importnet.sf.json.JSONObject;
/**
*显示雇员信息
*/
//@WebServlet("/empListServlet")
publicclassDepListServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
this.doPost(request,response);//get请求也交给doPost来处理
}
@Override
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//得到请求参数page和rows的值
Stringpage=request.getParameter("page");//显示第几页
Stringrows=request.getParameter("rows");//每页多少行
//测试:
System.out.println("page="+page+""+"rows="+rows);
//得到dao对象
DepDaodepDao=newDepDao();
//得到json格式的结果集
JSONArrayjsonArray=null;
jsonArray=depDao.getDepList(Integer.parseInt(page),Integer.parseInt(rows));
//得到雇员总人数,用于分页显示
JSONObjectresult=newJSONObject();
result.put("rows",jsonArray);
result.put("total",total);
//测试:
System.out.println("发送给浏览器的数据:
"+result);
//发送给浏览器
try{
ResponseUtil.write(response,result);
}catch(Exceptione){
e.printStackTrace();
}
}
}
——————————保存雇员信息
packagecom.hbkj.renli.department.controller;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.hbkj.renli.department.dao.DepDao;
importcom.hbkj.renli.department.model.Department;
importcom.hbkj.renli.util.ResponseUtil;
importnet.sf.json.JSONObject;
/**
*保存雇员信息
*/
//@WebServlet("/empSaveServlet")
publicclassDepSaveServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
this.doPost(request,response);//get请求也交给doPost来处理
}
@Override
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//得到请求参数的值
//设置字符编码为utf8
request.setCharacterEncoding("utf-8");
Stringop=request.getParameter("op");//操作类型:
新增或者更新
Stringdepartment_name=request.getParameter("department_name");//部门编号
Stringnumber=request.getParameter("number");//城市号
Stringdepartment_id=request.getParameter("department_id");//经理编号
Stringdepartment_address=request.getParameter("department_address");
Stringmanager=request.getParameter("manager");
//用请求参数组装Employee对象
Departmentdep=newDepartment();
dep.setDepartment_name(department_name);
dep.setNumber(number);
dep.setDepartment_id(department_id);
dep.setDepartment_address(department_address);
dep.setManager(manager);
//得到dao对象
DepDaodepDao=newDepDao();
//保存数据库操作结果
intsaveNums=0;
////准备响应对象
JSONObjectresult=newJSONObject();
//判断请求是新增雇员还是更新雇员
if(op.equals("update")){
saveNums=depDao.updateDep(dep);//更新
}else{
saveNums=depDao.insertDep(dep);//插入
}
//判断数据库操作结果
if(saveNums==1){
result.put("success","true");
}else{
result.put("success","false");
result.put("errorMsg","保存失败");
}
//测试响应结果
System.out.println("响应给浏览器:
"+result)
////将响应发送给浏览器
try{
ResponseUtil.write(response,result);
}catch(Exceptione){
e.printStackTrace();
}
}
}
————————————界面显示
packagecom.hbkj.renli.department.controller;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.W