目录

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)关系模式中属性的详细说明。
职工信息表(功能:存储包含所有员工的信息;包括职工号,姓名,性别,出生日期,年龄,部门,职位,入职时间)

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

员工考勤表(功能:监督员工每天的考勤打卡情况,包括职工号,工资年份,工资月份,某天工资,是否打卡)

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 createprocedureproc2(insid1int)beginselecte.id,e.name,a.month,A.realwagesfromemployeetableeleftjoinemployeepayrollAone.id=A.worknumberwhereA.month=sid1;endcreate 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 then set new.real_wages=new.wages_job+new.allowance-new.tax;
end if;
end;

drop trigger tri_1; #删除触发器
5 访问系统库
查询操作

查询某个人所得工资,以员工2为例

select id,name from employeetable where id = 2
union
select worknumber,real_wages from employeepayroll where worknumber=2;

(子)查询工资表中真实工资大于5000的员工

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

mysql实现(工资管理系统)课程设计相关推荐

  1. python工资管理系统课程设计_高校教师绩效工资管理系统设计开发,源码下载

    大家好,我是全微毕设团队的创始人,本团队擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON.PHP.C#.安卓等多项技术. 今天将为大家分析一个高校教师绩效工资管理系统(高校教师绩效工 ...

  2. c语言教工工资管理系统课程设计

    序 言 借助现代信息技术和管理理论,建立学校管理信息系统势在必行.对学校而言,全面开发和应用计算机管理信息系统就是有必要的.在学校管理中,教师是学校的宝贵资源,也是学校的"生命线" ...

  3. C语言源码做的职工工资管理系统课程设计(源码+课程设计报告)

    一.课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要.本次设计的目的是通过课程设计 ...

  4. Java+MySQL汽车租赁管理系统课程设计

    wx供重浩:创享日记 对话框发送:汽车租赁系统 获取完整源码源文件+视频演示+文档资料等 一. 课程设计目的 1.综合运用Java程序设计课程和其他相关课程的理论和知识,掌握面向对象程序设计的一般方法 ...

  5. python工资管理系统课程设计_工资管理系统 课程设计 总结报告

    学生学号 080810129 姓名 傅荣真 专 业 信息管理与信息系统 班 级 08 信管( 1 ) 所属学期 2010-2011 学年第 1 学期 一.项目介绍与设计目的 项目介绍: 项目名称: 企 ...

  6. python工资管理系统课程设计_Python3实现的简单工资管理系统示例

    本文实例讲述了Python3实现的简单工资管理系统.分享给大家供大家参考,具体如下: 工资管理系统要求: 1. 查询员工工资 2. 修改员工工资 3. 增加新员工记录 4. 退出 执行代码: #!/u ...

  7. python职工工资管理系统课程设计_Python3实现的简单工资管理系统示例

    本文实例讲述了python3实现的简单工资管理系统.分享给大家供大家参考,具体如下: 工资管理系统要求: 1. 查询员工工资 2. 修改员工工资 3. 增加新员工记录 4. 退出 执行代码: #!/u ...

  8. java工资管理系统课程设计_课程设计,工资管理系统完整源代码

    展开全部 #include #include #include #include #define MONTH_NUM 5 /* 最多的月份 */ struct worker { int number; ...

  9. jsp人事工资管理系统 课程设计

    为照顾没有积分的同学附上蓝奏云链接:https://zyjblogs.lanzous.com/iQXgPea9hxi 功能图图下 系统界面部分图片

  10. MySQL酒店管理系统课程设计_酒店管理系统的设计与实现(PHP,MySQL)(含录像)

    酒店管理系统的设计与实现(PHP,MySQL)(含录像)(毕业论文12000字,程序代码,MySQL数据库) 酒店管理系统的设计是基于PHP技术+mysql数据库+apache服务器的方式设计,以ze ...

最新文章

  1. 本地运行hadoop
  2. POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
  3. java ee文件下载_JavaEE实现文件下载
  4. 因沉迷游戏,他被清华北大辞退2次,不料改名后高考再次进清华!
  5. 【Spring】Feign客户端发送HTTPS请求绕过认证
  6. 无法用php smtp发送邮件. 您的服务器可能没有配置用此方法_补充:Web自动化邮件发送...
  7. HTML+CSS实现菜单的3D翻转特效
  8. Integer与int的种种比较你知道多少?
  9. 40条真言,希望对进阶中的程序朋友有所帮助。
  10. java jdk使用教程_java初学者实践教程2-jdk的使用
  11. win10系统怎么改奇摩输入法_Win10系统如何切换输入法
  12. Android傻瓜式脚本录制
  13. 偶遇 649453.sys / Adware.Cdn / Hacktool.Rootkit
  14. SWUST OJ 1132: Coin-collecting by robot
  15. 番外7林芝·救赎之旅的最后一站——混合现实科幻《地与光》
  16. matlab中gurobi lic file 打不开
  17. oracle subquery是什么,Oracle11gR2RSF(RecuriveSubqueryfactoring)-Oracle
  18. KSO-sqlserver汉字取首字母拼音
  19. Linux之dos2unix和unix2dos
  20. MyEclipse使用教程:unattended安装

热门文章

  1. QQ面板失效问题解决
  2. Linux——k8s、Jenkins、Gitlab、Harbor实现CI/CD
  3. 程序员熬夜加班接私活被朋友坑3w,网友:留后门啊!不给钱就bug
  4. 【总结一下|PTA】浙大版《Python 程序设计》题目集
  5. java乐器继承_Java 继承——1
  6. Vue3的动态组件和异步组价
  7. 小米手环深圳通服务器维护,在知网上怎么发表论文_论文如何上传知网
  8. 恍然大悟!顺其自然就是最高的智慧
  9. Linux chown命令
  10. Python中list的最大容量限制?最多支持多少?