考勤管理系统4.docx
- 文档编号:24438948
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:21
- 大小:590.22KB
考勤管理系统4.docx
《考勤管理系统4.docx》由会员分享,可在线阅读,更多相关《考勤管理系统4.docx(21页珍藏版)》请在冰豆网上搜索。
考勤管理系统4
考勤管理系统
摘要:
考勤管理是与我们日常生活息息相关的问题。
本文设计并实现了一个考勤管理系统详细介绍了系统从需求分析,总体设计,详细设计以及实施各阶段的主要内容和成果。
设计实现的管理系统能够正确有效地完成考勤管理的日常工作,并能够根据需求进行灵活的查询;系统与数据库管理系统结合,提供了功能较为强大的数据安全功能;系统界面友好,操作简单,易掌握。
本系统的主要实现目标是统计并显示所有员工的出勤状态。
根据不同用户权限来保护用户信息安全。
并保证系统所收集的信息的正确。
关键词:
出勤管理系统,数据库,面向对象
目录
摘要1
1.需求分析3
1.1系统概述3
1.2系统功能模块设计3
1.3与其他系统的联系3
1.4数据流程图4
2.数据库设计3
2.1数据库需求分析3
2.2数据库概念结构设计4
2.3功能模块创建和界面设计5
3.详细设计11
3.1考勤统计模块12
4.结束语.17
1.需求分析
对于一个现代化的企业来说,考勤管理是必须的,如何把每天发生的考勤信息如实地记录下来,保证考勤工作有条理地进行,同时确保相关数据的安全,信息处理的高效,并保证系统的实用性强,这是本系统设计的目的。
1.1系统概述
考勤管理系统可以为提供基本的考勤管理,从而帮助考勤人员能够使用软件对其现有流程进行高效的管理,这些管理包括:
●上班时间的设定。
上下班时间相对固定,可保存在客户端的设置文件中。
●员工出入单位的情况记录。
出入情况主要由考勤机来记录,但是需要设置人工添加的功能,已备特殊情况的处理。
●请假、加班和出差情况的记录。
每个月底进行整个月的出勤情况统计。
1.2系统功能模块设计
系统功能模块图如下:
1.3与其它其他系统的关系
考勤管理系统记录了员工上下班的情况,为工资管理系统直接提供每个月工作时间的统计结果,用以计算工资。
同时考勤系统也需要其他系统提供的员工、部门等信息。
1.4数据流程图
2.数据库设计
2.1数据库需求分析
根据数据流程,可以列出以下出勤管理系统所需的数据项和数据结构。
●出勤记录:
记录号、员工、出入情况和时间,如图1-3所示。
●月考勤统计:
记录号、员工、年月、累计正常工作时间、累计请假时间、累计加班时间、累计出差时间、迟到次数、早退次数和旷工次数,如图1-4所示。
●请假记录:
记录号、员工、假期起止时间/结束时间和请假缘由,如图1-5所示。
●加班记录:
记录号、员工、加班时间长度和日期如图1-6所示。
●出差记录:
记录号、员工、出差起始时间/结束时间和具体描述,如图1-7所示。
●工作时间记录:
职务、上班时间/下班时间,如图
所需的外部数据支持:
●人员信息:
员工号、密码、权限、姓名、部门等。
●部门设置:
部门编号、名称、上下班时间等。
图1-3:
图1-8:
图1-4
图1-5
图1-6图1-7
2.2数据库概念结构设计
系统E-R图
2.3各功能模块的创建和界面设计
本系统采用Dialogbased的应用程序框架。
程序数据库操作是通过MFC的CDBC类实现
(截图为Admin管理员用户和员工号10010普通用户获取)
1.登陆界面
2.登陆成功后的主界面
3.系统设置(修改各种职务上下班时间)
4.普通用户
5.普通用户主界面(不能使用系统设置)
6.每日出勤记录(Admin用户)
7.每日出勤记录(普通用户)(不能帮其他用户打卡)
8.出差记录(Admin)(可查看所有用户记录)
9.出差记录(普通用户)(此次截图使用员工号10011登陆看不到其他用户的信息)
加班记录(Admin用户)(可查看所有用户记录)
请假记录(Admin)(可查看所有用户记录)
查询(按早退次数查询)
按旷工次数查询
按员工号查询:
3.详细设计
基于系统需求分析与系统总体设计的结论,本系统采用VisualStudio2005实现各模块的功能,下面按照功能模块的划分来分别阐述系统的详细设计和实现过程。
3.1考勤统计模块
1.功能描述
考勤统计模块负债对所有员工每月出勤信息的显示和查询。
在该模块中,用户可以通过浏览区域浏览客户每月出勤记录的相关信息,也可以通过下面按钮区域实现查询功能。
此模块的所有数据来源于每日考勤,出差记录,请假记录,加班记录。
2.源文件
Main.h、Month_set.h
Main.cpp、Month_set.cpp
相关数据库:
月考勤统计表
3.函数与方法声明
主要函数:
BOOLMain:
:
OnInitDialog()\\初始化窗口中的控件并调用MyShow()
voidMain:
:
OnBnClickedButtonBussiness()
voidMain:
:
OnBnClickedButtonOff()
voidMain:
:
OnBnClickedButtonMore()
voidMain:
:
OnBnClickedButtonDutyday()
voidMain:
:
OnBnClickedButtonSearch()
voidMain:
:
OnCbnSelchangeComboDistinction()\\查询功能显示
voidMain:
:
MyShow()\\显示数据库中的内容
voidMain:
:
OnBnClickedButtonChange()
voidMain:
:
OnBnClickedButtonSet()
详细代码:
voidMain:
:
OnBnClickedButtonSet()
{
Setdlg;
dlg.DoModal();
}
voidMain:
:
OnBnClickedButtonChange()
{
Modify_Passworddlg;
dlg.DoModal();
}
BOOLMain:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
LPWSTRstr[]={_T("编号"),_T("员工号"),_T("迟到次数"),_T("早退次数"),_T("旷工次数")};
CStringstr2;
for(intn=0;n<=4;n++)
{
str2.Format(_T("按%s查询"),str[n]);
m_nComBox.AddString(str2);
}
GetDlgItem(IDC_EDIT_VALUE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT_VALUE2)->ShowWindow(SW_HIDE);
externCStringsz_Admin;
externCStringsz_Admin2;
if(sz_Admin!
=_T(""))
{
SetDlgItemText(IDC_EDIT1,_T("欢迎")+sz_Admin+_T("使用本系统"));
}
else
SetDlgItemText(IDC_EDIT1,_T("欢迎")+sz_Admin2+_T("使用本系统"));
if(sz_Admin==_T(""))
{
GetDlgItem(IDC_BUTTON_SET)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SET)->ShowWindow(SW_HIDE);
}
m_nListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
LPWSTRname[10]={_T("编号"),_T("月份"),_T("员工号"),_T("迟到"),_T("早退"),_T("旷工"),_T("累计工作(时)"),_T("累计请假(天)"),_T("累计出差(天)"),_T("累计加班(时)")};
LVCOLUMNlv;
lv.fmt=LVCFMT_CENTER;
lv.mask=LVCF_WIDTH|LVCF_TEXT|LVCF_FMT;
lv.cx=100;
for(intn=0;n<=9;n++)
{
lv.pszText=name[n];
m_nListCtrl.InsertColumn(n,&lv);
}
MyShow();
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//异常:
OCX属性页应返回FALSE
}
voidMain:
:
OnBnClickedButtonBussiness()
{
Businessdlg;
dlg.DoModal();
MyShow();
}
voidMain:
:
OnBnClickedButtonOff()
{
Offdlg;
dlg.DoModal();
MyShow();
}
voidMain:
:
OnBnClickedButtonMore()
{
Moredlg;
dlg.DoModal();
MyShow();
}
voidMain:
:
OnBnClickedButtonDutyday()
{
Daydlg;
dlg.DoModal();
MyShow();
}
voidMain:
:
MyShow(void)
{
m_nListCtrl.DeleteAllItems();
CDatabasedb;
db.Open(_T("ODBC;DSN=MYACCESS"));
Month_setrs(&db);
rs.Open(Month_set:
:
dynaset,_T("select*from月考勤统计ORDERBY编号"));
CStringset1,set2,set3,set4,set5,set6,set7,set8,set9;
while(!
rs.IsEOF())
{
set1.Format(_T("%d"),rs.column1);
set2.Format(_T("%d"),rs.column2);
set3.Format(_T("%d"),rs.column4);
set4.Format(_T("%d"),rs.column5);
set5.Format(_T("%d"),rs.column6);
set6.Format(_T("%d"),rs.column7);
set7.Format(_T("%d"),rs.column8);
set8.Format(_T("%d"),rs.column9);
set9.Format(_T("%d"),rs.column10);
intnum;
num=m_nListCtrl.InsertItem(0,set1);
m_nListCtrl.SetItemText(num,1,set2);
m_nListCtrl.SetItemText(num,2,rs.column3);
m_nListCtrl.SetItemText(num,3,set3);
m_nListCtrl.SetItemText(num,4,set4);
m_nListCtrl.SetItemText(num,5,set5);
m_nListCtrl.SetItemText(num,6,set6);
m_nListCtrl.SetItemText(num,7,set7);
m_nListCtrl.SetItemText(num,8,set8);
m_nListCtrl.SetItemText(num,9,set9);
rs.MoveNext();
}
rs.Close();
db.Close();
}
voidMain:
:
OnBnClickedButtonSearch()
{
m_nListCtrl.DeleteAllItems();
UpdateData(true);
CStringSQL=_T("");
CStringstr[5]={_T("编号"),_T("员工号"),_T("迟到次数"),_T("早退次数"),_T("旷工次数")};
for(intn=0;n<=4;n++)
{
if(n==1)
{
if(m_nComBox.GetCurSel()==n)
{
SQL.Format(_T("select*from月考勤统计WHERE月考勤统计.员工号='%s'ORDERBY编号"),m_nValue);
break;
}
}
else
{
chara[999];
USES_CONVERSION;
strcpy_s(a,W2A(m_nValue.LockBuffer()));
m_nValue.UnlockBuffer();
if(m_nComBox.GetCurSel()==n)
{
SQL.Format(_T("select*from月考勤统计WHERE月考勤统计.%s=%dORDERBY编号"),str[n],m_nValue2);
break;
}
}
}
CDatabasedb;
db.Open(_T("ODBC;DSN=MYACCESS"));
Month_setrs(&db);
rs.Open(Month_set:
:
dynaset,SQL);
CStringset1,set2,set3,set4,set5,set6,set7,set8,set9;
while(!
rs.IsEOF())
{
set1.Format(_T("%d"),rs.column1);
set2.Format(_T("%d"),rs.column2);
set3.Format(_T("%d"),rs.column4);
set4.Format(_T("%d"),rs.column5);
set5.Format(_T("%d"),rs.column6);
set6.Format(_T("%d"),rs.column7);
set7.Format(_T("%d"),rs.column8);
set8.Format(_T("%d"),rs.column9);
set9.Format(_T("%d"),rs.column10);
intnum;
num=m_nListCtrl.InsertItem(0,set1);
m_nListCtrl.SetItemText(num,1,set2);
m_nListCtrl.SetItemText(num,2,rs.column3);
m_nListCtrl.SetItemText(num,3,set3);
m_nListCtrl.SetItemText(num,4,set4);
m_nListCtrl.SetItemText(num,5,set5);
m_nListCtrl.SetItemText(num,6,set6);
m_nListCtrl.SetItemText(num,7,set7);
m_nListCtrl.SetItemText(num,8,set8);
m_nListCtrl.SetItemText(num,9,set9);
rs.MoveNext();
}
rs.Close();
db.Close();
}
voidMain:
:
OnCbnSelchangeComboDistinction()
{
if(m_nComBox.GetCurSel()==1)
{
GetDlgItem(IDC_EDIT_VALUE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT_VALUE2)->ShowWindow(SW_HIDE);
}
else
{
GetDlgItem(IDC_EDIT_VALUE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_VALUE2)->ShowWindow(SW_SHOW);
}
}
4.结束语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考勤 管理 系统