首页
会员中心
到顶部
到尾部
计算机

C++ 员工考勤管理系统说明书+源码免费下载

时间:2020/10/14 13:35:03  作者:  来源:  查看:0  评论:0
内容摘要: gin-top: 0px; margin-bottom: 0px; -ms-text-justify: inter-ideograph;">User.GetInfo(m_User); // 判断密码是否正确if(User.Passwd != m_Passwd){...

gin-top: 0px; margin-bottom: 0px; -ms-text-justify: inter-ideograph;">User.GetInfo(m_User); // 判断密码是否正确

if(User.Passwd != m_Passwd)

{……//同用户判断}

CDialog::OnOK();// 关闭对话框}

2.2 基本信息管理模块

基本信息管理模块包括节假日信息管理,部门信息管理和员工信息管理。

4.2.1 节假日信息管理

节假日信息管理,首先对节假日信息的编辑,判断节假日记录是否存在,存入数据。在从HolidaySet中读取所有节假日记录,在对记录进行操作,即添加,修改和删除。普通用户是不能打开这一块信息的,节假日管理对他们是不可见的。

C++ 员工考勤管理系统说明书+源码免费下载

图3 节假日信息框

部分代码如下:

BOOL CHolidayManDlg::OnInitDialog()// 初始化

{CDialog::OnInitDialog();

RefreshData();}

void CHolidayManDlg::RefreshData()// 更新数据

{UpdateData(TRUE);

CString cSource = "SELECT Id, HolidayDate AS 节假日, HolidayName AS 名称"  " FROM HolidaySet";// 设置Select语句

m_Adodc.SetRecordSource(cSource); //刷新ADO Data控件的记录源

m_Adodc.RefreshData()}

void CHolidayManDlg::OnAddButton() //添加按钮

{UpdateData(TRUE);

CHolidayEditDlg dlg; // 初始化HolidayEditDlg对话框中的变量

if (dlg.DoModal() == IDOK)

RefreshData();}

void CHolidayManDlg::OnModiButton()// 修改按钮

{CHolidayEditDlg dlg; // 设置HolidayEditDlg对话框中的变量

if (dlg.DoModal() == IDOK) // 打开HolidayEditDlg对话框

RefreshData();}

void CHolidayManDlg::OnDelButton()// 删除按钮

{cur.SqlDelete(m_Datagrid.GetItem(0));

RefreshData();}

4.2.2 部门信息管理

部门信息管理模块包括部门信息编辑对话框,部门信息管理对话框和部门信息选择对话框。

部门编辑主要是用来添加和修改部门信息。部门信息管理对话框,是系统管理员进行的操作,如果当前用户不是系统管理员,则添加,修改,和删除等按钮是不可以用,他们没有相关的权限。在删除部门的时候要对部门信息进行判断,如果部门是根节点,包含下一级部门和员工时不能删除。部门信息的选择,是为了方便用户选择部门,以后的其他模块程序可以通过此程序来获取选择的部门信息。

C++ 员工考勤管理系统说明书+源码免费下载

图4 部门图

主要代码如下:

BOOL CDepManDlg::OnInitDialog() //初始化

{CDialog::OnInitDialog();}

void CDepManDlg::AddtoTree(HTREEITEM m_node, int UpperId)

{//使用递归方法将部门添加到TreeView控件中

int i;

HTREEITEM m_child;

if(UpperId == atoi(dep.a_UID.GetAt(i)))

{m_child = m_tree.InsertItem(dep.a_DepName.GetAt(i), m_node);

m_tree.SetItemData(m_child, atol(dep.a_DepId.GetAt(i)));

AddtoTree(m_child, atoi(dep.a_DepId.GetAt(i)));

}}

void CDepManDlg::OnAddButton() //添加按钮

{HTREEITEM node;  //用于保存当前选择的节点

node = m_tree.GetSelectedItem();  //取得当前选择的节点}

// 删除按钮

void CDepManDlg::OnDelButton()

{HTREEITEM node;  //用于保存当前节点

node = m_tree.GetSelectedItem();  //取得当前节点

//弹出对话框,要求用户确认是否删除。如果用户单击“是”按钮,则删除

if (MessageBox("是否删除当前部门?", "请确认", MB_YESNO) == IDYES)

{dep.SqlDelete(cDepId);  //删除表Departments中的指定记录

m_tree.DeleteItem(node);  //删除Tree控件中的当前节点}}

4.2.3 员工信息管理

编辑员工基本信息对话框用来添加和修改员工信息,主要包括员工的姓名,性别,出生日期,身份证号,到岗日期,办公电话,手机电话,工作岗位,职务和描述信息。员工管理则是通过选择部门信息,添加,修改和删除员工信息 这里可以查看每个部门下的员工信息。同样普通用户只能查看员工信息,不能对其信息进行添加,修改和删除等操作。

C++ 员工考勤管理系统说明书+源码免费下载

图5 员工信息图

主要代码如下:

void CEmpManDlg::RefreshData()

{UpdateData(TRUE);

int iDepId; //从Tree控件中读取部门编号信息

HTREEITEM node;

node = m_tree.GetSelectedItem();

iDepId = m_tree.GetItemData(node);

CString cDepId; //根据部门编号设置SELECT语句

cDepId.Format("%d", iDepId);

// 设置SELECT语句

CString cSource = "SELECT EmpId, Name AS 姓名, Sex AS 性别,"

" Birthday AS 生日, IdCard AS 身份证号, OfficePhone AS 办公电话,"

" Mobile AS 手机号码, HireDate AS 到岗日期, Mission AS 工作岗位,"

" Duty AS 职务, Memo AS 备注 FROM EmpInfo e, DepInfo d"

" WHERE e.DepId = d.DepId";…}

void CEmpManDlg::OnAddButton()// 添加按钮

{UpdateData(TRUE);

CTime CurrentTime = CTime::GetCurrentTime();// 添加员工时,将日期控件设置为当天

if(dlg.DoModal()==IDOK)

RefreshData();}

void CEmpManDlg::OnModiButton()// 修改按钮

{UpdateData(TRUE);

CEmpInfo emp; // 读取选择员工的记录

emp.GetInfo(m_Datagrid.GetItem(0));

CEmpEditDlg dlg; // 将员工数据读取到编辑对话框中

if(dlg.DoModal()==IDOK)

RefreshData();}

void CEmpManDlg::OnDelButton()// 删除按钮

{CEmpInfo emp;

emp.SqlDelete(m_Datagrid.GetItem(0));

RefreshData();}

2.3 考勤管理模块

考勤管理模块主要实现了出勤信息管理,加班信息管理,请假信息管理和出差信息管理。

4.3.1 出勤信息管理

出勤信息编辑对话框中,首先单击选择部门按钮,在左侧的表格中将显示选择部门中的所有员工信息。选择一个员工,会在右侧下方显示他的出勤状态。选择出勤状态,然后单击确定按钮,可以保存指定员工的出勤情况。

出勤管理对话框中,根据左边的部门,列出各个部门中的员工及其员工的出勤信息,出勤时间,是否全勤,是否出差,是否迟到,是否早退,是否旷工等。用户可以根据实际的情况进行具体的操作,添加,修改和删除。

C++ 员工考勤管理系统说明书+源码免费下载

图6 出勤信息

主要代码如下:

void COnDutyManDlg::RefreshData()

{UpdateData(TRUE);

int iDepId; //从Tree控件中读取部门编号信息

HTREEITEM node;

node = m_tree.GetSelectedItem();

iDepId = m_tree.GetItemData(node);

CString cDepId; //根据部门编号设置SELECT语句

cDepId.Format("%d", iDepId);

// 设置SELECT语句

CString cSource = "SELECT c.EmpId AS 员工编号, e.Name AS 姓名, c.CheckDate AS 出勤日期," " c.QuanQin AS 是否全勤, c.XiuXi AS 是否休息, c.KuangGong AS 是否旷工,"" c.ChiDao AS 是否迟到, c.ZaoTui AS 是否早退 FROM CheckInfo c, EmpInfo e, DepInfo d"" WHERE c.EmpId = e.EmpId AND e.DepId = d.DepId";

m_Adodc.SetRecordSource(cSource); //刷新ADO Data控件的记录源

m_Adodc.Refresh();}

void COnDutyManDlg::OnAddButton()// 添加按钮{...}

void COnDutyManDlg::OnModiButton()//修改按钮{…}

void COnDutyManDlg::OnDelButton()//删除按钮{…}

程序调用m_tree.GetSelectedItem()函数获取当前选择的部门接点数据,并使用GetItemData(node)函数获取部门编号。然后根据选择的部门编号设置SELECT语句,从表CheckInfo,表EmpInfo和表DepInfo中获取部门中所有员工的出勤记录。

4.3.2 加班信息管理

加班信息编辑对话框主要是对员工的加班情况的添加和修改。首先点击选择部门,在左侧则列出所有部门及其员工信息,选择一个员工,会在右侧下方显示他的加班状态。选择加班状态,包括加班时数,加班原因和加班类型,然后单击确定按钮,可以保存指定员工的加班情况。

加班信息管理对话框中,通过点击左边的部门,列出各个部门中的员工及其员工的加班信息,加班时间,加班时数,加班原因和加班类型等。用户可以根据实际的情况进行具体的操作,添加,修改和删除。

C++ 员工考勤管理系统说明书+源码免费下载

图7 加班信息框

部分代码如下:

void COvertimeManDlg::OnAddButton() //添加按钮

{COvertimeEditDlg dlg;

CurrentTime = CTime::GetCurrentTime();

dlg.otDate = CurrentTime.Format("%Y-%m-%d");

if (dlg.DoModal() == IDOK)

RefreshData();}

void COvertimeManDlg::OnModiButton()// 修改按钮

{if (m_Adodc.GetRecordset().GetEof())

{MessageBox("请选择要修改的记录!");

return;}

CEmpInfo emp; // 根据员工编号得到员工信息

emp.GetInfo(m_Datagrid.GetItem(0));

CString cDepId; // 根据部门编号得到部门信息

cDepId.Format("%d", emp.DepId);

dep.GetInfo(cDepId);

COvertimeEditDlg dlg;

if(m_Datagrid.GetItem(4) == "法定节假日加班")

dlg.m_overtime = 0;

else if(m_Datagrid.GetItem(4) == "周六日加班")

dlg.m_overtime = 1;

else if(m_Datagrid.GetItem(4) == "日常加班")

dlg.m_overtime = 2;

dlg.otDate = m_Datagrid.GetItem(2);// 日期

dlg.m_describe = m_Datagrid.GetItem(5);

if (dlg.DoModal() == IDOK)

RefreshData();}

void COvertimeManDlg::OnDelButton()//删除按钮

{cur.SqlDelete(m_Datagrid.GetItem(2), m_Datagrid.GetItem(0));}

4.3.3 请假信息管理

请假信息编辑对话框中,首先点击选择部门,在左侧则列出所有部门及其员工信息,选择一个员工,会在右侧下方显示他的请假状态。选择出勤状态,请假分为病假和事假,并且需要输入请假原因,然后单击确定按钮,可以保存指定员工的请假情况。

请假信息管理对话框中,通过点击左边的部门,列出各个部门中的员工及其员工的信息,选中员工的姓名则可以进行员工的请假信息的编辑。用户可以根据实际的情况进行具体的操作,添加,修改和删除。

C++ 员工考勤管理系统说明书+源码免费下载

图8 请假信息图

主要代码如下:

void CLeaveEditDlg::OnOK()

{UpdateData(TRUE);

if(m_Adodc.GetRecordset().GetEof())// 是否选择人员

{MessageBox("请选择人员");

return;}

if(m_shijia == -1) // 是否进行添加考勤状态

{MessageBox("请选择出勤状态");

return;}

CCheckInfo cur;

cur.CheckDate = CheckDate; // 赋值到CCheckInfo对象中

cur.EmpId = atol(m_Datagrid.GetItem(0));

switch(m_shijia)

{cur.Memo = m_memo;

if(EmpId == "")

{// 在添加时,若人员有出勤记录,则不允许添加

if(cur.HaveEmp(CheckDate, m_Datagrid.GetItem(0)))

{MessageBox("已经有此员工的出勤信息,不能添加");

return;}

cur.SqlInsert();// 插入记录}

else

{cur.UpdateLeave(cur.CheckDate, EmpId); // 修改CheckInfo表记录}

CDialog::OnOK();}

请假信息保存在表CheckInfo中,如果在出勤信息管理模块中输入了出勤信息,则不能再输入请假信息。如果修改记录,则程序调用Update Leave()函数,更新表CheckInfo中的Shijia ,Bingjia和Memo等字段的值。

4.3.4 出差信息管理

出差信息管理编辑对话框主要是对员工的出差情况的添加和修改。首先点击选择部门,在左侧则列出所有部门及其员工信息,选择一个员工,会在右侧下方显示他的出差状态。选择出差状态,写出出差原因,然后单击确定按钮,可以保存指定员工的出差情况。

出差信息管理对话框中,通过点击左边的部门,列出各个部门中的员工及其员工的出差信息。用户可以根据实际的情况进行具体的操作,添加,修改和删除。

C++ 员工考勤管理系统说明书+源码免费下载

图9 出差信息

主要代码如下:

void CErrandEditDlg::OnOK()

{UpdateData(TRUE);

if(m_Adodc.GetRecordset().GetEof())// 是否选择人员

{MessageBox("请选择人员");

return; }

CCheckInfo cur;

cur.CheckDate = CheckDate; // 赋值到CCheckInfo对象中

cur.EmpId = atol(m_Datagrid.GetItem(0));

cur.ChuChai = "是";

cur.QuanQin = "否";

cur.BingJia = "否";

cur.ShiJia = "否";

cur.KuangGong = "否";

cur.XiuXi = "否";

cur.ChiDao = "否";

cur.ZaoTui = "否";

cur.Memo = m_memo;

if(EmpId == "")

{// 在添加时,若人员有出勤记录,则不允许添加

if(cur.HaveEmp(CheckDate, m_Datagrid.GetItem(0)))

{MessageBox("已经有此员工的出勤信息,不能添加");

Return;}

cur.SqlInsert();// 插入记录}

else

{cur.UpdateErrand(cur.CheckDate, m_Datagrid.GetItem(0)); // 修改CheckInfo表记录}

CDialog::OnOK();……}

2.4 统计查询模块

统计查询模块主要是实现了日考勤统计表,月考勤统计表,当日缺勤人员列表3个功能。

4.4.1 日考勤统计表

日考勤统计表按日查询所有员工的出勤,加班,请假和出差等信息。首先选择要查询的日期,在点击查询按钮,即列出这日期的员工信息,包括员工编号,员工姓名,出勤日期,是否全勤,是否出差,是否请假,是否加班等等。

C++ 员工考勤管理系统说明书+源码免费下载

图10 日考勤统计图

主要代码如下:

void CTimeSelDlg::RefreshData()

{UpdateData(TRUE);

CString cTime; //根据部门编号设置SELECT语句

cTime = m_time.Format("%Y-%m-%d");

// 设置SELECT语句

CString cSource = "SELECT c.EmpId AS 员工编号, e.Name AS 姓名, c.CheckDate AS 出勤日期," " c.QuanQin AS 是否全勤, c.ChuChai AS 是否出差, c.ShiJia AS 是否事假," " c.BingJia AS 是否病假, c.KuangGong AS 是否旷工, c.XiuXi AS 是否休息," " c.ChiDao AS 是否迟到, c.ZaoTui AS 是否早退, c.Memo AS 备注"" FROM CheckInfo c, EmpInfo e WHERE c.EmpId = e.EmpId AND c.CheckDate = '" + cTime + "'";

//刷新ADO Data控件的记录源

m_Adodc.SetRecordSource(cSource);

m_Adodc.Refresh();}

程序执行SELECT语句,从表CheckInfo和EmpInfo中读取选择日期中各员工的考勤信息。

4.4.2 月考勤统计表

月考勤统计表是按月统计所有员工的出勤天数,请假天数,出差天数等信息。为了对各种考勤天数进行统计,需要创建一组视图,分别按月统计所有员工的全勤天数,休息天数,旷工天数,迟到次数,早退次数,病假天数,事假天数和出差天数。在表CheckInfo中,CheckDate字段保存考勤日期,LEFT(CheckDate)返回考勤日期的年份和月份信息,使用COUNT()函数和GROUP BY子句统计考勤月份和员工分组的各种考勤天数。

C++ 员工考勤管理系统说明书+源码免费下载

图11 月考勤统计图

主要代码如下:

void CDepDlg::RefreshData()

{UpdateData(TRUE);

//根据部门编号设置SELECT语句

CString cStrCnd,cDepId;

cDepId.Format("%d", iDepId);

if ( iDepId >0 )

cStrCnd = " And d.DepId=" + cDepId;

else

cStrCnd = "";

CString cTime; // 查询日期

// 得到年份和月份

m_year.GetLBText(m_year.GetCurSel(), cYear);

m_month.GetLBText(m_month.GetCurSel(), cMonth);

cTime = cYear + "-" + cMonth; // 得到日期

// 设置SELECT语句

CString cSource = "SELECT e.Name AS 姓名,"

" ISNULL(v1.CountQuanQin,0) AS 全勤天数, ISNULL(v2.CountChuChai,0) AS 出差天数,"

" ISNULL(v3.CountShiJia,0) AS 事假天数, ISNULL(v4.CountBingJia,0) AS 事假天数,"

" ISNULL(v5.CountKuangGong,0) AS 旷工天数, ISNULL(v6.CountXiuXi,0) AS 休息天数,"

" ISNULL(v7.CountChiDao,0) AS 迟到次数, ISNULL(v8.CountZaoTui,0) AS 早退次数"

" FROM v_QuanQin v1, v_ChuChai v2, v_ShiJia v3, v_BingJia v4,DepInfo d, "

" v_KuangGong v5, v_XiuXi v6, v_ChiDao v7, v_ZaoTui v8, EmpInfo e"

" WHERE e.EmpId *= v1.EmpId AND e.EmpId *= v2.EmpId And e.DepId=d.DepId"

" AND e.EmpId *= v3.EmpId AND e.EmpId *= v4.EmpId AND e.EmpId *= v5.EmpId"

" AND e.EmpId *= v6.EmpId AND e.EmpId *= v7.EmpId AND e.EmpId *= v8.EmpId"

" AND v1.CheckMonth = '" + cTime + "' AND v2.CheckMonth = '" + cTime +

"' AND v3.CheckMonth = '" + cTime + "' AND v4.CheckMonth = '" + cTime +

"' AND v5.CheckMonth = '" + cTime + "' AND v6.CheckMonth = '" + cTime +

"' AND v7.CheckMonth = '" + cTime + "' AND v8.CheckMonth = '" + cTime + "'" + cStrCnd;

//刷新ADO Data控件的记录源

m_Adodc.SetRecordSource(cSource);

m_Adodc.Refresh();…}

程序执行SELECT语句,从表EmpInfo和其他视图中读取选择月份中各员工的考勤信息,ISNULL()函数是SQL Server的内部函数,它的功能是当第一个参数为NULL时,将第二个参数作为结果返回。

4.4.3 当日考勤人员列表

当日考勤人员列表查询当前系统日期中所有缺勤的员工信息,缺勤指病假,事假和旷工等情况。

C++ 员工考勤管理系统说明书+源码免费下载

图12 当日缺勤人员图

主要代码如下:

void CAbsenceDlg::RefreshData()

{UpdateData(TRUE);

CString cTime; //根据部门编号设置SELECT语句

cTime = CurrentTime.Format("%Y-%m-%d");

// 设置SELECT语句

CString cSource = "SELECT e.EmpId AS 员工编号, e.Name AS 姓名, d.DepName AS 部门名称,"

" e.Mobile AS 联系电话 FROM DepInfo d, EmpInfo e"

" WHERE e.DepId = d.DepId AND e.EmpId IN"

" (SELECT EmpId FROM CheckInfo WHERE (ShiJia='是' OR BingJia='是' OR KuangGong='是')"

" AND CheckDate = '" + cTime + "')";

m_Adodc.SetRecordSource(cSource); //刷新ADO Data控件的记录源

m_Adodc.Refresh();…}

程序中使用了嵌套查询语句,即在一个SELECT语句中嵌套使用了另外一个SELECT语句。主SELECT语句显示员工和部门信息,在其查询条件中使用IN子句嵌套另一个SELECT语句。从SELECT可以返回表CheckInfo中当日事假,病假和旷工的记录。

2.5 用户管理模块

根据用户类型的不同,用户管理模块的功能也不相同,主要包括Admin用户可以创建其他用户,修改用户的密码,删除其他用户,而其他用户只能修改自身的用户信息。

这个模块包括了用户管理和密码修改两个功能。在用户管理中只有Admin用户才可以进行操作,可以添加删除其他用户信息。

C++ 员工考勤管理系统说明书+源码免费下载

图13 用户管理框图

主要代码如下:

void CUserManDlg::RefreshData()

{UpdateData(TRUE);

// 设置Select语句

CString cSource = "SELECT UserName AS 用户名, Passwd,"

" (CASE When UserType=1 Then '系统管理员' ELSE '普通用户' END) AS 用户类型,"

"UserType FROM UserInfo";

//刷新ADO Data控件的记录源

m_Adodc.SetRecordSource(cSource);

m_Adodc.Refresh();……}

void CPasswdDlg::OnOK()

{//将对话框中编辑框的数据读取到成员变量中

UpdateData(TRUE);

//检查数据有效性

if (m_old == "")

{MessageBox("请输入旧密码");

GetDlgItem(IDC_OLD_EDIT)->SetFocus();

return;}

if (m_new == "")

{MessageBox("请输入新密码");

GetDlgItem(IDC_NEW_EDIT)->SetFocus();

return;}

if (m_confirm != m_new)

{MessageBox("两次输入的新密码不同");

UpdateData(FALSE);

GetDlgItem(IDC_NEW_EDIT)->SetFocus();

return;}

//定义CUserInfo对象,用于从表UserInfo中读取数据

CUserInfo cur;

cur.GetInfo(m_user);

//如果读取的数据与用户输入数据不同,则返回

if (cur.Passwd != m_old)

{MessageBox("用户密码不正确!");

UpdateData(FALSE);

GetDlgItem(IDC_OLD_EDIT)->SetFocus();

return;}

cur.Passwd = m_new;

cur.SqlUpdate(m_user);

MessageBox("密码修改成功,下次登录请使用新密码");

CDialog::OnOK();}

SELECT语句中使用了3个表,表UserInfo,表DepInfo和EmpInfo。为了防止因为表UserInfo中的EmpId字段找不到表EmpInfo中对应的EmpId字段值而造成用户记录无法显示问题,在表之间连接关系时使用了LEFT JION关键字,即只要是UserInfo中存在的记录都将出现在结果集中,无论它在其他两个表中是否存在对应的记录。

程序将对用户输入的密码进行验证,包括旧密码是否为空,新密码是否为空,两次输入的新密码是否相同,旧密码是否通过密码验证,通过验证后,程序调用CUsers::sql_updatePassword()函数,更新用户密码。


下载说明书及源码C++ 员工考勤管理系统说明书+源码免费下载C++ 员工考勤管理系统.zip

,

1 考勤管理系统的设计

1.1 需求分析

考勤管理系统的用户是各单位负责考勤管理的员工和领导,它可以有效的管理公司单位员工的出勤情况,规范人事制度的管理。管理员可以创建用户,修改用户信息以及删除用户,和对公司一些员工信息的编辑等。该系统包括基本信息管理,考勤信息管理,统计查询和用户管理等主要模块。每一个功能模块都需要针对不同的表来完成相同的数据库操作,即添加记录,修改记录,删除记录以及查询显示记录信息。具体功能有以下几个方面。

1、基本信息的添加,修改,删除和查询。节本信息管理包括节假日日期设置,部门信息管理和员工信息管理。

2、考勤信息管理包括出勤管理,加班管理,请假管理和出差管理等功能。

3、统计查询功能包括日考勤统计表,月考勤统计表和当日缺勤人员列表。

4、用户管理包括Admin用户管理和其他用户管理。

1.2 功能模块构成

考勤管理系统由基本信息管理模块、考勤信息模块、统计查询模块和用户管理模块四个主要功能模块构成。

基本信息管理模块,包括节假日日期设置,部门信息管理缓和员工信息管理。节假日日期信息只包括具体的日期数据,部门信息包括部门名称和部门功能的描述,员工信息包括员工姓名,性别,生日,身份证号等。

考勤信息包括出勤,加班,请假,出差等信息。出勤信息包括全勤,休息,旷工,迟到和早退等信息;加班信息包括员工信息,加班时间,加班类型和加班描述;请假信息包括员工信息,请假类型和原因;出差信息包括员工信息和出差原因。

统计查询模块包括日考勤统计表,月考勤统计表和当日缺勤人员列表。日考勤统计表包括员工姓名,考勤日期,是否全勤,是否请假等信息,月考勤统计表包括员工姓名,考勤月份,全勤天数,出差天数等信息,当日缺勤人员列表包括系统当前日期缺勤员工的姓名,所在部门和联系电话等信息。

用户管理模块用户包括Admin用户和普通用户。Admin用户可以修改自己的密码,创建修改和删除普通用户信息。普通用户只能修改自身的信息

功能模块构成如图1:

C++ 员工考勤管理系统说明书+源码免费下载

图1 功能模块

1.3 数据库结构设计

考勤管理系统数据库采用Microsoft SQL SERVER 2000,在使用数据库过程中,接触最多的就是数据库中的表,表是数据存储的地方,是数据库最重要的部分。这个系统数据库表由6个表构成,具体如下。

CheckInfo表是记录考勤信息的,记录员工迟到,早退,全勤,旷工,病假,事假,休息,出差等信息。

表1 CheckInfo

字  段

数据类型

长 度

是否允许为空

字段描述

CheckDate

char

10

考勤日期

EmpId

int

4

员工编号

QuanQin

char

2

全勤

ChuChai

char

2

出差

BingJia

char

2

病假

ShiJia

char

2

事假

KuangGong

char

2

旷工

XiuXi

char

50

休息

ChiDao

char

50

迟到

Zaotui

char

50

早退

Memo

varchar

200

备注

DepInfo表是记录部门信息的。DepId为主键。

表2 DepInfo

字  段

数据类型

长 度

是否允许为空

字段描述

DepId

int

4

部门编号

DepName

varchar

50

部门名称

Describes

varchar

250

描述

UID

int

4

总的编号

EmpInfo表是记录员工的基本信息。管理员可以查看员工信息,添加员工信息需要用的表。EmpId是主键。

表3  EmpInfo

字  段

数据类型

长 度

是否允许为空

字段描述

EmpId

int

4

编号

Name

varchar

50

姓名

Sex

char

2

性别

Birthday

varchar

20

生日

IdCard

varchar

20

身份证号

OfficePhone

varchar

30

办公电话

Mobile

varchar

30

手机电话

HireDate

Int

4

到岗日期

DepId

varchar

40

部门编号

Mission

varchar

50

工作岗位

Duty

varchar

20

职务

Memo

varchar

200

备注信息

HolidaySet表是设置节假日信息的。Id为主键。

表4  HolidaySet

字  段

数据类型

长 度

是否允许为空

字段描述

Id

int

4

编号

HolidayDate

char

10

节假日期

HolidayName

varchar

50

节假名称

OverTime表是记录加班信息的。

表5  OverTime

字  段

数据类型

长 度

是否允许为空

字段描述

otDate

Char

10

加班日期

EmpId

int

4

员工编号

otHour

smallint

2

加班时间

otType

varchar

50

加班类型

Describes

varchar

200

描述

UserInfo表是记录用户信息的,包括用户名和密码。

表6 UserInfo

字  段

数据类型

长 度

是否允许为空

字段描述

UserName

varchar

40

用户名

Passwd

varchar

40

密码

UserType

int

4

用户类型

2 考勤管理系统的实现

2.1 系统登陆功能的实现

用户要使用本系统,首先必须通过系统的身份认证。如果用户名错误或者不存在,密码错误3次后,对话框自动关闭。

C++ 员工考勤管理系统说明书+源码免费下载

图2 登陆对话框

具体代码如下:

void CLoginDlg::OnOK()

{UpdateData(TRUE); //将对话框中编辑框的数据读取到成员变量中

if(m_User == "")// 没有输入用户名

{MessageBox("请输入用户名", "信息提示");

GetDlgItem(IDC_USER_EDIT)->SetFocus();

return;}

CUserInfo User; // 定义用户信息表变量

if(!User.IsExistUser(m_User)) // 判断用户是否存在

{count++;

if(count < 3)

{MessageBox("用户名不存在,请重新输入!", "用户名错误", MB_ICONINFORMATION);

UpdateData(FALSE);

GetDlgItem(IDC_USER_EDIT)->SetFocus();

return;}

else

{MessageBox("重试次数已到,不能再输入用户名和密码,即将退出系统!", "用户名错误", MB_ICONEXCLAMATION);

exit(0);}}

  



相关评论
广告联系QQ:45157718 点击这里给我发消息 电话:13516821613 杭州余杭东港路118号雷恩国际科技创新园  网站技术支持:黄菊华互联网工作室 浙ICP备06056032号