热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《考勤信息管理系统》数据库课程设计

《考勤信息管理系统》数据库课程设计目录一、课程设计目的和要求…2二、课程设计过程…2数据库设计的基本步骤如下:…31.需求分析阶段…31.1应用背景…31.2需求分

《考勤信息管理系统》数据库课程设计

目 录
一、课程设计目的和要求… 2
二、课程设计过程… 2
数据库设计的基本步骤如下:… 3
1.需求分析阶段… 3
1.1应用背景 …3
1.2需求分析目标 …4
1.3系统设计概要… 4
1.4软件处理对象:… 4
1.5系统可行性分析… 5
1.6系统的设计目标及其意义… 5
1.7系统的业务流程及具体的功能… 6
1.8数据流程图… 8
2.数据字典 …10
3.概念结构设计阶段… 12
4.逻辑结构设计阶段… 14
5.物理结构设计阶段… 17
6.数据库实施 …17
6.1 Create Database创建数据库… 17
6.2 Create Table创建表… 18
三、课程设计心得 …20
参考文献:… 20

引 言
考勤作为一个公司的基础管理,是公司对员工工作管理的基本依据。实际管理和记录工作非常需要快速获知各个部门员工的每日出勤情况,以便于及时向高层管理者反映员工的出勤,缺勤情况(包括迟到、早退、病假、事假、出差等情况)。我们提出基于C/S结构的网络考勤系统,实现网上考勤任务,以减轻考勤人员的工作量。我们准备开发员工考勤管理系统,完成员工基本信息维护、公司的部门信息维护、公司基本考勤类型的维护、员工考勤的管理、员工考勤的查询与分析。实现人事考勤的需要,包括员工迟到、早退、请假、旷工的情况的记录,在每个月底计算工资对员工和对员工进行绩效评估的时候,对员工整个月的考勤记录进行查询和统计。公司考勤管理系统是为了解决员工考勤管理的而设计的,目的是建立一个能够初步实现公司考勤管理系统的智能化管理,提高考勤管理效率,工作人员能够在各个岗位上的工作状态得到及时的反馈,而系统所需的工作人员的数量少,效率高。降低资源浪费,同时增强员工管理的透明度以及约束员工自觉遵守出勤制度。

面对目前公司发展的实际状况,我们通过实地调研之后,对考勤信息管理系统的设计开发做了一个详细的概述。


一、 课程设计目的和要求

课程设计是为了增强学生对所学课程的理解,学会综合地、灵活地运用所学课程知识的一个重要的实践环节。

本课程设计是应用java程序设计语言进行数据库应用系统的开发,用SQL SERVER 2008进行后台数据库的管理,编写出某一个小型的管理信息系统。

通过本课程设计可以达成如下目标:

1、能够自觉运用数据库原理的理论知识指导软件设计;
2、学会数据库的设计,并能对设计结果的优劣进行正确的评价;
3、学会如何组织和编写信息系统软件设计文档和软件系统的操作说明;
4、具有一定的独立分析问题、解决问题的能力;
5、掌握SQL SERVER2008在信息系统开发过程中的应用。


二、 课程设计过程

数据库设计的基本步骤如下:
(1) 需求分析
(2) 概念结构设计
(3) 数据库逻辑设计
(4) 数据库物理设计
(5) 数据库实施
(6) 数据库运行和维护


1.需求分析阶段

1.1应用背景
随着公司人员的增多,以及公司人事管理的日趋复杂,公司考勤管理也变得越来越复杂。规范的考勤管理是现代公司提高管理效益的重要保证,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代公司的需求。随着计算机技术和通信技术的迅速发展,将传统的人工考勤管理计算机化,建立一个高效率的、无差错的考勤管理系统,能够有效的帮助公司实现考勤公正,使公司的管理水平登上一个新的台阶是有必要的。

1.2需求分析目标
以中小型公司的考勤管理业务为例,结合科学管理的理论,设计并开发一个公司考勤管理信息系统,提供一个科学合理的考勤管理解决方案,以实现无纸化作业。根据管理权限的不同以及职称的不同将界面划分为不同的层次,系统目标如下:

a) 提供简单、方便的操作。
b) 根据公司原来的考勤管理制度,为公司不同管理层次提供相应的权限功能。
c) 通过考勤管理无纸化的实现,使公司的考勤管理更加科学规范。
d) 节省考勤管理的成本。
e) 提高公司考勤管理的透明度和效率,防止出勤虚假现象
f) 为公司实现整体信息化的其他相关系统提供必要的数据支持。

1.3系统设计概要
考勤管理的主要工作是公司员工考勤信息的录入:为员工基本信息、员工出勤记录、员工的出差记录、员工的请假记录、员工的加班记录和员工当月出勤情况。

考勤管理的过程是:先对所有员工的基本情况进行录入,并对其进行权限设置。普通员工上班前,进行考勤登记;加班时,记录加班时长;请假时进行申请。管理人员可以对考勤情况进行查询,并安排出差事宜。月统计可以合理地对工资及奖金进行安排。从而提高公司的考勤透明度和效率。

1.4软件处理对象:
系统要处理的对象包括员工基本信息、员工出勤记录信息、员工的出差记录信息、员工的请假记录信息、员工的加班记录信息和员工当月出勤情况信息六个方面,各个对象包括信息如下所示(详细的数据见于数据字典):

1.员工基本信息:包括员工编号、姓名、性别、年龄、职称;
2.员工出勤记录信息:包括员工编号、出勤编号、上班时间、下班时间、缺勤记录;
3.员工的出差记录信息:包括员工编号、出差编号、开始时间、结束时间、统计天数;
4.员工的请假记录信息:包括员工编号、请假编号、请假开始时间、请假结束时间、请假时间统计;
5.员工的加班记录信息:包括员工编号、加班编号、加班开始时间、加班结束时间、加班时间统计;
6.员工当月出勤情况信息:包括员工编号、出勤月统计、出差月统计、加班月统计、请假月统计。


1.5系统可行性分析

本系统从以下三个方面进行分析:
1.5.1技术可行性
本次课程设计的公司考勤管理系统所用的所有技术都可以经过仔细学习和练习获得,在技术上基本可以实现所有的功能。如果有技术障碍可以通过查阅文献或者上网查询获取解决方案。

1.5.2经济可行性
本管理系统基本上使用是免费的开源技术,除了必要的管理费用,其他费用基本上可以忽略不计。

1.5.3操作可行性
本管理系统操作简单易懂,几乎不需要培训,使用人员就可以使用。
结论:经分析本系统满足以上几个方面的要求,所以开发本系统是完全可行的。


1.6系统的设计目标及其意义

本考勤信息管理系统强化了员工管理的职能,涵盖了数据管理、请假管理、加班管理等主要功能,特别是对员工考勤管理工作进行了提炼和概括,使公司考勤管理的透明度和系统性极大提高,从而达到员工考勤管理高效率的目的。

本系统主要包括三大功能:录入,查询和统计。录入是最基本的系统功能,实现了所有员工情况的录入,保证了公司员工基本情况的完整性,普通员工可以通过考勤情况的登记完善自己的出勤,加班,请假等信息。管理人员可以通过该系统查询员工出勤情况并对其进行出差等安排。月统计的功能设计可以系统化公司考勤,从而进行相关业绩的考察和奖励。


1.7系统的业务流程及具体的功能

1.7.1 系统功能模块说明
(1)数据管理
设置和管理基础数据,包括加班、请假类别的定义和出差的定义以及员工和部门的基本信息,在权限范围内可以进行基础数据的添加、删除和修改。
(2)考勤管理
包括出勤信息的查询,生成考勤统计信息并可以根据指定的条件进行查询。实现从每日出勤到统计全部考勤信息的无纸化操作。为方便数据传递和查阅,要根据需求提供不同时间短的考勤统计信息表。
(3)加班管理
对员工的加班时间进行统计,记录开始时间和结束时间,对加班信息实现添加,删除等操作。
(4)请假管理
可以提出请假申请,并完善请假信息,如请假开始时间,请假结束时间,请假的次数进行管理。
(5)出差管理
管理者安排员工出差,对出差时间,次数的管理。
(6)月统计
统计员工当月的出勤、出差、加班、请假等情况。

1.7.2 系统功能模块图
在这里插入图片描述

1.7.3模块内部过程
(1)普通员工模块接口
在这里插入图片描述

(2)管理人员模块接口
在这里插入图片描述

1.7.4算法设计
(1)建立一张排班表,记录上下班及加班时间段的标准时间,用来判断员工出勤和加班的情况,此表需要手动输入。
(2)建立一张表用来记录员工请假、节假日时间段,此表需要手动输入。
(3)将未登记的时间段与排班表的标准时间段比较,若无登记记录,按缺勤处理。
(4)迟到或早退可以以排班表的时间为判断标准,可以加上一定的限宽时间。
(5)建一张月统计表,记录员工月出勤、出差、加班、请假等情况。此表需要手动输入。


1.8数据流程图

(1)顶层数据流图
在这里插入图片描述

(2)第一层数据流图
在这里插入图片描述

(3)第二层数据流图
在这里插入图片描述


2.数据字典

数据从程序内部分离出来,形成独立的外部数据文件。静态数据文件与动态数据文件相互独 立,依靠特定程序分别进行参照或存取。 静态数据由外部数据文件存放方式转为数据库存放方式,将以前程序中静态数据对动态数据加工的某些控制关系抽象为静态表与动态表之间的关系。

1.数据口词条:
更新信息:{出勤记录|请假记录|加班记录|出差记录}
员工信息:{员工编号+部门编号+姓名+性别+年龄+职称}
出勤记录:{员工编号+出勤编号+上班时间+下班时间+缺勤记录}
出差记录:{员工编号+出差编号+开始时间+结束时间+统计天数}
加班记录:{员工编号+加班编号+加班开始时间+加班结束时间+加班时间统计}
请假记录:{员工编号+请假编号+请假开始时间+请假结束时间+请假时间统计}
月统计:{员工编号+出勤月统计+出差月统计+加班月统计+请假月统计}
查询信息:{员工信息}

2.数据存储文件词条:
员工信息文件:存放员工信息。
出勤记录文件:存放员工出勤情况。
出差记录文件:存放员工出差情况。
加班记录文件:存放员工加班情况。
请假记录文件:存放员工请假情况。
月统计文件:存放月统计情况。

3.加工词条:
员工信息查询:对员工的基本信息进行查询。
缺勤统计:对员工的缺勤情况进行统计。
出差统计:对员工的出差情况进行统计。
请假统计:对员工的请假情况进行统计。
加班统计:对员工的加班情况进行统计。
月统计:对员工的出勤、出差、加班、请假等情况进行月统计。
修改信息:修改员工基本信息。
增加信息:增加实体集的记录。
人数:统计员工人数。
职称:根据职称将员工分为普通员工和管理人员,不同的职称对应不同的管理权限。


3.概念结构设计阶段

3.1数据关系图:
在这里插入图片描述

3.2局部E-R图:
(1)员工E-R图
在这里插入图片描述

(2)出勤记录E-R图
在这里插入图片描述

(3)出差记录E-R图
在这里插入图片描述

(4)加班记录E-R图
在这里插入图片描述

(5)请假记录 E-R图
在这里插入图片描述

(6)月统计E-R图
在这里插入图片描述


4.逻辑结构设计阶段

把系统的E-R图转换成数据库模式如下(下列关系模型中标有黄色钥匙状的为主码):
4.1 关系模式
员工(员工编号,姓名,性别,年龄, 职称)
出勤记录(员工编号,出勤编号,上班时间,下班时间,缺勤记录)
出差记录(员工编号,出差编号,开始时间,结束时间,统计天数)
加班记录(员工编号,加班编号,加班开始时间,加班结束时间,加班时间统计)
请假记录(员工编号,请假编号,请假开始时间,请假结束时间,请假时间统计)
月统计(员工编号,出勤月统计,出差月统计,加班月统计,请假月统计)
4.2 数据表设计
(1) 员工信息表(worker)
在这里插入图片描述

(2)出勤记录表(work_note)
在这里插入图片描述

(3)出差记录表(out_note)
在这里插入图片描述

(4)加班记录表(over_note)
在这里插入图片描述

(5)请假记录表(off_note)
在这里插入图片描述

(6)月统计表(count)
在这里插入图片描述


5.物理结构设计阶段

5.1 存储方式
数据存储是系统的核心组成部分,本系统的主要数据是采用文件的存储方式,以文件组的形式将文件组织在一起,便于数据库数据管理。
5.2 检索方式
本系统要实现考勤记录管理,故将员工信息表中的字段w_id、出勤记录表中的字段work_num、出差记录表中的字段out_num、加班记录表中的字段over_num和请假记录表中的字段off_num,建立一张索引表以便信息查询,以B+树的索引方式实现查询、增加、删除记录等操作。


6.数据库实施

本系统前端开发工具我们选择java,后台数据库采用SQL Server 2008。
本系统是通过java代码进行连接的。

6.1 Create Database创建数据库
CREATE DATABASE attend_manager_system

6.2 Create Table创建表
1)员工信息表创建

CREATE TABLE `worker` (`w_id` varchar(10) NOT NULL ,`name` varchar(6) NOT NULL ,`sex` varchar(2) NOT NULL ,`age` int(11) NOT NULL ,`workerdegree` varchar(6) NOT NULL ,PRIMARY KEY (`w_id`)
);

出勤记录表创建

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;

(3)出差记录表创建

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`)
)

(4)加班表创建

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`)
)

(5)请假记录表创建

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`)
)

(6)月统计表创建

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`))

三、 课程设计心得

在本次数据库课程设计过程中,让我认识到数据库系统概论书本上的知识的重要性,因为在课程设计的时候,单张表的字段名和字段类型,存储什么数据,表的主键和外键,以及为了增加查询速度,表的哪个字段需要加索引,哪几个字段需要加联合索引。表与表之间的关系等等这些都要在设计表格的时候想到,而这些与数据库系统概论的知识息息相关。作为课程设计最基础的部分,带使我重新认识了数据库,对数据库的兴趣也明显增加了许多。

从一开始的对任务书进行需求分析,了解系统业务,到后面的建立数据流图,数据字典,数据字典里面的数据项、数据结构、数据流、数据存储和处理过程,一个一个进行设计,对各个表的主键,外键进行定义,利用SQL Server 2008 画出E-R图,把E-R图向关系模型进行转换,找出各个表的函数依赖关系,对各个表属性和完整性约束进行定义,然后对表的物理结构进行设计,对数据库的实施。最后是对系统进行测试,在具体的测试中,我认为应当遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。

由于对数据库的操作不够熟练,所以在整个系统的考虑方面也有些许不足,但是,我会在今后的学习中,加深自己在数据库方面的培养,提高自己对与建立数据库时候的分析以及应用的能力。此外,本系统在信息表述上还不够完善,一些模块的信息还不够详细,主要是提供的报表有限。虽然本系统针对中小公司的考勤管理业务,但下一步可以再熟悉系统设计风格的基础上,在各个界面上进一步添加多需要的字段和报表,或者添加采集数据的模块,以扩充系统的功能。

通过本次课程设计,我对数据库有了更深入的了解,虽然自己做的设计还不是很完善,但我觉得很有意义,也很有帮助。每次课程设计,我们都要认真对待,遇到困难,积极查询资料,不懂就问,只有坚持不懈,才能取得胜利。

参考文献:
[1] 张海藩 . 软件工程导论 [M].清华大学出版社, 2013.8
[2] 王 珊 .数据库系统概论 [M].高等教育出版社, 2014.9
[3] 耿祥义 . Java 2实用教程 [M].清华大学出版社, 2017.5
[4] Bruce Eckel . Java编程思想 [M].机械工业出版社,2017.4
[5] Grady Booch . 面向对象分析与设计 [M].电子工业出版社,2013.1


推荐阅读
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
author-avatar
迷途羔羊1989_751
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有