mysql实现(工资管理系统)课程设计 您所在的位置:网站首页 设计seo工资 mysql实现(工资管理系统)课程设计

mysql实现(工资管理系统)课程设计

2024-06-02 21:38| 来源: 网络整理| 查看: 265

目录

1 需求分析 1 2 概念结构设计 2 3 逻辑结构设计 3 4 数据库物理设计与实施 5 5 访问系统库 10 6 总结 11

1 需求分析 本系统的主要目的是,明确查询公司职工某年某月的工资情况,通过职工工资管理系统,能明确的察看到从入职以来,每位职工的每月工资情况。同时也能查询到职工本身的一些基本信息。(这次的设计以2021年12月为例) 设计如下面所示的数据项: 职工信息包括职工号,姓名,性别,出生日期,年龄,部门,职位,入职时间; 工资信息包括职工号,工资年份,月份,原始工资,津贴,所得税,最终工资。

2 概念结构设计 概念结构E-R图如下所示。 在这里插入图片描述

3 逻辑结构设计 (1)E-R图转换成关系模式如下: 职工(职工号,姓名,性别,出生日期,年龄,部门,职位,入职时间) F = {职工号→姓名,职工号→性别,职工号→出生日期,职工号→年龄,职工号→部门,职工号→职位,职工号→入职时间}

工资(职工号,工资年份,月份,原始工资,津贴,所得税,最终工资) F = {职工号→原始工资,职工号→月份,职工号→原始工资,职工号→津贴,职工号→所得税,职工号→最终工资}

考勤(职工号,工资年份,工资月份,某天工资,是否打卡) F = {职工号→工资年份,职工号→工资月份,职工号→某天工资,职工号→是否打卡}

(2)关系模式中属性的详细说明。 职工信息表(功能:存储包含所有员工的信息;包括职工号,姓名,性别,出生日期,年龄,部门,职位,入职时间) 字段名	字段类型	字段长度	默认值	备注Id	Varchar	15	无	职工号,外键Name	Varchar	32	无	职工姓名Sex	Char	5 	无	性别Brithday	Data	-	无	出生日期Age	Int	11	无	年龄Dept	Varchar	10	无	所在部门Post	Varchar	15	无	职工职位Start_data	data	-	无	入职日期

员工工资表(功能:存储员工的工资情况,包括职工号,工资年份,月份,原始工资,津贴,所得税,最终工资) 字段名 字段类型 字段长度 默认值 备注 在这里插入图片描述

员工考勤表(功能:监督员工每天的考勤打卡情况,包括职工号,工资年份,工资月份,某天工资,是否打卡) 在这里插入图片描述

4 数据库物理设计与实施 创建数据库 create database SalaryDatabase; use SalaryDatabase;

创建基本表

use SalaryDatabase; – 职工表 create table EmployeeTable( id int primary key auto_increment, name varchar(32) unique ,# 姓名添加唯一性约束 sex char(5) not null check ( sex='男’or sex=‘女’), brithday date not null, age int not null , dept varchar(10) not null ,# 部门 post varchar(15) not null ,# 职位 start_data date not null ) character set utf8;

– 添加外键约束 alter table EmployeeTable add foreign key (id) references Employeepayroll (worknumber) ;

desc employeetable; # 查看表结构 show tables;

– 职工工资表 create table Employeepayroll( worknumber char(15) not null , year varchar(10) , month varchar(10) , wages_job float not null , #工资 allowance float , #津贴 tax float not null , #所得税 real_wages float not null #真实工资 );

为worknumber 添加主键

alter table Employeepayroll add primary key (worknumber);

为worknumber 添加外键

alter table employeepayroll add foreign key (worknumber) references Attendance (worknumber) ;

– 创建考勤表 create table Attendance( worknumber char(15) not null , year varchar(10) , month varchar(10) , day varchar(10), iswork varchar(10) )character set utf8;

– 向职工表中插入数据 insert into employeetable values (‘0001’,‘张三’,‘男’,(‘1985-01-02’),‘36’,‘研发部’,‘研发部长’,(‘2012-05-11’)), (‘0002’,‘李四’,‘男’,(‘1986-01-02’),‘35’,‘研发部’,‘员工’,(‘2012-12-18’)), (‘0003’,‘王五’,‘男’,(‘1990-01-02’),‘31’,‘研发部’,‘项目策划’,(‘2018-05-17’)), (‘0004’,‘赵翠花’,‘女’,(‘1992-01-02’),‘29’,‘财务部’,‘经理’,(‘2016-03-22’)), (‘0005’,‘孙玫瑰’,‘女’,(‘1990-06-02’),‘31’,‘人事部’,‘人事部长’,(‘2011-05-11’));

– 向工资表中插入数据 insert into employeepayroll values (‘0001’,‘2021’,‘12’,‘5400’,‘0’,‘100’,‘5300’), (‘0002’,‘2021’,‘12’,‘10000’,‘200’,‘100’,‘11000’), (‘0003’,‘2021’,‘12’,‘5800’,‘80’,‘100’,‘5780’), (‘0004’,‘2021’,‘12’,‘4000’,‘0’,‘150’,‘3850’);

– 向考勤表中插入数据 insert into attendance values (‘0001’,‘2021’,‘12’,‘20’,‘是’), (‘0002’,‘2021’,‘12’,‘20’,‘是’), (‘0003’,‘2021’,‘12’,‘20’,‘是’), (‘0004’,‘2021’,‘12’,‘20’,‘是’), (‘0005’,‘2021’,‘12’,‘20’,‘否’), (‘0001’,‘2021’,‘12’,‘21’,‘是’), (‘0002’,‘2021’,‘12’,‘21’,‘是’), (‘0003’,‘2021’,‘12’,‘21’,‘是’), (‘0004’,‘2021’,‘12’,‘21’,‘是’), (‘0005’,‘2021’,‘12’,‘21’,‘否’), (‘0001’,‘2021’,‘12’,‘22’,‘是’), (‘0002’,‘2021’,‘12’,‘22’,‘是’), (‘0003’,‘2021’,‘12’,‘22’,‘是’), (‘0004’,‘2021’,‘12’,‘22’,‘是’), (‘0005’,‘2021’,‘12’,‘22’,‘是’);

创建视图

create view ep_view as select worknumber,year,month,real_wages from employeepayroll ; #创建工资表真实工资的视图 select * from ep_view; #查看视图

建立和管理索引 为员工生日创建普通索引

create index suo_1 on employeetable(brithday);

show index from employeetable; # 查看employeetable的所有索引

为员工部门和职位创建复合索引

alter table employeetable add index suo_2 (dept,post);

创建一个新表为部门字段添加全文索引

create table new_EmployeeTable( id int primary key auto_increment, name varchar(32) unique ,# 姓名添加唯一性约束 sex char(5) not null check ( sex='男’or sex=‘女’), brithday date not null, #生日 age int not null , #年龄 dept varchar(10) not null ,# 部门 post varchar(15) not null ,# 职位 start_data date not null , # 入职时间 fulltext index suo_3 (dept), # 为dept字段创建全文索引 key using hash(post) # 创建哈希索引

) character set utf8;

drop table new_EmployeeTable; # 删除表 desc new_EmployeeTable; # 查看表结构 show index from new_EmployeeTable; # 查看新表中的索引

show create table new_EmployeeTable; # 查看索引 drop index suo_1 on employeetable; # 删除索引方式一 alter table employeetable drop index suo_1; # 删除索引方式二

创建存储过程

– 创建存储过程 delimiter KaTeX parse error: Expected 'EOF', got '#' at position 40: … (in sid int) #̲in-表示输入参数 sid-表… delimiter ;

call proc_1(5000); #调用存储过程查询工资表视图中真实工资大于5000的数据 show create procedure proc_1; # 查看存储过程的创建语句 – 创建一个存储过程生成工资报表 delimiter c r e a t e p r o c e d u r e p r o c 2 ( i n s i d 1 i n t ) b e g i n s e l e c t e . i d , e . n a m e , a . m o n t h , A . r e a l w a g e s f r o m e m p l o y e e t a b l e e l e f t j o i n e m p l o y e e p a y r o l l A o n e . i d = A . w o r k n u m b e r w h e r e A . m o n t h = s i d 1 ; e n d create procedure proc_2 (in sid1 int) begin select e.id,e.name,a.month,A.real_wages from employeetable e left join employeepayroll A on e.id=A.worknumber where A.month = sid1; end createprocedureproc2​(insid1int)beginselecte.id,e.name,a.month,A.realw​agesfromemployeetableeleftjoinemployeepayrollAone.id=A.worknumberwhereA.month=sid1;end call proc_2(12); # 调用存储过程显示工资报表

创建触发器

– 创建触发器(当插入一条新记录之前,如果员工真实工资小于5000,则自动更新为正确工资) create trigger tri_1 before insert on employeepayroll for each row begin if new.real_wages 5000);

带比较运算符的子查询(查询工资表中津贴大于200的员工)

select * from employeepayroll where allowance > (select allowance from employeepayroll where allowance=200);

更新操作 1、更新某人的职位

update employeetable set post=‘总经理’ where name=‘李四’;

2、更新工号为4的赵翠花的津贴为250

update employeepayroll set allowance=250 where worknumber=4;

删除操作 1、删除工号为1的员工张三的所有信息

delete from employeetable where name=‘张三’; # 删除张三的员工表信息 delete from employeepayroll where worknumber=0001; # 删除张三的工资表信息

6 总结 在完成本次课程设计的阶段,我学到了要多主动积极的思考解决问题。有很多同学比较好学,总是不停的在与别人沟通交流,看似很积极,但是仔细分析他提出的那些问题确实没有太大的价值,稍微思考一下就能解决,只有经过自己不断的思考,才能达到课程设计的效果,没有谁一开始就会,都是后天不断的历练的结果。 总的看来,要想高效的完成此次数据库课程设计,首先就要有一个扎实的理论基础,掌握课本上的命令操作、重点概念等。其次,团队的合作也是必不可少的,这需要后期的交流锻炼和信任。一个好的团队往往能够起到事半功倍的效果,我就认为我们团队的整体氛围就很好,很和谐,组员能够积极的完成分配的任务。虽然我们小组还有很多不足之处,但是还是值得肯定的,小组成员都很优秀,我自己也要更加努力,这次的课程设计也是一个很好的锻炼,同时也感谢有这么一个机会来提升团队合作的能力。 在数据库的设计阶段,遇到了很多问题,比如对第三范式的思考,由于理解的不是很透彻,第三范式的构造不是很顺利,在不断的沟通合作下,认识了第三范式的知识,还有在创建公司财务报表的自动汇总生成的时候,尝试了很多的方法,用了触发器,用了函数,在一番权衡之下决定使用存储过程,然后通过调用存储过程来实现每个月份工资报表的汇总情况。 在不断的思考中,我学到了很多的东西,很多宝贵的精神,比如说合作精神,在团队的合作下,每个人都有很大的作用,众人拾柴火焰高,由于合作的完善和良好,才是的我们的进度比想象中的要快。 我们今后定将更加积极向前,力争做到更好!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有