• 477.50 KB
  • 2022-05-17 13:17:07 发布

数据库课设计考勤管理系统

  • 17页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
课程设计课程名称数据库系统概论_____题目名称考勤管理系统学生学院计算机学院专业班级学号学生姓名________指导教师左亚尧2012年1月16日17 一、需求分析3数据需求3功能需求3二、概念结构设计31、局部E-R图32、整体E-R图5三、逻辑结构设计61、关系模式62、系统功能模块图63、数据完整性设计6四、数据库物理设计71、索引72、数据表设计7五、数据库实施81、建数据库82、建表(职工信息表、出勤记录表、出差记录表、加班记录表、请假记录表、月统计表)93、触发器11六、系统的主要功能实现代码121、关系图的建立122、简单操作132、复杂查询15七、收获和体会1717 一、需求分析数据需求:数据库中的数据要符合现实逻辑。功能需求:1、职工信息的管理:包括职工基本信息的查询、增加、修改和删除,记录职工的姓名、性别、年龄和职称。2、职工考勤的管理:包括对职工考勤情况的增加、查询、修改和删除,记录职工一个月的考勤天数,每天进行修改。3、职工出差记录的管理:包括对职工出差情况的查询、增加、修改和删除。管理者安排员工出差,对出差时间,次数的管理。4、职工加班记录的管理:对职工的加班时间进行统计,记录开始时间和结束时间,对加班信息实现添加,删除等操作。5、职工请假记录的管理:包括对职工请假情况的查询、增加、修改和删除。完善请假信息,如请假开始时间,请假结束时间,请假的次数进行管理。6、职工月统计记录的管理:包括对职工月记录的查询、增加、修改和删除。二、概念结构设计1、局部E-R图(1)职工E-R图职工信息编号姓名年龄性别职称(2)出勤E-R图17 出勤记录编号出勤天数(3)出差E-R图出差信息职工编号出差编号开始时间结束时间出差天数(4)加班E-R图加班信息职工编号加班编号开始时间结束时间加班时间(5)请假E-R图请假信息职工编号请假编号开始时间结束时间请假天数(6)月统计E-R图17 统计信息职工编号出勤天数加班时间出差天数请假天数2、整体E-R图出勤天数加班统计月统计出差统计出勤记录请假统计统计出勤结束时间出差天数出差编号出差记录起始时间加班编号加班时间加班出差加班信息结束时间起始时间请假编号年龄职工请假请假信息职称开始时间性别姓名编号出勤统计结束时间请假天数17 三、逻辑结构设计1、关系模式职工信息(职工编号,姓名,性别,年龄,职称)出勤记录(职工编号,出勤天数)出差记录(职工编号,出差编号,开始时间,结束时间,出差天数)加班信息(职工编号,加班编号,加班开始时间,加班结束时间,加班时间)请假信息(职工编号,请假编号,请假开始时间,请假结束时间,请假天数)月统计(职工编号,出勤月统计,出差月统计,加班月统计,请假月统计)2、系统功能模块图考勤管理系统职工基本信息出勤记录出差记录加班记录请假记录月统计查询职工信息添加修改删除添加修改删除添加修改删除添加修改删除添加修改删除添加修改删除查询出勤天数查询出差记录查询请假记录查询加班记录查询月统计3、数据完整性设计1)主键约束、非空值约束职工信息表:职工编号为主键,所以此项非空出勤记录表:职工编号为主键,所以此项非空出差记录表:职工编号和出差编号为主键,所以这2项非空加班记录表:职工编号和加班编号为主键,所以这2项非空17 请假记录表:职工编号和请假编号为主键,所以这2项非空月统计表:职工编号为主键,所以此项非空2)实施CHECK约束员工表中建立一个检查约束,即员工性别不是‘男’就是‘女’CHECK(性别IN("男","女")3)外键约束Wno为外键FOREIGNKEY(Wno)REFERENCESworker(Wno)通过此键建立6个表的联系四、数据库物理设计1、索引为提高检索性能,为表创建符合索引,其索引项为职工编号和姓名createindexWno_Wnameonworker(Wno,Wname)2、数据表设计职工信息表定义出勤记录表定义17 出差记录表定义加班记录表定义请假记录表定义月统计表定义五、数据库实施1、建数据库CREATEDATABASEattendanceONPRIMARY(NAME="attendance_data",FILENAME="E:attendanceattendance_data.mdf",17 SIZE=5MB,MAXSIZE=20MB,FILEGROWTH=10%)LOGON(NAME="attendance_log",FILENAME="E:attendanceattendance_log.ldf",SIZE=2MB,FILEGROWTH=1MB)2、建表(职工信息表、出勤记录表、出差记录表、加班记录表、请假记录表、月统计表)useattendancegoCREATETABLEworker(WnoCHAR(8)PRIMARYKEY,WnameCHAR(8)UNIQUE,WsexCHAR(2)CHECK(WsexIN("男","女")),WageSMALLINT,WtitalCHAR(10),)CREATETABLEwork_note(WnoCHAR(8)PRIMARYKEY,FOREIGNKEY(Wno)REFERENCESworker(Wno),work_daystinyint,17 )CREATETABLEout_note(WnoCHAR(8),out_noCHAR(8),/*出差编号*/PRIMARYKEY(Wno,out_no),FOREIGNKEY(Wno)REFERENCESworker(Wno),out_timeVARCHAR(50),back_timeVARCHAR(50),out_daystinyint,/*出差天数*/)CREATETABLEOT_note(WnoCHAR(8),OT_noCHAR(8),PRIMARYKEY(Wno,OT_no),FOREIGNKEY(Wno)REFERENCESworker(Wno),OT_timeVARCHAR(50),OTend_timeVARCHAR(50),OT_hourstinyint,)CREATETABLEleave_note(WnoCHAR(8),leave_noCHAR(8),PRIMARYKEY(Wno,leave_no),FOREIGNKEY(Wno)REFERENCESworker(Wno),17 leave_timeVARCHAR(50),leaveend_timeVARCHAR(50),leave_daystinyint,)CREATETABLEmonth_count(WnoCHAR(8)PRIMARYKEY,FOREIGNKEY(Wno)REFERENCESworker(Wno),workdaystinyint,OThourstinyint,outdaystinyint,leavedaystinyint,)3、触发器创建一个触发器,当删除一个职工的基本信息时,同时也删除其他表中相应职工的信息。如,当删除worker表中职工基本信息时,同时也删除员工考勤记录表中的内容,请假记录,出差记录,加班记录分别建立此类触发器。createtriggerdel1onworkerfordeleteasbegindeletefromwork_notewhereWno=(selectWnofromdeleted)endcreatetriggerdel2onworkerfordeleteasbegindeletefromout_notewhereWno=(selectWnofromdeleted)end17 createtriggerdel3onworkerfordeleteasbegindeletefromOT_notewhereWno=(selectWnofromdeleted)endcreatetriggerdel4onworkerfordeleteasbegindeletefromleave_notewhereWno=(selectWnofromdeleted)endcreatetriggerdel5onworkerfordeleteasbegindeletefrommonth_countwhereWno=(selectWnofromdeleted)end六、系统的主要功能实现代码1、关系图的建立17 2、简单操作1)职工基本信息情况代码如下:select*fromworker2)职工出勤情况代码如下:selectworker.Wno,Wname,Wsex,Wage,Wtital,work_daysfromworker,work_notewherework_note.Wno=worker.Wno17 3)职工加班情况代码如下:selectworker.Wno,Wname,OT_hoursfromworker,OT_notewhereworker.Wno=OT_note.WnoANDOT_hours>04)职工考勤月情况代码如下:selectworker.*,workdays,outdays,OThours,leavedaysfromworker,month_countwhereworker.Wno=month_count.Wno17 5)修改月考勤信息updatemonth_countsetworkdays=workdays-4updatework_notesetwork_days=work_days-42、复杂查询1)职工出差情况代码如下:selectworker.Wno,Wname,Wsex,Wage,Wtital,out_daysfromworkerLEFTJOINout_noteon(worker.Wno=out_note.Wno)17 2)男性职工考勤月情况代码如下:selectworker.*,workdays,outdays,OThours,leavedaysfromworker,month_countwhereworker.Wno=month_count.WnoANDWsex="男"3)职工加班情况查询代码如下:selectworker.Wno,Wname,Wsex,Wage,Wtital,OT_note.*fromworkerLEFTJOINOT_noteon(worker.Wno=OT_note.Wno)17 七、收获和体会本次课程设计做得比较粗糙,主要是因为对课程和软件的不熟悉。任务所要求的人机界面还要用到除SQL外的其他语言编写,这样难度就比现在要高多了,根据现在的情况,这个要求是无法达到的了,所以该系统并没有实现人机界面。我认为本次课程设计的主要目的是给我们了解一下数据库的创建和运行、维护等操作的历程是如何实现的,在这样的条件上再根据自己的能力向上进行完善和拓展。本系统在信息表述上还不完备,一些模块的信息还不够详细,提供的报表也很有限。但这些数据是用来测试一下系统的可行性,并不需要设计太多的数据,虽然有一定的局限性,但对于个体户来说,这工作量也足够的大了。如果要进行进一步完善,下一步可以在熟悉系统设计风格的基础上,在各个界面上进一步添加更多需要的字段和报表,或者添加采集数据的模块,以扩充系统的功能。尚未解决的问题有几个表的数据虽然有关联,但是我不能将它们之间的关系进行联系,数据的计算都是靠手工来完成,这样并不利于系统的发展,严重影响了工作效率。若数据输入错误时,并不会发生报错,因为系统并不能验证数据的错误与否。17