• 651.00 KB
  • 2022-05-17 13:37:24 发布

数据库课程设计--考勤管理信息系统.doc

  • 23页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
成绩目录1可行性研究12需求分析32.1功能需求32.2数据流图42.3功能模块图42.4系统数据流程图52.5数据词典73概念结构设计........................................................................................................................83.1接口设计.........................................................................................................................83.2局部E-R图......................................................................................................................93.3整体E-R图......................................................................................................................94逻辑结构设计104.1关系模式104.2模式优化..115数据实施与维护115.1数据表的创建115.2建立存储过程155.3创建触发器166测试177.课程设计总计........................................................................................................................21参考文献2122 1.可行性研究1.1问题描述随着企业人事管理的日趋复杂和企业人员的增多,企业的考勤管理变得越来越复杂。规范的考勤管理是现代企业提高管理效益的重要保证,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代企业的需求。随着计算机技术和通信技术的迅速发展,将传统的人工考勤管理计算机化,建立一个高效率的、无差错的考勤管理系统,能够有效的帮助企业实现“公正考勤,高效薪资”,使企业的管理水平登上一个新的台阶。企业考勤管理经过如下的业务流程:(1)员工基本信息管理,添加,删除,更改(2)员工考勤管理,员工根据自己的班次在上下班时分别进行出勤操作,采用手动方式或者使用划卡机。由人事部门专门的人员管理出勤和退勤信息。(3)一般在每个月月初进行考勤汇总,汇总信息包括工作日的出勤情况、请假天数、出差天数、休假天数和不同性质的加班记录等。1.2研究目的待开发的系统的名称为企业职工在线考勤系统。我们以中小型企业的考勤管理业务为依托,结合科学管理的理论,设计并开发一个企业考勤管理信息系统,提供一个科学合理的考勤管理解决方案,彻底实现无纸化作业。根据管理权限的不同,将界面分为一般职员、部门经理、系统管理员和最高管理者四个层次,系统目标如下:(1)提供简单、方便的操作。(2)根据企业原来的考勤管理制度,为企业不同管理层次提供相应的功能。(3)通过考勤管理无纸化的实现,使企业的考勤管理更加科学规范。(4)节省考勤管理的成本。(5)提高企业考勤管理的透明度和效率,防止“虚假出勤“的现象。(6)对系统提供必要的权限管理。22 (7)为企业实现整体信息化的其他相关系统提供必要的数据支持。1.3开发环境和运行环境公司考勤管理系统这运用了当前最流行的SQLSERVER20005运行和开发的1.库、基本表的建立和修改:在SQL-SERVER环境下用CREATETABLE建立库以及库中基本表。2.数据加载:用手工录入或导入等方法实现基本表中的数据加载。3.单表查询以及多表查询:在建立的基本表中使用select基本格式和聚集函数;设计合适的视图,实现多表间查询。4.触发器:设计触发器,可实现表间关联字段修改时的完整性等问题。5.存储器:设计存储过程,并用语句调用。6.用SQLSERVER2000/2005等开发环境设计、实现系统主要功能。1.4预期结果和意义考勤系统能实现职工日考勤记录,记录请假信息,记录出差信息等功能,并最终所有信息归入月统计中去。本考勤系统建立了一个高效率的、无差错的考勤管理系统,能够有效的帮助企业实现“公正考勤,高效薪资”,使企业的管理水平登上一个新的台阶。2需求分析2.1功能需求(1)数据管理功能是设置和管理基础数据,包括加班、请假类别的定义和班次的定义,在全县范围内可以进行基础数据的添加、删除和修改。(2)考勤管理包括出勤动作、出勤信息的查询;上级对下级员工的出勤信息的确认;生成考勤统计信息并可以根据指定的条件进行查询。实现从每日出勤到统计全部考勤信息的无纸化操作。为方便数据传递和查阅,要根据需求提供不同时间短的考勤统计信息表。(3)加班管理对员工的加班时间进行统计,记录开始时间和结束时间,对加班信息实现添加,删除等操作。(4)请假管理22 可以提出请假申请,并完善请假信息,如请假开始时间,请假结束时间,请假的次数进行管理。(5)出差管理管理者安排员工出差,对出差时间,次数的管理。2.2功能模块图如图2.2所示,图为功能模块图职工考勤管理信息系统员工基本信息出差记录出勤记录请假记录月统计加班记录2.2功能模块图2.3系统数据流程图如图2.3所示,图为数据流程图各种统计信息管理人员考勤员员工经理审批月度员工考勤统计请假、值班、出差记录上下班时间安排员工出勤记录记录出勤时间2.3数据流程图22 2.4数据字典在物理结构中,数据的基本存取单位是存储记录。有了逻辑结构以后,就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应。存储记录就包括记录的组成,数据项的类型和长度等。2概念结构设计3.1局部E-R图(1)员工E-R图,如图3.1.1所示年龄姓名编号性别职工(2)图2.3.2为出勤E-R图年龄职工编号下班时间缺勤记录上班时间出勤记录(3)图3.3为出差E-R图出差编号职工编号结束时间缺勤记录开始时间出差记录22 (4)加班E-R图如图3.4所示加班编号职工编号加班统计开始时间出勤记录结束时间(5)请假E-R图如图3.5所示请假编号编号结束时间请假统计开始时间请假记录(6)月统计E-R图职工编号下班时间缺勤记录上班时间出勤记录22 3.2整体E-R图如图3.7所示,图为整体E-R图职工性别年龄编号姓名出勤出勤记录上班时间缺勤记录下班时间出差出差记录起始时间统计天数请假信息请假结束时间统计天数开始时间加班加班信息起始时间结束时间时间统计月统计统计出差统计加班统计出勤统计请假统计请假编号加班编号出差编号职称结束时间4逻辑结构设计4.1关系模式职工(职工编号,姓名,性别,年龄)22 出勤记录(职工编号,出勤编号,上班时间,下班时间,缺勤记录)出差记录(职工编号,出差编号,开始时间,结束时间,统计天数)加班信息(职工编号,加班编号,加班开始时间,加班结束时间,加班时间统计)请假信息(职工编号,请假编号,请假开始时间,请假结束时间,请假时间统计)月统计(职工编号,出勤月统计,出差月统计,加班月统计,请假月统计)4.2模式优化职工、出勤记录、出差记录、加班信息、请假信息、月统计不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF。5数据实施和维护5.1数据表的创建表的建立表的属性22 出勤资料员工出基本资料表属性22 加班资料表属性加班资料表请假资料表属性请假资料表出差资料表属性出差资料表22 日志资料表日志资料5.2建立存储过程(1)建立一个向员工出勤表中插入数据的存储过程CREATEPROCEDUREinsert_in(@W_idCHAR(4),@w_numint,@work_timdatetime,@end_timdatetime,@work_notedatetime)ASinsertinto出勤表values(@W_id,@w_num,@work_tim,@end_tim,@work_note)goexecinsert_in@W_id="0001",@w_num=1,@work_tim="2010/11/1",@end_tim="2010/11/1",@work_note=nullgoselect*fromw出勤表(2)建立一个向员工出勤表中插入数据的存储过程22 CREATEPROCEDUREinsert_in@W_idCHAR(10),@w_numint,@work_timCHAR(20),@end_timCHAR(20),@work_noteCHAR(20)ASinsertintowork_notevalues(@W_id,@w_num,@work_tim,@end_tim,@work_note)goexecinsert_in@W_id="009",@w_num=029,@work_tim="2010/11/18:00",@end_tim="2010/11/120:00",@work_note="全勤"select*from出勤表5.3创建触发器(1)建立一个触发器,当想考勤记录中添加一条新的考勤记录时,触发统计该员工一个月的考勤记录,并存入月统计的月考勤记录表中。请假记录,出差记录,加班记录分别建立此类触发器。CREATETRIGGERmounth_insertON出勤表FORinsertASbeginifupdate(w_id)updatemounth_noteset出勤表=(selectcount(work_tim)from出勤表wherew_id=(SELECTW_idFROMinserted)groupbyw_id)wherew_id=(SELECTW_idFROMinserted)end22 (2)建立一个触发器,根据员工姓名对员工信息进行修改createtriggerupdate_W_idon员工基本资料forupdateasdeclare@before_updatechar(10),@after_updatechar(10)select@before_update=W_idfromdeletedselect@after_update=W_idfrominsertedif(@after_update>100)beginprint"人数过多,超出公司承受能力,请核实"rollbacktransactionendupdateworkersetW_id="008"wherew_name="李勇"updateworkersetW_id="108"wherew_name="李勇"(3)创建一个触发器,当删除员工基本信息时,同事也删除其他表中员工的信息。如当删除员工基本资料表中信息是,也删除员工出勤表中的内容,请假记录,出差记录,加班记录分别建立此类触发器。createtriggerdelete_dataon员工基本信息fordeleteasdeletefrom出勤表wherew_id=(selectw_idfromdeleted)6测试(1)在表格内加入数据在SQL查询分析器中输入以下代码:insertinto外出表(记录号,类型名,员工基_员工号,员工号,员工名,出差22 类型,起始时间,结束时间)values("119","出差","a80","a80","邓月","出差",2008-06-09,2008-06-12)点击运行后输入:select*from外出表得出以下结果:(2)查询数据:在SQL查询分析器中输入以下代码:点击运行后输入,得出以下结果:(3)修改数据:在SQL查询分析器中输入以下代码:update外出表set员工名="周丹"where记录号=119select*from外出表点击运行后输入,得出以下22 (4)删除数据:在SQL查询分析器中输入以下代码:deletefrom外出表where员工名="周丹"select*from外出表点击运行后输入,得出以下结果:7课程设计结论本系统在信息表述上还不完备,一些模块的信息还不够详细,主要是提供的报表有限。系统虽然针对中小企业的考勤管理业务。对使用打卡机、指纹机进行出、退勤的企业,还需要添加一个采集打卡机和指纹机的数据模块。下一步可以再熟悉系统设计风格的基础上,在各个界面上进一步添加多需要的字段和报表,或者添加采集数据的模块,以扩充系统的功能。本系统的创新点在于触发器的应用,每增加一条记录,都会重新统计一下记录次数,并存入月纪录中,使得信息更加准确。22 在设计时由于对编程语言知识的匮乏,所以数据库的界面化没有做成,如若想更加完善数据库,应该结合一些编程语言,使得操作界面更加人性化,简单化。通过本次设计,我对数据库有了更深入的了解,见证了一个系统从无到有,从漏洞百出到逐渐完善的过称,是我所学的只是得以所用,加深了对数据库的理解,在设计过程中有很多不会的问题,通过自己查阅资料逐渐解决,这本身就是一个学习的过程,不仅学到了只是,还掌握了学习方法。同时让我认识到自己所学知识的匮乏,所以要全面发展自己的专业,一个人的能力总是有限的,所以团队合作很重要,在做设计的过程中要学习他人之长,听取他人的意见,虚心向别人请教。相互配合做好自己的工作,才能成为一名合格的网路工程师。虽然自己做的设计还不是很完善,但我觉得很有意义,对我以及我今后的人生都很有帮助。参考文献:[1]胡师彦.微软SQLServer2000数据库的特点及查询优化研究[J].兰州工业高等专科学校学报,2002,(01).[2]王西文,张广智.浅谈SQLServer应用方法和技巧[J].山东水利,2002,(12).[3]何思文.基于SQLServer2000的数据仓库的实现[J].广东科技,2004,(05).[4]白青海,张善勇,郑瑛.ADO与SQLSERVER2000数据库应用程序开发探讨[J].内蒙古民族大学学报(自然科学版),2003,(02).[5]李丹.浅谈SQLServer2000中高性能的备份与恢复[J].河北工程技术职业学院学报,2004,(02).[6]李欣苓.SQLServer2000中几个系统存储过程的应用[J].水利水文自动化,2003,(01).[7]余建英,何旭洪.PwerBuilder数据库系统开发实力导航(第二版).北京.人民邮电出版社.2004.4.179~239.[822 ]王晟,王松,刘强.数据库开发经典案例解析.北京.清华大学出版社.2005.7.310~364.[9]王珊,萨师煊.数据库系统概论(第四版).北京.高等教育出版社.2006.3.210~225.[10]周新会,周金根.数据库通用模块及典型系统开发实力导航(第一版).北京.人民邮电出版社.2006.2.185~214.附录altertable出勤资料表dropconstraintFK_出勤资料表_REFERENCE_员工基本资料表altertable加班表dropconstraintFK_加班表_REFERENCE_员工基本资料表altertable外出表dropconstraintFK_外出表_REFERENCE_员工基本资料表altertable外出表dropconstraintFK_外出表_REFERENCE_外出类型表altertable日志表dropconstraintFK_日志表_REFERENCE_用户altertable用户dropconstraintFK_用户_REFERENCE_员工基本资料表altertable用户dropconstraintFK_用户_REFERENCE_权限表altertable请假表22 dropconstraintFK_请假表_REFERENCE_员工基本资料表altertable请假表dropconstraintFK_请假表_REFERENCE_请假类型表/*==============================================================*//*Table:出勤资料表*//*==============================================================*/createtable出勤资料表(记录号intnotnull,员工基_员工号char(30)null,员工号char(40)notnull,上午上班时间datetimenotnull,上午下班时间datetimenotnull,下午上班时间datetimenotnull,下午下班时间datetimenotnull,记录日期datetimenotnull,constraintPK_出勤资料表primarykey(记录号))/*==============================================================*//*Table:加班表*//*==============================================================*/createtable加班表(记录号intnotnull,员工基_员工号char(30)null,员工号char(20)notnull,员工名char(30)notnull,加班类型char(30)notnull,起始时间datetimenotnull,结束时间datetimenotnull,constraintPK_加班表primarykey(记录号))/*==============================================================*//*Table:员工基本资料表*//*==============================================================*/22 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(员工号))/*==============================================================*)/*Table:外出表*//*==============================================================*/createtable外出表(记录号intnotnull,类型名char(30)null,员工基_员工号char(30)null,员工号char(20)notnull,员工名char(30)notnull,外出类型char(30)notnull,起始时间datetimenotnull,结束时间datetimenotnull,constraintPK_外出表primarykey(记录号))/*==============================================================*//*Table:日志表*//*==============================================================*/createtable日志表(记录号binary(8)notnull,22 用户名char(30)notnull,操作char(127)notnull,日期datetimenotnull,constraintPK_日志表primarykey(记录号))/*==============================================================*//*Table:权限表*//*==============================================================*/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,日志删除char(2)notnull,constraintPK_权限表primarykey(权限名))/*==============================================================*//*Table:用户*//*==============================================================*/createtable用户(用户名char(30)notnull,员工号char(30)null,权限名char(30)null,用户密码intnotnull,权限号intnotnull,constraintPK_用户primarykey(用户名))22 /*Table:请假表*//*==============================================================*/createtable请假表(记录号intnotnull,类型名char(30)null,员工基_员工号char(30)null,员工号char(20)notnull,员工名char(20)notnull,请假类型char(30)notnull,起始时间datetimenotnull,结束时间datetimenotnull,constraintPK_请假表primarykey(记录号))altertable出勤资料表addconstraintFK_出勤资料表_REFERENCE_员工基本资料表foreignkey(员工基_员工号)references员工基本资料表(员工号)altertable加班表addconstraintFK_加班表_REFERENCE_员工基本资料表foreignkey(员工基_员工号)references员工基本资料表(员工号)altertable外出表addconstraintFK_外出表_REFERENCE_员工基本资料表foreignkey(员工基_员工号)references员工基本资料表(员工号)altertable外出表addconstraintFK_外出表_REFERENCE_外出类型表foreignkey(类型名)references外出类型表(类型名)altertable日志表addconstraintFK_日志表_REFERENCE_用户foreignkey(用户名)22 references用户(用户名)altertable用户addconstraintFK_用户_REFERENCE_员工基本资料表foreignkey(员工号)references员工基本资料表(员工号)altertable用户addconstraintFK_用户_REFERENCE_权限表foreignkey(权限名)references权限表(权限名)altertable请假表addconstraintFK_请假表_REFERENCE_员工基本资料表foreignkey(员工基_员工号)references员工基本资料表(员工号)altertable请假表addconstraintFK_请假表_REFERENCE_请假类型表foreignkey(类型名)references请假类型表(类型名)nsert加班表(记录号,员工基_员工号,员工号,员工名,加班类型,起始时间,结束时间)values("5019","a9","aa9","六仪","夜班","2002-02-08","2001-02-12")insert加班表(记录号,员工基_员工号,员工号,员工名,加班类型,起始时间,结束时间)values("5016","a8","aa8","张萍","日班","2001-05-06","2001-05-12")insert加班表(记录号,员工基_员工号,员工号,员工名,加班类型,起始时间,结束时间)values("5023","a20","aa20","王明","夜班","2002-08-06","2001-08-12")select*from加班表insertinto外出表(记录号,类型名,员工基_员工号,员工号,员工名,外出类型,起始时间,结束时间)values("119","出差","a80","a80","邓月","出差",2008-06-09,2008-06-12)select*from外出表update外出表set员工名="周丹"where记录号=119select*from外出表deletefrom外出表where员工名="周丹"22 select*from外出表22