人事考勤管理系统c++毕业课程设计文档文档格式.docx

上传人:b****7 文档编号:22363724 上传时间:2023-02-03 格式:DOCX 页数:56 大小:277.21KB
下载 相关 举报
人事考勤管理系统c++毕业课程设计文档文档格式.docx_第1页
第1页 / 共56页
人事考勤管理系统c++毕业课程设计文档文档格式.docx_第2页
第2页 / 共56页
人事考勤管理系统c++毕业课程设计文档文档格式.docx_第3页
第3页 / 共56页
人事考勤管理系统c++毕业课程设计文档文档格式.docx_第4页
第4页 / 共56页
人事考勤管理系统c++毕业课程设计文档文档格式.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

人事考勤管理系统c++毕业课程设计文档文档格式.docx

《人事考勤管理系统c++毕业课程设计文档文档格式.docx》由会员分享,可在线阅读,更多相关《人事考勤管理系统c++毕业课程设计文档文档格式.docx(56页珍藏版)》请在冰豆网上搜索。

人事考勤管理系统c++毕业课程设计文档文档格式.docx

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.Files\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方法是构造方法,用于取消OLE的初始化和释放_Connection接口指针

if(IsOpen())

m_Connection->

Close();

m_Connection=NULL;

UnInitADO();

voidCADOConnection:

InitADO()InitADO是一个静态方法,用于初始化OLE

if(ConCount++==0)

CoInitialize(NULL);

UnInitADO()UnInitADO是一个静态方法,用于取消初始化OLE

if(--ConCount==0)

CoUninitialize();

BOOLCADOConnection:

Open(CStringConStr)通过指定的数据库连接字符串于SQL数据库建立连接

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;

IsOpen()判断当前数据库连接对象与数据库的连接状态

longState;

get_State(&

State);

if(State==adStateOpen)

returntrue;

returnfalse;

CADODataSet类的定义如下:

classCADODataSet

_RecordsetPtrm_DataSet;

数据集接口指针

CADOConnection*m_Connection;

数据库连接对象

BOOLOpen(CStringSQLStr,intLockType);

打开记录集

voidDelete();

记录删除

intGetRecordNo();

获取记录集行号

voidmove(intnIndex);

移动记录指针

voidSave();

保存对记录集的修改

voidSetFieldValue(CStringFieldName,_variant_tValue);

设置字段的值

voidAddNew();

添加新纪录

BOOLNext();

记录集指针指向下一个记录

FieldsPtrGetFields();

获取记录集字段集合

intGetRecordCount();

获取记录集中记录数量

voidSetConnection(CADOConnection*pCon);

设置记录集的数据库连接对象

BOOLOpen(CStringSQLStr);

CADODataSet();

virtual~CADODataSet();

CADODataSet类的实现如下:

CADODataSet:

CADODataSet()该方法为记录集实现类的构造方法,在该方法中实现记录集接口对象的创建

m_DataSet.CreateInstance("

ADODB.Recordset"

CADODataSet:

~CADODataSet()实现记录集的关闭与接口的释放

m_DataSet->

m_DataSet=NULL;

voidCADODataSet:

SetConnection(CADOConnection*pCon)设置记录集所连接的数据库连接类的对象

m_Connection=pCon;

intCADODataSet:

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

returnm_DataSet->

GetRecordCount();

else

return0;

BOOLCADODataSet:

Open(CStringSQLStr)打开数据集

*

m_DataSet->

Open(_bstr_t(SQLStr),

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

adOpenKeyset,adLockOptimistic,adCmdText);

IsOpen()判断数据集是否处于打开状态

FieldsPtrCADODataSet:

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

returnm_DataSet->

GetFields();

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

if(m_DataSet->

adoEOF)

returnfalse;

MoveNext();

returntrue;

AddNew()

AddNew();

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

PutCollect((_bstr_t)FieldName,Value);

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

Update();

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

MoveFirst();

Move(nIndex);

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

AbsolutePosition;

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

Delete(adAffectCurrent);

Open(CStringSQLStr,intLockType)

adOpenKeyset,(LockTypeEnum)LockType,adCmdText);

五、主题窗设计

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

B.主题窗设计步骤:

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

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

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

六、用户登录模块设计

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

B.技术分析

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

BOOLbCon=、GetConnection()->

Open(GetConnection()->

GetSQLConStr());

CLoginDialoglogindlg;

if(logindlg.DoModal()!

=IDOK)

:

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<

count;

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='

user,pass);

m_DataSet.Open(sql);

if(m_DataSet.GetRecordCount()==1)

:

SetUserName(user);

this->

OnOK();

AfxMessageBox("

用户名或密码不正确!

七、用户管理模块

A.概况:

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

B.实现过程:

a.创建一个对话框

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

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

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

e.给控件关联变量

f.编写函数

C.实现代码:

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

voidCUserManage:

UpdateGrid()

Select*Fromtab_User"

m_grid.DeleteAllItems();

for(inti=0;

i<

m_DataSet.GetRecordCount();

m_grid.InsertItem(i,(_bstr_t)m_DataSet.GetFields()->

intno=m_DataSet.GetRecordNo();

m_grid.SetItemData(i,no);

}

b.添加按钮代码如下:

voidCUserManage:

OnAppend()

CUserEdituseredit;

if(useredit.DoModal()==IDOK)

m_DataSet.AddNew();

m_DataSet.SetFieldValue("

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

d.修改按钮代码:

OnEdit()

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

m_DataSet.move(no-1);

useredit.name=(char*)(_bstr_t)m_DataSet.GetFields()->

Value;

m_DataSet.SetFieldValue("

八、部门管理模块设计

A.概述:

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

B.实现过程:

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

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

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

e.给控件关联变量

f.编写函数

C.相关代码如下:

BOOLCDeptManage:

OnInitDialog()初始化函数

m_DataSet.SetConnection(:

GetConnection());

UpdateDept();

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

代码如下:

voidCDeptManage:

GetNode(HTREEITEMpNode,intnPid)

HTREEITEMnode;

CADODataSetDataSet;

DataSet.SetConnection(:

CStringstr;

str.Format("

Select*Fromtab_Deptwherepid=%d"

nPid);

DataSet.Open(str);

intcount=DataSet.GetRecordCount();

intID;

_variant_tvalue;

i<

count;

node=m_tree.InsertItem((_bstr_t)DataSet.GetFields()->

Item["

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

当前位置:首页 > 外语学习 > 法语学习

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

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