1. Visão Geral
Com o desenvolvimento da economia, as empresas estão se desenvolvendo em grande e grande escala.Para as grandes e médias empresas, as informações relacionadas à gestão de salários, como funcionários e cargos profissionais, aumentaram drasticamente. Nesse caso, confiar apenas no processamento manual dos salários dos funcionários não é apenas impotente, mas também extremamente propenso a erros. Como projetar os salários de uma pequena empresa, uma série de operações, como adicionar novos funcionários, excluir funcionários antigos, consultas salariais, estatísticas etc., são realizadas por computadores em vez de humanos. Desta forma, o pessoal do escritório pode concluir de forma fácil e rápida a tarefa de gestão salarial.
Para o pagamento de salários de empresas e instituições, não precisa ser muito grande. Tudo o que é necessário é um sistema que seja fácil de operar, tenha funções práticas e possa atender simultaneamente ao gerenciamento de dados e às necessidades do departamento financeiro, de outros departamentos relevantes da unidade e da unidade de distribuição.
Para conseguir uma gestão centralizada dos salários. Pode ser utilizado pelo pessoal financeiro para adicionar, excluir, modificar e consultar o pessoal e salários da unidade, podendo o sistema calcular automaticamente o total de salários a serem pagos na distribuição salarial; ao mesmo tempo, o sistema também pode realizar consultas multiângulo sobre funcionários e gerenciamento de salários .
Com base nos motivos acima, o sistema de gerenciamento de salários corporativos usa computadores para armazenamento seguro, cálculo rápido e estatísticas abrangentes para realizar a sistematização, padronização e automação do gerenciamento de salários. O sistema de gerenciamento de salários corporativos é um típico sistema de gerenciamento de informações (MIS), e o banco de dados de segundo plano adota o banco de dados MySQL , que tem as vantagens de operação simples e fácil uso .
2. Análise de Demanda
2.1 Descrição do requisito
O sistema de gerenciamento de salários é para melhor realizar o gerenciamento de várias informações salariais e o gerenciamento de segurança de várias informações. Este sistema foi projetado principalmente para verificar várias necessidades de informações salariais dos funcionários e pode gerenciar bem os dados. A principal função deste sistema consiste nas seguintes partes:
Após pesquisa e análise, o sistema de informações de gerenciamento de salários conclui principalmente as seguintes funções:
(1) Módulo de informações básicas do funcionário: informações básicas dos funcionários.
(2) Módulo de informação salarial: salário-base mensal dos funcionários, pós-salário, contas de água e luz, salário-prêmio, abatimento do salário, valor do pagamento real.
(3) Módulo de informações do departamento: número, nome, responsável e número de cada departamento da empresa.
(4) Módulo de assiduidade: regista o número de atrasos e faltas dos colaboradores.
(5) Módulo Abono: registra a situação de horas extras dos funcionários e distribui abonos.
(6) Módulo de gerenciamento de informações do funcionário: A consulta do administrador das informações necessárias é para adicionar, excluir, modificar e consultar as informações básicas do funcionário.
(7)员工工资管理模块:管理员对所需要的资料的查询即对员工工资信息的增加、删除、修改、查询操作。
2.2数据流图
顶层数据流图
2.3数据字典
2.3.1 数据项的描述
1、数据项名:员工编号
别名:w_number
取值范围:0000-9999
含义说明:每位员工的编号
类型:char
长度:4
2、数据项名:员工姓名
别名:w_name
取值范围:1—4
含义说明:每位员工的姓名
类型:varchar
长度:8
3、数据项名:员工性别
别名:sex
取值范围:“男”或“女”
含义说明:每位员工的性别
类型:char
长度:2
4、数据项名:基本工资
别名:basic_wage
取值范围:整数
含义说明:每位员工的基本工资
类型:int
5、数据项名:出生年月
别名:birthday
含义说明:每位员工的出生日期
类型:datetime
2.3.2 数据结构描述
1、名称:员工(Employee)
含义说明:员工信息
组成结构:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称
2、名称:工资(Salary)
含义说明:工资信息
组成结构:员工编号+基本工资+岗位工资+水电费+津贴工资+扣除工资+实
发工资
2.3.3 数据流的描述
1、数据流名称:员工信息添加
简述:新员工信息录入
数据流来源:公司管理者
数据流去向:员工信息
数据流组成:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称
2.3.4 数据流的描述
1、存储名称:员工记录存储
说明:记录着所有员工的所有基本信息
输入:员工基本信息
输出:员工所有信息
数据结构:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称
2.3.5 处理过程的定义
1、处理过程名:员工信息处理
说明:处理员工的基本信息
输入数据流:终端
输出数据流:员工信息入库
3.概念结构设计
3.1概念设计
3.1.1 实体分析描述
从用户角度来说,数据库的需求主要体现在对数据库表的增删改查。因此,数据库结构需同时满足两个要素:输入、输出。在进行数据设计时,首先需收集数据,然后分析数据结构,最后处理数据。根据本系统的需求,设计以下主要的数据项和数据结构:
(1)员工信息实体:员工编号、姓名、性别、所属部门、职称、文化程度、出生年月。
(2)部门信息实体:部门编号、部门名称、部门负责人、部门人数。
(3)工资信息实体:员工编号、基本工资、岗位工资、水电费、津贴工资、扣除工资、实发金额。
(4)考勤信息实体:员工编号、姓名、性别、迟到次数、缺席次数。
(5)津贴信息实体:员工编号、姓名、性别、加班天数、津贴情况、加班类型、加班时间。
3.1.2 实体实体图
员工信息实体如图3.1所示。
用户信息实体图设计
部门信息实体如图3.2所示。
部门信息实体图设计
工资信息实体如图3.3所示。
工资信息实体图设计
考勤信息实体如图3.4所示。
考勤信息实体图设计
津贴信息实体如图3.5所示。
津贴信息实体图设计
3.1.3 E-R图
工资管理系统局部E-R图如图3.6所示。
工资管理系统局部E-R图设计
工资管理系统局部E-R图如图3.7所示。
工资管理系统局部E-R图设计
工资管理系统局部E-R图如图3.8所示。
工资管理系统局部E-R图设计
工资管理系统局部E-R图如图3.9所示。
工资管理系统局部E-R图设计
工资管理系统总E-R图如图3.10所示。
工资管理系统总E-R图设计
4.1逻辑结构设计
4.1关系模式
关系模式:员工信息(员工编号、姓名、性别、出生年月、所属部门、
文化程度、职称)
模式判定:员工信息∈2NF,且每个非主属性都不传递函数依赖于员工信
息的主关系键,所以员工信息∈3NF
关系模式:部门信息(部门编号、部门名称、部门负责人、部门人数)
模式判定:部门信息∈2NF,且每个非主属性都不传递函数依赖于部门信
息的主关系键,所以部门信息∈3NF
关系模式:工资信息(员工编号、基本工资、岗位工资、水电费、津贴
工资、扣除工资、实发金额)
模式判定:工资信息∈2NF,且每个非主属性都不传递函数依赖于工资信
息的主关系键,所以工资信息∈3NF
关系模式:考勤信息(员工编号、姓名、性别、迟到次数、缺勤次数)
模式判定:考勤信息∈2NF,且每个非主属性都不传递函数依赖于考勤信
息的主关系键,所以考勤信息∈3NF
关系模式:津贴信息(员工编号、姓名、性别、加班时间、加班天数、
加班类型、津贴情况)
模式判定:津贴信息∈2NF,且每个非主属性都不传递函数依赖于津贴信
息的主关系键,所以津贴信息∈3NF
5.物理结构设计
5.1定义数据库、表名
数据库名:
wages
数据库表名:
- 员工信息表:staff
- 部门信息表:dept
- 工资信息表:wages
- 考勤信息表:attendance
- 津贴信息表:allowance
5.2存储引擎
使用mysql数据库,选择InnoDB作为存储引擎。
5.3数据库存储结构设计
为了提高系统的性能,根据应用情况将数据的易变部分与稳定部分、经常
存取部分与不经常存取部分分开存放。
由于现在的计算机都有多个磁盘,将表(如员工信息表)和索引放在不同
的磁盘上,在查询过程中,大大提高I/O读写的效率,而对于较大的分放在两
个磁盘上,可以加快存取速度,在多用户环境下的作用更有效;为了改进系统
的性能,将日志文件与数据库对象(表、索引等)放在了不同的盘上。同时,
考虑到本系统是多用户的,为了提高效率,数据库备份的数据和日志文件将保
存在磁盘中。
在数据库中经常存取的部分包括:
员工(员工编号、姓名、性别、出生年月、所属部门。。..。)
部门(部门编号、部门名称、部门负责人、部门人数...。。)
工资(员工编号、基本工资、岗位工资、水电费.。.。。)
考勤(员工编号、姓名、性别、迟到次数、缺勤次数)
不经常存取部分包括:
基本工资(工资级别、工资金额)
岗位工资(工资级别、工资金额)
在数据库设计初始阶段,为了对以后的数据库进行物理优化,提供了一些
系统配置变量、存储分配系数,并对这些变量赋予合理的缺省值。但这些值不
一定适合每一种应用环境,在进行物理设计时,对这些变量重新赋值,以改善
系统的性能。在选择硬件设备、服务器操作系统、数据库时应该考虑能够逐步
增加和扩展。
在配置系统变量时,要注意同时使用数据库的用户数,同时打开的数据库
对象数,内存分配参数,缓冲区分配参数,时间片大小,数据库的大小,锁的
数目等。这些参数值都会影响数据库的存储时间和存储空间的分配。
5.4数据库存储方法设计
在本系统中,采用顺序查找,平均查找n/2次,建立B+树索引,则平均查找次数为B+树的层数log2 n+1。所以选择B+树作为索引,再设计过程中对关系的码建立索引。
5.5数据库表结构
(1)员工信息表
属性名 |
字段名 |
数据类型 |
长度 |
是否允许为空 |
是否主键 |
员工编号 |
employee_No |
char |
4 |
不允许 |
是 |
姓名 |
name |
varchar |
8 |
不允许 |
否 |
性别 |
sex |
char |
2 |
允许 |
否 |
出生年月 |
birthday |
datetime |
允许 |
否 |
|
所属部门 |
dept |
varchar |
20 |
不允许 |
否 |
文化程度 |
education_level |
varchar |
20 |
允许 |
否 |
职称 |
title |
char |
12 |
允许 |
否 |
(2)部门信息表
属性名 |
字段名 |
数据类型 |
长度 |
是否允许为空 |
是否主键 |
部门编号 |
code |
char |
4 |
不允许 |
是 |
部门名称 |
name |
varchar |
20 |
不允许 |
否 |
部门负责人 |
manager |
varchar |
20 |
不允许 |
否 |
部门人数 |
sum |
int |
10 |
不允许 |
否 |
(3)工资信息表
属性名 |
字段名 |
数据类型 |
长度 |
是否允许为空 |
有无索引 |
员工编号 |
code |
char |
4 |
不允许 |
是 |
基本工资 |
baseWages |
varchar |
20 |
不允许 |
否 |
岗位工资 |
postWages |
varchar |
20 |
不允许 |
否 |
水电费 |
money |
float |
10 |
不允许 |
否 |
津贴工资 |
subsidy |
varchar |
10 |
不允许 |
否 |
deduction |
varchar |
10 |
不允许 |
否 |
|
实发金额 |
fact |
varchar |
10 |
不允许 |
否 |
(4)考勤信息表
属性名 |
字段名 |
数据类型 |
长度 |
是否允许为空 |
有无索引 |
员工编号 |
code |
char |
4 |
不允许 |
是 |
姓名 |
name |
varchar |
8 |
不允许 |
否 |
性别 |
sex |
char |
2 |
不允许 |
否 |
迟到次数 |
delaysum |
int |
10 |
不允许 |
否 |
缺席次数 |
misssum |
int |
10 |
不允许 |
否 |
(5)津贴信息表
属性名 |
字段名 |
数据类型 |
长度 |
是否允许为空 |
有无索引 |
员工编号 |
code |
char |
4 |
不允许 |
是 |
姓名 |
name |
varchar |
8 |
不允许 |
否 |
性别 |
sex |
char |
2 |
不允许 |
否 |
加班时间 |
overtime |
varchar |
10 |
允许 |
否 |
加班天数 |
overday |
float |
10 |
允许 |
否 |
加班类型 |
overtype |
varchar |
10 |
允许 |
否 |
津贴情况 |
allowance |
int |
10 |
允许 |
否 |
5.6数据库模型
数据库模型
6.数据库实施
6.1数据库的创建
CREATE DATABASE wages CHARACTER SET utf8;
6.2数据库的表创建
(1)员工信息表
CREATE TABLE `staff` (
`employee_No` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`name` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`sex` char(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`birthday` datetime(0) NULL DEFAULT NULL,
`dept` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`education_level` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`title` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
PRIMARY KEY (`employee_No`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
基础数据初始化:
INSERT INTO `staff` VALUES ('001', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');
INSERT INTO `staff` VALUES ('002', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');
INSERT INTO `staff` VALUES ('003', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');
INSERT INTO `staff` VALUES ('004', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');
效果图:
图6.1 员工信息表运行效果
(2)部门信息表
CREATE TABLE `dept` (
`code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`manager` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`sum` int(0) NULL DEFAULT NULL,
PRIMARY KEY (`code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
数据初始化:
INSERT INTO `dept` VALUES ('001', '部门1', '张三', 10);
INSERT INTO `dept` VALUES ('002', '部门2', '张三', 10);
INSERT INTO `dept` VALUES ('003', '部门2', '张三', 10);
效果图:
图6.2 部门信息表运行效果
(3)工资信息表
DROP TABLE IF EXISTS `wages`;
CREATE TABLE `wages` (
`code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`baseWages` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`postWages` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`money` float(10, 0) NULL DEFAULT NULL,
`subsidy` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`deduction` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
PRIMARY KEY (`code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
数据初始化:
INSERT INTO `wages` VALUES ('001', '2000', '1000', 1000, '1000', '');
INSERT INTO `wages` VALUES ('002', '2000', '1000', 1000, '1000', '');
INSERT INTO `wages` VALUES ('003', '2000', '1000', 1000, '1000', '');
INSERT INTO `wages` VALUES ('004', '2000', '1000', 1000, '1000', '');
效果图:
图6.3 工资信息表运行效果
(4)考勤信息表
CREATE TABLE `attendance` (
`code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`name` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`sex` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`delaysum` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`misssum` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
PRIMARY KEY (`code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
数据初始化:
INSERT INTO `attendance` VALUES ('001', '张三', '女', '11', '0');
INSERT INTO `attendance` VALUES ('002', '张三', '女', '11', '0');
INSERT INTO `attendance` VALUES ('003', '张三', '女', '11', '0');
INSERT INTO `attendance` VALUES ('004', '张三', '女', '11', '0');
INSERT INTO `attendance` VALUES ('005', '张三', '女', '11', '0');
效果图:
图6.4 考勤信息表运行效果
(5)津贴信息表
CREATE TABLE `allowance` (
`code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`name` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`sex` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`overtime` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`allowance` int(0) NULL DEFAULT NULL,
`overday` float(10, 0) NULL DEFAULT NULL,
`overtype` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
PRIMARY KEY (`code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
数据初始化:
INSERT INTO `allowance` VALUES ('001', '张三', '女', '0', 0, 0, '0');
INSERT INTO `allowance` VALUES ('002', '张三', '女', '0', 0, 0, '0');
INSERT INTO `allowance` VALUES ('003', '张三', '女', '0', 0, 0, '0');
INSERT INTO `allowance` VALUES ('004', '张三', '女', '0', 0, 0, '0');
INSERT INTO `allowance` VALUES ('005', '张三', '女', '0', 0, 0, '0');
运行效果图:
图6.5 津贴信息表运行效果