数据库课程设计---人力资源管理系统.
课程设计报告 课程设计题目:人力资源管理系统数据库的设计与实现 专 业:计算机科学与技术班 级:1120702姓 名:章建学 号: 201120070214指导教师: 游胜玉 2013年01月06日1、 实验题目:人力资源管理系统数据库的设计与实现2、 实验时间及地点:1、 时间:12月29号上午、1月5号至6号上午。2、 地点:东华理工大学软件楼603。3、 实验目的:通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决人力资源管理系统数据库的设计与实现的实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。四、课程设计要求:1进行系统功能需求分析2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引5. 根据系统功能需求设计相应的查询视图6. 要求根据系统功能需求建立存储过程7. 根据功能需求建立相应的触发器以保证数据的一致性8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作)五、实现思路:1、需求分析:通过对昌北经济开发区某些工厂和公司的实地调查,了解到大部分企业的人力资源管理工作仍停留在完全的人工管理阶段,没有标准的人事管理存档信息。这种人工管理方式费时、费事、费力,工作效率极其低下。在信息技术如此发达的今天,不能运用计算机帮助人们管理人力资源必定会浪费企业许多人力和财力,而且人工管理相对于计算机管理存在许多无法弥补的弊端。开发出合适的人力资源管理系统,可方便人力资源的管理,提高该企业管理的效 率。由此可以看出人力资源管理系统的市场需求非常大,开发出一个好的人力资源管理系统必定会受到许多企业的欢迎,前途广阔!2、处理对象:1. 员工基本信息(employee):包括员工号,姓名,性别,年龄,学历,住址,电话,出生年月2. 员工工资信息(salary):包括员工号,基本工资,补贴,实际工资。3. 公司部门综合信息(department):包括员工号,员工的职位和所属部门。3、 概念设计模型:1、 局部E-R图:各实体关系E-R图:员工应得工资员工所属部门员工局部E-R图:员工电话员工号姓名名性别年龄出生年月住址学历工资局部E-R图: 工资实际工资补贴员工号基本工资部门局部E-R图:部门员工号职位部门号2、整体E-R图:员工电话员工号姓名名性别年龄出生年月住址学历工资实际工资补贴员工号基本工资部门员工号职位部门号应得所属3、系统流程图:用户显示查询结果发出查询内容判断查询内容在员工基本信息中处理在员工工资信息中处理存储修改数据发出修改信息判断修改内容在员工基本信息中处理在员工工资信息中处理4、 关系模式:员工:employee(eno,ename,sex,age,edu,address,tel,birth)工资:salary(eno,salary,addid,realsal)部门:department(eno,dno,position)六、实验过程:1、表的建立:(1)、员工表的建立:create table employee(eno char(20) not null PRIMARY KEY -主键约束ename char(10) NOT NULL,sex char(2) NOT NULL,age int NOT NULL,edu char(10),address char(50),tel char(20),birth datetime NOT NULL,)(2)、工资表的建立:create table salary(eno char(20) not null PRIMARY KEY foreign key references employee(eno), -主键和外键约束salary float not null,realsal float ,addid char(20) NOT NULL)(3)、部门表的建立:create table department(eno char(20) not null PRIMARY KEY foreign key references employee(eno),dno char(20) NOT NULL,position char(20) )2、视图的建立:(1)、员工及部门信息视图:create view view_employeeasselect employee.eno as 员工号,ename as 姓名,sex as 性别,age as 年龄,edu as 学历,address as 住址,tel as 联系电话,birth as 出生年月,position as 职位,dno as 部门号from employee,departmentwhere employee.eno=department.eno(2)、工资信息视图:create view view_salaryasselect employee.eno as 员工号,ename as 姓名,salary as 基本工资,addid as 补贴,realsal as 实际工资from salary,employeewhere employee.eno=salary.eno2、 创建索引:create unique clustered index ix_eno on employee(eno desc)create unique clustered index ix_sno on salary(eno desc)create unique clustered index ix_dno on department(eno desc)4、存储过程的建立:(1)、插入员工信息:create proc input_employee(员工号 char(20),姓名 char(20),性别 char(2),年龄 int,学历 char(10),住址 char(50),电话 char(20),生日 datetime,)asinsert into employee values(员工号,姓名,性别,年龄,学历,住址,电话,生日)(2)、插入工资信息:create proc input_salary(员工号 char(20),补贴 float,基本工资 float,实际工资 float)asinsert into salary values(员工号,补贴,基本工资,实际工资)(3)、插入部门信息:create proc input_department(员工号 char(20),部门号 char(20),职务 char(20)asinsert into department values(员工号,部门号,职务)(4)、更改员工信息:create procedure update_employee(员工号 char(5),姓名 char(20),性别 char(2),年龄 int,学历 char(10),住址 char(50),电话 char(20),生日 datetime)as if EXISTS(select * from employee where eno=员工号)BEGINupdate employeeset ename=姓名,sex=性别,age=年龄,edu=学历,address=住址,tel=电话,birth=生日where 员工号=employee.enoENDelseprint '没有找到该员工,请核对是否存在'(5)、更改工资信息:create procedure update_salary(员工号 char(20),补贴 float,基本工资 float,实际工资 float)as if EXISTS(select * from salary where eno=员工号)BEGINupdate salaryset addid=补贴,salary=基本工资,realsal=实际工资where 员工号=salary.enoENDelseprint '没有找到该员工,请核对是否存在'(6)、更改部门信息:create proc update_department(员工号 char(20),部门号 char(20),职务 char(20)asif EXISTS(select * from department where eno=员工号)BEGINupdate departmentset dno=部门号,position=职务where 员工号=department.enoENDelseprint '没有找到该员工,请核对是否存在'(7)、删除员工所有信息:create procedure delete_info(员工号 char(20)asdeletefrom employeewhere eno=员工号deletefrom salarywhere eno=员工号deletefrom departmentwhere eno=员工号5、触发器的建立:计算实际工资:create trigger salon salary for insert,updateasupdate salaryset realsal=addid+salarywhere addid in (select addid from inserted)6、系统调试与结果:(1)、查看各表视图信息:(2) 、存储过程:七、实验总结通过本次实验,加深的了对关系数据库的原理及应用的认识:1. 主键是多张二维表之间联系的关键。找对主键,能使表及存储过程,触发器的建立变得更加简单和规范。2. 在删除表的同时,也相应