课程设计课程名称数据库课程设计题目名称职工考勤管理信息系统学生学院管理学院专业班级指导教师胡凤姓名学号2013 年12 月28 日目录一、概述(500字) .................................................................. 错误!未定义书签。
二、系统需求分析 ................................................................... 错误!未定义书签。
2.1 需求概述 ..................................................................... 错误!未定义书签。
2.2 需求说明书 (5)2.3数据流程图、功能模块、系统数据流程图 (6)三、数据库概念结构设计 (6)3.1 概述 (6)3.2 基本原则 (8)3.3 E-R图 (9)四、数据库逻辑结构与数据库物理结构设计 (10)4.1 概述 ............................................................................ 错误!未定义书签。
4.2 由ER图导出一般关系模型的基本原则 .................. 错误!未定义书签。
4.3 PDM生成 ................................................................... 错误!未定义书签。
五、数据库应用系统的实现 ..................................................... 错误!未定义书签。
5.1 概述 ............................................................................. 错误!未定义书签。
5.2创建数据库及脚本.........................................................................................错误!未定义书签。
5.3 录入数据 (22)5.4 建立视图 (24)5.5数据的删除和修改 (25)5.6数据的储存 (25)5.7建立触发器 (25)六、数据库运行和维护 (26)6.1 概述 (26)6.2 建立查询 (27)七、课程设计总结 (28)一、概述随着企业人事管理的日趋复杂和企业人员的增多,企业的考勤管理变得越来越复杂。
规范的考勤管理是现代企业提高管理效益的重要保证,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代企业的需求。
随着计算机技术和通信技术的迅速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。
将传统的人工考勤管理计算机化,建立一个高效率的、无差错的考勤管理系统,能够有效的帮助企业实现“公正考勤,高效薪资”,使企业的管理水平登上一个新的台阶。
《职工考勤管理信息系统》是为了实现职工考勤信息管理的现代化,智能化管理,提高考勤管理效率,工作人员能够在各个岗位上的工作状态得到及时的反馈,而系统所需的工作人员的数量少,效率高。
运用SQL数据库管理系统开发的应用软件。
它旨在通过职工基本信息、职工加班信息、职工出勤信息、职工出差信息和职工请假信息这五方面完成对职工的考勤。
利用计算机技术做出这样一个系统就节省了很多人力资源,实现了科学、高效的职工考勤信息管理目标。
《职工考勤管理信息系统》经过如下的业务流程:①职工基本信息管理,添加,删除,更改②职工考勤管理,员工根据自己的班次在上下班时分别进行出勤操作,采用手动方式或者使用划卡机。
由人事部门专门的人员管理出勤和退勤信息。
③一般在每个月月初进行考勤汇总,汇总信息包括工作日的出勤情况、请假天数、出差天数、休假天数和不同性质的加班记录等。
《职工考勤管理信息系统》的优点:①提供简单、方便的操作。
③通过考勤管理无纸化的实现,使企业的考勤管理更加科学规范。
二、系统需求分析2.1需求概述本系统主要是方便企业公司管理员工的日常考勤信息。
对用户来说,主要是能够了解职工的考勤信息评比奖金和工资以及一些人事调动的依据。
2.2需求说明书◆职工信息:对职工信息进行统计,根据需要对其进行修改删除查询等操作。
包括职工姓名、职工编号、性别、年龄、职称。
◆出勤管理:对出勤动作、出勤信息的查询删除;上级对下级员工的出勤信息的确认;生成考勤统计信息并可以根据指定的条件进行查询。
实现从每日出勤到统计全部考勤信息的无纸化操作。
为方便数据传递和查阅,要根据需求提供不同时间短的考勤统计信息表。
作为工资的依据,以及评审年终奖金和个人的工作进展。
包括职工编号、上班打卡时间、下班打卡时间和缺勤记录。
◆出差管理管理者安排员工出差,对出差时间,次数的管理。
有利于企业核算出差的报销费用。
利于企业做出人事安排,去向。
包括职工编号,出差编号,出差起始时间,结束时间,统计天数。
对出差信息的插入、查询。
◆请假管理可以提出请假申请,并完善请假信息,如请假开始时间,请假结束时间,请假的次数进行管理。
作为职工的工资发放的依据,以及其他的工作安排。
职工编号,请假开始时间,结束时间,统计天数。
对其的插入、查询。
◆加班管理 对员工的加班时间进行统计,记录开始时间和结束时间,对加班信息实现添加,删除等操作。
作为工资的依据,以及个人的评比。
包括职工编号、加班开始时间、加班结束时间和统计加班时间。
2.3.业务流程图 NMN M M NMn N图1数据流图图2功能模块图职工 请假信息出勤信息出勤 出差信息出差 职工考勤管理信息系统 请假职 工 信 息 加班 加班信息 出 勤 信 息 出 差 信 息请假信息加 班 信 息图3系统数据流程图三、数据库概念结构设计3.1概述概念结构实际是整个数据库设计的关键,这个阶段主要的目标是通过对用户需求进行综合、归纳与抽象,形成一个独立于DBMS 的概念模型(E-R 图)。
它的主要特点是: ①能真实、充分地反映现实世界,包括事物与事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;②易于理解,因此可以用它和不熟悉计算机的用户交换意见;③易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;④易于向关系、网状、层次等各种数据模型转换。
3.2基本原则原则①:能独立的存在的事物,在其中有多个基本项描述的特征需要关注是,就应该把它作为实体。
在系统中,可得知有“职工信息”、“出勤信息”、“出差信息”,“请假信息”、“加班信息”。
原则②:实体的属性是实体的本质特征:联系的属性是联系的结果或状态。
原则③:信息分析中的到的基本想要在仅有实体联系图的一个地方作为属性得出。
3.21局部E-R 图在局部中,包括职工 企业管理 层审批 记录出勤时间 考勤员 出差记录 请假记录管理人员1、出勤信息2、出差信息3、请假信息4、加班信息3.22总E-R图四、数据库的逻辑结构和物理结构4.1概述4.11具体的逻辑结构职工信息(职工编号,姓名,性别,年龄,职称,)说明数据类型约束说明职工编号Char(10) 主键不允许空值职工姓名Char(15) 不允许空值性别Char(2) 性别只能是男或女,不允许空值年龄tinyint 不允许空值职称Char(10)不允许空值出勤信息(上班打卡时间,下班打卡时间,缺勤记录)字段名数据类型约束说明职工编号Char(10) 参照职工信息表的职工编号上班打卡时间datetime下班打卡时间datetime缺勤记录int 主键出差信息(出差起始时间,出差结束时间,统计天数)字段名数据类型约束说明职工编号Char(10)参照职工信息表的职工编号出差编号Char(10)出差起始时间datetimeJ结束时间datetime统计天数int 主键请假信息(请假开始时间,请假结束时间,统计天数)字段名数据类型约束说明职工编号Char(10)参照职工信息表的职工编号请假编号Char(10)主键请假开始时间datetime结束时间datetime统计天数int加班信息(加班开始时间,加班结束时间,统计加班总时间)字段名数据类型约束说明职工编号Char(10)参照职工信息表的职工编号加班编号Char(10)主键加班开始时间datetime不允许为空值结束时间datetime不允许为空值统计加班时间int4.1.2联系的关系模式:报到(职工编号,姓名,上班打卡时间,下班打卡时间,缺勤记录)安排(职工编号,出差起始时间,结束时间,出差总天数)申请(职工编号,姓名,请假开始时间,请假结束时间,请假天数)参加(职工编号,姓名,加班开始时间,加班结束时间,加班总时间)4.13对物理结构的概述:在物理结构中,数据的基本存取单位是存储记录。
有了逻辑结构以后,就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应。
存储记录就包括记录的组成,数据项的类型和长度等。
完整性设计包括实体完整性、参照完整性、用户定义完整性。
4.2原则原则1、(实体转换为关系模式):ERD中的每个独立的实体转换为一个关系模式,实体的属性咋成关系的属性,实体的主变室转换成关系的主码。
原则2、(从实体机器主从联系转换为关系模式):ERD中从一个实体及其从实体装换喂一个关系,从实体的属性及其主实体关系的属性组成的属性,其主实体关系的主码,在主从关系联系为一对多联系时还要加上可把同一实体个体所对应的从实体个体区分开来的,从实体的一族属性,作为该关系的主码。
岁子类实体可作为类似一对一联系的从实体的转换原则3、(一对多联系在关系模式中的表述):ERD中的一个一对多的联系通过在起“多”实体关系上增加的主码(作为外码)和联系本身的属性来表示。
原则4、(多对多联系转换关系):ERD的一个一个多对多联系转换为一个关系,其被联系实体关系的主码和该联系本身的属性一起组成的属性,被联系关系的主码组成该关系的符合主码。
根据以上4个原则,由E-R图导出的一般关系模型表:职工信息表职工编号职工姓名性别年龄职称出勤信息表职工编号上班打卡时间下班打卡时间缺勤记录出差信息职工编号出差编号出差起始时间结束时间统计天数请假信息职工编号请假开始时间结束时间统计天数加班记录职工编号加班开始时间结束时间统计加班总时间PDM的生成五、数据库应用系统的实现5.1概述此阶段是数据库设计:1.启动SQL Server 20052.建立数据库及其建表完成其完整性以及建立视图5.2创建数据库及脚本创建数据库create database职工考勤管理信息系统on(name=职工考勤管理信息系统,filename='C:\mssql\data\职工考勤管理信息系统.mdf')log on(name=职工考勤管理信息系统_log,filename='C:\mssql\data\职工考勤管理信息系统.ldf')USEGOCREATE SCHEMA职工考勤管理信息系统建表create table职工考勤管理信息系统.职工信息(职工编号char(10)primary key,职工姓名char(15)not null,性别char(2)check(性别='男'or性别='女')not null,年龄tinyint not null,职称char(10)not null)create table职工考勤管理信息系统.出勤信息(职工编号char(10)foreign key references职工考勤管理信息系统.职工信息(职工编号),上班打卡时间datetime,下班打卡时间datetime,缺勤记录int primary key)create table职工考勤管理信息系统.出差信息(职工编号char(10)foreign key references职工考勤管理信息系统.职工信息(职工编号), 出差编号char(10),出差起始时间datetime,结束时间datetime,统计天数int primary key(出差编号,统计天数))create table职工考勤管理信息系统.请假记录(职工编号char(10)foreign key references职工考勤管理信息系统.职工信息(职工编号),请假编号char(10)primary key,请假开始时间datetime,结束时间datetime,统计天数int)create table职工考勤管理信息系统.加班记录(职工编号char(10)foreign key references职工考勤管理信息系统.职工信息(职工编号),加班编号char(10)primary key,加班开始时间datetime not null,结束时间datetime not null,统计加班总时间int)脚本:USE [职工考勤管理信息系统]GO/****** 对象: Schema [职工考勤管理信息系统] 脚本日期: 12/18/2013 22:01:41 ******/CREATE SCHEMA [职工考勤管理信息系统] AUTHORIZATION [dbo]USE [职工考勤管理信息系统]GO/****** 对象: Table [职工考勤管理信息系统].[职工信息] 脚本日期: 12/28/2013 22:52:07 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [职工考勤管理信息系统].[职工信息]([职工编号] [char](10)COLLATE Chinese_PRC_CI_AS NOT NULL,[职工姓名] [char](15)COLLATE Chinese_PRC_CI_AS NOT NULL,[性别] [char](2)COLLATE Chinese_PRC_CI_AS NOT NULL,[年龄] [tinyint] NOT NULL,[职称] [char](10)COLLATE Chinese_PRC_CI_AS NOT NULL,PRIMARY KEY CLUSTERED([职工编号] ASC)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY])ON [PRIMARY]GOSET ANSI_PADDING OFFGOUSE [职工考勤管理信息系统]GOALTER TABLE[职工考勤管理信息系统].[职工信息] WITH CHECK ADD CHECK(([性别]='男' OR [性别]='女'))USE [职工考勤管理信息系统]GO/****** 对象: Table [职工考勤管理信息系统].[出勤信息] 脚本日期: 12/28/2013 22:51:25 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [职工考勤管理信息系统].[出勤信息]([职工编号] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[上班打卡时间] [datetime] NULL,[下班打卡时间] [datetime] NULL,[缺勤记录] [int] NOT NULL,PRIMARY KEY CLUSTERED([缺勤记录] ASC)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY])ON [PRIMARY]GOSET ANSI_PADDING OFFGOUSE [职工考勤管理信息系统]GOALTER TABLE [职工考勤管理信息系统].[出勤信息] WITH CHECK ADD FOREIGN KEY([职工编号])REFERENCES [职工考勤管理信息系统].[职工信息] ([职工编号])USE [职工考勤管理信息系统]GO/****** 对象: Table [职工考勤管理信息系统].[请假信息] 脚本日期: 12/28/2013 22:52:49 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [职工考勤管理信息系统].[请假信息]([职工编号] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[请假编号] [char](10)COLLATE Chinese_PRC_CI_AS NOT NULL,[请假开始时间] [datetime] NULL,[结束时间] [datetime] NULL,[统计天数] [int] NULL,PRIMARY KEY CLUSTERED([请假编号] ASC)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY])ON [PRIMARY]GOSET ANSI_PADDING OFFGOUSE [职工考勤管理信息系统]GOALTER TABLE [职工考勤管理信息系统].[请假信息] WITH CHECK ADD FOREIGN KEY([职工编号])REFERENCES [职工考勤管理信息系统].[职工信息] ([职工编号])USE [职工考勤管理信息系统]GO/****** 对象: Table [职工考勤管理信息系统].[加班记录] 脚本日期: 12/28/2013 22:53:24 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [职工考勤管理信息系统].[加班记录]([职工编号] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[加班编号] [char](10)COLLATE Chinese_PRC_CI_AS NOT NULL,[加班开始时间] [datetime] NOT NULL,[结束时间] [datetime] NOT NULL,[统计加班总时间] [int] NULL,PRIMARY KEY CLUSTERED([加班编号] ASC)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY])ON [PRIMARY]GOSET ANSI_PADDING OFFGOUSE [职工考勤管理信息系统]GOALTER TABLE [职工考勤管理信息系统].[加班记录] WITH CHECK ADD FOREIGN KEY([职工编号])REFERENCES [职工考勤管理信息系统].[职工信息] ([职工编号])USE [职工考勤管理信息系统]GO/****** 对象: Table [职工考勤管理信息系统].[出差信息] 脚本日期: 12/28/2013 22:49:45 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [职工考勤管理信息系统].[出差信息]([职工编号] [char](10)COLLATE Chinese_PRC_CI_AS NULL,[出差编号] [char](10)COLLATE Chinese_PRC_CI_AS NOT NULL,[出差起始时间] [datetime] NULL,[结束时间] [datetime] NULL,[统计天数] [int] NOT NULL,PRIMARY KEY CLUSTERED([出差编号] ASC,[统计天数] ASC)WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY])ON [PRIMARY]GOSET ANSI_PADDING OFFGOUSE [职工考勤管理信息系统]GOALTER TABLE [职工考勤管理信息系统].[出差信息] WITH CHECK ADD FOREIGN KEY([职工编号])REFERENCES [职工考勤管理信息系统].[职工信息] ([职工编号])5.3录入数据对职工信息表录入数据insert into职工考勤管理信息系统.职工信息(职工编号,职工姓名,性别,年龄,职称) values('001','沈长清','女','24','总经理')insert into职工考勤管理信息系统.职工信息values('002','林皓','男','27','部长')insert into职工考勤管理信息系统.职工信息values('003','金睿','男','31','副总裁')insert into职工考勤管理信息系统.职工信息values('004','潘伟森','男','52','董事长')insert into职工考勤管理信息系统.职工信息values('005','丁佳慧','女','23','部长')insert into职工考勤管理信息系统.职工信息values('006','欧海洋','男','49','经理')对出勤信息表录入数据insert into职工考勤管理信息系统.出勤信息(职工编号,上班打卡时间,下班打卡时间,缺勤记录)values('001','2013-12-10 08:00','2013-12-10 19:00','1')insert into职工考勤管理信息系统.出勤信息values('002','2013-12-10 08:00','2013-12-10 19:00','3')insert into职工考勤管理信息系统.出勤信息values('003','2013-12-10 08:00','2013-12-10 19:00','4')insert into职工考勤管理信息系统.出勤信息values('004','2013-12-10 08:00','2013-12-10 19:00','2')insert into职工考勤管理信息系统.出勤信息values('005','2013-12-10 08:00','2013-12-10 19:00','5')insert into职工考勤管理信息系统.出勤信息values('006','2013-12-10 08:00','2013-12-10 19:00','6')对出差信息表录入数据insert into职工考勤管理信息系统.出差信息(职工编号,出差编号,出差起始时间,结束时间,统计天数)values('001','100','2013-12-18 08:00','2013-12-20 19:00','2')insert into职工考勤管理信息系统.出差信息values('002','101','2013-12-20 08:00','2013-12-21 19:00','1')insert into职工考勤管理信息系统.出差信息values('003','102','2013-12-19 08:00','2013-12-22 19:00','3')insert into职工考勤管理信息系统.出差信息values('004','103','2013-12-19 08:00','2013-12-24 19:00','5')insert into职工考勤管理信息系统.出差信息values('005','104','2013-12-19 08:00','2013-12-25 19:00','6')insert into职工考勤管理信息系统.出差信息values('006','105','2013-12-19 08:00','2013-12-23 19:00','4')对请假信息表录入数据insert into职工考勤管理信息系统.请假信息(职工编号,请假编号,请假开始时间,结束时间,统计天数)values('001','0001','2013-12-03','2013-12-05','2')insert into职工考勤管理信息系统.请假信息values('002','0002','2013-12-03','2013-12-05','2')insert into职工考勤管理信息系统.请假信息values('003','0003','2013-12-03','2013-12-05','2')insert into职工考勤管理信息系统.请假信息values('004','0004','2013-12-03','2013-12-05','2')insert into职工考勤管理信息系统.请假信息values('005','0005','2013-12-03','2013-12-05','2')insert into职工考勤管理信息系统.请假信息values('006','0006','2013-12-03','2013-12-05','2')对加班记录表录入数据insert into职工考勤管理信息系统.加班记录(职工编号,加班编号,加班开始时间,结束时间,统计加班总时间)values('001','A1','2013-12-25 19:00','2013-12-25 21:00','2')insert into职工考勤管理信息系统.加班记录values('002','A2','2013-12-25 19:00','2013-12-25 21:00','2')insert into职工考勤管理信息系统.加班记录values('003','A3','2013-12-25 19:00','2013-12-25 21:00','2')insert into职工考勤管理信息系统.加班记录values('004','A4','2013-12-25 19:00','2013-12-25 21:00','2')insert into职工考勤管理信息系统.加班记录values('005','A5','2013-12-25 19:00','2013-12-25 21:00','2')insert into职工考勤管理信息系统.加班记录values('006','A6','2013-12-25 19:00','2013-12-25 21:00','2')5.4建立视图职工表和出勤表的某些信息的视图create view职工考勤管理信息系统.职工出勤信息(职工姓打卡时间名,职工编号,性别,职称上班打卡时间,下班打卡时间)as select职工信息.职工编号,职工姓名,性别,职称,上班打卡时间,下班打卡时间from职工考勤管理信息系统.职工信息join职工考勤管理信息系统.出勤信息on职工信息.职工编号=出勤信息.职工编号5.5数据的修改将欧海洋的名字改为哆啦a梦Update 职工考勤管理信息系统.职工信息set 职工姓名=’哆啦a梦’where 职工编号=’003’数据的删除对职工编号为004的职工的出勤信息的删除Delete职工考勤管理信息系统.出勤信息where职工编号='004'对加班记录的删除Delete职工考勤管理信息系统.加班记录where职工编号='005'5.6建立储存使用职工信息表中的某些字段才过程。