1课程设计人事考勤管理系统目录第一部分:开发背景……………………………………………………………..3第二部分:系统分析………………………………………………………………3第三部分:系统设计……………………………………………………………..9第四部分:公共类设计………………………………………………………….15第五部分:主题窗设计………………………………………………………….16第六部分:用户登录模块设计……………………………………………...17第七部分:用户管理模块设计………………………………………………20第八部分:部门管理模块设计………………………………………………23第九部分:人员信息管理模块设计……………………………………...32第十部分:考勤模块设计………………………………………………………40第十一部分:考勤汇总模块设计……………………………………………45第十二部分:后续补充部分:一些过程的具体实现方法总结及图片解释:…………………………………………………………………....51第十三部分:心得…………………………………………………………………..512人事考勤管理系统开发背景随着公司业务不断发展,员工数量不断增加,人事考勤方面的管理已成为公司管理中的重要部分,但传统的人事考勤制度已不能有效地管理员工的出勤状况,急需一套人事考勤管理的有效工具——人事考勤管理系统。二、系统分析1)需求分析通过对人事考勤管理过程的研究和分析,要求本系统应该具有以下功能。a)用户登录。b)部门信息录入c)人员信息管理d)考勤信息录入e)考勤信息汇总。2)系统功能描述用户需要输入用户名和密码进入人事考勤管理系统,对各部门、员工的基本信息进行维护和管理。在考勤管理模块中录入员工当天的考勤信息,同时可对年、月、员工进行查询。此外,还可以通过考勤汇总查询模块对员工某月的考勤记录进行汇总,计算出员工月工作天数、早退、迟到的天数。三、系统设计1)系统目标人事考勤管理系统以实现员工日常出勤信息管理为设计目标,加以强大的数据库管理功能,可以极大地提高人事部门的日常工作效率。本系统在设计时满足以下几点:a)采用人机对话的操作方式,信息查询灵活、方便、快捷、准确,数据存储安全可靠。b)对考勤信息的操作简单,可以方便地进行添加、修改、和删除。c)可以录入员工信息、部门信息。d)对员工的考勤信息按月汇总计算。3e)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为错误。f)系统最大限度地实现了易维护性和易操作性。g)系统运行稳定、安全可靠。2)系统功能结构人事考勤管理系统的功能结构如图所示:3)业务流图人事考勤管理系统业务流程图如图:人事考勤管理系统部门信息管理员工信息管理考勤数据录入考勤信息汇总用户管理退出登录用户考勤查询用户管理部门管理修改密码员工考勤管理员工信息管理44)系统预览:人事考勤管理系统由多个功能模块组成,下面仅列出一些典型的功能模块,其他模块以后陆续列出:a)部门管理模块如图:主要管理各部门之间的结构信息b)用户管理模块如图:用于用户的一些操作管理c)人员信息管理如图:5主要用于维护员工的基本信息d)考勤管理模块如图:用于记录人事考勤的信息e)考勤汇总查询如图:6对员工的考勤信息进行汇总统计4)数据库设计A.数据库分析人事考勤系统采用SQLServer2008数据库,数据库名称为tb_person在数据库中建立四个表存储不同的信息,如图:B.数据库概念设计根据介绍的需求分析和系统设计,规划处本系统中使用的数据库实体对象,分别以管理员为实体,部门实7体和考勤实体等。下面是实体E-R图。a)管理员实体管理员包括编号,用户,密码。管理员实体E-R图b)部门实体部门实体包括编号,部门名称,备注信息和上级部门编号。部门实体E-R图c)员工实体员工实体包括自动编号,员工编号,员工姓名,照片,性别和生日等信息。员工E-R图管理员密码编号用户部门管理部门编号部门名称备注信息上级部门管理员工员工编号生日性别员工姓名照片自动编号8d)考勤实体考勤实体包括人员姓名,考勤信息,上班时间,下班时间C.数据库逻辑设计a)管理员信息表(tab_user),用于保存管理员的信息,如图:b)部门信息表(tab_Dept)用于记录部门的信息,如图:C)考勤信息表(tab_check)用于记录考勤信息上班时间考勤日期上班考勤时间人员姓名下班考勤时间下班时间9c)员工信息表(tab_Employees)保存公司员工信息,如图:10四、公共类设计本系统采用ADO连接数据库。为了能够方便的使用ADO建立数据库连接并进行相应的数据操作,在公共类中对系统中是使用的ADO操作进行了封装。在系统中建立了ADO的两个公共类CADOConnection和CADODataSet,这两个类定义在ADO.h头文件中,实现在ADO.cpp文件中。A.CADOConnection类CADOConnection类是用来连接数据库的,实现了对_Connection接口的封装。CADOConnection类在头文件中的定义如下:#importC:\ProgramFiles\CommonFiles\System\ado\msado15.dllno_namespacerename(EOF,adoEOF)11classCADOConnection{private:staticvoidInitADO();//初始化ADOstaticvoidUnInitADO();protected:_ConnectionPtrm_Connection;//指针接口public:BOOLIsOpen();//判断是否与数据库连接_ConnectionPtrGetConnection();//获取连接接口CStringGetSQLConStr();//获取SQL连接字符串BOOLOpen(CStringConStr);//建立数据库连接CADOConnection();virtual~CADOConnection();};CADOConnection类的实现代码如下:CADOConnection*GetConnection()//GetConnection函数是一个全局函数,用于返回全局数据库连接对象的的指针{return&g_Connection;}CADOConnection::CADOConnection()//CADOConnection方法是构造方法,用于初始化OLE和创建_Connection接口指针{InitADO();m_Connection.CreateInstance(ADODB.Connection);}CADOConnection::~CADOConnection()//~CADOConnection方法是构造方法,用于取消OLE的初始化和释放_Connection接口指针{if(IsOpen())m_Connection-Close();m_Connection=NULL;UnInitADO();}voidCADOConnection::InitADO()//InitADO是一个静态方法,用于初始化OLE{if(ConCount++==0)CoInitialize(NULL);12};voidCADOConnection::UnInitADO()//UnInitADO是一个静态方法,用于取消初始化OLE{if(--ConCount==0)CoUninitialize();};BOOLCADOConnection::Open(CStringConStr)//通过指定的数据库连接字符串于SQL数据库建立连接{if(IsOpen())m_Connection-Close();m_Connection-Open((_bstr_t)ConStr,,,adModeUnknown);returnIsOpen();}CStringCADOConnection::GetSQLConStr()//生成数据库连接需要的字符串{CStringStr;Str.Format(Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=tb_person;DataSource=LONGFEI-PC\\SQLEXPRESS);returnStr;}_ConnectionPtrCADOConnection::GetConnection()//该方法用于返回_Connection接口指针{returnm_Connection;}BOOLCADOConnection::IsOpen()//判断当前数据库连接对象与数据库的连接状态{longState;m_Connection-get_State(&State);if(State==adStateOpen)returntrue;returnfalse;}CADODataSet类的定义如下:classCADODataSet{protected:_RecordsetPtrm_DataSet;//数据集接口指针13CADOConnection*m_Connection;//数据库连接对象public:BOOLOpen(CStringSQLStr,intLockType);//打开记录集voidDelete();//记录删除intGetRecordNo();//获取记录集行号voidmove(intnIndex);//移动记录指针voidSave();//保存对记录集的修改voidSetFieldValue(CStringFieldName,_variant_tValue);//设置字段的值voidAddNew();//添加新纪录BOOLNext();//记录集指针指向下一个记录FieldsPtrGetFields();//获取记录集字段集合intGetRecordCount();//获取记录集中记录数量voidSetConnection(CADOConnection*pCon);//设置记录集的数据库连接对象BOOLOpen(CStringSQLStr);//打开记录集CADODataSet();virtual~CADODataSet();private:BOOLIsOpen();};CADODataSet类的实现如下:CADODataSet::CADODataSet()//该方法为记录集实现类的构造方法,在该方法中实现记录集接口对象的创建{m_DataSet.CreateInstance(ADODB.Recordset);}CADODataSet::~CADODataSet()//实现记录集的关闭与接口的释放{if(IsOpen())m_DataSet-Close();m_DataSet=NULL;m_Connection=NULL;}voidCADODataSet::SetConnection(CADOConnection*pCon)//设置记录集所连接的数据库连接类的对象{m_Connection=pCon;}14intCADODataSet::GetRecordCount()//获取记录集中数据的数量{if(IsOpen())returnm_DataSet-GetRecordCount();elsereturn0;}BOOLCADODataSet::Open(CStringSQLStr)//打开数据集{if(IsOpen())m_DataSet-Close();//*/m_DataSet-Open(_bstr_t(SQLStr),_variant_t((IDispatch*)g_Connection.GetConnection(),true),adOpenKeyset,adLockOptimistic,adCmdText);returnIsOpen();//*/}BOOLCADODataSet::IsOpen()//判断数据集是否处于打开状态{