某单位的人事管理系统数据库课程设计.docx
《某单位的人事管理系统数据库课程设计.docx》由会员分享,可在线阅读,更多相关《某单位的人事管理系统数据库课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
某单位的人事管理系统数据库课程设计
数据库原理及应用课程设计
设计报告
题目:
某单位的人事管理系统
学号:
131007128
学生姓名:
指导教师:
提交时间:
2015-01-04
人事管理系统后台数据库
第1章 需求分析
1.1 需求调查
通过对各个用户的调查,该人事管理系统有如下需求:
1)员工信息管理:
实现记录在该单位中所有人员的在该单位的员工信息,实现对员工信息的管理,也包括对员工信息的增加、删除、修改等功能。
2)部门信息管理:
实现对该单位中的各个部门的编号、部门相关信息的统计,此时也将单位中的所有人员进行分类管理。
3)职位调动管理:
实现当员工的就职信息发生更改的时候,系统进行相应关联信息的更改,即增加相应的修改信息的同时,员工的信息管理中的对应信息进行修改。
4)系统管理人员信息管理:
实现对相应的系统管理人员的帐号、密码等基本信息的管理功能。
5)出勤信息管理:
实现对每一位员工的出勤状况的记录,记录对应的出勤刷卡机号以及出勤时间的信息管理。
6)奖惩管理:
实现针对于不同的奖惩类型、奖惩金额等信息的管理,实现输入奖惩信息的修改相应的工资信息。
7)工资管理:
实现各个员工工资条目信息的管理。
1.2系统功能分析
1)员工管理:
主要应用于对员工在该单位基本信息的管理,可以执行对某员工的增加、删除、修改信息的功能等。
2)管理人员管理:
用于对相应的系统管理人员的帐号、密码等基本信息的管理。
3)个人经历管理:
可对各个员工的过往经历汇总并记录留档,完善员工在该单位中的基本信息,增加单位对员工个人经历的了解。
4)家庭关系管理:
可对各个员工的家庭人员以及关系进行汇总并记录留档,完善员工在该单位中的基本信息,增加单位对员工家庭情况的了解
5)部门管理:
主要用于分别管理各个部门的基本信息,以及部门的实际情况统计。
6)职位调动管理:
负责记录单位中人员的职位调动信息的记录、统计、管理等,并当更新职位调动信息的时候,将相应的员工、部门信息进行修改。
7)出勤信息管理:
记录员工每一次的刷卡出勤的相关信息,做好统计工作。
8)刷卡机管理:
管理出勤是所需要的出勤记录刷卡机。
9)请假记录管理:
用于记录员工的请假信息,包括员工编号、请假时间、销假时间、请假天数等信息。
10)奖惩记录管理:
用于记录员工的奖惩信息,包括员工编号、奖惩类型、奖惩金额、奖惩时间等信息。
11)工资管理:
用于统计记录员工的工资信息,基本工资、将罚金、时间等。
1.3面对用户需求分析
在该单位的人事管理系统中,最主要的两个功能就是查询信息和管理信息。
系统的用户又分为员工和管理人员,因此我将该系统又分为以下若干子系统,包括员工查询子系统、管理员查询子系统、员工信息管理子系统、部门信息管理子系统、信息变更子系统、工资管理子系统,以满足不同用户的不同应用需求。
下面从细分后的各个子系统分析子系统的需求:
1)员工查询子系统:
可供员工查询与自己相关的姓名、职位、部门等基本信息,以及各个时期的工资、奖金罚款的发放情况。
2)管理员查询子系统
可供管理员查询所管理员工的全面信息,具有管理权限。
3)员工信息管理子系统
当员工自身的基本情况,如家庭关系变更时,可由员工自行进行修改相关信息。
4)部门信息管理子系统
部门的管理员可对该部门的相关信息进行管理,执行查询、增加、删除、修改等操作。
5)信息变更子系统
员工提交相应修改信息,则将所有该员工的相关信息进行修改。
6)工资管理子系统
对奖罚金额及基本工资、结算工资进行管理。
第2章 面向对象分析和设计
类和对象设计如下:
个人经历
年份datetime
员工编号char(4)
学习经历varchar(50)
任职经历varchar(50)
查询()
添加()
删除()
修改()
员工
员工编号char(4)
姓名char(10)
性别char
(2)
出生日期datetime
学历varchar(32)
身份证号varchar(32)
民族varchar(16)
职称char(10)
部门号char(4)
职务char(32)
查询()
添加()
删除()
修改()
部门
部门号char(4)
部门名char(10)
领导人员char(4)
员工人数int
查询()
添加()
删除()
修改()
家庭关系
关系编号char(10)
员工编号char(4)
亲属关系char(50)
亲属姓名char(10)
查询()
添加()
删除()
修改()
出勤
出勤号char(6)
员工编号char(4)
上班日期datetime
上班时间datetime
下班时间datetime
刷卡机号char(4)
查询()
添加()
删除()
修改()
职位调动
调动编号char(6)
员工编号char(4)
调动前职务char(10)
调动后职务char(10)
调动前部门号char(4)
调动后部门号char(4)
调动日期datetime
批复日期datetime
调动原因varchar(50)
查询()
添加()
删除()
修改()
管理人员
管理员帐号char(4)
职工编号char(4)
密码char(6)
级别char(4)
查询()
添加()
删除()
修改()
刷卡机
刷卡机号char(4)
查询()
添加()
删除()
修改()
工资
工资编号char(6)
员工编号char(4)
基本工资money
罚款money
奖金money
结算工资money
起始时间datetime
截止时间datetime
发信日期datetime
查询()
添加()
删除()
修改()
奖惩记录
奖惩编号char(6)
员工编号char(4)
奖惩类型char(4)
奖惩金额money
奖惩日期datetime
批复部门号char(4)
批复日期datetime
奖惩原因varchar(50)
查询()
添加()
删除()
修改()
请假记录
请假编号char(6)
员工编号char(4)
请假时间datetime
销假时间datetime
请假天数int
审批人编号char(4)
查询()
添加()
删除()
修改()
第3章 逻辑结构设计
局部E-R图
图3.1员工
图3.2个人经历
图3.3家庭关系
图3.4部门
图3.5职位调动
图3.6工资
图3.7管理人员
图3.8刷卡机
图3.9出勤
图3.10请假记录
图3.11奖惩记录
全局E-R图:
类和对象向关系模式转换
1、员工(员工编号,姓名,性别,出生日期,学历,身份证号,民族,职称,部门号,职务)
2、个人经历(年份,员工编号,学习经历,任职经历)
3、家庭关系(关系编号,员工编号,亲属关系,亲属姓名)
4、管理人员(管理员帐号,职工编号,密码,级别)
5、出勤(出勤号,员工编号,上班日期,上班时间,下班时间,刷卡机号)
6、刷卡机(刷卡机号)
7、部门(部门号,部门名,领导人员,员工人数)
8、职位调动(调动编号,员工编号,调动前职务,调动后职务,调动前部门号,调动后部门号,调动日期,批复日期,调动原因)
9、奖惩记录(奖惩编号,员工编号,奖惩类型,奖惩金额,奖惩日期,批复部门号,批复日期,奖惩原因)
10、请假记录(请假编号,员工编号,请假时间,销假时间,请假天数,审批人编号)
11、工资(工资编号,员工编号,基本工资,罚款,奖金,结算工资,起始日期,截止日期,发信日期)
第4章 数据库物理结构设计
4.1存取方法设计
数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。
对于人事管理系统来说,为了提高某些属性(如:
员工编号,管理员帐号,员工基本信息等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。
这样在查询某个学院或是查询某个专业或某学年等的学生成绩或选课等时就会大大提高查询速度。
因此,该系统中选择聚簇存取方法。
4.2 存储结构设计
人事管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器(B/S),客户端/服务器(C/S)混合的应用体系结构来建设教务管理系统。
数据库管理系统采用Microsoft公司推出的SQLServer2000或以上版本,并用SQL进行数据库的建立和数据库中数据的维护和查询。
4.3 物理设计
实现该设计的环境为WindowsXPProfessional+MSSQLServer2005或以上版本。
1、建立员工信息表
createtable员工
(
员工编号char(4)primarykey,
姓名char(10)notnull,
性别char
(2)check(性别in('男','女')),
出生日期datetime,
学历varchar(32)notnull,
身份证号varchar(32)notnull,
民族varchar(16)notnull,
职称char(10),
部门号char(4)
)
2、建立个人经历表
createtable个人经历
(
年份datetime,
员工编号char(4),
学习经历varchar(50),
任职经历varchar(50),
primarykey(年份,员工编号),
foreignkey(员工编号)references员工(员工编号)
)
3、建立家庭关系表
createtable家庭关系
(
关系编号char(10)primarykey,
员工编号char(4)notnull,
亲属关系char(4),
亲属姓名char(10),
亲属性别char
(2),
foreignkey(员工编号)references员工(员工编号)
)
4、建立管理人员表
createtable管理人员
(
管理员账号char(4)primarykey,
职工编号char(4)notnull,
密码char(6)notnull,
级别char(4)check(级别in('管理员','系统管理员')),
foreignkey(职工编号)references员工(员工编号)
)
5、建立出勤表
createtable出勤
(
出勤号char(6)primarykey,
员工编号char(4)notnull,
上班日期datetime,
上班时间datetime,
下班时间datetime,
刷卡机号char(4),
foreignkey(员工编号)references员工(员工编号)
foreignkey(刷卡机号)references刷卡机(刷卡机号)
)
6、建立刷卡机表
createtable刷卡机
(
刷卡机号char(4)primarykey
)
7、建立部门表
createtable部门
(
部门号char(4)primarykey,
部门名char(10)notnull,
领导人员char(4)notnull,
员工人数int
)
8、建立职位调动表
createtable职位调动
(
调动编号char(6)notnull,
员工编号char(4)notnull,
调动前职务char(10),
调动后职务char(10),
调动部门号char(4)notnull,
调动日期datetime,
批复日期datetime,
调动原因varchar(50),
foreignkey(员工编号)references员工(员工编号),
foreignkey(调动部门号)references部门(部门号),
)
9、建立奖惩记录表
createtable奖惩记录
(
奖惩编号char(6)notnullprimarykey,
员工编号char(4)notnull,
奖惩类型char(4),
奖惩金额money,
奖惩日期datetime,
批复部门号char(4),
批复日期datetime,
奖惩原因varchar(50),
foreignkey(员工编号)references员工(员工编号),
foreignkey(批复部门号)references部门(部门号)
)
10、建立请假记录表
createtable请假记录
(
请假编号char(6)notnullprimarykey,
员工编号char(4)notnull,
请假时间datetime,
销假时间datetime,
请假天数int,
审批人编号char(4),
foreignkey(员工编号)references员工(员工编号)
)
11、建立工资表
createtable工资
(
工资编号char(6)primarykey,
员工编号char(4)notnull,
基本工资moneynotnull,
罚款money,
奖金money,
结算工资money,
起始时间datetime,
截止时间datetime,
发信日期datetime,
foreignkey(员工编号)references员工(员工编号)
)
第5章 数据库完整性设计
5.1主键及唯一性索引
表名
主键
建立唯一性索引
员工
(员工编号)
createindex员工_学历_index
on员工(学历)
个人经历
(年份,员工编号)
createindex个人经历_任职经历_index
on个人经历(任职经历)
家庭关系
(关系编号)
createindex家庭关系_亲属关系_index
on家庭关系(亲属关系)
管理人员
(管理员帐号)
createindex管理人员_index
on管理人员(级别)
出勤
(出勤号)
createindex出勤_上班日期_index
on出勤(上班日期)
刷卡机
(刷卡机号)
createindex刷卡机_index
on刷卡机(刷卡机号)
部门
(部门号)
createindex部门_领导人员_index
on部门(领导人员)
职位调动
(调动编号)
createindex职务调动_调动前职务_index
on职位调动(调动前职务)
奖惩记录
(奖惩编号)
createindex奖惩记录_奖惩类型_index
on奖惩记录(奖惩类型)
请假记录
(请假编号)
createindex请假记录_请假天数_index
on请假记录(请假天数)
工资
(工资编号)
createindex工资_基本工资_index
on工资(基本工资)
5.2参照完整性设计
1、将个人经历表中,将“员工编号”设置为表的外键。
2、在家庭关系中,将“员工编号”设置为表的外键。
3、在管理人员表中,将“员工编号”设置为表的外键。
4、在出勤表中,将“员工编号”设置为表的外键,再将“刷卡机号”设置为外键。
5、在职位调动表中,将“员工编号”设置为表的外键,再将“部门”号设置为外键。
6、在奖惩记录表中,将“员工编号”设置为表的外键。
7、在请假记录表中,将“员工编号”设置为表的外键。
8、在工资等表中的将“员工编号”设置为表的外键。
5.3 Check约束
1、员工表中,将性别进行check约束:
check(性别in('男','女'))
2、奖惩记录表中,将奖惩类型进行check约束:
check(奖惩类型in('奖','惩'))
5.4触发器设计
1、在职位调动表中,建立更改员工职务的触发器
createtriggertrigger_职务修改on职位调动forinsert
as
declare@new_员工编号char(10),@new_调动后职务char(10)
select@new_员工编号=员工编号,@new_调动后职务=调动后职务frominserted
update员工set职务=@new_调动后职务where员工编号=@new_员工编号
2、在员工表中,建立插入或删除员工信息时,修改其相应部门的人数
createtriggertrigger_增加员工on员工forinsert
as
declare@new_部门号char(4),@new_员工人数int
select@new_部门号=部门号frominserted
select@new_员工人数=员工人数from部门
update部门set员工人数=@new_员工人数+1where部门号=@new_部门号
createtriggertrigger_减少员工on员工fordelete
as
declare@new_部门号char(4),@new_员工人数int
select@new_部门号=部门号fromdeleted
select@new_员工人数=员工人数from部门
update部门set员工人数=@new_员工人数-1where部门号=@new_部门号
3、在职位调动表中,当插入信息时,修改调动部门的人数信息
createtriggertrigger_部门人数修改on职位调动forinsert
as
declare@new_前部门号char(10),@new_现部门号char(10),@new_调动后部门号char(4),@new_员工人数int,@new_调动前部门号char(4)
select@new_现部门号=调动后部门号,@new_前部门号=调动前部门号frominserted
select@new_员工人数=员工人数from部门
update部门set员工人数=@new_员工人数+1where部门号=@new_现部门号
update部门set员工人数=@new_员工人数-1where部门号=@new_前部门号
4、在奖惩记录表中,更新奖惩信息时,修改工资表中的对应的奖金、罚款
createtriggertrigger_奖金on奖惩记录forinsert
as
declare@奖金money,@奖惩类型char
(2),@员工编号char(4)
select@奖金=奖惩金额,@员工编号=员工编号,@奖惩类型=奖惩类型frominserted
begin
if(@奖惩类型='奖')
update工资set奖金=@奖金where员工编号=@员工编号
end
createtriggertrigger_罚款on奖惩记录forinsert
as
declare@罚款money,@奖惩类型char
(2),@员工编号char(4)
select@罚款=奖惩金额,@员工编号=员工编号,@奖惩类型=奖惩类型frominserted
begin
if(@奖惩类型='罚')
update工资set罚款=@罚款where员工编号=@员工编号
end
5、在工资表中,奖金、罚款发生变动时,更新相应的结算工资
createtrigger[dbo].[trigger_update_a]on[dbo].[工资]forupdate
asbegin
ifUPDATE(罚款)
update工资
set结算工资=基本工资-罚款+奖金
from工资
end
createtrigger[dbo].[trigger_update_a]on[dbo].[工资]forupdate
asbegin
ifUPDATE(奖金)
update工资
set结算工资=基本工资-罚款+奖金
from工资
end
第6章数据库视图设计
1、建立“员工基本信息查询”视图
CREATEVIEW[dbo].[员工基本信息查询]
AS
SELECTdbo.员工.员工编号,dbo.员工.姓名,dbo.员工.部门号,dbo.员工.职务,dbo.部门.领导人员,dbo.部门.部门名,dbo.个人经历.任职经历
FROMdbo.员工INNERJOIN
dbo.部门ONdbo.员工.部门号=dbo.部门.部门号INNERJOIN
dbo.个人经历ONdbo.员工.员工编号=dbo.个人经历.员工编号
2、建立“员工个人背景”视图
CREATEVIEW[dbo].[View_员工个人背景]
AS
SELECTdbo.个人经历.员工编号,dbo.个人经历.任职经历,dbo.个人经历.学习经历,dbo.家庭关系.亲属关系,dbo.家庭关系.亲属姓名
FROMdbo.个人经历INNERJOIN
dbo.家庭关系ONdbo.个人经历.员工编号=dbo.家庭关系.员工编号
第7章数据库存储过程设计
1、建立“查询某部门人数”存储过程
CREATEprocedure[dbo].[proc_查询某部门的人数]
@部门号char(4),@人数intoutput
as
select@人数=COUNT(员工.员工编号)from员工where@部门号=部门号
2、建立“查询某部门某职称人数”存储过程
CREATEprocedure[dbo].[proc_查询某部门某职称人数]
@部门号char(4),@职称char(10),@人数intoutput
as
select@人数=COUNT(员工.员工编号)from员工where(@部门号=部门号and@职称=职称)
总结
课程设计,是我们对现在所学的《数据库系