目录

2024-11-20-数据库课程设计-工资管理系统-MySQL

数据库课程设计-工资管理系统-MySQL

目录


第一节 需求分析

1.1 需求分析 概述

随着当今企业人员数量的不断增加,企业的工资管理工作也就变得越来越复杂。对于一个现代化的企业来说,信息化管理是必须的,而财务管理部门作为事业单位的重点部门,同样需要加强信息化管理。设计工资管理系统的目的就是为了帮助财务部门能更好地管理本单位的职工工资,提高工作效率,实现职工工资信息管理的规范化和自动化。明确查询公司职工某年某月的工资情况,通过职工工资管理系统,也能查询到职工本身的一些基本信息。如何对职工工资进行信息化的管理,减轻财务部门的劳动强度,并且确保相关数据的安全,信息处理的高效,正是本数据库设计目的所在。

1.2 功能需求分析

以我国某国有企业为例设计数据库,通过网上查询资料和询问相关经验人士,了解此国企的职位等级制度和工资分配制度。为此一共总结归纳出使用的四大模块,分别为人事数据管理模块、考勤数据管理模块、工资数据管理模块以及工资计算公式设置模块。

1.2.1 人事数据管理模块

人事数据管理模块是 企业基础性资料信息的体现,它主要功能是统计、管理员工个人和相关部门的信息

。员工种类分为在职人员和退休人员。企业内部的人事档案等相关材料都是依靠人事数据管理模块来进行的,每当公司有新招聘的员工入职,都需要对该名新员工进行人事数据的登记与记录,并记录入职日期,每年应自动更新员工工龄。每个员工都应具有唯一员工编号,员工编号由两部分组成,第一部分为入职年份,第二部分为首次入职部门代号,第三部分为顺序号,例如2000010001表示为该员工为2000年入职,首次入职的部门编号为01,是第一位员工。员工的编号保持不变,直到退休。当员工处于离职、退休等工作状态,需要对人事数据做到及时更新、修改、删除等操作,并加以记录。员工的个人信息应真实可靠,只有人事部管理员有修改信息权限。但修改权限不可随意使用,需经过层层审批批准才可使用。当员工从在职状态处于退休状态时,应记录下退休日期,以便工资数据管理使用。该模块功能如图所示:

https://i-blog.csdnimg.cn/blog_migrate/79b3c761ba9223c177dd01bb20dd23c8.png

图 1 人事数据管理模块结构图

1.2.2 考勤数据管理模块

考勤数据管理模块是记录员工每日出勤状态,根据签到与签退时间来判断是否为早退、迟到或缺勤等违规状态 [5]

。与此同时,也将记录员工的加班时间、请假时间,以此为依据,对员工进行奖罚。本数据库设计只针对月考勤数据做相关分析,以月考勤数据来继续展开设计。其中加班时间以小时为计数单位,请假时间以天为计数单位,其中规定每月可有两天带薪休班机会 [6]

1.2.3 工资数据管理模块

工资数据管理模块是主要包括在职员工与退休员工的工资的数据录入、查询显示和工资打印。由财务部管理员统一统计与录入。在职员工每月工资主要由基本工资、工龄补贴、绩效工资、考勤奖罚、五险一金和个人所得税构成 [2]

。工龄补贴主要规则为:

1.在本公司连续工作满一年的员工每月工龄工资为¥50元整。

2.在本公司连续工作满两年的员工每月工龄工资为¥100元整。

3.在本公司连续工作满三年的员工每月工龄工资为¥150元整。

4.在本公司连续工作满四年的员工每月工龄工资为¥180元整。

5.以此类推,之后在本公司工作每增加一年,每月工龄工资相应增加¥30元整。累计十年封顶

,十年及十年以上每月工龄工资为

360

元整。

在扣除项目中五险一金包括基本养老保险、基本医疗保险、失业保险、工伤保险和生育保险,及住房公积金。采取缴纳比例如图所示:

https://i-blog.csdnimg.cn/blog_migrate/adaaf74f2d9faa5576ff4869f8b4acad.png

图 2 五险一金缴纳比例图

个人所得税按月

换算,以5000元为起征点,换算规则如下表所示:

级数全月应纳税所得额税率(%)速算扣除数
1不超过 3000 元的30
2超过3000元至12000元的部分10210
3超过12000元至25000元的部分201410
4超过25000元至35000元的部分252660
5超过35000元至55000元的部分304410

在 考勤奖罚中规定每次迟到早退每次扣25元,无故旷工一天100元,在规定休假次数外,请假一天扣50元,加班每小时奖励20元。根据职位设置基本工资,以三个职称为例部门经理基础工资每月8500元,部门总管基础工资每月7500元,普通员工基础工资每月6500元。

退休员工工资由基础养老金和个人账户养老金构成。住房公积金默认为退休的第一个月已全部领取。根据调查,全省上年度在岗职工月平均工资定为7000元,为了简便计算则退休员工以此标准计算。根据国家延迟退休政策统一规定男女65岁退休,个人账户存储额计发月数统一为120。

所有员工的薪酬都是公司通过银行支付到员工银行卡的方式发放的,并且需要录入到数据库中。在对工资数据管理层面上,相关管理工作人员必须及时将职员的工资数据录入到数据库,系统则会根据员工该月的加班、迟到等实际情况运用固定的公式来对工资展开计算,财务工作人员则需要对工资数据进行审核。保证数据的严谨性。同时财务人员具有对工资数据修改的权限,对发现的错误及时修改,而公司的普通员工只有浏览查询、打印工资明细的权限。该模块功能如图所示:

https://i-blog.csdnimg.cn/blog_migrate/00d665929874e17a59d03aeeabb84ef0.png

图 4 工资数据管理模块结构图

1.2.4 工资计算公式设置模块

(1)在职员工工资计算公式:

个人所得税计算公式

个人所得税=全月应纳税所得额*税率-速算扣除数

全月应纳税所得额=税前工资-五险一金-个人专项扣除项目

五险一金计算公式:

五险一金缴纳=税前工资*(8%+0.2%+2%+12%)

其中五险一金中工伤保险和生育保险费率由单位全额缴纳,个人不需要缴费。

考勤奖罚计算公式:

奖罚金额=20a-10b-100c-50b

其中a为加班小时数,b为早退迟到累计小时数,c为旷工天数,d为请假天数(总请假天数-休班天数)。

(2)退休员工工资计算公式:

基础养老金=(全省上年度在岗职工月平均工资+本人指数化月平均缴费工资)/2×缴费年限×1%

本人指数化月平均缴费工资=全省上年度在岗职工月平均工资×本人平均缴费指数

本人平均缴费指数=Σ(在职时月均工资/全省平均工资)/缴费年数

个人账户养老金=个人账户存储额/计发月数

1.3 数据需求分析

1.3.1 数据项定义

2 员工信息表

数据项名别名数据类型取值范围
员工编号eidvarchar(11)由入职年份+部门号+顺序号组成
姓名enamevarchar(11)汉字
性别sexvarchar(11)取值:男或女
出生日期birthdayDate(1945-01-01, 2003-01-01)
联系方式phonevarchar(11)规定标准11位且唯一
入职时间intimeDate(1998-01-01,2023-12-01)
退休时间outtimeDate默认为空
任职状态statevarchar(11)取值:在职或退休

3 个人专项附加扣除项目表

数据项名别名数据类型取值范围
员工编号eidvarchar(11)由入职年份+部门号+顺序号组成
子女教育pro1double0或1000的整数倍
继续教育pro2double0或400
贷款利息pro3double0或1000
租房pro4double(0,800,1100,1500)
赡养老人pro5double(0,1000,2000,4000)
大病医疗pro6double0到8万

4 部门表

数据项名字段名数据类型长度
部门编号didvarchar(11)11
部门名dnamevarchar(11)11
部门地址addressvarchar(11)11

5 任职表

数据项名别名数据类型取值范围
员工编号eidvarchar(11)由入职年份+部门号+顺序号组成
部门编号didvarchar(11)依据部门表
职称zhichengvarchar普通员工或部门经理或部门总管
任职时间rtimeDate

表 6 月考勤表

数据项名别名数据类型取值范围
考勤月份k_monthvarchar(11)格式“年份-月份”
员工编号eidvarchar(11)由入职年份+部门号+顺序号组成
加班时间over_hourint默认为零
请假天数leave_dayint默认为零
迟到次数late_timeint默认为零
早退次数early_timeint默认为零
缺勤次数absent_timeint默认为零

7 在职员工工资表

数据项名别名数据类型取值范围
员工编号eidvarchar(11)由入职年份+部门号+顺序号组成
工资月份gmonthvarchar(11)格式“年份-月份”
基本工资basic_paydouble默认为零
工龄补贴seniority_paydouble默认为零
绩效工资jixiao_paydouble默认为零
考勤奖惩kaoqin_paydouble默认为零
五险一金wuxiandouble默认为零
个人所得税taxdouble默认为零
实发工资shifa_paydouble默认为零
发放状态gstatevarchar(11)已发或未发

8 退休员工工资表

数据项名别名数据类型说明
员工编号eidvarchar(11)由入职年份+部门号+顺序号组成
工资月份tmonthvarchar(11)格式“年份-月份”
在职月均工资av_paydouble默认为零
基础养老金basic_yldouble默认为零
个人账户养老金person_yldouble默认为零
实发工资shifa_yldouble默认为零
发放状态tstatevarchar(11)取值:已发或未发

1.3.2 数据结构定义

9 数据结构表

数据结构名数据结构组成含义说明
员工信息表员工编号+姓名+性别+出生日期+联系方式+入职时间+退休时间+任职状态存储员工相关的个人信息
部门表部门编号+部门名+部门地址存储部门相关信息
任职表员工编号+部门编号+职称+任职时间存储员工的职位信息
月考勤表考勤月份+员工编号+加班时间+请假天数+迟到次数+早退次数+缺勤次数存储员工的每月的考勤记录
个人专项附加扣除项目表员工编号+子女教育+继续教育+贷款利息+租房+赡养老人+大病医疗存储员工个人情况
在职员工工资表员工编号+工资月份+基本工资+工龄补贴+绩效工资+考勤奖惩+个人所得税+五险一金+实发工资+发放状态存储在职员工每月工资状态
退休员工工资表员工编号+工资月份+在职月均工资+基础养老金+个人账户养老金+实发工资+发放状态存储退休员工工资状态

第二节 概念结构设计

2.1 分E-R图

由需求分析可得共有六个实体,分别是员工、部门、月考勤、在职工资、退休工资和个人专项附加扣除项目。一个员工在一个部门,一个部门可以有多个员工,部门与员工的关系是一对多的关系,每个员工在自己部门担任不同职位。一个员工只有一份月考勤,每份月考勤与每个员工一一对应。职工分为在职职工和退休职工,在职职工与在职工资是一对一关系,退休职工与退休工资也是一对一关系,员工与个人专项扣除项目是一对一关系。

由以上信息得到下面的分E-R图:

https://i-blog.csdnimg.cn/blog_migrate/b78f802eb2fdb234dca6773b8e738be7.png

图 5 员工-部门分E-R图

https://i-blog.csdnimg.cn/blog_migrate/505344ceb9151bc6e3e42c2a668a261a.png

图 6 员工-月考勤分E-R图

https://i-blog.csdnimg.cn/blog_migrate/88b547553a12f7ad96ee233bb25875b2.png

图 7 员工-工资分E-R图

2.2 基本E-R图

https://i-blog.csdnimg.cn/blog_migrate/3804b30a435d27cabfbcaf40f18b9015.png

图 8 基本E-R图

第三节 逻辑结构设计

3.1关系模式设计(下划线“ ”表示主码

员工(

员工编号 ,姓名,性别,出生日期,联系方式,入职时间,退休时间,任职状态)                                    无外码

个人专项附加扣除项目(

员工编号 ,子女教育,继续教育,贷款利息,租房,赡养老人,大病医疗)                          外码:员工编号

部门(

部门编号 ,部门名,部门地址)        无外码

任职(

员工编号 ,部门编号,职称,任职时间)外码:员工编号,部门编号

考勤(

考勤月份,员工编号 ,加班时间,请假天数,迟到次数,早退次数,缺勤次数)                                        外码:员工编号

在职员工工资(

员工编号,工资月份 ,基本工资,工龄补贴,绩效工资,考勤奖惩,个人所得税,五险一金,实发工资,发放状态)外码:员工编号

退休员工工资(

员工编号,工资月份 ,在职月均工资,基础养老金,个人账户养老金,实发工资,发放状态)                    外码:员工编号

3.2存储过程和触发器的设计

在录入员工工资时,应由系统根据考勤表中的考勤情况和考勤奖惩规则自动计算出员工在考勤奖罚方面的工资,从而创建奖惩存储函数。根据入职年份和补贴规则来计算员工的工龄补贴,从而创建工龄补贴的存储函数。根据个人专项附加扣除项目和员工的税前工资来计算员工的个人所得税,从而创建税收存储函数。

在在职员工工资表插入或修改数据前,应根据管理员所输入的员工编号,工资月份,基础工资和绩效工资,分别调用奖惩存储函数来计算员工的考勤奖惩,调用员工工龄的存储函数来计算员工工龄补贴,调用税收存储函数来计算员工的个人所得税,根据公式来计算员工的五险一金,并综合计算出应发工资,从而创建触发器。在退休员工工资表插入或修改数据前,应根据管理员所输入的员工编号,工资月份,在职月均工资来计算出基础养老金、个人账户养老金和实发工资并填入表中,从而创建触发器。

第四节 物理结构设计

员工信息表(employee)如下表所示:

11 员工信息表

字段名数据类型含义是否允许为null说明
eidvarchar(11)员工编号主码
enamevarchar(11)姓名
sexvarchar(11)性别取值:男或女
birthdayDate出生日期(1945-01-01, 2003-01-01)
phonevarchar(11)联系方式规定标准11位且唯一
intimeDate入职时间
outtimeDate退休时间默认为空
statevarchar(11)任职状态取值:在职或退休

个人专项附加扣除项目表(

items

)如下表所示:

12 个人专项附加扣除项目表

字段名数据类型含义是否允许为null说明
eidvarchar(11)员工编号主码
pro1double子女教育默认为零
pro2double继续教育默认为零
pro3double贷款利息默认为零
pro4double租房默认为零
pro5double赡养老人默认为零
pro6double大病医疗默认为零

部门表(department)如下表所示:

13 部门表

字段名数据类型含义是否允许为null说明
didvarchar(11)部门编号主码
dnamevarchar(11)部门名
addressvarchar(11)部门地址

任职表(

job )如下表所示:

14 任职表

字段名数据类型含义是否允许为null说明
eidvarchar(11)员工编号主码
didvarchar(11)部门编号
zhichengvarchar职称默认:普通员工
rtimeDate任职时间

月考勤表(attendance)如下表所示:

表 15 月考勤表

字段名数据类型含义是否允许为null说明
k_monthvarchar(11)考勤月份主码
eidvarchar(11)员工编号主码
over_hourint加班时间默认为零
leave_dayint请假天数默认为零
late_timeint迟到次数默认为零
early_timeint早退次数默认为零
absent_timeint缺勤次数默认为零

在职员工工资表(

salary

1 )如下表所示:

16 在职员工工资表

字段名数据类型含义是否为空说明
eidvarchar(11)员工编号主码
gmonthvarchar(11)工资月份主码
basic_paydouble基本工资默认为零
seniority_paydouble工龄补贴默认为零
jixiao_paydouble绩效工资默认为零
kaoqin_paydouble考勤奖惩默认为零
taxdouble个人所得税默认为零
wuxiandouble五险一金默认为零
shifa_paydouble实发工资默认为零
gstatevarchar(11)发放状态取值:已发或未发

退休员工工资表(

salary

2 )如下表所示:

17 退休员工工资表

字段名数据类型含义是否为空说明
eidvarchar(11)员工编号主码
tmonthvarchar(11)工资月份主码
av_paydouble在职月均工资默认为零
basic_yldouble基础养老金默认为零
person_yldouble个人账户养老金默认为零
shifa_yldouble实发工资默认为零
tstatevarchar(11)发放状态取值:已发或未发

第五节 数据库实施

5.1 创建基本表

创建工资管理系统数据库(gzgl):

https://i-blog.csdnimg.cn/blog_migrate/c159dc27e1fde4efa0d7fd1d20b7d746.png

图 9 创建数据库图

创建员工表(employee):

https://i-blog.csdnimg.cn/blog_migrate/65b39abc6cdd4cad5b7583d668cbd6a5.png

图 10 创建员工表图

创建个人专项附加扣除项目表(items):

https://i-blog.csdnimg.cn/blog_migrate/7321b16fb7a1c2bdf356036ff42c4e38.png

图 11 创建个人专项附加扣除项目表图

创建部门表(department):

https://i-blog.csdnimg.cn/blog_migrate/8782c303fb93afc0cd4ea645be0b2d12.png

图 12创建部门表图

创建任职表(job):

https://i-blog.csdnimg.cn/blog_migrate/b2d958104ea73d99fa872e958118aa0e.png

图 13 创建任职表图

创建月考勤表(attendance):

https://i-blog.csdnimg.cn/blog_migrate/d4aaf515bfa4d9ed31038f6ac6569cc0.png

图 14 创建任职表图

创建在职员工工资表(salary1):

https://i-blog.csdnimg.cn/blog_migrate/f9ba1eb894936d167a190bd418a65d8e.png

图 15 创建在职员工工资表图

创建退休员工工资表(salary2)

https://i-blog.csdnimg.cn/blog_migrate/46799c0e97cdb8640172389449bf5e31.png

图 16 创建退休员工工资表图

5.2 插入测试数据

插入数据:

https://i-blog.csdnimg.cn/blog_migrate/f0af95c2b4cd403d920efe49e88aa4fd.png

图 17 员工数据图

https://i-blog.csdnimg.cn/blog_migrate/91729113d7e869d24448bf23b6e2c11b.png

图 18部门数据图

https://i-blog.csdnimg.cn/blog_migrate/99073860ae811ee7ba57c839bb23ea85.png

图 19员工任职数据图

https://i-blog.csdnimg.cn/blog_migrate/a4243c41a643898281f8e4734692639b.png

图 20 月考勤数据图

https://i-blog.csdnimg.cn/blog_migrate/509654756e0655e83f40e00a5cf47fd0.png

图 21 items表数据图

https://i-blog.csdnimg.cn/blog_migrate/037897d06d8f08d6640330c3f3b135fe.png

图 22 salary1表数据图

https://i-blog.csdnimg.cn/blog_migrate/c2661671e00ee967c80031bee977915d.png

图 23 salary2表数据图

5.3 创建业务处理的存储过程并测试

创建奖惩存储函数jiangcheng(),根据月考勤表考勤情况和考勤奖惩规则来计算员工在考勤奖罚方面的工资。

https://i-blog.csdnimg.cn/blog_migrate/6f64b804c47fbb02dba646d80bc9d114.png

图 24 奖惩存储函数创建图

测试:运用奖惩存储函数来计算员工编号为2000020001日期为2023-11的考勤奖罚方面的工资。

https://i-blog.csdnimg.cn/blog_migrate/92935999ed5a271e9ae719d7811c2257.png

图 25 奖惩存储函数测试图

创建员工工龄的存储函数gongling(),来根据入职年份计算工龄,运用工龄补贴规则来计算员工的工龄方面的工资。

https://i-blog.csdnimg.cn/blog_migrate/d429fa35f76d12a324ea66af68d2089e.png

图 26 员工工龄的存储函数创建图

测试:运用员工工龄的存储函数,来计算员工编号为2000020001今年的工龄补贴方面的工资

https://i-blog.csdnimg.cn/blog_migrate/e1532acfbb215a174af8756be384764d.png

图 27 员工工龄的存储函数测试图

创建税收存储函数tax(),来计算员工的个人所得税。调用此存储函数需有基本工资等输入,故与下面的触发器tr_s一同测试。

https://i-blog.csdnimg.cn/blog_migrate/884087dc39fc812f8e51cf7b29f2b2f4.png

图 28 税收存储函数创建图

5. 4 创建业务处理的视图并测试

创建视图salary1_view,用来直观显示出在职员工工资表的信息。

https://i-blog.csdnimg.cn/blog_migrate/931e9aad28211d84efcfaa0d938b0540.png

图 29 salary1_view视图创建图

测试:用视图salary1_view查询员工编号为2000020001的工资情况

https://i-blog.csdnimg.cn/blog_migrate/97744c14e764e522d63bcfb0d6159902.png

图 30  视图salary1_view测试图

创建视图salary2_view,用来直观显示出退休员工工资表的信息。

https://i-blog.csdnimg.cn/blog_migrate/35e020dd17a9486e132b77f91e3b74b6.png

图 31 视图salary2_view创建图

测试:用视图salary2_view查询员工编号为1980010001的工资情况。

https://i-blog.csdnimg.cn/blog_migrate/8a04ae4e37e70aeb35c21f168435fa88.png

图 32 视图salary2_view测试图

5. 5 创建业务处理的触发器并测试

创建触发器tr_s,在表salary1插入数据前,根据管理员所输入的员工编号,工资月份,基础工资和绩效工资,分别调用奖惩存储函数jiangcheng()来计算员工的考勤奖惩,调用员工工龄的存储函数gongling()来计算员工工龄补贴,调用税收存储函数tax()来计算员工的个人所得税,根据公式来计算员工的五险一金,并综合计算出应发工资。

https://i-blog.csdnimg.cn/blog_migrate/f427f50ec7644f0ddfd93d711a88b16c.png

图 33 触发器tr_s创建图

测试:插入员工工资基本数据:

https://i-blog.csdnimg.cn/blog_migrate/67fee8e5ad8d8d4e60e976db26c336ea.png

图 34 触发器tr_s数据插入测试图

查看员工工资

https://i-blog.csdnimg.cn/blog_migrate/32e6e93ba453d647ac1c53289862150f.png

图 35 触发器tr_s测试图

创建触发器tr_s1,在表salary2插入数据前,根据管理员所输入的员工编号,工资月份,在职月均工资来计算出基础养老金、个人账户养老金和实发工资并填入表中

https://i-blog.csdnimg.cn/blog_migrate/aea384ded2156545333422fb10df917f.png

图 36 触发器tr_s1创建图

https://i-blog.csdnimg.cn/blog_migrate/8e034b70eae379a29fc1abb6a062c553.png

图 37 触发器tr_s1数据插入图

https://i-blog.csdnimg.cn/blog_migrate/3ae832ddc6a1ee34297bf5b0b955fabf.png

图 38 触发器tr_s1测试图

68747470733a2f2f62:6c6f672e6373646e2e6e65742f6d305f36363434313131352f:61727469636c652f64657461696c732f313337313935313435