人事管理系统报告文档.docx
- 文档编号:14524656
- 上传时间:2023-04-23
- 格式:DOCX
- 页数:32
- 大小:6.99MB
人事管理系统报告文档.docx
《人事管理系统报告文档.docx》由会员分享,可在线阅读,更多相关《人事管理系统报告文档.docx(32页珍藏版)》请在冰豆网上搜索。
人事管理系统报告文档
福建工程学院
课程设计
课程:
数据库专周
题目:
人事管理系统设计
专业:
计算机科学与技术
班级:
座号:
姓名:
2011年06月08日
一、系统定义
一个公司的管理离不开人事管理,对于现代社会的公司管理,人事管理系统是不可或缺的一部分,它为人事管理部门的工作人员提供多种方式的人事查询以及统计功能,另外还提供对企业的人事调动(包括添加新员工、人员退休、人员辞职等)、人员信息的改动(包括职工增加工资、给退休员工发放退休金等)以及查询企业员工信息等操作。
公司管理者可以通过人事管理系统对所有的员工信息进行操作。
普通用户只能查看自己的信息(不能对自己的信息进行操作)。
二、需求分析
1)员工各种信息的输入与修改,包括员工的基本信息、学历信息、婚姻状况信息、职称,简历,考核结果等。
2)对于转出、辞职、辞退、退休员工信息的处理;
3)按照一定的条件,查询、统计符合条件的员工信息;
数据流程图:
数据字典:
对数据流图中出现的对象、处理、存储、数据流进行文字说明解释。
数据项
工资表
数据项名
数据项含义说明
别名
数据类型
基本工资
职工一个月应拿的工资
jbgz
Money
奖金
为公司做贡献奖励
jbjl
Money
退休金
职工退休后一个月应拿的钱
jbback
Money
惩罚金
职工一个月被因某些原因被扣的工资
jbcf
Money
员工信息
职工姓名
emplname
varchar(10)
职工编号
int
职工密码
用来登入系统查询自己的信息
emplmima
int
职务名称
称呼
emplname
varchar(10)
年龄
emplage
Datetime
性别
emplsex
char
(2)
电话
联系用
emplphone
int
邮箱
联系用
emplmail
varchar(30)
家庭住址
你住的地方
empladdress
varchar(50)
所在部门
varchar(30)
管理员
管理员编号
识别一个人的身份
emplnum
numeric(10,0)
管理员密码
用来登入系统管理信息
emplmima
varchar(10)
职务名称
称呼
emplname
varchar(10)
年龄
emplage
Datetime
性别
emplsex
char
(2)
电话
联系用
emplphone
int
邮箱
联系用
emplmai
varchar(30)
退休表
员工编号
识别一个人的身份
Renum
Char(10)
员工名字
识别一个人的身份
Rename
varchar(20)
年龄
reage
int
退休金
退休领的钱
reback
money
电话
联系方式
rephone
varchar(11)
地址
住址
readdress
varchar(40)
数据结构
数据结构名
含义说明
组成
人事管理
管理公司人事调动
员工+员工信息+工资+考勤
数据流
数据流名
说明
数据流来源
数据流去向
组成
人员调动
记录职工信息变动
员工信息表
人事部
工资发放
记录职工的所得金钱变动
工资表
员工信息表
数据存储
数据存储名
说明
编号
输入数据流
输出数据流
组成(数据结构)
数据量
存取频度
存取方式
人员调动
记录职工信息变动
R001
人事部
人事部
员工信息表
100
1/周
手工记录
工资信息
记录职工的所得金钱变动
W001
人事部
员工表
人事部+员工信息表
1/月
银行记录
处理过程
处理过程名
说明
输入
输出
处理
奖金制度
对公司有大贡献的员工奖励(参见公司制度)
惩罚制度
对违反公司制度的员工惩罚(参见公司制度)
三、系统设计
1、概念结构设计
系统E-R图:
2、逻辑结构设计
将E-R图(或其他概念设计图)转换为具体的DBMS对应的关系模式:
职工(职工编号,姓名,性别,年龄,职务名称,所在部门,电话,家庭住址,籍贯)
考勤(迟到,早退,旷工,请假)
员工(员工编号,姓名,年龄,性别,职务名称,电话,邮箱)
人事部门(个人简历,岗位调动,记事,家庭关系)
3、系统功能模块图
普通用户模块:
作为普通用户登入只能查询与自己相关的信息,不能对信息进行修改。
管理员模块:
作为拥有最高权限的用户,可以查看所有员工的信息,以及对所有员工信息进行修改和增加用户。
下设人事系统子模块。
人事系统子模块:
作为人事管理系统中最重要的模块,可以记录所有员工的基本信息,记录员工家庭成员信息,记录员工职位调动,记录员工为公司所做的重大事件,以及对公司的贡献,还有记录员工的考勤情况。
4、其它设计图形工具
Delphi7.0,Microsoftvisio2003
5、关键代码流程图
登陆流程图
如何算工资触发器流程图
四、详细设计
主要的SQL语句:
1.创建数据库:
createdatabaseperson
Go
2.创建员工工表
createtableemployee
(
emplnumvarchar(11),
emplmmvarchar(10),
emplnamevarchar(10),
emplagevarchar(3),
emplsexchar
(2),
emplphonevarchar(11)unique,
emplmailvarchar(30),
empladdressvarchar(50),
judgevarchar(10),
primarykey(emplnum)
)
3.创建工资表
createtablegongzi
(
gznumvarchar(11),
gznamevarchar(10),
jbgzmoney,
jbjlmoney,
jbbackmoney,
jbcfmoney,
month_totalmoney,
leavingchar(10),
primarykey(gznum,gzname),
foreignkey(gznum)referencesemployee(emplnum)
ondeletecascade
onupdatecascade
)
4.创建个人简历表
createtablegerenjianli
(
genumvarchar(11),
genamevarchar(10),
facevarchar(10),
marryvarchar(10),
schoolvarchar(20),
bumenvarchar(20),
zhiwuvarchar(20),
gbeizuvarchar(50),
primarykey(genum),
foreignkey(genum)referencesemployee(emplnum)
ondeletecascade
onupdatecascade
)
5.创建家庭关系表
createtablefamilly
(
famnumvarchar(11),
famnamevarchar(10),
fnamevarchar(10),
mnamevarchar(10),
fdanweivarchar(20),
fbeizuvarchar(30),
primarykey(famnum,famname),
foreignkey(famnum)referencesemployee(emplnum)
ondeletecascade,
onupdatecascade,
)
6.创建记事表
createtablenote
(
nnumvarchar(11),
nnamevarchar(10),
happentimedatetime,
notenamevarchar(10),
notingvarchar(50),
primarykey(nnum,nname),
foreignkey(nnum)referencesemployee(emplnum)
ondeletecascade
onupdatecascade
)
7.创建考勤记录表
createtablekaoqin
(
knumvarchar(11),
knamevarchar(10),
kqtimedatetime,
qingjiavarchar(10),
dayssmallint,--时间多少
shenhevarchar(10),--审核
begintimedatetime,
overtimedatetime,
beizuvarchar(50),
primarykey(knum,kname),
foreignkey(knum)referencesemployee(emplnum)
ondeletecascade
onupdatecascade
)
8.创建岗位调动表
createtablegwdiaodong
(
gwnumvarchar(11),
gwnamevarchar(10),
qianfatimedatetime,
qianfanamevarchar(10),
diaorenriqidatetime,
bumenvarchar(20),
gangweivarchar(20),
beizuvarchar(50),
primarykey(gwnum,gwname),
foreignkey(gwnum)referencesemployee(emplnum)
ondeletecascade
onupdatecascade
)
9.创建退休表
createtableretire
(
renumchar(10)primarykey,
renamevarchar(20),
reageintcheck(reage>60),
rebackmoney,
rephonevarchar(11),
readdressvarchar(40),
)
10.创建加班申请表
createtablejiaban
(
jbnumvarchar(11)primarykey,
jbnamevarchar(20),
shenhevarchar(20),
begintimedatetime,
overtimedatetime,
beizuvarchar(50),
foreignkey(jbnum)referencesemployee(emplnum)
ondeletecascade
onupdatecascade
)
11.创建销售表
createtablesell
(
snumvarchar(11)primarykey,
snamevarchar(20),
sphonevarchar(11),
sqtyvarchar(10),
sbeizuvarchar(40),
foreignkey(snum)referencesemployee(emplnum)
ondeletecascade
onupdatecascade
)
工资表修改触发器
createtriggertrig_gongziongongzi
forupdate
as
declare@beforemymonthint,@aftermymonthint,@mygznumvarchar(11),@myjbgzvarchar(10),@myjbjlint,@mybbackint,@beforemyjbcfint,@aftermyjbcfint
declare@a1int,@a2int,@b1int,@b2int,@c1int,@c2int
select@mygznum=gznum,@beforemymonth=month_total,@a1=jbgz,@b1=jbjl,@c1=jbcffromdeleted
select@mygznum=gznum,@aftermymonth=month_total,@a2=jbgz,@b2=jbjl,@c2=jbcffrominserted
if(@beforemymonth<>@aftermymonthor@a1<>@a2or@b1<>@b2or@c1<>@c2)
begin
updategongzisetmonth_total=@a2+@b2-@c2wheregznum=@mygznum
end
go
工资插入触发器
createtriggertrig_gongzi_insertongongzi
forinsert
as
declare@mygznumvarchar(11),@myjbgzvarchar(10),@myjbjlint
declare@a1int,@b1int
select@mygznum=gznum,@a1=jbgz,@b1=jbjlfrominserted
updategongzisetmonth_total=@a1+@b1-jbcfwheregznum=@mygznum
go
考勤表插入触发器
createtriggertrig_kaoqinonkaoqin
forinsert
as
declare@leixingvarchar(10),@alldayint,@myknumvarchar(11)
select@myknum=knum,@leixing=qingjia,@allday=daysfrominserted
if(@leixing='病假')updategongzisetjbcf=@allday*20wheregznum=@myknum
if(@leixing='事假')updategongzisetjbcf=@allday*50wheregznum=@myknum
if(@leixing='长假')updategongzisetjbcf=@allday*(jbgz/30)wheregznum=@myknum
if(@leixing='早退')updategongzisetjbcf=@allday*40wheregznum=@myknum
if(@leixing='旷工')updategongzisetjbcf=@allday*100wheregznum=@myknum
updategongzisetmonth_total=jbgz+jbjl-jbcfwheregznum=@myknum
go
考勤表修改触发器
createtriggertrig_kaoqin_updateonkaoqin
forupdate
as
declare@beforeleixingvarchar(10),@afterleixingvarchar(10),@beforealldayint,@afteralldayint,@myknumvarchar(11)
select@myknum=knum,@beforeleixing=qingjia,@beforeallday=daysfromdeleted
select@myknum=knum,@afterleixing=qingjia,@afterallday=daysfrominserted
if(@beforeleixing<>@afterleixingor@beforeallday<>@afterallday)
begin
if(@afterleixing='病假')updategongzisetjbcf=@afterallday*20wheregznum=@myknum
if(@afterleixing='事假')updategongzisetjbcf=@afterallday*50wheregznum=@myknum
if(@afterleixing='长假')updategongzisetjbcf=@afterallday*(jbgz/30)wheregznum=@myknum
if(@afterleixing='早退')updategongzisetjbcf=@afterallday*40wheregznum=@myknum
if(@afterleixing='旷工')updategongzisetjbcf=@afterallday*100wheregznum=@myknum
updategongzisetmonth_total=jbgz+jbjl-jbcfwheregznum=@myknum
end
go
退休员工更新触发器
createtriggertri_retire_updateonemployee
forupdate
as
declare@achar(10),@bvarchar(20),@cvarchar(3),@a1char(10),@b1varchar(20),@c1varchar(3)
declare@rephonevarchar(11),@readdressvarchar(40),@rebackint
select@a=emplnum,@b=emplname,@c=emplagefromdeleted
select@a1=emplnum,@b1=emplname,@c1=emplagefrominserted
select@rephone=emplphone,@readdress=empladdressfromemployeewhereemplnum=@a1andemplage=@c1
select@reback=month_total/3fromgongziwheregznum=@a1
if(@c<>@c1and@c1>60)
begin
insertintoretire(renum,rename,reage,reback,rephone,readdress)values(@a,@b,@c,@reback,@rephone,@readdress)
updateemployeesetjudge='退休员工'whereemplnum=@a1
end;
go
员工退休金触发器
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERtrigger[dbo].[tri_retire]on[dbo].[employee]
fordelete
as
declare@achar(10),@bvarchar(20),@cvarchar(3),@dmoney,@phonevarchar(11),@addvarchar(40)
select@a=emplnum,@b=emplname,@c=emplagefromdeleted;
select@d=month_total/3fromgongzi;
select@phone=emplphone,@add=empladdressfromemployee;
if(@c>60)
insertintoretire(renum,rename,reage,reback,rephone,readdress)values(@a,@b,@c,@d,@phone,@add)
销售业绩插入触发器
普通员工注册存储过程
createprocedurepro_emplnew
@avarchar(11),
@svarchar(11),
@dvarchar(10),
@fvarchar(3),
@gchar
(2),
@hvarchar(11),
@jvarchar(30),
@kvarchar(50)
as
insertintoemployeevalues(@a,@s,@d,@f,@g,@h,@j,@k,'普通员工');
go
退休金查询存储过程
createprocedurepro_retire
@namevarchar(10)
as
selectrenum职工编号,rename职工姓名,reage职工年龄,reback退休金,rephone电话,readdress地址fromretire
whererename=@name;
go
修改密码存储过程
createprocedurepromima
@numbervarchar(11),
@loginmimavarchar(11),
@oldmimavarchar(11),
@newmima1varchar(11)
as
if@loginmima=@oldmimaand@newmima1!
=''
begin
updateemployeesetemplmm=@newmima1whereemplnum=@number;
end;
go
五、系统实现与测试
1、开发平台和工具选择
开发平台:
Delphi7
工具:
Microsoftvisio2003,MicrosoftSQLServer 2005
使用说明:
使用Delphi7能够简单快捷的设计出数据库平台,美观,易操作,而且是我们刚刚所学的,刚好可以用上。
使用Microsoftvisio2003可以更好的画出E-R图、数据流图和功能模块图。
2、系统测试
人事管理系统登入界面:
有三种登入选择:
管理员登入、普通员工登入、退休员工登入
人事管理主界面:
管理员登入
普通员工登入
员工注册界面(管理员操作)
普通员工注册
工资管理(管理员操作)
考勤记录(管理员操作)
请假申请(普通员工操作)
个人简历操作(管理员操作)
岗位调动(管理员操作)
家庭关系信息处理(管理员操作)
记事管理(管理员操作)
销售业绩管理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人事管理系统 报告 文档