数据库原理课程设计报告考勤管理系统.docx
《数据库原理课程设计报告考勤管理系统.docx》由会员分享,可在线阅读,更多相关《数据库原理课程设计报告考勤管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
![数据库原理课程设计报告考勤管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/22/d371f35c-fffd-42cd-864c-810f789f6c36/d371f35c-fffd-42cd-864c-810f789f6c361.gif)
数据库原理课程设计报告考勤管理系统
重庆科技学院
课程设计报告
院(系):
_电气与信息工程学院_专业班级:
学生姓名:
学号:
设计地点(单位)______第一实验楼I524___________
设计题目:
____________考勤管理系统设计__________
完成日期:
2012年7月6日
指导教师评语:
_______________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
________________
指导教师(签字):
________________
摘要
在现代企业管理中,企业信息化是提高企业管理效率的重要手段。
考勤管理是企业管理的重要部分,在公司起着越来越重要作用。
本课程设计主要是对公司各项人员的考勤管理。
考勤管理系统分为8个模块,基本信息管理模块、出勤记录模块、缺勤记录模块、加班记录模块、出差记录模块、请假记录模块。
此外,该数据库的设计还可与工资管理系统等其它系统配合使用,使得企业员工的管理更加现代化、科学化、自动化,并可以很好地督促企业员工更好地为企业谋福利。
本系统采用SQLServer2005作为数据库,使用ODBC作为数据源。
在实现数据库部分功能时按照要求创建了触发器和存储过程以及视图。
关键词:
考勤管理SQLServer2005触发器存储过程
课程设计任务书
设计题目:
考勤管理系统设计
学生姓名
平张川
课程名称
数据库原理课程设计
专业班级
计科2010-03
地点
I524和计算机自主学习中心
起止时间
2012.6.25-2012.7.6
设计内容及要求
内容:
员工考勤系统能够和考勤机相连,可以把数据导入数据库中,从而完成自动、高效、科学的考勤信息的输入。
可以完成员工考勤信息的手工输入、修改、删除等操作。
可以设定缺勤的类型,如病假、事假等。
可以进行考勤情况统计,例如月终、年终统计,生成统计报表并将统计结果打印出来。
可以对数据库进行维护,例如数据备份。
要有相应的帮助文件。
要求:
按照数据库系统开发步骤进行数据库概念结构设计、逻辑结构设计、物理结构设计,使学生掌握数据库应用软件的开发流程,SQL语句的使用和存储过程的使用。
设计
参数
至少5个表结构;3个存储过程;2个触发器;3个视图。
进度
要求
19.1讲课阅读分析任务书制订设计计划
19.2-3需求分析概念结构设计
19.4-5概念结构设计准备文挡
20.1-3逻辑结构设计物理结构设计
20.4-5写文挡答辩交设计报告书
参考资料
1.雷亮等《数据库原理课程设计》指导书
2.王珊、萨师煊.《数据库系统概述》(第四版).北京:
高等教育出版社.2006。
3.C.J.Date著.孟小峰、王珊等译.《数据库系统导论》(第8版).北京:
机械工业出版社.2007。
4.陈根才等.数据库课程设计.浙江.浙江大学出版社.2007
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
雷亮/游明英/张亚军/裴仰军
2012年07月05日
1需求分析
1.1系统目标设计
实现企业的考勤管理系统化,使得企业员工的管理更加现代化、科学化、自动化,并可以很好地督促企业员工,更好地为企业谋福利。
1.2系统功能分析
(1):
为了保证员工信息及部门信息的添加、删除、修改操作方便,在数据库中建立了员工信息表以及部门信息表,其中员工信息表包括了每个员工的姓名、性别、年龄、所在部门、职位、电话、家庭住址等详细的个人资料。
(2):
为了方便员工考勤系统能够和考勤机相连,可以把数据导入数据库中,从而完成自动、高效、科学的考勤信息的输入,我们建立了一个出勤记录表,员工在上班的时候输入员工信息号,就可以自动录入当前的时间,表示上班打卡,在员工下班的时候只需输入今天上班时的出勤记录编号便可以自动录入当前下班的时间,方便而高效的对员工上下班进行了考勤。
(3):
可以对缺勤类型和请假类型进行添加、删除和修改,此外还有缺勤记录表和请假记录表及加班记录表。
其中缺勤记录表的记录是由出勤记录表自动审核生成的。
有了这三个表,企业可以方便的根据这两个表对员工的工资和津贴进行相应的管理
(4):
有出差记录表对员工的出差记录进行管理。
(5):
在所有的考勤表中对应的汇总表都是由触发器自动生成的,总时间=结束时间–起始时间。
(6):
月记录表,年度记录表是通过存储过程统计生成的,可以对企业的每一个员工的月考勤记录和年考勤记录进行汇总统计。
1.3功能模块分析
根据系统功能的基本要求,可对整个系统划分为几个模块
图1.1功能模块分析
1.4系统全局数据流图
系统的全局数据流图,也称第一层数据流图,是从整体上描述系统的数据流,反映系统数据的整体流向,给设计者、开发者和用户一个总体描述。
图1.2数据流图
1.5数据字典
表1.1职工信息表(worker)
列名
说明
字段类型
约束控制
WID
职工编号
Int
主键
WName
职工姓名
Char(6)
非空
WSex
性别
Char
(2)
‘男’或‘女’
Wage
年龄
Int
非空
Wdegree
职称
Char(8)
非空
Wadd
住址
Char(16)
非空
WTel
手机号
Char(11)
非空
WE-mail
电子邮箱
Char(16)
允许为空
表1.2部门信息表(Charge)
列名
说明
字段类型
约束控制
CID
部门编号
Int
主键
CName
部门名称
Char(16)
非空
表1.3出勤记录表(worknote)
列名
说明
字段类型
约束控制
Wnum
出勤编号
Int
主键
WorkTime
上班时间
Datetime
允许为空
EndTime
下班时间
Datetime
允许为空
表1.4出差记录表(Outnote)
列名
说明
字段类型
约束控制
Outnum
出差编号
Int
主键
Outtime
开始时间
Datetime
允许为空
Backtime
结束时间
Datetime
允许为空
Outdays
统计天数
Int
允许为空
表1.5加班记录表(Overnote)
列名
说明
字段类型
约束控制
Overnum
加班编号
Int
主键
Overtime
开始时间
Datetime
允许为空
Overendtime
结束时间
Datetime
允许为空
Overtimes
时间统计
Float
允许为空
表1.6请假记录表(Offnode)
列名
说明
字段类型
约束控制
Offnum
请假编号
Int
主键
Offtime
请假开始时间
Datetime
允许为空
Offendtime
请假结束时间
Datetime
允许为空
Offdays
统计天数
Float
允许为空
表1.7缺勤记录表(NWnode)
列名
说明
字段类型
约束控制
NWnum
缺勤编号
Int
主键
NWtime
缺勤时间
Datetime
非空
表1.8请假类型表(Offtype)
列名
说明
字段类型
约束控制
Offtnum
请假类型编号
Int
主键
Offtype
请假类型
Char(16)
非空
表1.9缺勤类型表(NWtype)
列名
说明
字段类型
约束控制
NWtnum
缺勤类型编号
Int
主键
NWtype
缺勤类型
Char(16)
非空
表1.10月统计记录表(Monthnote)
列名
说明
字段类型
约束控制
Monthnum
月统计编号
Int
主键
MWorknote
出勤月统计
Int
允许为空
MOutnote
出差月统计
Int
允许为空
MOvernote
加班月统计
Float
允许为空
MOffnode
请假月统计
Int
允许为空
MNWnode
缺勤月统计
Int
允许为空
_Year
年
Int
允许为空
_Month
月
Int
允许为空
表1.11年统计记录表(Yearnote)
列名
说明
字段类型
约束控制
Yearhnum
年统计编号
Int
主键
YWorknote
出勤年统计
Int
允许为空
YOutnote
出差年统计
Int
允许为空
YOvernote
加班年统计
Float
允许为空
YOffnode
请假年统计
Int
允许为空
YNWnode
缺勤年统计
Int
允许为空
Y_year
年
Int
允许为空
2概念结构设计
2.1构成系统的实体型
由考勤管理系统的数据流图和数据字典,抽取出系统的8个主要实体,包括:
员工、出勤记录、缺勤记录、加班记录、请假记录、出差记录、月考勤汇总、年度考勤汇总。
员工实体型属性:
WIDWNameWSexWageWdegreeWaddWTelWE-mail
出勤记录实体型属性:
WnumWorkTimeEndTime
缺勤记录实体型属性:
NWnumNWtime
加班记录记录实体型属性:
OvernumOvertimeOverendtimeOvertimes
请假记录实体型属性:
OffnumOfftimeOffendtimeOffdays
出差记录实体型属性:
OutnumOuttimeBacktimeOutdays
月考勤汇总实体型属性:
MonthnumMWorknoteMOutnoteMOvernoteMOffnodeMNWnode_Year_Month
年度考勤汇总实体型属性:
YearhnumYWorknoteYOutnoteYOvernoteYOffnodeYNWnodeY_year
2.2工资管理系统E-R图
图2.1考勤管理系统E-R图
3逻辑结构设计
3.1逻辑结构简介
逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
设计逻辑结构一般分为3步进行:
(1)将概念结构转换为一般的关系、网状、层次模型;
(2)将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;
(3)对数据模型进行优化。
3.2关系模型
将E-R图转换为关系模型实际上就是要讲实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:
一个实体型转换为一个关系模式,一个多对多的关系可以转化为一个关系模式,而一对多的关系可以融合在其他的相关的关系模式中。
例如:
(1)职工与出勤记录之间是一对多的关系,所以将职工和出勤记录以及属于关系设计成以下关系模式:
职工(WIDWNameWSexWageWdegreeWaddWTelWE-mail)
出勤记录(WnumWorkTimeEndTime)
属于(WIDWNameWSexWageWdegreeWaddWTelWE-mailWnumWorkTimeEndTime)
(2)职工与年统计记录之间是一对多的关系,所以职工和年统计记录以及属于关系设计成以下关系模式:
职工(WIDWNameWSexWageWdegreeWaddWTelWE-mail)
年统计记录(YearhnumYWorknoteYOutnoteYOvernoteYOffnodeYNWnodeY_year)
属于(WIDWNameWSexWageWdegreeWaddWTelWE-mailYearhnumYWorknoteYOutnoteYOvernoteYOffnodeYNWnodeY_year)
(3)缺勤记录与缺勤类型是多对一的关系,所以缺勤记录和缺勤类型以及属于关系设计成以下关系模式:
缺勤记录(NWnumNWtime)
缺勤类型(NWtnumNWtype)
属于(NWnumNWtimeNWtnumNWtype)
4物理模型设计
数据库物理设计是将逻辑设计影射到存储介质上,利用可用的硬件和软件功能尽可能快地对数据进行物理访问和维护。
4.1定义数据库
SQLServer2000数据库文件分为3中类型:
主数据文件、次数据文件和日志文件。
通过SQL语言进行数据库创建,创建数据库的语句如下:
CreatedatabasekaoQsystem;
4.2创建表
创建员工基本信息表worker
createtableworker(
WIDintnotnull,
CIDintnotnull,
WNamechar(6)notnull,
WSexchar
(2)notnull,
Wageintnotnull,
Wdegreechar(8)notnull,
Waddchar(16)notnull,
WTelchar(11)notnull,
"WE-mail"char(16)null,
constraintPK_WORKERprimarykeynonclustered(WID)
)
请假类型表Offtype
createtableOfftype(
Offtnumintnotnull,
Offtypechar(16)notnull,
constraintPK_OFFTYPEprimarykeynonclustered(Offtnum)
)
出差记录表Outnote
createtableOutnote(
Outnumintnotnull,
WIDintnotnull,
Outtimedatetimenull,
Backtimedatetimenull,
Outdaysintnull,
constraintPK_OUTNOTEprimarykeynonclustered(Outnum)
)
加班记录表(Overnote)
createtableOvernote(
Overnumintnotnull,
WIDintnotnull,
Overtimedatetimenull,
Overendtimedatetimenull,
Overdaysfloat
(2)null,
constraintPK_OVERNOTEprimarykeynonclustered(Overnum)
)
年考勤记录表Yearnote
createtableYearnote(
Yearhnumintnotnull,
WIDintnotnull,
YWorknoteintnull,
YOutnoteintnull,
YOvernotefloat
(2)null,
YOffnodeintnull,
YNWnodeintnull,
Y_yearintnull,
constraintPK_YEARNOTEprimarykeynonclustered(Yearhnum)
)
出勤记录表Worknote
createtableworknote(
Wnumintnotnull,
WIDintnotnull,
WorkTimedatetimenull,
EndTimedatetimenull,
constraintPK_WORKNOTEprimarykeynonclustered(Wnum)
)
部门信息表Charge
createtableCharge(
CIDintnotnull,
CNamechar(16)notnull,
constraintPK_CHARGEprimarykeynonclustered(CID)
)
月考勤记录表Monthnote
createtableMonthnote(
Monthnumintnotnull,
WIDintnotnull,
MWorknoteintnull,
MOutnoteintnull,
MOvernotefloat
(2)null,
MOffnodeintnull,
MNWnodeintnull,
_Yearintnull,
_Monthintnull,
constraintPK_MONTHNOTEprimarykeynonclustered(Monthnum)
)
缺勤记录表NWnode
createtableNWnode(
NWnumintnotnull,
NWtnumintnotnull,
WIDintnotnull,
NWtimedatetimenotnull,
constraintPK_NWNODEprimarykeynonclustered(NWnum)
)
缺勤类型表NWtype
createtableNWtype(
NWtnumintnotnull,
NWtypechar(16)notnull,
constraintPK_NWTYPEprimarykeynonclustered(NWtnum)
)
4.3创建存储过程
在员工记录表中创建删除员工信息的存储过程:
USE[kaoQsystem]
GO
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
createprocedure[dbo].[delete_worker]
(@WIDint)
as
begin
deletefromdbo.workerwhereWID=@WID
end
在员工信息表上创建添加员工信息的存储过程:
USE[kaoQsystem]
GO
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
createprocedure[dbo].[insert_worker]
(@CIDint,@WNamechar(6),@WSexchar
(2),@Wageint,@Wdegreechar(8),@Waddchar(16),@WTelchar(11),@WE_mailchar(16))
as
begin
insertintodbo.worker(CID,WName,WSex,Wage,Wdegree,Wadd,WTel,WE_mail)values(@CID,@WName,@WSex,@Wage,@Wdegree,@Wadd,@WTel,@WE_mail)
end
在月记录表上建立一个统计月考勤记录信息的存储过程:
USE[kaoQsystem]
GO
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
createprocedure[dbo].[M_note](@yint,@mint,@WIDvarchar(10))
as
declare@Worknote_timesint
declare@Outnote_timesint
declare@Overnote_timesint
declare@Offnode_timesint
declare@NWnode_timesint
execute@Worknote_times=M_worknote@y,@m,@WID
execute@Outnote_times=M_outnote@y,@m,@WID
execute@Overnote_times=M_overnote@y,@m,@WID
execute@Offnode_times=M_offnote@y,@m,@WID
execute@NWnode_times=M_NWnote@y,@m,@WID
insertintodbo.Monthnote(WID,MWorknote,MOutnote,MOvernote,MOffnode,MNWnode,_Year,_Month)
values(@WID,@Worknote_times,@Outnote_times,@Overnote_times,@Offnode_times,@NWnode_times,@y,@m)
4.4创建触发器
在请假记录表中当请假结束的天数插入后创建统计请假天数的触发器:
USE[kaoQsystem]
GO
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
createtrigger[dbo].[Outnote_Offdays]on[dbo].[Offnote]
afterinsert,update
as
begin
setnocounton
declare@_offnumint
declare@_offtimedatetime
declare@_offendtimedatetime
declare@_offdaysfloat
select@_offendtime=inserted.Offendtime,@_offnum=inserted.Offnum,@_offtime=inserted.Offtime
frominserted
set@_offdays=datediff(hour,@_o