随着公司人员的增多,以及公司人事管理的日趋复杂,公司考勤管理也变得越来越复杂。规范的考勤管理是现代公司提高管理效益的重要保证,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代公司的需求。随着计算机技术和通信技术的迅速发展,将传统的人工考勤管理计算机化,建立一个高效率的、无差错的考勤管理系统,能够有效的帮助公司实现考勤公正,使公司的管理水平登上一个新的台阶是有必要的。
以中小型公司的考勤管理业务为例,结合科学管理的理论,设计并开发一个公司考勤管理信息系统,提供一个科学合理的考勤管理解决方案,以实现无纸化作业。根据管理权限的不同以及职称的不同将界面划分为不同的层次,系统目标如下:
(1)提供简单、方便的操作。
(2)根据公司原来的考勤管理制度,为公司不同管理层次提供相应的权限功能。
(3)通过考勤管理无纸化的实现,使公司的考勤管理更加科学规范。
(4)节省考勤管理的成本。
(5)提高公司考勤管理的透明度和效率,防止出勤虚假现象。
(6)为公司实现整体信息化的其他相关系统提供必要的数据支持。
·2需求分析
2.1.1 技术可行性
本次课程设计的公司考勤管理系统所用的所有技术都可以经过仔细学习和练习获得,在技术上基本可以实现所有的功能。如果有技术障碍可以通过查阅文献或者上网查询获取解决方案。
2.1.2 经济可行性
本管理系统基本上使用是免费的开源技术,除了必要的管理费用,其他费用基本上可以忽略不计。
2.1.3 操作可行性
本管理系统操作简单易懂,几乎不需要培训,使用人员就可以使用。
本管理系统需要实现下列功能需求:
(1)员工基本信息的增加、查询、更新、删除等基本功能。
(2)员工出勤记录信息的增加、查询、更新、删除等基本功能。
(3)员工出差记录信息的增加、查询、更新、删除等基本功能。
(4)员工请假记录信息的增加、查询、更新、删除等基本功能。
(5)员工加班记录信息的增加、查询、更新、删除等基本功能。
(6)月统计信息的增加、查询、更新、删除等基本功能。
(1)顶层数据流图
(2)第一层数据流图
(3)第二层数据流图
1.数据口词条:
更新信息:{出勤记录|请假记录|加班记录|出差记录}
员工信息:{员工编号+部门编号+姓名+性别+年龄+职称}
出勤记录:{员工编号+出勤编号+上班时间+下班时间+缺勤记录}
出差记录:{员工编号+出差编号+开始时间+结束时间+统计天数}
加班记录:{员工编号+加班编号+加班开始时间+加班结束时间+加班时间统计}
请假记录:{员工编号+请假编号+请假开始时间+请假结束时间+请假时间统计}
月统计:{员工编号+出勤月统计+出差月统计+加班月统计+请假月统计}
查询信息:{员工信息}
2.数据存储文件词条:
员工信息文件:存放员工信息。
出勤记录文件:存放员工出勤情况。
出差记录文件:存放员工出差情况。
加班记录文件:存放员工加班情况。
请假记录文件:存放员工请假情况。
月统计文件:存放月统计情况。
3.加工词条:
员工信息查询:对员工的基本信息进行查询。
缺勤统计:对员工的缺勤情况进行统计。
出差统计:对员工的出差情况进行统计。
请假统计:对员工的请假情况进行统计。
加班统计:对员工的加班情况进行统计。
月统计:对员工的出勤、出差、加班、请假等情况进行月统计。
修改信息:修改员工基本信息。
增加信息:增加实体集的记录。
人数:统计员工人数。
职称:根据职称将员工分为普通员工和管理人员,不同的职称对应不同的管理权限。
3 总体设计
(1)数据管理
设置和管理基础数据,包括加班、请假类别的定义和出差的定义以及员工和部门的基本信息,在权限范围内可以进行基础数据的添加、删除和修改。
(2)考勤管理
包括出勤信息的查询,生成考勤统计信息并可以根据指定的条件进行查询。实现从每日出勤到统计全部考勤信息的无纸化操作。为方便数据传递和查阅,要根据需求提供不同时间短的考勤统计信息表。
(3)加班管理
对员工的加班时间进行统计,记录开始时间和结束时间,对加班信息实现添加,删除等操作。
(4)请假管理
可以提出请假申请,并完善请假信息,如请假开始时间,请假结束时间,请假的次数进行管理。
(5)出差管理
管理者安排员工出差,对出差时间,次数的管理。
(6)月统计
统计员工当月的出勤、出差、加班、请假等情况。
(1)普通员工模块接口
(2)管理人员模块接口
数据结构说明 |
含义说明 |
组成部分 |
员工信息管理 |
记录员工基本信息 |
员工编号+姓名+性别+年龄+职称 |
出勤记录管理 |
对员工的出勤记录进行管理 |
员工编号+出勤编号+上班时间+下班时间+缺勤记录 |
出差记录管理 |
对员工的出差记录进行管理 |
员工编号+出差编号+开始时间+结束时间+统计天数 |
请假记录管理 |
对员工的请假记录进行管理 |
员工编号+请假编号+请假开始时间+请假结束时间+请假时间统计 |
加班记录管理 |
对员工的加班记录进行管理 |
员工编号+加班编号+加班开始时间+加班结束时间+加班时间统计 |
月统计 |
统计员工当月出勤情况 |
员工编号+出勤月统计+出差月统计+加班月统计+请假月统计 |
(1)建立一张排班表,记录上下班及加班时间段的标准时间,用来判断员工出勤和加班的情况,此表需要手动输入。
(2)建立一张表用来记录员工请假、节假日时间段,此表需要手动输入。
(3)将未登记的时间段与排班表的标准时间段比较,若无登记记录,按缺勤处理。
(4)迟到或早退可以以排班表的时间为判断标准,可以加上一定的限宽时间。
(6)建一张月统计表,记录员工月出勤、出差、加班、请假等情况。此表需要手动输入。
5 数据库设计
5.1 概念结构设计
5.1.1数据关系图:
5.1.2局部E-R图:
(1)员工E-R图
(2)出勤记录E-R图
(3)出差记录E-R图
(4)加班记录E-R图
(5)请假记录 E-R图
(6)月统计E-R图
5.2.1 关系模式
员工(员工编号,姓名,性别,年龄, 职称)
出勤记录(员工编号,出勤编号,上班时间,下班时间,缺勤记录)
出差记录(员工编号,出差编号,开始时间,结束时间,统计天数)
加班记录(员工编号,加班编号,加班开始时间,加班结束时间,加班时间统计)
请假记录(员工编号,请假编号,请假开始时间,请假结束时间,请假时间统计)
月统计(员工编号,出勤月统计,出差月统计,加班月统计,请假月统计)
5.2.2 数据表设计
(1) 员工信息表(worker)
字段名称 |
字段类型 |
是否为空 |
约束 |
字段说明 |
id |
int |
否 |
主键 |
表记录的id |
w_id |
varchar(10) |
否 |
|
员工编号 |
name |
varchar(6) |
否 |
|
姓名 |
sex |
varchar(2) |
否 |
|
性别 |
age |
int |
否 |
|
年龄 |
degree |
varchar(6) |
否 |
|
职称 |
(2)出勤记录表(work_note)
字段名称 |
字段类型 |
是否为空 |
约束 |
字段说明 |
id |
int |
否 |
|
表记录的id |
w_id |
varchar(10) |
否 |
外键 |
员工编号 |
w_num |
varchar(10) |
否 |
主键 |
出勤编号 |
work_time |
date |
是 |
|
上班时间 |
end_time |
date |
是 |
|
下班时间 |
work_not |
int |
是 |
|
缺勤记录 |
(3)出差记录表(out_note)
字段名称 |
字段类型 |
是否为空 |
约束 |
字段说明 |
Id |
Int |
否 |
外键 |
表记录的id |
w_id |
varchar(10) |
否 |
|
员工编号 |
Out_num |
varchar(10) |
否 |
主键 |
出差编号 |
Out_time |
date |
是 |
|
开始时间 |
Back_time |
date |
是 |
|
结束时间 |
Out_days |
number |
是 |
|
统计天数 |
(4)加班记录表(over_note)
字段名称 |
字段类型 |
是否为空 |
约束 |
字段说明 |
w_id |
varchar(10) |
否 |
外键 |
员工编号 |
Id |
Int |
否 |
|
表记录的id |
Over_num |
varchar(10) |
否 |
主键 |
加班编号 |
Over_time |
date |
是 |
|
加班开始时间 |
Overend_time |
date |
是 |
|
加班结束时间 |
Over_days |
int |
是 |
|
加班时间统计 |
(5)请假记录表(off_note)
字段名称 |
字段类型 |
是否为空 |
约束 |
字段说明 |
Id |
Int |
否 |
|
表记录的id |
w_id |
varchar(10) |
否 |
外键 |
员工编号 |
off_num |
varchar(10) |
否 |
主键 |
请假编号 |
off_time |
date |
是 |
|
请假开始时间 |
off_end_time |
date |
是 |
|
请加结束时间 |
off_days |
int |
是 |
|
请假时间统计 |
(6)月统计表(count)
字段名称 |
字段类型 |
是否为空 |
约束 |
字段说明 |
Id |
Int |
否 |
|
表记录的id |
count_id |
int |
否 |
主键 |
id |
w_id |
varchar(10) |
否 |
外键 |
员工编号 |
work_note |
int |
是 |
|
出勤月统计 |
out_note |
int |
是 |
|
出差月统计 |
over_note |
int |
是 |
|
加班月统计 |
off_note |
int |
是 |
|
请假月统计 |
5.3.1 存储方式
数据存储是系统的核心组成部分,本系统的主要数据是采用文件的存储方式,以文件组的形式将文件组织在一起,便于数据库数据管理。
5.3.2 检索方式
本系统要实现考勤记录管理,故将员工信息表中的字段w_id、出勤记录表中的字段work_num、出差记录表中的字段out_num、加班记录表中的字段over_num和请假记录表中的字段off_num,建立一张索引表以便信息查询,以B+树的索引方式实现查询、增加、删除记录等操作。
6系统编码、测试
CREATE DATABASE `attend_manager_system`
CREATE TABLE `work_note` (
`id` int(11) NOT NULL,
`w_id` varchar(10) NOT NULL,
`work_num` varchar(10) NOT NULL,
`work_tim` date DEFAULT NULL,
`end_tim` date DEFAULT NULL,
`w_days` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `1` (`w_id`),CONSTRAINT `1` FOREIGN KEY (`w_id`) REFERENCES `worker` (`w_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `out_note` (
`id` varchar(10) NOT NULL,
`w_id` varchar(10) NOT NULL,
`out_num` varchar(10) NOT NULL,
`out_tim` date DEFAULT NULL,
`back_tim` date DEFAULT NULL,
`out_days` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `2` (`w_id`),
CONSTRAINT `2` FOREIGN KEY (`w_id`) REFERENCES `worker` (`w_id`)
)
CREATE TABLE `over_note` (
`id` varchar(10) NOT NULL,
`w_id` varchar(10) NOT NULL,
`over_num` varchar(10) NOT NULL,
`over_tim` date DEFAULT NULL,
`overend_tim` date DEFAULT NULL,
`over_days` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `4` (`w_id`),
CONSTRAINT `4` FOREIGN KEY (`w_id`) REFERENCES `worker` (`w_id`)
)
CREATE TABLE `off_note` (
`id` varchar(10) NOT NULL,
`w_id` varchar(10) NOT NULL,
`off_num` varchar(10) NOT NULL,
`off_tim`date DEFAULT NULL,
`offend_tim`date DEFAULT NULL,
`off_days` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `5` (`w_id`),
CONSTRAINT `5` FOREIGN KEY (`w_id`) REFERENCES `worker` (`w_id`)
)
CREATE TABLE `count` (
`id` int not null,
`w_id` varchar(10) NOT NULL,
`work_note` int(11) DEFAULT NULL,
`out_note` int(11) DEFAULT NULL,
`over_note` int(11) DEFAULT NULL,
`off_note` int(11) DEFAULT NULL,
primary key (id),
KEY `6` (`w_id`),
CONSTRAINT `6` FOREIGN KEY (`w_id`) REFERENCES `worker` (`w_id`)
)
7 总结
在本次数据库课程设计过程中,让我认识到数据库系统概论书本上的知识的重要性,因为在课程设计的时候,单张表的字段名和字段类型,存储什么数据,表的主键和外键,以及为了增加查询速度,表的哪个字段需要加索引,哪几个字段需要加联合索引。表与表之间的关系等等这些都要在设计表格的时候想到,而这些
与数据库系统概论的知识息息相关。作为课程设计最基础的部分,带使我重新认识了数据库,对数据库的兴趣也明显增加了许多。
由于对数据库的操作不够熟练,所以在整个系统的考虑方面也有些许不足,但是,我会在今后的学习中,加深自己在数据库方面的培养,提高自己对与建立数据库时候的分析以及应用的能力。此外,本系统在信息表述上还不够完善,一些模块的信息还不够详细,主要是提供的报表有限。虽然本系统针对中小公司的考勤管理业务,但下一步可以再熟悉系统设计风格的基础上,在各个界面上进一步添加多需要的字段和报表,或者添加采集数据的模块,以扩充系统的功能。
通过本次课程设计,我对数据库有了更深入的了解,虽然自己做的设计还不是很完善,但我觉得很有意义,也很有帮助。
【参考文献】
[1] 张海藩 《软件工程导论》 清华大学出版社 2013-08
[2] 王 珊 《数据库系统概论》 高等教育出版社 2014-09
[3] 耿祥义 《Java 2实用教程》 清华大学出版社 2017-05
[4] Bruce Eckel 《Java编程思想》 机械工业出版社 2017-04
[5] Grady Booch《面向对象分析与设计》 电子工业出版社 2013-01