• 250.50 KB
  • 2022-05-17 12:55:50 发布

1586.考勤管理系统---课程设计文档

  • 18页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
课程设计说明书课程名称:大型数据库课题名称:考勤管理系统班级:姓名:指导教师:2005年6月24日16 目录1绪论11.1课题背景11.2系统开发关键技术12系统分析22.1设计所要完成的功能23系统设计23.1系统流程及功能模块介绍23.2VB类的设计53.3界面设计54 系统数据库设计54.1系统数据流程图54.2系统E-R图64.3数据库表设计64.4存储过程的设计84.5触发器的设计115系统实现125.1系统测试125.1.1数据库连接测试125.1.2功能模块的测试125.2系统评价146总结和展望15参考文献15致  谢1616 1绪论1.1课题背景课程设计是完成教学计划达到工科学生培养目标的重要环节,是教学计划中进行综合训练的重要实践环节,是有助于培养应用性人才的一种教学形式,它将使学生在综合运用所学知识,解决本专业方向的实际问题方面得到系统性的训练。为了加深对《ORACLE大型数据库》课程所学知识的理解,使自己对VisualBasic编程有一个完整的整体认识,初步掌握面向对象的编程方法和特色,进一步设计类的方法,学会“面向对像”的思维方式,学会编制结构清晰、风格良好、具有“面向对像”的特性的程序。1.2系统开发关键技术我们编的“考勤管理系统”主要是针对学校和公司对学生或职员的出勤情况进行登记的一个管理系统,在编程的过程中我们大量使用到了类的思想。充分运用了三层的体系结构,将本系统化分为了三个部分:用户界面层数据处理层数据访问层。用户界面层:界面层包括窗体、菜单、控件等组成界面部分,提供用户的交互和操作,并执行对数据层的调用。数据处理层:数据处理层是中间层,进行数据访问与界面层的隔离,它根据界面层操作执行与数据访问层交互,获取并操作数据库的数据;并进行数据逻辑处理。对于单一的实体,对象的属性对应属性中的域,因此,每一行数据对应一个业务对象,程序在获取这些数据后,对应记录集的每一行数据,都可以化成一个对象。数据处理层同时对业务对象进行管理,为使得管理更加具有伸缩性,每个数据处理类可以内置一个集合对象(Collection),查询数据所得到的信息全部转化为实体对象并且添加到集合对象中去。数据访问层:对数据库的所有数据查询、数据插入、更新、删除的操作全部封装在该类模块中,也就是说,由该类模块生成的对象负责所有与数据打交道的操作,数据处理层通过调用该层次的对象提供的方法来操纵数据库中的数据;独立的数据访问类与界面无关,这与通过数据访问控件来实现与数据库的连接存在很大的差别,数据访问控件的的劣势在于没有把界面逻辑和数据访问逻辑进行分离,因而存在界面逻辑单一、数据访问功能有限;ADO被封装在数据访问层,在以上多层应用体系结构中,ADO被划分为逻辑层,在本结构中,根据其作用,统一到数据访问层。16 2系统分析2.1设计所要完成的功能“考勤管理系统”主要是用来进行考勤管理的,用来对某个单位的员工等工作或学习单位进行工作登记的。本软件主要有以下六个大的部分:第一:管理员登录和管理功能,主要是防止别的人员随意改动数据,使得数据不真实。管理员分为三个级别:1表示超级管理员,2表示一般管理员,3表示只能浏览的管理员。使用系统时就有几个初始管理员,当然,超级管理员也可以在启动会员管理中进行设置。第二:工作人员或学生等人的考勤管理功能,主要用于对工作人员或学生等的考勤记录,以及对考勤情况的查询。第三:工作人员或学生等个人资料录入功能,主要是对工作人员或学生个人情况的录管理,可以进行添加、删除、修改、查询。第四:出勤情况设置功能,实现对出勤情况的管理,可以进行添加、删除、修改、查询。第五:职业设置功能,实现对职业的管理,可以进行添加、删除、修改、查询。第六:管理员由于级别的不同会获得不同的管理权限,超级管理员可以获得一切权限,一般管理员只能进行考勤的管理和个人情况的管理,只能浏览的管理员就只能查看出勤情况,不能进行管理。3系统设计3.1系统流程及功能模块介绍本系统根据用户的具体需求,将所有功能分解为三个主要模块来实现。其整体模块如图3.1所示,系统考勤流程如图3.2所示,它比较形象、具体的描述了本系统的结构构造,以方便大家来了解本课题的基本方向和任务。第一个功能模块系统出勤情况功能模块系统出勤情况功能模块里实现了对职员的出勤情况进行统计的功能;第二个功能模块个人情况功能模块、可以对个人情况进行修改如姓名、性别、个人级别号等功能;第三个功能模块管理员功能模块可以对用户管理、出事事项、个人职业等进行管理;可以对它们进行增加、修改、删除等功能操作16 考勤管理系统系统登录系统菜单工具栏考勤管理出班记录加班记录请假记录出差记录考勤管理个人情况管理员出勤情况退出管理图3.1系统结构图进入考勤系统根据管理员等级确定进入方式管理系统管理退出考勤管理图3.2系统考勤流程图3.1.1系统出勤情况功能模块:如图3.3所示,系统出勤情况功能模块里实现了对职员的出勤情况进行统计的功能,如按病假、事假、学习、住院等情况进行统计。还可以通过编号查找、通过姓名查找、通过职业查找、通过时间查找等。可以对出勤的职员进行出勤登记。16 出勤情况查询出勤统计出勤登记刷新按姓名查询按编号查询通过编号查找通过姓名查找通过职业查找通过时间查找统计图3.3系统出勤情况功能模块3.1.2个人情况功能模块:如图3.4系统个人情况功能模块所示,可以对个人情况进行修改如姓名、性别、个人级别号等;也可以对个的出勤情况查询,按编号、姓名、性别、职业分类查询。也可以新增职员删除职员。个人情况新增修改查找返回出勤情况栏删除通过编号查找通过姓名查找通过职业查找通过性别查找姓名性别个人级别号图3.4个人情况功能模块3.1.3管理员功能模块:如图5管理员功能模块16 所示,可以对用户管理、出事事项、个人职业等进行管理;可以对它们进行增加、修改、删除等操作。用户管理可以添加用户,修改用户等级、密码、用户名等操作;出勤事项可以增加出勤的事项,也可以个修改删除;在个人职业这一栏,修改时不能修改其编号,因为编号是固定的。管理员用户管理出勤事项个人职业新增修改删除新增修改删除新增修改删除图3.5管理员功能模块3.2VB类的设计用于VB端与数据库的访问,是三层结构必不可少的一部分,方便对存序的维护和访问。VisualBasic中的OOP的实现创建VB类:★添加类模块并设置其属性★为类创建属性★为类创建方法★为类创建事件3.3界面设计尽力用最少的步骤来实现最好的功能,界面应保持windows的风格,没有与系统界形成严重反差。4 系统数据库设计MicrosoftSQLServer2000提供了许多支持数据库应用程序的工具。这些工具中有些工具在数据仓库中使用得较频繁,而有些则是专用于解决数据仓库的特殊要求。这里列出的工具常用于数据仓库应用程序,但是大多数工具还可用于其它的数据库应用程序。4.1系统数据流程图16 个人记录出勤时间管理员请假加班出差记录上下班世界设置个人出勤记录记录操作上下班请假、加班、出差考勤时间设置图4.1系统数据流程图4.2系统E-R图管理员密码管理员管理员名管理员级别个人情况个人编号个人ID个人性别个人姓名个人级别级别ID级别名出勤情况个人ID级别ID出勤ID时间出勤名称出勤ID出勤级别考勤管理图4.2系统E-R图4.3数据库表设计根据需要,我们设计了管理员表,个人级别表(职业表),考勤人员数据表,出勤情况表,用于联接个人情况表和出勤情况表。(1)表名:Table_People(PeopleID,PeopleName,PeopleLevel,PeopleSex,PeopleLevelID)其含义:个人情况表,存储个人信息。16 表4.1个人情况表Table_People数据名称个人情况表:Table_People组成字段名数据类型是否为空默认值检查键/索引说明PeopleIDintnotnullidentity主键个人IDPeopleNamevarchar(30)notnull姓名PeopleLevelvarchar(10)notnull“学生”Check(学生、老师)级别PeopleSexChar(2)notnull“男”Check(男,女)性别PeopleLevelIDIntnotnull外键个人职业编号(2)表名:Table_CWA(CWAID,CWAName)其含义:出勤情况表,存储出勤信息。表4.2出勤情况表Table_CWA数据名称出勤情况表:Table_CWA组成字段名数据类型是否为空默认值检查键/索引说明CWAIDintnotnullidentity主键出勤IDCWANamevarchar(30)notnull“出勤”unique出勤情况(3)表名:Linkdata(LinkdataID,CWAID,PeopleID,Year,Moth,Day)其含义:个人情况与出勤情况中间表,存储个人情况与出勤情况信息。表4.3个人情况与出勤情况中间表Linkdata数据名称个人情况与出勤情况中间表:Linkdata组成字段名数据类型是否为空默认值检查键/索引说明LinkdataIDintNotnullidentity主键连接IDCWAIDintnotnull外键出勤IDPeopleIDintnotnull外键个人IDYearintnotnull年Mothintnotnull月Dayintnotnull日(4)表名:Table_Level(PeopleLevelID,PeopleLeval)其含义:个人级别表,存储个人级别信息。16 表4.4、个人级别表:Table_Level数据名称个人级别表:Table_Level组成字段名数据类型是否为空默认值检查键/索引说明PeopleLevelIDintnotnullidentity主键个人级别IDPeopleLevalvarchar(30)notnull“学生”出勤情况(5)表名:Table_Level(UserName,UserPassword,Userlevel)其含义:个人级别表,存储管理员信息。表4.5、管理员表:Table_Level数据名称创建个人级别表:Table_Level组成字段名数据类型是否为空默认值检查键/索引说明UserNamevarchar(40)notnull主键管理员名UserPasswordvarchar(40)notnull管理员密码Userlevelintnotnulldefault(2)管理员等级4.4存储过程的设计存储过程(storedprocedure)是Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。存储过程可以提高客户机重复向数据库服务器发送或请求的功能。存储过程通过接受参数并且返回状态值,以表示成功或失败。 SQLServer中的存储过程与其它编程语言中的过程类似,原因是存储过程具备以下功能。 ★接受输入参数并以输入参数的形式将多个值返回调用过程或批处理。 ★包含执行数据库操作的编程语句。 ★向调用过程或批处理返回状态值,以表明成功或失败。 SQLServer存储过程是用Transact-SQL的CREATEPROCEDURE语句创建的,并可用ALTERPROCEDURE语句进行修改。我们是便用查询分析器生成的,其代码如下:--1、创建添加出勤表的存储过程--(1)添加数据Createprocedureproc_addTableCWA(@CWANamevarchar(30))asinsertintoTable_CWAvalues(@CWAName)return@@identity16 go--(2)删除数据Createprocedureproc_delTableCWA(@CWAIDint)asdeletefromTable_CWAwhereCWAID=@CWAIDreturn@@identitygo--(3)修改数据Createprocedureproc_updateTableCWA(@CWAIDint,@CWANamevarchar(30))asupdateTable_CWAsetCWAName=@CWANamewhereCWAID=@CWAIDreturn@@identitygo--(4)查找数据CreateProcedureproc_selectTableCWAasselect*fromTable_CWAgoCreateProcedureproc_selectTableCWAName(@CWANamevarchar(40))asselect*fromTable_CWAwhereCWAName=@CWANameGo--2、创建添加级别表的存储过程--(1)添加数据createprocedureproc_AddTableLevel(@PeopleLevalvarchar(30))asinsertintoTable_Levelvalues(@PeopleLeval)return@@identitygo--(2)删除数据CreateProcedureproc_DelTableLevel(@PeopleLevelIDint)asdeletefromTable_Levelwhere(PeopleLevelID=@PeopleLevelID)return@@identitygo--(3)修改数据CreateProcedureproc_updateTableLevel(@PeopleLevelIDint,@PeopleLevalvarchar(30))asupdateTable_LevelsetPeopleLeval=@PeopleLevalwherePeopleLevelID=@PeopleLevelIDreturn@@identitygo--(4)查找数据16 --全体查找createProcedureproc_selectTableLevelasselect*fromTable_LevelORDERBYPeopleLevelIDASCgo--根据PeopleLeval查找createProcedureproc_selectTableLevelName(@PeopleLevalvarchar(30))asselect*fromTable_LevelwherePeopleLeval=@PeopleLevalgo--3、创建添加个人情况表的存储过程--建立个人情况的视图CREATEVIEWdbo.view_peopleASSELECTdbo.Table_People.PeopleID,dbo.Table_People.PeopleNumber,dbo.Table_People.PeopleName,dbo.Table_People.PeopleSex,dbo.Table_Level.PeopleLevalFROMdbo.Table_PeopleINNERJOINdbo.Table_LevelONdbo.Table_People.PeopleLevelID=dbo.Table_Level.PeopleLevelIDGO--查找数据(1)--全部查找CreateProcedureproc_selectTablePeopleasselect*fromview_peoplego--根据编号查找CreateProcedureproc_selectTablePeopleNo(@PeoPleNumberchar(6))asselect*fromview_peoplewherePeoPleNumber=@PeoPleNumbergo--根据时间和个人姓名查找createprocedureproc_SelectPeopleIformationNameTime(@PeopleNamevarchar(30),@LYearint,@LMonthint,@LDayint,@LYear1int,@LMonth1int,@LDay1int)asselect*fromview_CheckOnWorkAttendancewherePeopleName=@PeopleNameandLYear>=@LYearandLMonth>=@LMonthandLDay>=@LDayandLYear<=@LYear1andLMonth<=@LMonth1andLDay<=@LDay1go16 --根据时间和职业查找createprocedureproc_SelectPeopleIformationLevelTime(@PeopleLevalvarchar(30),@LYearint,@LMonthint,@LDayint,@LYear1int,@LMonth1int,@LDay1int)asselect*fromview_CheckOnWorkAttendancewherePeopleLeval=@PeopleLevalandLYear>=@LYearandLMonth>=@LMonthandLDay>=@LDayandLYear<=@LYear1andLMonth<=@LMonth1andLDay<=@LDay1go-4.5触发器的设计触发器(trigger)是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应INSERT、UPDATE或DELETE语句。触发器可以查询其它表,并可以包含复杂的Transact-SQL语句。触发器可以查询其它表,并可以包含复杂的Transact-SQL语句。以下是部分触发器的设计:在table_cwa中册除一种出勤事项信息,而在linkdata中所有与之相同的出勤事项信息全部删除。CREATEtriggerzhouOntable_cwaforDeleteAsDeletelinkdataFromcwalevel,DeleteddWherelinkdata.typeid=table_cwa.lbmc在table_cwa中更改一种药品名称信息,而在linkdata中与之相关的药品类别名称信息随之更新。CREATETriggerzhouOntable_cwaforUpdateAsifUpdate(lbmc)beginUpdatelinkdatasettypeid=i.lbmcFromlinkdata,Deletedd,InsertediWherelinkdata.typeid=d.lbmcEnd16 5系统实现5.1系统测试5.1.1数据库连接测试将VisualBasic前台以后台的SQLsever数据库连接:dimp_conasadodb.connection‘定义联接setp_con=newadodb.connection实例化联接 p_con.open"Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=Data_CheckOnWorkAttendance;DataSource=."""使用连接字符串进行连接见图4.1数据库测试连接:图4.1数据库测试连接5.1.2功能模块的测试启动系统,进入登录界面。在这里默认的用户的是admin,你也可以进入注册新的用户,再进行重新登录见图4.2登录界面:图4.2登录界面16 系统的主界面;在这里你可以看到整个系统的版面:今天出勤情况、个人情况、管理,为了管理员的方便系统默认在今天出勤情况。能对今天出勤情况一目了然。这里主要是对以前的出勤情况进行查找,可以看到以前出勤情况。提供了:通过编号查找、通过姓名查找、通过职业查找、通过时间查找。在进行查找之后才能进行统计,出勤统计又可以分类统计:分病假、迟到早退、出勤、计生、事假等,这主要是对某一项出勤作一个考察,方便了解情况。见图4.3系统主界面:图4.3系统主界面个人情况栏;可以对个人情况进行修改如姓名、性别、个人级别号等;也可以对个的出勤情况查询,按编号、姓名、性别、职业分类查询。也可以新增职员删除职员见图4.4个人情况界面:图4.4个人情况界面管理栏;这一栏可以进管理员进行增加、修改、删除。可以对出勤情名进行增加、修改、删除。还可以对个人职业名进行增加、修改、删除。见图4.5管理界面可以对用户管理、出事事项、个人职业等进行管理;可以对它们进行增加、修改、删除等操作。用户管理可以添加用户,修改用户等级、密码、用户名等操作;出勤事项可以增加出勤的事项,也可以个修改删除;在个人职业这一栏,修改时不能修改其编号,因为编号是固定的。16 图4.5管理界面出勤统计栏;这里主要是对以前的出勤情况进行查找,可以看到以前出勤情况。提供了:通过编号查找、通过姓名查找、通过职业查找、通过时间查找。在进行查找之后才能进行统计,出勤统计又可以分类统计:分病假、迟到早退、出勤、计生、事假等,这主要是对某一项出勤作一个考察,方便了解情况。在进行统计后可以进行打印,为了使用者打印方便调整,在这里调用的Excel表格:见图4.6出勤统计界面图4.6出勤统计界面5.2系统评价课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适努力,一个应实际,实践编程的能力。通过自己一段时间的自己编制的考勤管理系统就基本完成了。经过编译、运行,系统终于在我们面前了。虽然程序能够运行了,但是有些细节还是达不到我们刚刚设计时所预期的效果。16 在本次课程设计当中,虽然还有很多还不尽如人意的地方,但是在制作的过程中通过自己的实际操作也学到了不少在课堂上学不到东西。总的来说,这次课程设计我们还是觉得比较成功的。6总结和展望经过此次课程设计,感觉收获挺多,也让我明白了自己的不足.总的来说有如下几点:第一,它使我更进一步的了解了ORACLE数据库,比如它的物理与逻辑结构,如逻辑结构有数据库,表空间,段,盘区,数据块等.物理结构有三种文件,如控制文件,重做日志文件,和数据文件等.以及它的具体操作.像ORACLE的安装,服务的开启,以及各种配置等等.也使我学会了PL/SQL,以及SQLPlusWorksheet的应用.让我知道了包的含义,及存储过程,函数,序列,触发器,视图的编写及其用法.第二,通过本次课程设计,本人对VisualBasic有了更进一步的了解。在做课程设计的过程中,我们编写了一些最基本的类,定义了一些图像等等,这是本人在以前的VisualBasic实验中所没有尝试过的。通过了本次的尝试,我们能够更加熟悉的运用一些基本类,对于我们了解Visual,运用大型数据库有了很大的帮助,为我们以后的学习打下了较好的基础。第三,此次课程设计让我看到了自己的不足之处,以后必须更加加强对理论知识的学习.要不断扩大自己的知识面等.当然,在本次课程设计中也出现不少的问题。由于对大型数据库的实际操作还不是很熟悉,因此在设计过程中有些地方我们仍然还不是很明确。还有另外一个较麻烦的问题就是大型数据库的触发器的源程序。由于自己编写源代码的水平和经验有限,所以有些部分的源代码我们不能编写或者这个系统还有很多其它的功能未能实现。这是我们比较遗憾的地方。参考文献[1].温贤发.《VisualBasic6.0数据库程序设计》.科学出版社,2001[2].龚小勇.《关系数据库与SQLServer2000》.机械工业出版社,2004[3].《VisualBasic6.0数据库开发案例导航》.高等教育出版社,2003[4].龚志翔.《VisualBasic6.0编程实例与技巧》.北京希望电子出版社,2004[5].《VisualBasic6.0高级编程》.清华大学出版社,2004[6].《SQLServer2000存储过程技术》.清华大学出版社,2002[7].周峰.《VISUALBASIC案例开发集锦》.电子工业出版社,2005[8].陈学东.《VISUALBASIC6.0程序设计教程》.清华大学出版社,200516 [9].宋振会.《SQLSERVER2000中文版基础教程》清华大学出版社,2005[10].中国安全万维网致  谢  总的来说,本次的课程设计还算成功。尽管有些小细节不能很好的运行但是设计的大方向是正确的,我们编写程序的思想还算比较清晰,这对于我们以后的系统设计中有很大的帮助。在此,我们再次对老师表示衷心的感谢!16