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

这篇具有很好参考价值的文章主要介绍了mysql实现(工资管理系统)课程设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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

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

2 概念结构设计
概念结构E-R图如下所示。
mysql实现(工资管理系统)课程设计

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

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

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

(2)关系模式中属性的详细说明。
职工信息表(功能:存储包含所有员工的信息;包括职工号,姓名,性别,出生日期,年龄,部门,职位,入职时间)
mysql实现(工资管理系统)课程设计

员工工资表(功能:存储员工的工资情况,包括职工号,工资年份,月份,原始工资,津贴,所得税,最终工资)
字段名 字段类型 字段长度 默认值 备注
mysql实现(工资管理系统)课程设计

员工考勤表(功能:监督员工每天的考勤打卡情况,包括职工号,工资年份,工资月份,某天工资,是否打卡)
mysql实现(工资管理系统)课程设计

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

到了这里,关于mysql实现(工资管理系统)课程设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vb+access工资管理系统的设计与实现

    本系统为工资发放系统,是为了能够对工资发放进行有效的管理而做,采用的开发工具是 Microsoft Visual Basic 6.0。 使用的技术有:数据库的访问;菜单控制。 本系统能够提供对工资发放各明细项目的数据编辑,自动计算出工资发放各项合计数据及代扣项目数据;可自主设定条

    2024年02月10日
    浏览(33)
  • 数据库课程设计-图书馆管理系统(2.数据库实现-基于mysql)

    如果对你有帮助,可以给卑微的博主留个赞、关注、收藏   (不是)  (骗一下数据,说不定以后面试就过了,拜谢) 好像有读者说现在不要积分的资源也要vip才能下,如果下不了可以留邮箱到评论区或者私聊,我也把资源放到github了,地址如下: https://github.com/goLSX/library_mana

    2024年02月06日
    浏览(37)
  • 学生信息管理系统MySql课程设计

    本篇文章是第一次发布在这个平台上,文章的内容是平时课程的一个小作业,由于时间不足,还有很多内容没有完善好,会继续下一次的修改,对该学生管理系统进行修改和创新, 一、 分析 1.1 业务分析   学生信息管理系统是一个面向学生和学校老师的一个多功能数据平台

    2024年02月06日
    浏览(32)
  • MYSQL课程设计——图书管理系统(一)

      图书借阅管理是学校工作中的一项重要内容,学校图书馆,书目繁多,用户的信息冗杂,且信息数据在每天变化,如果采用人工方式进行管理控制,不仅工作量庞大,而且容易出错。浪费了许多的人力和物力,已不能适应时代的发展。在当今信息时代,这种传统的管理方法

    2024年02月04日
    浏览(30)
  • MySQL课程设计——简易学生信息管理系统

    1.1.1 业务分析 学生信息管理系统时面向学生和学校教师的一个多功能数据管理平台。 1.1.2 分析系统 本系统所设计到的用户有学校在校学生、教师,对于不同的用户系统所提供给的功能也有所不同,其中对于学生来说,学生可以通过该系统进行学生基本信息查询、考试成绩查

    2024年02月09日
    浏览(30)
  • 学校图书借阅管理系统,Mysql数据库课程设计期末作品或练手项目

    使用Navicat操作,未包含Java代码。 目录 一、课程设计的目的1 二、课程设计内容1 2.1课程设计功能分析说明1 2.2数据库需求分析1 2.2.1系统功能分析说明1 (1)信息需求分析1 (2)功能需求2 2.3数据字典2 2.3.1数据项2 2.3.2数据结构3 2.3.3系统功能图6 2.3.4数据流图6 2.4数据库概念结构

    2024年02月09日
    浏览(35)
  • 数据库系统课程设计(高校成绩管理数据库系统的设计与实现)

    目录 1、需求分析 1 1.1 数据需求描述 1 1.2 系统功能需求 3 1.3 其他性能需求 4 2、概念结构设计 4 2.1 局部E-R图 4 2.2 全局E-R图 5 2.3 优化E-R图 6 3、逻辑结构设计 6 3.1 关系模式设计 6 3.2 数据类型定义 6 3.3 关系模式的优化 8 4、物理结构设计 9 4.1 聚簇设计 9 4.2 索引设计 9 4.3 分区设

    2024年02月03日
    浏览(53)
  • C++实现简单的工资管理系统

    编译环境:VS2019    语言:C++ 项目描述: 实现一个简单的工资管理系统,可以进行添加员工、查询员工、显示员工信息、删除员工信息、修改员工信息以及退出系统。添加员工时可以输入员工工号、姓名、性别、年龄、工资和工时。查询、删除、修改都是按照工号进行操作

    2024年02月15日
    浏览(26)
  • Java GUI 实现工资管理系统

    主要的要求如下: 建立职工工资管理系统,要求实现职工基本信息管理(编号、姓名、性别、初始年月、工资等级等)、工资等级情况管理(工资等级、基本工资、岗位工资、交通补贴等)、每月职工变动工资管理(职工编号、月份、奖励工资、扣款等),并根据职工的工资

    2024年02月04日
    浏览(28)
  • 基于Android的课程成绩管理系统的设计与实现

    目录 1.绪论 1 1.1 引言 1 1.2 课题背景介绍 1 1.2.1 教育系统发展现状 1 1.2.2 手机的应用市场发展现状 2 1.2.3 Android平台介绍 3 1.2.4 Android管理学生学籍的意义 5 1.3 课程成绩管理系统概述 5 1.3.1 开展该系统的原因 5 1.4 相关技术介绍 6 1.4.1 Android的系统框架 6 1.4.2 Android的特性 7 1.4.3 A

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包