文档内容
1 编写目的
开发设计基于SQL SERVER的数据库,进而对数据库有
更深刻的认识,同时锻炼自己上机动手能力。
1.2背景
说明:
a. 该软件命名为:人事管理系统;
b. 本项目的任务提出者:指导老师
开发者:王青峰,王加龙
用户:企业
2 系统开发环境
操作系统:Windows 2000
数据库:Sql server 2000
开发语言:java语言
需求分析:
本系统是人事管理系统,它主要实现管理员如何对普通用户进行
授权,如何插入、删除一个员工的信息,用户如何浏览员工的所有信
息,以及用户如何查询自己想要的结果,也即是通过输入查询条件,
显示符合条件的员工记录以及如何显示这个员工的全部信息。如何对
查询或统计出来的符合条件的记录用报表的形式打印出来,窗口打开
时的排放顺序,也即是平铺还是重叠 。
系统功能需求分析
该系统需要完成如下功能:
1 员工各种信息的输入,包括员工的基本信息、学历信息、
培训记录、调动记录、奖惩记录、考勤信息、工资信息。
2 员工各种信息的修改。
3 对于辞职、退休、开除员工信息的管理。
4 按照某种条件,查询统计符合条件的员工信息。
5 对用户进行授权。
6 对查询、统计的结果打印输出。3
系统功能分析
系统开发的总体任务是实现企业人事管理的系统化、规范化和自动化。
本系统所具有的功能主要有:
● 普通员工查看员工信息
• ● 加班津贴的管理。(根据加班的时间和类型给予不同的加班津贴。)
• ● 员工月工资的生成。(根据月工资生成公式,按照员工的考勤情况和工
作表现,生成员工月工资。)
• ● 系统管理员对系统的管理。
• ● 企业工资报表的生成。(支持各种不同形式的报表,如单个员工工资报
表生成、部门员工工资报表生成等)
• ● 信息查询系统的使用帮助。
● 帐号信息的修改。
实现功能:主要功能实现如下
普通用户:1 浏览员工信息
2 修改密码
管理员: 1 浏览所有员工信息
2 修改员工信息
3 增加新的员工
4 撤除员工信息
5 对系统进行些设置流程图:
系统登陆
合法用户
非法用户
管理员 普通用户
退出系统
用 系 参
信 修
户 统 数
息 改
信 初 设
浏 密
息 始 置
览 码
维 化
护
人事管理系统 E-R 图:
部 门
管理员
N
1
基本信息 1
拥 组成
管理
有
1 M N
学历信息
1 拥有 1 员工 1 拥有 1 考勤信息
N
1
拥 有
有 1 1 N 拥 1 奖惩记录
1 有
培训记录
拥有 拥有
1
拥有 1 用 户
调动记录
工 资基本信息:
政治面貌
部 门 职
务
婚 姻
状况
员工号
民
族
姓 名
生分证号
性 籍
基本信息
别 贯
年 出生年月
龄
电 话
学 历
状
血 型
态
开始工作 家庭住址
时间
学历信息:
员 工
毕业院 学 历
号
校
学历信息
专 业 毕业
时间
外 语 外语级别
计算机级
类型
别
培训情况:
培训名称
开始时间
培训内
容
员工号
培 训 情 况
结束时间
培训单位 培训地 培训费用
点考勤信息:
应出勤天 本月天数
数
公休假天
考勤信息
请假天数
数
节假日加班
员 工
日常加班
号
工资管理:
员工号
交通及通讯补 部 门 状
贴 态
加班补贴
工资管理
基 本
工资
公积金
养老金
所得税 应发工 实际工
资 资
调动记录:
员工号 姓 名
调动前职务
调动原因
调动记录
调动前部
门
调动后
职
调 动
批 准 人 调动后
时间
部门奖惩记录:
奖 惩 记 录
奖惩 奖 惩
时间
奖惩内容
批准部门
奖惩原因
负 责 人 员工号 姓
名
部门信息:
部门信息
部 门 号
部 门
部门员工数 部门经
理
用 户:
用 户
用户名 口
令
管理员:
管理员
权 管理员
限
密 码关系模型:
(标有下划线的为主键)
基本信息(员工号,姓名,年龄,性别,部门,职务,修、学历,状态,出生年月,籍贯,民族,身
份号,婚姻状况,政治面貌,血型,开始工作时间,家庭住址,电话)
学历信息(员工号,学历,专业,毕业院校,毕业时间,外语类型,外语级别,计算机级别)
培训情况(培训名称,培训内容,员工号,开始时间,结束时间,培训单位,培训地点,培训费
用)
考勤信息(员工号, 本月天数,公休假天数,应出勤天数,请假天数,节假日加班,日常加班)
工资管理(员工号, 部门,状态,基本工资,加班补贴,交通及通讯补贴,公积金,养老金,所
得税,应发工资,实际工资)
调动记录(员工号,姓名,调动前部门,调动前职务,调动原因,调动时间,批准人,调动后部
门,调动后职)
奖惩记录(员工号,奖惩,姓名,奖惩内容,奖惩原因,奖惩时间,批准部门,负责人)
部门信息(部门号,部门,部门经理,部门员工数)
用户(用户名,口令)
管理员(管理员,密码,权限
基本信息表
列名 数据类型及长度 可否为空 说明
员工号 char(10) not null emp_no
姓名 char(20) not null emp_name
年龄 int(4) not null age
性别 char(10) null sex
部门 char(10) null emp_bm
职务 char(10) null emp_zw
学历 char(10) null emp_xl
状态 char(8) null emp_zt
出生年月 datetime(8) null emp_csny
籍贯 varchar(10) null emp_jg
民族 char(20) null emp_mz
身份证号 char(30) null emp_sfzh
婚姻状况 char(8) null emp_hyzk
政治面貌 char(20) null emp_zzmm
血型 char(10) null emp_xx
开始工作时间 datetime(8) null emp_ksgzsj
家庭住址 char(30) null emp_jtzz
电话 char(20) null emp_th
培训记录表
列名 数据类型及长度 是否为空 说明
培训名称 char(30) notnull pxnr
培训内容 char(30) null pxmc
员工号 char(10) null emp_no开始日期 datetime(8) null ksrq
结束日期 datetime(8) null jsrq
培训单位 char(30) null pxdw
培训地点 char(30) null pxdd
培训费用 money(8) null pxfy
考勤信息表
列名 数据类型及长度 是否为空 说明
员工号 char(10) notnull emp_no
本月天数 int(4) notnull byts
公休假天数 int(4) null gxjts
应出勤天数 int(4) null ycqts
请假天数 int(4) null qjts
节假日加班 int(4) null jjrjb
日常加班 int(4) null rcjb
工资管理表
列名 数据类型及长度 是否为空 说明
员工号 char(10) notnull emp_no
部门 char(10) notnull emp_bm
状态 char(10) notnull emp_zt
基本工资 money(8) null jbgz
加班补贴 money(8) null jbbt
午餐补贴 money(8) null wcbt
交通及通讯补贴 money(8) null jtbt
公积金 money(8) null gjj
养老金 money(8) null ylj
应发工资 money(8) null yfgz
所得税 money(8) null sds
实发工资 money(8) null sfgz
调动记录表
列名 数据类型及长度 是否为空 说明
员工号 char(10) null emp_no
姓名 char(20) null emp_name
调动前部门 char(10) null ddqbm
调动前职务 char(10) null ddqzw
调动原因 ntext(16) null ddyy
调动时间 datetime(8) null ddsj
批准人 char(10) null pzr
调动后部门 char(10) null ddhbm
调动后职务 char(10) null ddhzw奖惩记录表
列名 数据类型及长度 是否为空 说明
员工号 char(10) notnull emp_no
姓名 char(20) null emp_name
奖惩 char(10) notnull jc
奖惩内容 char(10) null jcnr
奖惩原因 char(10) null jcyy
奖惩时间 datetime(8) null jcsj
批准部门 char(10) null pzbm
负责人 vacha(50) null fzr
学历信息表
列名 数据类型及长度 是否为空 说明
员工号 char(10) notnull emp_no
学历 char(10) notnull emp_xl
专业 char(20) null zy
毕业院校 char(20) null byyx
毕业时间 datetime(8) null bysj
外语类型 char(10) null wylx
外语级别 char(10) null wyjb
计算机级别 char(10) null jsjjb
用户表
列名 数据类型及长度 是否为空 说明
用户名 char(10) null yh_name
口令 char(10) null yh_key
管理员表
列名 数据类型及长度 是否为空 列名
管理员 char(10) null name
密码 char(10) null password
权限 char(10) null permission
部门信息表
列名 数据类型及长度 是否为空 说明
部门号 char(10) bmh
部门 char(10) bm
部门经理 char(10) bmjl
部门员工数 int(4) bmygs
部门工资 money(8) bmgzT-SQL语句
---------全体员工信息----------------
use 人事管理系统
go
create proc find_all
as
begin
select * from 员工
end
GO
exec find_all
-----------------------------------
--调动信息查询
use 人事管理系统
go
create proc find_diaodong
as
begin
select * from 调动记录
end
GO
exec find_diaodong
--------------------------------------
-----奖惩记录查询
use 人事管理系统
go
create proc find_jiangcheng
as
begin
select * from 奖惩情况
end
GO
exec find_jiangcheng
--------------------------------------
-----考勤记录查询
use 人事管理系统
gocreate proc find_kaoqin
as
begin
select * from 考勤
end
GO
exec find_kaoqin
-------------------------------------
---培训记录查询
use 人事管理系统
go
create proc find_peixun
as
begin
select * from 培训
end
GO
exec find_peixun
------------------------------------
------按员工号或姓名查询
use 人事管理系统
go
create proc proc_nona
@员工号 char(10),@姓名 char (20)
as
select * from 员工
where 员工号=@员工号 or 姓名=@姓名
GO
exec proc_nona @员工号 ='2',@姓名=''
exec proc_nona '1','李牧白'
--------------------------------------
---按部门查询员工信息并返回员工数
---------存储过程调用存储过程
use 人事管理系统
go
create proc proc_bumen
@部门 char(10) ,@sum int output
as
select * from 员工
where 部门=@部门
select @sum=count(*) from 员工
where 部门=@部门return @sum
GO
----调用按部门查询的存储过程
create proc proc_bm
@部门 char(10)
as
declare @e int
exec proc_bumen @部门 ,@e output
print '本部门共有'+cast(@e as char(2))+'名员工。'
GO
exec proc proc_bm @部门 ='人事部'
exec proc proc_bm '人事部'
--------------------------------------
------按员工号或姓名查询工资
use 人事管理系统
go
create proc proc_gongzi
@员工号 char(10),@姓名 char (20)
as
declare @状态 char(10)
declare @name char(20)
select @状态=状态 , @name= 姓名 from 基本信息
where 员工号=@员工号 or 姓名=@姓名
if @状态='在职'
begin
select 员工号 , 姓名 ,状态,基本工资,加班补贴+午餐补贴+交通及通讯补贴+公积金 as 补贴,
基本工资 +加班补贴+午餐补贴+交通及通讯补贴+公积金 as 应发工资,
(基本工资 +加班补贴+午餐补贴+交通及通讯补贴+公积金)*0.2 as 所得税,
(基本工资 +加班补贴+午餐补贴+交通及通讯补贴+公积金)*0.8 as 实发工资
from 工资管理
where 员工号=@员工号 or 姓名=@姓名
end
else if @状态='退休'
begin
select 员工号 , 姓名 ,状态,基本工资,养老金+公积金 as 补贴,
基本工资 +养老金+公积金 as 应发工资,
(基本工资 +养老金+公积金)*0.2 as 所得税,
(基本工资 +养老金+公积金)*0.8 as 实发工资
from 工资管理
where 员工号=@员工号 or 姓名=@姓名
end
else if @状态='辞退'begin
print'员工'+ @name +'已经退职,所以工资停发'
end
else --@状态='开除'
begin
print '员工'+ @name + '因~~~!以被公司开除,所以工资停发 '
end
exec proc_gongzi @员工号 ='2',@姓名=''
exec proc_gongzi '11',' '
-------------------------------------------------
-------删除某员工的基本信息
use 人事管理系统
go
create proc del_jiben
@员工号 char(10),@姓名 char (20)
as
delete from 基本信息
where 员工号=@员工号 or 姓名=@姓名
GO
exec del_jiben @员工号 ='2',@姓名=''
exec del_jiben '19',' '
-----------------------------------------------------
use 人事管理系统
/* 如果存在同名的触发器,则删除*/
if exists( select name from sysobjects
where type='tr'and name='tri_jiben')
drop trigger tri_jiben
go
create trigger tri_jiben ----触发器演示
on 基本信息
after delete
as
print 'You have deleted '+cast(@@rowcount as varchar)+' record(s)!'
--------------------------------------------
use 人事管理系统
/* 如果存在同名的触发器,则删除*/
if exists( select name from sysobjects
where type='tr'and name='tri_jiben')
drop trigger tri_jiben
gocreate trigger tri_jiben ----触发器演示
on 基本信息
after delete
as
declare @员工号 char(10),@姓名 char(20),@性别 char(10),@年龄 int,@部门 char(10),@职务
char(10)
select @员工号=员工号, @姓名=姓名,@性别=性别,@年龄=年龄, @部门=部门,@职务=职务
from deleted
if len(@员工号)=0 --or @姓名 is null
begin
print ' 没该员工的信息 ! '
rollback tran
end
else
begin
insert into 基本信息副表 values ( @员工号, @姓名, @性别, @年龄, @部门 ,@职务 )
print 'You have deleted'+ cast(@@rowcount as varchar) + ' record(s)!'
end
go
----------------------------------
exec del_jiben @员工号 ='12',@姓名=''
exec del_jiben '35',''
@id int , @员工号 char(10),@姓名 char(20),@性别 char(10),@年龄 int,@部门 char(10),@职务
char(10)
as
begin
insert into 基本信息 ( id,员工号, 姓名, 性别, 年龄, 部门 ,职务 )
values ( @id ,@员工号, @姓名, @性别, @年龄, @部门 ,@职务 )
end
GO
exec ins_jiben1 '22', '22','aaa','男','23','',''
-----------------------------------------------------------
-------------- x修改调动记录(8条属性)
------------- @员工号 char(10),@调动前部门 char(10), @调动前职务 char(10), @调动原
因 ntext(16),
---@调动时间 dateti @批准人 char(10), @调动后部门 char(10), @调动后职务 char(10)
use 人事管理系统go
create proc upd_diaodong1
@员工号 char(10),
@调动前部门 char(10),
@调动前职务 char(10),
@调动原因 ntext(16),
@调动时间 datetime(8),
@批准人 char(10),
@调动后部门 char(10),
@调动后职务 char(10)
as
update 调动记录
set 调动前部门= @调动前部门,
调动前职务=@调动前职务,
调动原因=@调动原因,
调动时间=@调动时间,
批准人= @批准人,
调动后部门=@调动后部门,
调动后职务=@调动后职务
where 员工号 = @员工号
go
-----------------------------
exec upd_diaodong1 '2','','','','','','',''
------------------------------------------------------------
use 人事管理系统
/* 如果存在同名的触发器,则删除*/
if exists( select name from sysobjects
where type='tr'and name='tri_jibe3')
drop trigger tri_jiben3
go
----插入时触发器
create trigger tri_jiben3
on 基本信息副表
for insert
as
declare @员工号 char(10)
select @员工号=员工号 from inserted
if exists (select * from 基本信息副表 where 员工号=@员工号 )
begin
print '该员工记录已经存在,您不能再插入~~!'
rollback
end
else
print '你已经成功插入了 '+cast(@@rowcount as varchar)+'条记录!'---------------------
exec ins_fubiao '22','aaa','男','23','',''
----------------------------------