《数据库课程设计人力资源管理系统大学论文.doc》由会员分享,可在线阅读,更多相关《数据库课程设计人力资源管理系统大学论文.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库原理与应用课程设计报告 华 北 科 技 学 院数据库原理与应用课程设计说明书学号: 201407014324 班级: 计科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(
2、)5、学习态度: A( ),B( ),C( ),D( ),F( )总评成绩:_指导教师:_王祥仲_ 目录1 引 言11.1课程设计选题11.2课程设计的目的11.3本选题的设计背景12 系统分析与设计22.1 系统的需求分析22.1.1 功能需求22.1.2 性能需求22.1.3数据流图表示3 2.2 系统的开发运行环境32.3 系统总体设计33 数据库设计53.1 数据库概念结构53.2 数据库逻辑结构63.2.1 关系模型63.2.2 关系模型的优化73.2.3 视图的设计73.3 数据库的实现83.3.1表83.3.2 视图93.3.3 索引设计103.3.4 数据库编程104 主要功能
3、的详细设计与实现114.1 登录模块114.2 员工管理模块194.3 部门管理模块204.4 位置管理模块21结论21参 考 文 献23III数据库原理与应用课程设计报告1 引 言1.1课程设计选题人力资源管理系统1.2课程设计的目的通过数据库系统课程设计,熟悉了SQL SERVER数据库管理系统的结构与组成;掌握了SQL SERVER数据库管理系统的应用技术和的使用;应用PowerDesigner1.6工具实践了人力资源管理系统的数据库应用系统的设计方法、开发过程和SQL SERVER数据库的管理与维护。最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。1.3本
4、选题的设计背景我选择的是人力资源管理系统,这是因为伴随着时代的进步,计算机已经成为现代不可或缺的生活必需品,对每一个公司而言都是非常重要的。随着计算机的普及,现代化的各企业,不再单单依赖人工记录来实现员工的基本信息记录以及工资的结算,以往的单一检索已经不能满足当下人们的需求,无论是在公司人员流动上还是在最终的工资结算,过去传统的人工记录往往是投入大量的人力物力却得不到高效的管理效率,在信息量如此巨大的今天已趋于淘汰。 逐渐地随着计算机在社会各领域的广泛应用,大量繁杂的工作得以快速、高效的完成,使人们从繁重的劳动中解脱出来,提高了工作效率和工作量。在计算机应用的众多领域中,管理信息系统占据着十分
5、重要的地位。以计算机科学和现代化的通信技术为基础,对某一组织或机构中有关管理的数据进行收集、处理,并输出有用信息,从而支持组织决策的系统,使大量的手工劳动自动完成,避免了因人工操作带来的各种错误。 在社会不断进步的同时,各企业对人力的利用及财务的支出要求更加合理化,此时若采用一套行之有效的人力资源管理系统来管理员工的基本信息、各项津贴及月工资结算会方便很多。为了便于员工的工资管理、考勤管理、公司部门管理以及缩短工资结算速度,减少财务人员的工作量,提高管理质量和水平,做到高效、智能化的管理,各企业仅需要一套有效的人力资源管理系统软件。系统以其系统性、全面性和技术手段的多样性和先进性、使用的安全性
6、和稳定性以及应用的广泛性为其特点,性能优良,极大地减轻了人事布管理人员的工作强度,提高了人事管理工作的现代化水平。 2 系统分析与设计2.1 系统的需求分析2.1.1 功能需求能对雇员的基本信息进行管理;能对岗位的基本信息进行管理;能对雇员在公司内的换岗经历进行管理;能对部门的基本信息进行管理;能对部门的位置信息进行管理;能对部门所在国家的基本信息进行管理;能对国家所在洲的基本信息进行管理;公司只有销售人员才按收入拿佣金(有佣金百分比),其它人员没有;公司的每个岗位都有自己的最低薪水和最高薪水;公司的员工可以根据需要在部门内部和不同的部门之间调换岗位:员工入职要记录入职日期;员工都有一个经理来
7、管理;公司的部门遍布不同的洲、国家和城市;部门实行经理负责制。2.1.2 性能需求1)安全性要求 系统安全性要求体现在数据库安全性,信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统的视图,这样可提供系统数据一定程度上的安全性,在通过分配权限,设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性,计算机系统的安全性和网络的安全性等方面。2) 一致性 数据库的一致性是保证了数据库里面的保持一致性,不会出现数据混乱。读取一致性是在任何时间访问集群中任一结点,得到的数据结果一致;用户一致性 对同一用户,访问集群期间得
8、到的数据一致;解决用户一致性:使用粘性会话,将会话绑定到特定结点来处理;点来处理;最终一致性集群中各结点间由于数据同步不及时造成暂时的数据不一致,但数据同步完成后,最终具有一致性;数据库的更新也同样保持一致性。2.1.3数据流图表示 人力资源管理系统 位置信息管理换岗信息管理部门信息管理员工基本信息管理国家信息管理岗位信息管理洲信息管理 2.2 系统的开发运行环境本系统开发平台: power designer+ sql server 2008+eclipse+java.本系统采用架构: 客户端服务器架构.本系统运行环境: windows 7 或以上版本. 2.3 系统总体设计能对雇员的基本信息
9、进行管理;能对岗位的基本信息进行管理;能对雇员在公司内的换岗经历进行管理;能对部门的基本信息进行管理;能对部门的位置信息进行管理;能对部门所在国家的基本信息进行管理;能对国家所在洲的基本信息进行管理; 人力资源管理系统位置信息管理换岗信息管理部门信息管理员工基本信息管理国家信息管理岗位信息管理洲信息管理 3 数据库设计3.1 数据库概念结构人力资源管理系统E-R图如下:进行数据抽象,设计局部ER图,即设计用户视图。再集成各局部ER模型,即视图集成。ER方法是实体-联系方法的简称,它是描述现实世界结构模型的有效方法。建立局部模型,就是根据系统的具体情况,在多层的数据流图中选择一个适当层次的数据流
10、图,作为设计的出发点。在本次设计中,雇员、部门、位置、岗位、国家、洲分别进行局部设计,每个实体列出必需的属性,再寻找各个实体中间的联系,组合成系统的E-R图,再进行优化得出基本E-R图。3.2 数据库逻辑结构3.2.1 关系模型 人力资源管理系统物理模型图如下:人力资源管理系统逻辑模型图如下:3.2.2 关系模型的优化所谓关系规范化就是按统一标准对关系进行优化,以提高关系的质量,为构造一个高效的数据库应用系统打下基础。关系模式的优化是经过分析各个关系模式后确定各关系模式中均不存在部分函数依赖,传递函数依赖等,经过这些分析后可以确定各个关系模式达到了三范式的要求而且确定是三范式。3.2.3 视图
11、的设计1. 创建一个视图employee,员工可以查询自己的信息情况。2. 创建一个视图location,用户可以查询部门位置信息。3. 创建一个视图department,用户可以查询岗位基本信息。3.3 数据库的实现3.3.1表1) 雇员表: employee_id char(30) employee_name varchar(20) Sex varchar(2) brith_date int Age intSchool char(30)identity_card char(18)employee_adderss varchar(50)Phone char(11)department_id
12、char(20)job_name char(20)job_id char(20)hire_date int2) 部门表: department_name char(20) Number char(20) department_id char(20) department_address char(20) Manager char(20)3) 位置表: Address char(20) City_name char(20) city_id char(20) country_id char(20) department_id char(20)3.3.2 视图1) 雇员的基本信息视图create v
13、iew employasselect *from employee 2) 岗位视图create view jasselect *from job3.3.3 索引设计create unique clustered index ix_ employee on employee( employee desc) create unique clustered index ix_ department on salary( department desc) create unique clustered index ix_ location on department(location desc)3.3
14、.4 数据库编程1) 触发器的设计: -添加触发器过程create trigger sal on salary for insert,update as update salary set realsal=addid+salary where addid in (select addid from inserted) 2. 存储过程的设计: -插入雇员信息存储过程create PROCEDURE emp1employee_id char(30),employee_name varchar(20),sex varchar(2),brith_date int,age int,school char
15、(30),identity_card varchar(50),phone_adderss char(11),phone char(11),department_id char(20),job_name char(20),job_id char(20),hire_date int,asinsert into employeevalues(employee_id,employee_name,sex,brith_date,age, school,identity_card,phone_adderss,phone,department_id,job_name,job_id,hire_date);4 主
16、要功能的详细设计与实现4.1 登录模块1)界面截图如下:2) 模块算法: 删除雇员信息package com.hbkj.renli.department.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.hbkj.re
17、nli.department.dao.DepDao;import com.hbkj.renli.util.ResponseUtil;import net.sf.json.JSONObject;/* * 删除雇员信息 */WebServlet(/empDeleteServlet) 。注意:在web.xml中配置了servlet映射后,就不能/再使用该注解,否则发生重复映射错误public class DepDeleteServlet extends HttpServlet private static final long serialVersionUID = 1L; Override prot
18、ected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException this.doPost(request, response); /get请求也交给doPost来处理 Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /得到请求参数deli
19、d的值 String delId=request.getParameter(delId); /得到dao对象 DepDao depDao=new DepDao(); /删除雇员 int delNums=depDao.deleteDep(delId); /准备响应对象 JSONObject result=new JSONObject(); /在响应对象中保存操作结果 if(delNums = 1) result.put(success, true); else result.put(success, false); result.put(errorMsg, 删除失败); try /把响应对象发送
20、给浏览器 ResponseUtil.write(response, result); catch (Exception e) e.printStackTrace(); 显示雇员信息package com.hbkj.renli.department.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.serv
21、let.http.HttpServletResponse;import com.hbkj.renli.department.dao.DepDao;import com.hbkj.renli.util.ResponseUtil;import net.sf.json.JSONArray;import net.sf.json.JSONObject;/* * 显示雇员信息 */WebServlet(/empListServlet)public class DepListServlet extends HttpServlet private static final long serialVersion
22、UID = 1L; Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException this.doPost(request, response); /get请求也交给doPost来处理 Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
23、IOException /得到请求参数page和rows的值 String page=request.getParameter(page); /显示第几页 String rows=request.getParameter(rows); /每页多少行 /测试: System.out.println(page=+page+ +rows=+rows); /得到dao对象 DepDao depDao=new DepDao(); /得到json格式的结果集 JSONArray jsonArray = null; jsonArray = depDao.getDepList(Integer.parseInt
24、(page),Integer.parseInt(rows); /得到雇员总人数,用于分页显示 JSONObject result=new JSONObject(); result.put(rows, jsonArray); result.put(total, total); /测试: System.out.println(发送给浏览器的数据:+result); /发送给浏览器 try ResponseUtil.write(response, result); catch (Exception e) e.printStackTrace(); 保存雇员信息package com.hbkj.renl
25、i.department.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.hbkj.renli.department.dao.DepDao;import com.hbkj.renli.department.model
26、.Department;import com.hbkj.renli.util.ResponseUtil;import net.sf.json.JSONObject;/* * 保存雇员信息 */WebServlet(/empSaveServlet)public class DepSaveServlet extends HttpServlet private static final long serialVersionUID = 1L;Override protected void doGet(HttpServletRequest request, HttpServletResponse res
27、ponse) throws ServletException, IOException this.doPost(request, response); /get请求也交给doPost来处理 Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /得到请求参数的值 /设置字符编码为utf8 request.setCharacterEncoding(utf-8); String op = request
28、.getParameter(op);/操作类型:新增或者更新 String department_name = request.getParameter(department_name); /部门编号 String number=request.getParameter(number); /城市号 String department_id=request.getParameter(department_id);/经理编号 String department_address=request.getParameter(department_address); String manager=requ
29、est.getParameter(manager); /用请求参数组装Employee对象 Department dep = new Department(); dep.setDepartment_name(department_name); dep.setNumber(number); dep.setDepartment_id(department_id); dep.setDepartment_address(department_address); dep.setManager(manager); /得到dao对象 DepDao depDao=new DepDao(); /保存数据库操作结
30、果 int saveNums=0; /准备响应对象 JSONObject result=new JSONObject(); /判断请求是新增雇员还是更新雇员 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, 保存失败); /测试响应结果
31、 System.out.println(响应给浏览器:+result) /将响应发送给浏览器 try ResponseUtil.write(response, result); catch (Exception e) e.printStackTrace(); 界面显示package com.hbkj.renli.department.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.
32、servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.hbkj.renli.util.ResponseUtil;import net.sf.json.JSONObject;/* * 修改用户密码。模拟实现。 */WebServlet(name = savePwdServlet, urlPatterns = /savePwdServlet )public class SavePwdServlet e
33、xtends HttpServlet private static final long serialVersionUID = 1L; Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String newPass = request.getParameter(newpass);/准备响应对象 JSONObject result=new JSONObject(); result.put(succ
34、ess, true); result.put(msg, newPass); /将响应发送给浏览器 try ResponseUtil.write(response, result); catch (Exception e) e.printStackTrace(); 3) 功能:该模块主要实现了对雇员的基本信息进行了增、删、改、查几个功能,能够让工作人员更好的查看雇员信息,更简单的了解每一个雇员,工作起来更加方便。4.2 员工管理模块查看人力资源管理系统中员工基本信息,有利于管理者更方便地对该企业的员工进行详细地了解。能够对员工的信息进行查看、添加、编辑和删除。员工管理模块信息功能截图如下:4.3
35、 部门管理模块查看人力资源管理系统中员工部门信息,有利于管理者更方便地对该企业部门进行详细地了解。能够对部门经理、部门名称等信息进行查看、添加、编辑和删除。员工管理模块信息功能截图如下:4.4 位置管理模块因为是跨国公司,所以不同的部门会有不同的地区分布,借此创建位置信息模块,用来查看某个部门位于哪里,更好的对部门进行管理。部门管理模块信息功能截图如下:结论(1)软件完成情况 这次的实验是做人力资源管理系统,首先要利用power designer生成ER图,在确定ER图无误之后就把利用power designer生成ER图链接到数据库中从而是使数据库里面的库直接可以生成我们要的七个表,分别是员
36、工表,包含员工编号,员工姓名,员工性别,员工出生日期,员工年龄,员工的毕业学校,员工的身份证号码,员工的部门地址,员工的手机号等;部门表,包含部门编号,部门名称,部门地址,部门经理等;岗位表,包含岗位编号,岗位名称等;换岗表;位置表;国家表;洲表。之后利用java编程把数据库中的数据展现在界面上,在界面上实现了数据库中数据的显示,添加,编辑以及删除这些功能,使得eclipse与数据库相连接。(2)收获与不足 这次的人力资源管理系统课程设计只有两个星期,这两这星期我感觉过的好快,但是在这两个星期里面老师给我们请来了外面公司的老师来帮助我们更好的学习,老师教会我们如何使用power designe
37、r生成ER图并且链接到数据库,在eclipse中实现更好的界面,利用java语句来对界面进行整理,在浏览器中修改自己数据库里的属性等等。所以此次课程设计使我巩固了系统设计的整体步骤。在实现系统的设计时需要按照需求分析、概念设计、逻辑设计、物理设计、数据库的实施及调试测试六大步骤执行。其中,让我感触最深的是需求分析阶段,在这个阶段,必须对所要设计的系统有总体的构思和了解,明确自己要做什么,要实现什么功能,并且要结合实际进行相关的调查,不能凭空想象,这样会在后续的工作中遇到很多的问题。这次课程设计加深了我对数据库系统概论相关知识和 SQL SERVER 相关功能的理解。例如对建立基本表、视图、索引
38、、存储过程、触发器等。在解决遇到的各种问题的过程中,我学到了很多新的知识。进一步掌握了相关的 SQL语句方面的知识。不但纠正了以前的错误认识和理解,而且学会了建立存储过程和触发器。也使我知道了主键是多张二维表之间联系的关键。找对主键,能使表及存储过程,触发 器的建立变得更加简单和规范。在删除表的同时,也相应删除了先前绑定的触发器。 做好前期准备工作,能让建表等工作更容易。在需要做赋值等运算时,声明几个变量会使代码简单许多。通过查阅资料,我还明白了存储过程是编译后放在服务器端的程序,它可以被别的模块调用,且不需要重新编译,这样就大大减轻了客户端的负担,且有效的提高了系统执行的效率。当然,在实习的
39、过程中也存在一些问题,好在通过与同学间的探讨得以解决。同时在这次数据库课程设计的整个过程中,对于个人而言也是一次非常好的锻炼。本次课程设计受到了指导教师细心的指导和关怀,同时也给予了我很大的帮助。对此,表示忠心的感谢!没有老师的耐心指导,我根本不可能顺利完成此次课程设计的任务。李老师丰富的知识和编程经验帮我解决了不少的难题,同时也给我传授了不少新的知识和技巧。让我对所学的一些软件内容有了更进一步的了解。实训期间的问题凸显出自身课业实践方面的不足,面对困难要迎难而上,勇敢面对。 同时也感谢给过我帮助和鼓励的同学,是他们的帮助与鼓励,在我遇到困难时,为我点亮了希望的灯塔;在我灰心丧气时,带给我力量和信心。(3) 对课程设计有哪些建议 我觉得需求分析阶段在整个系统设计中是致关重要的,但由于我是第一次做这样的系统设计,都不是很熟悉需求分析的主要方法和主要任务,所以起初有些盲目,认为随便从网上搜点相关的知识就可以了,但其实,这直接影响着后面的各个阶段的工作的进行。在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次课程设计,可以巩固我们对数据库基本原理和基础理论的理解,掌握数据库应用系统开