《数据库原理及应用》项目实训任务书一、题目:职工考勤管理信息系统二、目的与要求1.目的:1)锻炼学生的分析解决实际问题的能力;2)培养学生的数据库基础系统的分析、设计和开发能力2.基本要求1)《数据库原理及应用》课程设计采用以“项目小组”为单位进行,项目小组根据选定的项目,按计划进度完成项目的分析与设计及实现任务。2)每个班级分成两个大组,每组选出组长一名,负责考勤、作业的收集上交。3)题目自定或采用附录中的参考题目,每人选择一个题目4)数据库工具:Access或者SQLServer5)程序开发工具可以根据所学自行选择,或者采用ACCESS实现开发3.创新要求在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同三、信息描述系统基本信息描述,如:职工、考勤等。四、功能描述系统功能基本要求职工信息,包括职工编号、职工姓名、性别、年龄、职称等;出勤记录信息,包括上班打卡时间,下班打卡时间,缺勤记录等;出差信息,包括出差起始时间、结束时间、统计总共天数等;请假信息,包括请假开始时间,结束时间,统计请假天数等;加班信息,包括加班开始时间、结束时间、统计加班总时间。五、解决方案1.分析程序的功能要求,划分程序功能模块。2.画出系统流程图。3.重点是设计数据库(严格按照数据库设计步骤),完成系统功能。4.完成项目实训报告书。六、进度安排课程设计时间为两周(15周),安排如下阶段任务进度(天)数据库设计需求分析系统功能模块图,以及每个子系统的数据流图、数据字典。《系统需求说明书》1概念结构设计局部E-R图,合并总E-R图1逻辑结构设计转换为关系模式,优化,外模式1物理结构设计及数据库实现完成数据库实施,创建表、关系及完整性《数据库设计说明书》1第1页共21页系统实现系统实现及测试按照要求完成实现系统各项功能《系统详细设计说明书》1系统验收书写《项目实训报告》,验收答辩七、撰写项目实训报告及总结项目实训报告要求:包括需求分析、概念结构设计、逻辑结构设计、编码(详细写出编程步骤)、测试的步骤和内容、项目总结、参考资料等,不符合以上要求者,则本次设计以不及格记。八、参考资料《数据库原理及应用》《ACCESS数据库与程序设计》《ACCESS项目案例导航》数据库教研室2014.05.20图1系统结构图1.2.1模块管理(1)用户管理模块增加一名系统使用用户,同时设置密码和权限,当此用户要更改密码时,可以在修改密码模块中进行。必须具有一定权限才能进行此项操作。而当某些职工离职或者因某中缘故,不能再使用考勤系统,可以将该用户删除。可以更改拥护权限,使其具有访问某些模块的权限或者剥夺其访问某些模块的权限。所有系统使用用户都可能在此修改密码,以保障系统安全。(2)基本资料管理模块设置的时间有上午上、下班时间,下午上、下班时间,这个模块与上下班时间表相对应,以方便考勤操作。增加和删除请假类型,修改请假类型内容,并将操作结果存在请假类型表内。增加和删除外出类型,修改外出类型内容,并将操作结果存在外出类型表内。增加、删除和修改员工基本资料。登录考勤系统用户资料管理每日考勤管理请假考勤管理出差考勤管理加班考勤管理修改删除管理第2页共21页:图2考勤系统业务流程图设计的数据流程图如下所示:图3考勤系统的数据流程图员工正常上班加班请假出差加班表请假表出差表部门其它人员统计查询员工正常上班加班情况请假出差带职人员命令部门部门申请批准上班表第3页共21页设计的E-R图如下所示图4考勤系统的E-R流程图该考勤管理系统中主要包括了员工的基本信息(姓名、性别、所属部门等),查询员工的基本信息,可根据员工的实际工资情况或实际的出勤情况查看员工的基本信息等;另外还有权限管理和日志的功能。将生成的代码,复制。通过SQL2000,在数据库中新建的表如下所示:员工正常上班加班请假出差考勤表加班表请假表出差表姓名密码进入公司时间上班时间下班时间加班时间类型性别请假时间请假类型出差时间出差类型上班时间管理员记录日期密码姓名上班日期第4页共21页图5数据库中建立的表1.2.3数据表的设计(1)用户表的创建用户表的创建脚本如下:createtable用户(用户名char(30)notnull,员工号char(30)null,权限名char(30)null,用户密码intnotnull,权限号intnotnull,constraintPK_用户primarykey(用户名))go用户表的字段格式说明如下所示:图6用户表的属性图7用户表(2)权限表的创建权限表是用来确定某一权限类型所能访问的系统模块。权限表的创建脚本如下所示:createtable权限表(权限名char(30)notnull,用户管理char(2)notnull,基本资料更改char(2)notnull,请假管理char(2)notnull,外出管理char(2)notnull,加班管理char(2)notnull,修改考勤资料char(2)notnull,数据库操作char(2)notnull,第5页共21页日志删除char(2)notnull,constraintPK_权限表primarykey(权限名))go权限表的字段格式说明如下所示:图8权限表的属性图9权限表(3)出勤资料表的创建出勤资料表用来记录员工每天实际上下班时间。这张表保存的数据是考勤的依据。出勤资料表的创建脚本如下所示:createtable出勤资料表(记录号intnotnull,员工基_员工号char(30)null,员工号char(40)notnull,上午上班时间datetimenotnull,上午下班时间datetimenotnull,下午上班时间datetimenotnull,下午下班时间datetimenotnull,记录日期datetimenotnull,constraintPK_出勤资料表primarykey(记录号))go出勤资料表的字段格式说明如下所示:图10出勤资料表的属性第6页共21页图11出勤资料表(4)员工基本资料表为了判断某员工是否已经考勤,在员工表中的另一个字段,字段名为“考勤”,每天考勤前,将此字段值都设为0,每考勤一个员工,则将其字段值该为1,以后操作时根据其字段判断其是否已经考勤。其创建脚本为:createtable员工基本资料表(员工号char(30)notnull,员工名char(30)notnull,性别tinyintnotnull,年龄intnotnull,入公司时间datetimenotnull,住址char(50)notnull,联系电话char(20)null,手机char(20)null,电子邮箱char(30)null,考勤tinyintnotnull,constraintPK_员工基本资料表primarykey(员工号))go员工基本资料表的年格式如下所示:图12员工基本资料表的属性图13员工基本资料表(5)加班表的创建加班表用来保存员工的加班信息。createtable加班表(记录号intnotnull,员工基_员工号char(30)null,员工号char(20)notnull,员工名char(30)notnull,加班类型char(30)notnull,起始时间datetimenotnull,结束时间datetimenotnull,第7页共21页constraintPK_加班表primarykey(记录号))go加班表的字段格式说明如下所示:图14加班表的属性图15加班表(6)请假表的创建请假表是用来保存员工的请假记录。其创建脚本为:createtable请假表(记录号intnotnull,类型名char(30)null,员工基_员工号char(30)null,员工号char(20)notnull,员工名char(20)notnull,请假类型char(30)notnull,起始时间datetimenotnull,结束时间datetimenotnull,constraintPK_请假表primarykey(记录号))go请假表的字段格式如下所示:图16请假表的属性图17请假表(7)外出表的创建外出表是用来保存员工的外出记录,数据格式。第8页共21页外出表的创建脚本如下:createtable外出表(记录号intnotnull,类型名char(30)null,员工基_员工号char(30)null,员工号char(20)notnull,员工名char(30)notnull,外出类型char(30)notnull,起始时间datetimenotnull,结束时间datetimenotnull,constraintPK_外出表primarykey(记录号))Go外出表的字段格式如下所示:图18外出表的属性图19外出表(8)日志表的创建。每一个实用的数据库应用系统,总是少不了日志管理。日志是用来记录系统的使用情况,以便当系统遭到非法使用时,能够从日志表中找到使用记录,以便进行处理。日志表的创建脚本为:createtable日志表(记录号binary(8)notnull,用户名char(30)notnull,操作char(127)notnull,日期datetimenotnull,constraintPK_日志表primarykey(记录号))go日志表的字段格式说明如下所示:图20日志表的属性第9页共21页图21日志表(9)统计表的创建。每一个用户有时会需要去查询一下哪天是否迟到的情况,统计表就很方便的提供了这一功能。createtable统计表(日期datetimenotnull,记录号binary(8)notnull,用户名char(30)notnull,迟到次数char(127)notnull,)Go图22统计表1.2.4代码的调试(1在表格内加入数据在SQL查询分析器中输入以下代码:insertinto外出表(记录号,类型名,员工基_员工号,员工号,员工名,外出类型,起始时间,结束时间)values('119','出差','a80','a80','邓月','出差',2008-06-09,2008-06-12)点击运行后输入:select*from外出表得出以下结果:图23加入数据的表(2)查询数据:在SQL查询分析器中输入以下代码:select*from加班表点击运行后输入,得出以下结果:第10页共21页图24查询数据的表(3)修改数据:在SQL查询分析器中输入以下代码:update外出表set员工名='周丹'where记录号=119select*from外出表点击运行后输入,得出以下结果:图25修改数据的表(4)删除数据:在SQL查询分析器中输入以下代码:Deletefrom外出表where员工名='周丹'select*from外出表点击运行后输入,得出以下结果:第11页共21页图26删除数据的表附录altertable出勤资料表dropconstraintFK_出勤资料表_REFERENCE_员工基本资料表goaltertable加班表dropconstraintFK_加班表_REFERENCE_员工基本资料表goaltertable外出表dropconstraintFK_外出表_REFERENCE_员工基本资料表goaltertable外出表dropconstraintFK_外出表_REFERENCE_外出类型表goaltertable日志表dropconstraintFK_日志表_REFERENCE_用户goaltertable用户dropconstraintFK_用户_REFERENCE_员工基本资料表goaltertable用户dropconstraintFK_用户_REFERENCE_权限表goaltertable请假表dropconstraintFK_请假表_REFERENCE_员工基本资料表goaltertable请假表dropconstraintFK_请假表_REFERENCE_请假类型表go/*=============