数据库课程设计工资管理系统.docx
《数据库课程设计工资管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计工资管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
数据库课程设计工资管理系统
IFEXISTS(SELECT*FROMsysdatabasesWHEREname='工资管理系统')
dropdatabase工资管理系统
GO
CREATEDATABASE工资管理系统
ONPRIMARY(
NAME=工资管理系统,
FILENAME='F:
\工资管理系统_data.mdf',
SIZE=4MB,
MAXSIZE=6MB,
FILEGROWTH=2MB
)
LOGON(NAME='工资管理系统_log',
FILENAME='F:
\工资管理系统.ldf',
SIZE=2MB,MAXSIZE=4MB,FILEGROWTH=1MB)
--以上为数据库建立语言~!
IFEXISTS(SELECT*FROMsysobjectsWHEREname='员工')
DROPTABLE员工
GO
createtable员工(
工号VARCHAR(50)NOTNULLprimarykey,
姓名VARCHAR(50)NOTNULL,
性别CHAR(6)DEFAULT'男'CHECK(性别IN('男','女')),
年龄intNOTNULL,
籍贯VARCHAR(50)NOTNULL,
身份证号VARCHAR(50)UNIQUENOTNULL,
婚姻情况VARCHAR(50),
学历VARCHAR(50),
部门名称VARCHAR(50)NOTNULL,
工种VARCHAR(50),
职称VARCHAR(50)
) --员工表建立语言
IFEXISTS(SELECT*FROMsysobjectsWHEREname='部门')
DROPTABLE部门
GO
createtable部门(
部门名称VARCHAR(50)primarykeyNOTNULL,
部门负责人VARCHAR(50)NOTNULL,
部门人数int
)
--部门表建立语言
IFEXISTS(SELECT*FROMsysobjectsWHEREname='基本工资')
DROPTABLE基本工资
GO
createtable基本工资(
职称VARCHAR(50)primarykeyNOTNULL,
基本工资intNOTNULL
)
--基本工资表建立语言
IFEXISTS(SELECT*FROMsysobjectsWHEREname='津贴')
DROPTABLE津贴
GO
createtable津贴(
工号VARCHAR(50)primarykeyNOTNULL,
生活补贴int,
住房补贴int,
岗位补贴int,
)
--津贴表建立语言
IFEXISTS(SELECT*FROMsysobjectsWHEREname='类型')
DROPTABLE类型
GO
createtable类型(
加班类型VARCHAR(50)primarykey,
每小时工资intnotnull,
)
--类型表建立语言
IFEXISTS(SELECT*FROMsysobjectsWHEREname='考勤')
DROPTABLE考勤
GO
createtable考勤(
工号VARCHAR(50)primarykey,
加班工时int,
缺勤工时int,
加班类型VARCHAR(50),
缺勤类型VARCHAR(50)
)
--考勤表建立语言
createprocedure月工资(@工号VARCHAR(50),@月份int)
as
declare@基本工资int,@考勤int,@加班费int,@缺勤费int
declare@职称VARCHAR(50)
declare@加班工时int,@缺勤工时int
declare@月工资int
declare@加班类型varchar(50),@缺勤类型varchar(50)
select@职称=基本工资.职称,@加班工时=加班工时,
@缺勤工时=缺勤工时,@基本工资=基本工资,@加班类型=加班类型,@缺勤类型=缺勤类型
from员工,基本工资,考勤
where员工.工号=考勤.工号and员工.职称=基本工资.职称and
考勤.工号=@工号and月份=@月份
if(@工号in(select工号from考勤where月份=@月份))
begin
if(@加班类型='白班')
begin
set@加班费=10*@加班工时
end
if(@加班类型='夜班')
begin
set@加班费=15*@加班工时
end
if(@缺勤类型='白班')
begin
set@缺勤费=10*@缺勤工时
end
if(@缺勤类型='夜班')
begin
set@缺勤费=15*@缺勤工时
end
set@月工资=@基本工资+@加班费-@缺勤费
select@月工资as月工资
end
if(@工号notin(select工号from考勤where月份=@月份))
begin
set@月工资=(SELECT基本工资FROM基本工资where职称=(select职称from
员工where工号=@工号))
select@月工资as月工资
end--按照不同工种的基本工资情况和员工的考勤情况产生员工每月的月工资@@@@@!
declare@工号VARCHAR(50),@月份int
set@工号='0B1'
set@月份=10
exec月工资@工号,@月份--0B1这个员工属于财务部,财务部门的基本工资为:
2000
--因为B1这个员工加班(30个小时)(白班)!
应得加班费元(请查看考勤表):
300
--而他又缺勤(夜班)10小时:
应扣除元(请查看考勤表):
150
--综上所述:
B1这个员工的月份的月工资为2150元钱!
!
!
declare@工号VARCHAR(50),@月份int
set@工号='0B1'
set@月份=2
exec月工资@工号,@月份--0B1这个员工属于财务部,财务部门的基本工资为:
1800
--因为B1这个员工在二月份既没有加过班,又没有缺过勤!
因此月工资等于基本工资
--综上所述:
B1这个员工的月份的月工资为元钱!
!
!
declare@工号VARCHAR(50),@月份int
set@工号='0H2'
set@月份=3
exec月工资@工号,@月份
--0H2这个员工属于行政部,行政部门的基本工资为:
2200
--因为H2这个员工加班(15个小时)(夜班)!
应得加班费元(请查看考勤表):
225
--而他又缺勤(百班)15小时:
应扣除元(请查看考勤表):
150
--综上所述:
H2这个员工的月份的月工资为元钱!
!
!
createprocedure年度津贴(@工号VARCHAR(50))
as
declare@生活补助int,@住房补助int,@岗位补助int
declare@津贴总和int
set@津贴总和=0
select@生活补助=生活补贴,@住房补助=住房补贴,@岗位补助=岗位补贴
from津贴
where工号=@工号
if(@生活补助isnotnulland@住房补助isnotnulland@岗位补助isnotnull)
begin
set@津贴总和=@津贴总和+@生活补助+@住房补助+@岗位补助
select@津贴总和as年度津贴
end
if(@生活补助isnotnulland@住房补助isnotnulland@岗位补助isnull)
begin
set@津贴总和=@津贴总和+@生活补助+@住房补助
select@津贴总和as年度津贴
end
if(@生活补助isnotnulland@岗位补助isnotnulland@住房补助isnull)
begin
set@津贴总和=@津贴总和+@生活补助+@岗位补助
select@津贴总和as年度津贴
end
if(@住房补助isnotnulland@岗位补助isnotnulland@生活补助isnull)
begin
set@津贴总和=@津贴总和+@住房补助+@岗位补助
select@津贴总和as年度津贴
end
if(@生活补助isnotnulland@岗位补助isnulland@住房补助isnull)
begin
set@津贴总和=@津贴总和+@生活补助
select@津贴总和as年度津贴
end
if(@住房补助isnotnulland@生活补助isnulland@岗位补助isnull)
begin
set@津贴总和=@津贴总和+@住房补助
select@津贴总和as年度津贴
end
if(@岗位补助isnotnulland@住房补助isnulland@生活补助isnull)
begin
set@津贴总和=@津贴总和+@岗位补助
select@津贴总和as年度津贴
end
if(@生活补助isnulland@住房补助isnulland@岗位补助isnull)
begin
set@津贴总和=0
select@津贴总和as年度津贴
end
declare@工号VARCHAR(50)
set@工号='0A4'
EXEC年度津贴@工号
declare@工号VARCHAR(50)
set@工号='0A1'
EXEC年度津贴@工号
declare@工号VARCHAR(50)
set@工号='0E1'
EXEC年度津贴@工号
createprocedure年终奖金(@工号VARCHAR(50))
as
declare@生活补助int,@住房补助int,@岗位补助int
declare@津贴总和int,@基本工资int,@年度工资int,@年终奖金int
set@津贴总和=0
set@年度工资=0
set@年终奖金=0
select@生活补助=生活补贴,@住房补助=住房补贴,
@岗位补助=岗位补贴,@基本工资=基本工资
from津贴,员工,基本工资
where员工.工号=@工号and员工.工号=津贴.工号and员工.职称=基本工资.职称
if(@生活补助isnotnulland@住房补助isnotnulland@岗位补助isnotnull)
begin
set@津贴总和=@津贴总和+@生活补助+@住房补助+@岗位补助
select@津贴总和as年度津贴
set@年度工资=@年度工资+@基本工资*12
SELECT@年度工资as年度工资总和
set@年终奖金=@年终奖金+(@津贴总和+@年度工资)/12
select@年终奖金as年终奖金
end
if(@生活补助isnotnulland@住房补助isnotnulland@岗位补助isnull)
begin
set@津贴总和=@津贴总和+@生活补助+@住房补助
select@津贴总和as年度津贴
set@年度工资=@年度工资+@基本工资*12
SELECT@年度工资as年度工资总和
set@年终奖金=@年终奖金+(@津贴总和+@年度工资)/12
select@年终奖金as年终奖金
end
if(@生活补助isnotnulland@岗位补助isnotnulland@住房补助isnull)
begin
set@津贴总和=@津贴总和+@生活补助+@岗位补助
select@津贴总和as年度津贴
set@年度工资=@年度工资+@基本工资*12
SELECT@年度工资as年度工资总和
set@年终奖金=@年终奖金+(@津贴总和+@年度工资)/12
select@年终奖金as年终奖金
end
if(@住房补助isnotnulland@岗位补助isnotnulland@生活补助isnull)
begin
set@津贴总和=@津贴总和+@住房补助+@岗位补助
select@津贴总和as年度津贴
set@年度工资=@年度工资+@基本工资*12
SELECT@年度工资as年度工资总和
set@年终奖金=@年终奖金+(@津贴总和+@年度工资)/12
select@年终奖金as年终奖金
end
if(@生活补助isnotnulland@岗位补助isnulland@住房补助isnull)
begin
set@津贴总和=@津贴总和+@生活补助
select@津贴总和as年度津贴
set@年度工资=@年度工资+@基本工资*12
SELECT@年度工资as年度工资总和
set@年终奖金=@年终奖金+(@津贴总和+@年度工资)/12
select@年终奖金as年终奖金
end
if(@住房补助isnotnulland@生活补助isnulland@岗位补助isnull)
begin
set@津贴总和=@津贴总和+@住房补助
select@津贴总和as年度津贴
set@年度工资=@年度工资+@基本工资*12
SELECT@年度工资as年度工资总和
set@年终奖金=@年终奖金+(@津贴总和+@年度工资)/12
select@年终奖金as年终奖金
end
if(@岗位补助isnotnulland@住房补助isnulland@生活补助isnull)
begin
set@津贴总和=@津贴总和+@岗位补助
select@津贴总和as年度津贴
set@年度工资=@年度工资+@基本工资*12
SELECT@年度工资as年度工资总和
set@年终奖金=@年终奖金+(@津贴总和+@年度工资)/12
select@年终奖金as年终奖金
end
if(@生活补助isnulland@住房补助isnulland@岗位补助isnull)
begin
set@津贴总和=0
select@津贴总和as年度津贴
set@年度工资=@年度工资+@基本工资*12
SELECT@年度工资as年度工资总和
set@年终奖金=@年终奖金+(@津贴总和+@年度工资)/12
select@年终奖金as年终奖金
end
declare@工号VARCHAR(50)
set@工号='0C2'
EXEC年终奖金@工号
--因为0C2这个员工有7000元的补助!
因此他的年度津贴为7000!
(请查看津贴表)
--所以根据年终奖金计算公式(年终奖金=年度工资总和(基本工资(即)*12)+津贴总和)/12
--所以他的年度奖金为:
2083
declare@工号VARCHAR(50)
set@工号='0E9'
EXEC年终奖金@工号
--因为E9这个员工没有补助!
因此他的年度津贴0!
(请查看津贴表)
--所以根据年终奖金计算公式(年终奖金=年度工资总和(基本工资*12)+津贴总和)/12
--所以他的年度奖金和她的基本工资一样为1600元
declare@工号VARCHAR(50)
set@工号='0H1'
EXEC年终奖金@工号
--因为H1这个员工的补助总和为9000!
因此他的年度津贴为9000!
(请查看津贴表)
--所以根据年终奖金计算公式(年终奖金=年度工资总和(基本工资*12)+津贴总和)/12
--所以他的年度奖金为2950元
创建关键触发器
createtrigger工资
on基本工资
forupdate
as
ifupdate(基本工资)
begin
rollbacktransaction
end--基本工资为公司内部规定.一旦生成!
不允许修改
--如果规定需要调整工资!
须删除本触发器后,再做修改
createtrigger员工津贴
on津贴
forupdate
as
ifupdate(生活补贴)
begin
rollbacktransaction
end
ifupdate(岗位补贴)
begin
rollbacktransaction
end
ifupdate(住房补贴)
begin
rollbacktransaction
End--津贴为年度津贴.一旦生成!
不允许修改
--(津贴按员工的表现,一年生成一次)
createtrigger员工考勤
on考勤
forupdate
as
ifupdate(加班工时)
begin
rollbacktransaction
end
ifupdate(缺勤工时)
begin
rollbacktransaction
end--考勤表记录着每个员工的日常表现!
一旦生成!
不允许修改
createtrigger删除员工
on员工
insteadofdelete
as
print'未经允许,不可随意删除员工信息'
--员工信息不可随意删除
sp_helptext删除员工
sp_helptext员工考勤
sp_helptext员工津贴
sp_helptext工资
select职称,基本工资
from基本工资
select部门名称,部门负责人,部门人数
from部门
createview员工_部门_基本工资
as
select员工.工号,姓名,员工.职称,员工.部门名称,基本工资
from员工,部门,基本工资
where员工.职称=基本工资.职称and部门.部门名称=员工.部门名称