企业员工考勤管理子系统

企业员工考勤管理子系统

一.需求分析

1.系统背景分析

现在不论哪个企业,都要进行考勤,一些企业在考勤管理方面用了大量的人力和财力,不说准确度和可信度如何,其效率很低,而且容易出错,不利于管理。所以人工考勤已经很难再满足企业规范化管理的要求,随着数据库技术的发展和企业信息化建设的进行,使用计算机管理考勤成为一种主流趋势,它不仅为企业减少了人力财力的付出,而且也大大减轻了考勤工作人员的工作量。

本文系统的阐述了企业考勤管理设计开发的全过程。包括系统需求调查分析,概念结构设计,逻辑结构设计等部分。

 

2.数据流程图:

 

                                            记录出差情况

                   出差数据                                                           

        基本信息     请假数据                     记录请假情况                        

                   加班数据                     记录加班情况                         

                   出勤数据                                                        

当前工作                                           记录出勤情况                       

         员工新工作                                                                 

                 更新后的部门信息        已分                                    

                                      配好                           记录

员工信息     部门基本信息                  的工资                统计出勤记录

 

                                                                      已统计信息

 

 

                                                              调整

                                        工资记录

                                              结算

 

 

 

3.数据字典:

1),数据项描述

编号

数据项名称

别名

数据类型

长度

说明部分

1

员工编号

yno

bigint

10

前五位为部门编号,后五位为顺序编号

2

员工姓名

yname

nchar

10

登记信息,查询直接、方便

3

员工性别

ysex

nchar

5

性别是区分员工的一个大致范围

4

出生日期

birth

nchar

15

可以得出员工的工龄

5

部门编号

bno

bigint

5

划分不同的部门

6

职务

duty

nchar

20

对应不同的部门,区分员工

7

部门名称

bname

nchar

20

参照部门编号

 

部门经理职工号

bmanagerno

 

 

参照员工编号

8

日期

time

nchar

15

记载发生变化的时期

 

出勤编号

workno

bigint

20

前八位为当天日期,中间两位设为00,后十位为员工编号

9

上班时间

ondutytime

nchar

10

上班时间为800

10

下班时间

offdutytime

nchar

10

下班时间为1730

 

加班编号

overtimeno

bigint

20

前八位为当天日期,中间两位设为11,后十位为员工编号

11

加班时间长度

overtimelength

int

5

清楚加班了多长时间

12

加班费

overtimefee

int

5

根据加班时间来算加班费,一小时20元来计算。

 

出差编号

travelno

bigint

20

前八位为当天日期,中间两位设为22,后十位为员工编号

13

出差起始时间

tstarttime

nchar

10

记载出差时间长度

14

出差结束时间

tendtime

nchar

10

记载出差时间长度

15

出差过程描述

process

nchar

25

具体描述出差路程及相关信息

16

出差补助

allowance

int

5

根据出差描述来给予相应的补助,要据路程、时间及住宿来判断,根据发票来报销费用

 

请假编号

leaveno

bigint

20

前八位为当天日期,中间两位设为33,后十位为员工编号

17

请假起始时间

lstarttime

nchar

10

记载请假时间长度

18

请假结束时间

lendtime

nchar

10

记载请假时间长度

19

请假原因

reason

nchar

25

说明请假原因

20

扣除奖金

reducemoney

int

5

由于没有上班,当天的工资还是要照常扣除,但是若工作若出现差错,不会担负责任

 

月度考勤编号

mattendno

nchar

20

前八位为当天日期,中间两位设为44,后十位为员工编号

21

累计正常工作时间

ljworktime

nchar

10

算出正常工作时间,是评定基本工资的参考

22

累计加班时间

ljovertime

nchar

10

算出加班时间,评定奖金

23

累计请假时间

ljleavetime

nchar

10

算出请假时间,扣除当天的工资

24

累计出差时间

ljtraveltime

nchar

10

算出出差时间,并报销出差的费用

25

迟到次数

latetimes

int

5

让员工及领导清楚考勤情况

26

早退次数

leavetimes

int

5

让员工及领导清楚考勤情况

27

旷工次数

absenttimes

int

5

让员工及领导清楚考勤情况,并进行相应的罚款措施,旷工一次罚款50

28

基本工资

basicwage

int

10

让员工清楚基本工资

29

奖金

bonus

int

10

让员工清楚奖金

30

实际工资

realwage

int

10

让员工清楚实际工资

 

2)数据结构描述

编号

数据结构名

组成属性

1

员工信息

员工编号,员工姓名,员工性别,出生日期,职务,部门编号

2

部门信息

部门编号,部门名称,部门经理职工号

3

出勤记录

出勤编号,日期,上班时间,下班时间

4

加班记录

加班编号,日期,加班时间长度,加班费

5

出差记录

出差编号,出差起始时间,出差结束时间,出差过程描述,出差补助

6

请假记录

请假编号,请假起始时间,请假结束时间,请假原因,扣除奖金

8

月度考勤统计

月度考勤编号,员工编号,日期,累计正常工作时间,累计加班天数,累计出差天数,累计请假天数,迟到次数,早退次数,旷工次数

9

工资表

工资编号,基本工资,奖金,实际工资

3)数据流描述

编号

数据流名

数据流来源

数据流去向

1

基本信息

招新员工

调配工作

2

当前工作

员工

调配工作

19

已统计信息

统计信息

月度考勤信息

20

调整

月度考勤信息

工资评估

21

结算

工资

工资评估

22

工资记录

工资

处理工资

23

已分配好的工资

处理工资

员工

4)数据存储

数据存储名

输入数据流

输出数据流

说明

员工信息

招新的员工

当前工作

 

部门信息

更新后的部门信息

部门的基本信息

 

月度考勤统计

已统计的信息

再调整信息

对统计的信息进行调整

5)处理过程

处理过程名

输入数据流

输出数据流

说明

调配工作

当前的工作和部门的基本信息

员工的新工作,更新后的部门信息

 

导入数据

出差,请假,加班,出勤的数据

记录出差,请假,加班,出勤的情况

 

工资评估

考勤信息的调整

根据工资评估进行结算

根据相应的评估方法来算基本工资,奖金和实际工资

二.概念结构设计

经过调查、信息流程分析、数据收集,并结合需求分析,明确了该子系统的功能:

A. 给员工编号,登记其基本信息。

B. 给各部门编号、命名,确定其职责范围,并任命部门经理。

C. 对员工的考勤数据进行登记,并进行月度考勤统计。

D. 对员工的月度考勤统计的结果来核算员工工资。

 

实体和属性的联系

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

系统基本的E-R

 

                       1                       n

 

                                                                              1

                                        n               n                1

          1

                  1                     n               n               1

                       1

                                        

                     1                                  n              1

                                        n           

 n            1       1

                                        n               n              1

 

 

 

  1           1

 

 

 

E-R图调整的准则:

现实世界中的事物能作为属性对待的尽量作为属性对待;

属性和实体的划分:属性中不具有需要描述的信息,即属性是不可分的数据项,不再包含其他信息。

 

实体属性定义:

员工(员工编号、员工姓名、员工性别、出生日期、职务、部门编号);

部门(部门编号、部门名称、部门经理职工号);

出勤记录 (出勤编号、日期、上班时间、下班时间);

请假记录(请假编号、请假起始时间、请假结束时间、请假原因、扣除奖金);

加班记录(加班编号、加班时间长度、日期、加班费);

出差记录(出差编号、出差起始时间、出差结束时间、出差描述、补助资金);

月度考勤统计(月度考勤编号、员工编号、日期、累计正常工作时间、累计请假、累计出差、累计加班、迟到次数、早退次数、旷工次数);

工资(工资编号、基本工资、奖金、实际工资);

 

具体调整如下:

1.出勤记录,请假记录,加班记录,出差记录本应作为员工的一个属性,但是其中还涉及到相关的奖金待遇及具体描述,则单独作为一个实体;

2.工资单独作为一个实体,因为此处强调的是员工的出勤工资,则分开来写。

三.逻辑结构设计

1、实体所对应的关系表:

员工表(employee

列名

别名

类型

长度

备注

员工编号

yno

bigint

10

设为主码

员工姓名

yname

nchar

10

 

员工性别

ysex

nchar

5

 

出生日期

birth

nchar

15

 

职务

duty

nchar

20

 

部门编号

bno

bigint

20

外码,参照部门表

 

部门表:(branch

列名

别名

类型

长度

备注

部门编号

bno

bigint

5

设为主码

部门名称

bname

nchar

20

 

部门经理职工号

bmanagerno

nchar

5

外码,参照职工表

 

出勤记录表(work_register:

列名

别名

类型

长度

备注

出勤编号

workno

bigint

20

设为主码

日期

time

nchar

15

 

上班时间

ontudytime

nchar

10

 

下班时间

offdutytime

nchar

10

 

 

请假记录表:(leave_register):

列名

别名

类型

长度

备注

请假编号

leaveno

bigint

20

设为主码

请假起始时间

lstarttime

nchar

10

 

请假结束时间

lendtime

nchar

10

 

请假原因

reason

nchar

25

 

扣除奖金

reducemoney

int

5

 

 

加班记录表:(overtime_register):

列名

别名

类型

长度

备注

加班编号

overtimeno

bigint

20

设为主码

加班时间长度

overtimelength

int

5

 

日期

time

nchar

15

 

加班费

overtimefee

int

5

 

 

出差记录表:(travel_register):

列名

别名

类型

长度

备注

出差编号

travelno

bigint

20

设为主码

出差起始时间

tstarttime

nchar

10

 

出差结束时间

tendtime

nchar

10

 

出差描述

process

nchar

25

 

补助资金

allowance

int

5

 

 

月度考勤统计表(month_attend):

列名

别名

类型

长度

备注

月度考勤编号

mattendno

 

 

设为主码

员工编号

yno

bigint

20

 

日期

time

nchar

15

 

累计正常工作时间

ljworktime

nchar

10

 

累计请假

ljleavetime

nchar

10

 

累计出差

ljtraveltime

nchar

10

 

累计加班

ljovertime

nchar

10

 

迟到次数

latetimes

int

5

 

早退次数

leavetimes

int

5

 

旷工次数

absenttimes

int

5

 

 

工资表

列名

别名

类型

长度

备注

工资编号

workno

bigint

20

设为主码

基本工资

basicwage

int

10

 

奖金

bonus

int

10

 

实际工资

realwage

int

10

 

 

具体调整如下:

1.出勤记录,请假记录,加班记录,出差记录本应作为员工的一个属性,但是其中还涉及到相关的奖金待遇及具体描述,则单独作为一个实体;

2.工资单独作为一个实体,因为此处强调的是员工的出勤工资,则分开来写。

2、用户子模式设计

考勤(员工编号、员工姓名、部门名称、日期、累计正常工作时间、累计请假、累计出差、累计加班、迟到次数、早退次数、旷工次数);

工资(员工编号、员工姓名、部门名称、职务、基本工资、奖金、实际工资);

因为员工对于其他情况不会经常关注,经常使用的以上各项,所以设立考勤和工资关系。

 

四、物理结构设计

1、关系模式存取方法分析:

对于该系统的各个关系最经常使用的操作就是查找,则采用B+树作为索引:

1)、对以下经常在查询中出现的关系的码建立索引:

A 对员工的员工编号建立索引,使其按照员工编号的升序存放。

B 对部门的部门编号建立索引,使其按照部门编号的升序存放。

 

     2)、由于下面几个关系模式的更新频率较高,系统为维护索引要付出较大的代价,因此没有定义索引:

月度考勤统计(月度考勤编号、员工编号、日期、累计正常工作时间、累计请假、累计出差、累计加班、迟到次数、早退次数、旷工次数);

工资(工资编号、基本工资、奖金、实际工资);

 

 

2、存储结构设计

经过分析得出本考勤管理子系统信息处理的特点是员工考勤和工资的数据不仅经常需要查询,而且更新速度快,每月就要更新一次。

针对以上特点,设计如下:

(1) 确定数据库的存放位置

为了提高系统性能,现根据应用情况将数据按照易变部分和稳定部分、经常存取部分和存取频率较低的部分分别在两个磁盘上存放。

1)、经常存取部分:员工,出勤记录,请假记录,加班记录,出差记录,月度考勤统计,工资。

2)、存取频率较低的部分:部门

(2) 确定系统配置

此管理子系统需要的微机数量和规模都不必太大,但在系统设计时应考虑到今后的发展需求,在选择硬件设备、服务器操作系统、数据库时都考虑到能够逐步的增加和扩展。

1)、硬件配置要求:

CPU:PII200以上。

内存:32MB以上。

硬盘:2.1GB以上(可用空间最好在160MB以上)。

打印机:推荐EPSON  LQ-1600KII

      2)、软件配置要求:

          WINDOWS95、98、2000中文版操作系统。

 

五、数据库完整性设计

1、主键及唯一性索引建立:

A 将员工employee表中的yno属性定义为码。参照员工表。

B 将部门branch表中bno属性定义为码。参照部门表。

C 将出差记录travel_register表中的travelno 属性定义为码。参照出差记录表。

D 将请假记录leave_register表中的leaveno属性定义为码。参照请假记录表。

E 将加班记录overtime_register表中的overtimeno属性定义为码。参照加班记录表。

F 将出勤记录work_register表中的workno属性定义为码。参照出勤记录表。

G 将月度考勤统计month_attend表中的monthno属性定义为码。参照月度考勤表。

   H 将工资wage表中的wageno属性定义为码。 参照工资表。

 

 

2.对以下经常在查询中出现的关系的码建立索引:

1)、在employ表的yno(员工编号)列上建立一个聚簇索引,而且employ表中的记录将按照yno升序存放。

Create cluster index employno on employ(yno);

2)、在branch表的bno(部门编号)列上建立一个聚簇索引,而且branch表中的记录将按照bno升序存放。

Create cluster index branchno on branch(bno);

 

2、参照完整性设计

关系模型的参照完整性在create table 中用foreign key短语定义哪些列为外码,用references短语指明这些外码参照哪些表的主码。

A 定义出差Travel表中的参照完整性,将travelno,yno设为主码,travelno参照travel_register表的ravelno,yno参照employee表的yno。

B 定义请假Leave表中的参照完整性,将leaveno,yno设为主码,leaveno参照leave_register表的leaveno,yno参照employee表的yno。

C定义加班Overtime表中的参照完整性, 将overtimeno,yno设为主码,overtimeno参照overtime_register表的overtimeno,yno参照employee表的yno。

D 定义出勤Work表中的参照完整性,将workno,yno设为主码,workno参照work _register表的workno,yno参照employee表的yno。

3、check约束的定义

员工表中的ysex只能取“男”或“女”。

alter table employ

add constraint c1 check(value in(‘男’,’女’));

 

4、触发器设计

A 在删除员工之后,显示员工的基本信息

B 不准删除部门的信息。

C 员工的信息更改之后,相应的月度考勤统计表员工编号也要跟着变化。

六、数据库视图设计

视图是从一个或几个基本表导出的表,一经定义,就可以和基本表一样被查询、被删除。

1)、定义一个反映员工的年龄的视图。

create view y_age(yno,yname,age)

as

select yno,yname,2010-birth

from employee;

2)、建立反映员工工资情况的视图。

create view y_wage(yno,yname,basicwage,bonus,realwage)

as

select yno,yname,basicwage,bonus,realwage

from employ and wage;

 

3)、建立员工考勤情况的视图。

create view y_attend(yno,yname,ljworktime,ljleavetime,ljtraveltime,ljovertime)

as

select yno,yname,ljworktime,ljleavetime,ljtraveltime,ljovertime

from employee and monthattend;

 

七、数据库存储过程设计

为方便查询,设计以下存储过程:

查询员工信息:员工(员工编号、员工姓名、员工性别、出生日期、职务、部门编号);

查询员工工资信息:工资(员工编号、员工姓名、部门名称、职务、基本工资、奖金、实际工资);

查询员工考勤信息:考勤(员工编号、员工姓名、部门名称、日期、累计正常工作时间、累计请假、累计出差、累计加班、迟到次数、早退次数、旷工次数);

 

八、权限设计

此考勤子系统对于员工都是开放的,方便员工查询考勤,工资等信息。

九、总结

通过以上数据库的设计,我深刻了解了每个阶段的设计内容:系统需求分析、概念结构设、逻辑结构设计、物理结构设计、数据库的实施和维护。

分析该企业考勤子系统的功能是首先能提供查询员工的信息,其次让员工能清楚自己的考勤情况,并相应的查询到工资的变化。考勤情况由请假记录,加班记录,出勤记录,出差记录来统计出的,详细的结果统计在月度考勤表中。员工都可以很详细的查询自己的情况,经理也可以根据此情况来考核员工。由于工资是随着考勤数据来变化的,因此工资要单独作为一个实体,这样很容易就能查到相应的详细情况。

在做此子系统时,刚开始还不知道大概的格式,只是在盲目的做,这样到最后自己都不知道下一步该做什么了,所以凡事都要严格按照规则做,然后再发挥下,这样子就不会半途而废了。之后我严格按照书上的过程做,发现其实做该子系统并没有我想象中难,柳暗花明又一村,攻克一个难题之后,心中大悦,只要细心,慢慢来,一步一步做,一样可以做的出色,不过前提是要对制作子系统的过程熟悉,并且灵活运用。

所以做此子系统最大的收获就是制作过程我已经很熟悉了,然后再做其他系统应该就会得心应手了。

参考文献:《数据库系统概论》王珊 萨师煊 高等教育出版社(第四版)2006.5

  • 6
    点赞
  • 2
    评论
  • 18
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值