人事考勤管理系统培训课程.docx

上传人:b****5 文档编号:6373846 上传时间:2023-01-05 格式:DOCX 页数:52 大小:511.90KB
下载 相关 举报
人事考勤管理系统培训课程.docx_第1页
第1页 / 共52页
人事考勤管理系统培训课程.docx_第2页
第2页 / 共52页
人事考勤管理系统培训课程.docx_第3页
第3页 / 共52页
人事考勤管理系统培训课程.docx_第4页
第4页 / 共52页
人事考勤管理系统培训课程.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

人事考勤管理系统培训课程.docx

《人事考勤管理系统培训课程.docx》由会员分享,可在线阅读,更多相关《人事考勤管理系统培训课程.docx(52页珍藏版)》请在冰豆网上搜索。

人事考勤管理系统培训课程.docx

人事考勤管理系统培训课程

 

课程设计

人事考勤管理系统

 

第一部分:

开发背景……………………………………………………………..3

第二部分:

系统分析………………………………………………………………3

第三部分:

系统设计……………………………………………………………..9

第四部分:

公共类设计………………………………………………………….15

第五部分:

主题窗设计………………………………………………………….16

第六部分:

用户登录模块设计……………………………………………...17

第七部分:

用户管理模块设计………………………………………………20

第八部分:

部门管理模块设计………………………………………………23

第九部分:

人员信息管理模块设计……………………………………...32

第十部分:

考勤模块设计………………………………………………………40

第十一部分:

考勤汇总模块设计……………………………………………45

第十二部分:

后续补充部分:

一些过程的具体实现方法总结及图片解释:

…………………………………………………………………....51

第十三部分:

心得…………………………………………………………………..51

人事考勤管理系统

Ø开发背景

某公司业务不断发展,员工数量不断增加,人事考勤方面的管理已成为公司管理中的重要部分,但传统的人事考勤制度已不能有效地管理员工的出勤状况,急需一套人事考勤管理的有效工具——人事考勤管理系统。

Ø二、系统分析

1)需求分析

通过对人事考勤管理过程的研究和分析,要求本系统应该具有以下功能。

a)用户登录。

b)部门信息录入

c)人员信息管理

d)考勤信息录入

e)考勤信息汇总。

2)系统功能描述

用户需要输入用户名和密码进入人事考勤管理系统,对各部门、员工的基本信息进行维护和管理。

在考勤管理模块中录入员工当天的考勤信息,同时可对年、月、员工进行查询。

此外,还可以通过考勤汇总查询模块对员工某月的考勤记录进行汇总,计算出员工月工作天数、早退、迟到的天数。

Ø三、系统设计

1)系统目标

人事考勤管理系统以实现员工日常出勤信息管理为设计目标,加以强大的数据库管理功能,可以极提高人事部门的日常工作效率。

本系统在设计时满足以下几点:

a)采用人机对话的操作方式,信息查询灵活、方便、快捷、准确,数据存储安全可靠。

b)对考勤信息的操作简单,可以方便地进行添加、修改、和删除。

c)可以录入员工信息、部门信息。

d)对员工的考勤信息按月汇总计算。

e)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为错误。

f)系统最大限度地实现了易维护性和易操作性。

g)系统运行稳定、安全可靠。

2)系统功能结构

人事考勤管理系统的功能结构如图所示:

 

3)业务流图

人事考勤管理系统业务流程图如图:

 

4)系统预览:

人事考勤管理系统由多个功能模块组成,下面仅列出一些典型的功能模块,其他模块以后陆续列出:

a)部门管理模块如图:

主要管理各部门之间的结构信息

b)用户管理模块如图:

用于用户的一些操作管理

c)人员信息管理如图:

主要用于维护员工的基本信息

d)考勤管理模块如图:

用于记录人事考勤的信息

e)考勤汇总查询如图:

对员工的考勤信息进行汇总统计

5)数据库设计

A.数据库分析

人事考勤系统采用SQLServer2008数据库,数据库名称为tb_person在数据库中建立四个表存储不同的信息,如图:

B.数据库逻辑设计

a)管理员信息表(tab_user),用于保存管理员的信息,如图:

b)部门信息表(tab_Dept)用于记录部门的信息,如图:

C)考勤信息表(tab_check)用于记录考勤信息

c)员工信息表(tab_Employees)保存公司员工信息,如图:

Ø四、公共类设计

本系统采用ADO连接数据库。

为了能够方便的使用ADO建立数据库连接并进行相应的数据操作,在公共类中对系统中是使用的ADO操作进行了封装。

在系统中建立了ADO的两个公共类CADOConnection和CADODataSet,这两个类定义在ADO.h头文件中,实现在ADO.cpp文件中。

A.CADOConnection类

CADOConnection类是用来连接数据库的,实现了对_Connection接口的封装。

CADOConnection类在头文件中的定义如下:

#import"C:

\ProgramFiles\CommonFiles\System\ado\msado15.dll"no_namespacerename("EOF","adoEOF")

classCADOConnection

{

private:

staticvoidInitADO();//初始化ADO

staticvoidUnInitADO();

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);

};

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;//数据集接口指针

CADOConnection*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;

}

intCADODataSet:

:

GetRecordCount()//获取记录集中数据的数量

{

if(IsOpen())

returnm_DataSet->GetRecordCount();

else

return0;

}

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()//判断数据集是否处于打开状态

{

longState;

m_DataSet->get_State(&State);

if(State==adStateOpen)

returntrue;

returnfalse;

}

FieldsPtrCADODataSet:

:

GetFields()//用来获取记录集中字段的集合

{

returnm_DataSet->GetFields();

}

BOOLCADODataSet:

:

Next()//记录集指针下移一位

{

if(m_DataSet->adoEOF)

returnfalse;

m_DataSet->MoveNext();

returntrue;

}

voidCADODataSet:

:

AddNew()

{

m_DataSet->AddNew();

}

voidCADODataSet:

:

SetFieldValue(CStringFieldName,_variant_tValue)//想记录集中指定的字段赋值

{

m_DataSet->PutCollect((_bstr_t)FieldName,Value);

}

voidCADODataSet:

:

Save()//保存记录集数据所做的修改

{

m_DataSet->Update();

}

voidCADODataSet:

:

move(intnIndex)//将记录集的当前指针移动到指定的索引位置

{

m_DataSet->MoveFirst();

m_DataSet->Move(nIndex);

}

intCADODataSet:

:

GetRecordNo()//获取记录集中的当前行号

{

returnm_DataSet->AbsolutePosition;

}

voidCADODataSet:

:

Delete()//删除记录集中的当前行

{

m_DataSet->Delete(adAffectCurrent);

}

BOOLCADODataSet:

:

Open(CStringSQLStr,intLockType)

{

if(IsOpen())

m_DataSet->Close();

//*/

m_DataSet->Open(_bstr_t(SQLStr),

_variant_t((IDispatch*)g_Connection.GetConnection(),true),

adOpenKeyset,(LockTypeEnum)LockType,adCmdText);

returnIsOpen();

}

Ø五、主题窗设计

A.主题窗由菜单和图片组成,如图:

B.主题窗设计步骤:

a.启动visualc++,选择File/New命令,打开New对话框

b.在左侧选择MFCAppWizard(exe)选项,在Projectname编辑框中输入工程名称,在location编辑框中设置保存工程的路径,然后单击OK按钮,打开MFCAppWizard对话框,选择对话框编程,打击fish

c.像工程中导入位图,菜单资源(具体操作在最后有补充)

Ø六、用户登录模块设计

A.概述,登录界面是每个管理系统应该具备的,本系统的登录模块如图:

B.技术分析

窗体应在主题窗创建之前并显示,在登录窗体创建的同时应该建立数据库连接,具体操作如下:

BOOLbCon=、GetConnection()->Open(GetConnection()->GetSQLConStr());

CLoginDialoglogindlg;

if(logindlg.DoModal()!

=IDOK)

returnfalse;

:

:

CoInitialize(NULL);

CPersonDlgdlg;

C.实现过程

a.创建一个对话框

b.向对话框中添加两个静态文本控件、一个编辑框控件、和两个按钮控件。

分别设置两个静态文本控件的Caption属性为“用户名”和“密码”设置编辑框控件类型为password;

分别设置连个按钮为“确定”和“取消”。

C.在窗体初始化方法中创建用户表的数据,并将用户添加到列表框控件中。

代码如下:

BOOLCLoginDialog:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

m_DataSet.SetConnection(GetConnection());

m_DataSet.Open("Select*FromTab_User");

intcount=m_DataSet.GetRecordCount();

for(inti=0;i

{

m_UserList.AddString((_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value);

m_DataSet.Next();

}

m_UserList.SetCurSel(0);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

}

d.确定按钮事件代码如下:

voidCLoginDialog:

:

OnLogin()

{

CStringsql,user,pass;

m_UserList.GetWindowText(user);

m_PassWord.GetWindowText(pass);

sql.Format("Select*Fromtab_userWhereUserName='%s'andPassWord='%s'",

user,pass);

m_DataSet.Open(sql);

if(m_DataSet.GetRecordCount()==1)

{

:

:

SetUserName(user);

this->OnOK();

}

else

AfxMessageBox("用户名或密码不正确!

");

}

Ø七、用户管理模块

A.概况:

能实现添加,修改,删除等操作如图:

B.实现过程:

a.创建一个对话框

b.向对话框中添加相应的控件

c.给对话框添加对话框类

d.给类添加函数及成员变量

e.给控件关联变量

f.编写函数

C.实现代码:

a.定义UpdateGrid方法用来更新列表视图中的信息代码如下:

voidCUserManage:

:

UpdateGrid()

{

m_DataSet.Open("Select*Fromtab_User");

m_grid.DeleteAllItems();

for(inti=0;i

{

m_grid.InsertItem(i,(_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value);

intno=m_DataSet.GetRecordNo();

m_grid.SetItemData(i,no);

m_DataSet.Next();

}

}

b.添加按钮代码如下:

voidCUserManage:

:

OnAppend()

{

CUserEdituseredit;

if(useredit.DoModal()==IDOK)

{

m_DataSet.AddNew();m_DataSet.SetFieldValue("UserName",(_bstr_t)useredit.name);

m_DataSet.Save();

UpdateGrid();

}

}

c.删除按钮代码:

voidCUserManage:

:

OnDelete()

{

if(MessageBox("是否删除此记录!

","提示",

MB_YESNO|MB_ICONWARNING)==IDYES)

{

intno=m_grid.GetItemData(m_grid.GetSelectionMark());

m_DataSet.move(no-1);

m_DataSet.Delete();

m_DataSet.Save();

UpdateGrid();

}

}

d.修改按钮代码:

voidCUserManage:

:

OnEdit()

{

CUserEdituseredit;

intno=m_grid.GetItemData(m_grid.GetSelectionMark());

m_DataSet.move(no-1);

useredit.name=(char*)(_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value;

if(useredit.DoModal()==IDOK)

{

m_DataSet.SetFieldValue("UserName",(_bstr_t)useredit.name);

m_DataSet.Save();

UpdateGrid();

}

}

Ø八、部门管理模块设计

A.概述:

该模块记录了部门间的的层次结构和部门信息,一般使用树控件实现,如图:

B.实现过程:

a.创建一个对话框

b.向对话框中添加相应的控件

c.给对话框添加对话框类

d.给类添加函数及成员变量

e.给控件关联变量

f.编写函数

C.相关代码如下:

BOOLCDeptManage:

:

OnInitDialog()//初始化函数

{

CDialog:

:

OnInitDialog();

m_DataSet.SetConnection(:

:

GetConnection());

UpdateDept();

returnTRUE;}

将部门信息一次性读入树控件中。

代码如下:

voidCDeptManage:

:

GetNode(HTREEITEMpNode,intnPid)

{

HTREEITEMnode;

CADODataSetDataSet;

DataSet.SetConnection(:

:

GetConnection());

CStringstr;

str.Format("Select

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1