ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:90.81KB ,
资源ID:22553094      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22553094.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(考勤管理系统文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

考勤管理系统文档格式.docx

1、三 、设计内容和步骤在软、硬件方面对系统的需求,软件要求易学,容易掌握,可以很简单方便的管理各种信息。硬件的配置要求不能太高,这样可以很好的适应当前的企业情况。1 系统功能模块设计:系统功能模块如图1-1所示。图1-1系统功能模块图2 数据流程图:系统的数据流程图1-2所示,出勤的原始记录主要来源于考勤机,并且以固定格式保存在数据库中。考勤管理系统的任务是如何处理这些数据。图1-2考勤管理系统数据流程图3.数据库概念结构设计(E-R图)如下所示:图1-3 E-R 图3 数据库需求分析:根据数据流程,可以列出以下管理系统所需的数据项和数据结构。出勤记录:记录号、员工、出入情况和出入时间,如图1-

2、4所示。图1-4 ATTENDANCE出勤记录表月度考勤统计:记录号、员工、年月、累计正常工作时间、累计请假时间、累计加班时间、累计出差时间、迟到次数、早退次数和旷工次数,如图1-5所示。图1-5 ATTENDANCE_STAT月度考勤统计表请假记录:记录号、员工、假期起始时间/结束时间和请假缘由,如图1-6所示。图1-6 LEAVE 请假记录表加班记录:记录号、员工、加班时间长度和日期,如图1-7所示。图1-7 OVERTIME 加班记录表出差记录:记录号、员工、出差起始时间/结束时间和具体描述,如图1-8所示。图1-5 ERRAND 出差记录表人员信息:员工号、密码、权限、姓名、部门和当前

3、状态等,如图1-9所示。图1-9 PERSON 人员信息表部门设置:部门编号、名称等,如图1-10所示。图1-10 DEPARTMENT 部门设置表5.数据库操作的准备:为了使用ODBC类,需要在stdafx.h中加入#include”afxdb.h”一行。因本程序只需要连接一个数据库,所以定义了一个Cdatabase型的全局变量db,一次性打开和关闭数据库。数据库的打开在登录认证对话框中。在主程序结束前需关闭数据库,因此在App类的ExitInstance()函数中加入代码:if (db.IsOpen() db.Close();为了编程便捷,可以为数据库中的每一个表映射一个记录集类(从Cre

4、cordSet类继承),其映射关系如表1-1所示。这些类通过RFX(Record Field Exchange)机制将成员变量和表格中的字段值联系起来,通过方问成员变量可以访问当前记录中字段的值。Crecordset派生类表格CAttendanceRS ATTENDANCE出勤记录表CCounterRS COUNTER计数器表CdepartRSDEPARTMENT部门信息表CerrandRSERRAND出差记录表CLeaveRSLEAVE请假记录表COvertimeRSOVERTIME加班记录表CPersonRSPERSON员工个人信息表CStatRSATTENDANCE_STAT月度考勤统计

5、表表1-1 CRecordset派生类对应的表格 6主对话框的设计: 主对话框界面如图1-11所示。用户可以通过菜单进行方便的操作,如添加记录,统计记录等。每个菜单项关联了一个对话框,在相应的菜单项的初始化中使用:类名 dlg; dlg.DoModal();两条语句来进行实现。图1-11 主对话框6 考勤统计对话框的创建 考勤统计对话框界面设计如图1-12所示。用户可进行月度统计,也可以通过查找满足条件的记录如年月、员工、姓名等来进行相关的统计。图1-12 考勤统计对话框四、测试和评价经过测试,该使用程序能够较好的实现上班时间的设定;能够提供员工出入单位的情况记录;能够提供请假、加班和出差情况

6、的记录,并实现查询、添加、修改、删除、浏览等处理功能;能够在每个月底进行整个月的出勤情况统计;能够拥有一定的安全性、协调性和完整性。但在安全性上存在一定的漏洞;功能不够完善,不能进行统一查询;界面相对简单,所以总体评价为中等。希望能得到彭老师的指导得以更加完善此系统,添补漏洞。五、附录1主界面源代码清单:BOOL CAttendanceDlg:OnInitDialog() CDialog:OnInitDialog(); / Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command rang

7、e. ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu); void CAttendanceDlg:OnBtnConfig() / 显示工作时间设置对话框 CWorkplanDlg dlg;2考勤修改对话框源代码清单:BOOL CAttDlg:OnInitDialog() /初始化对话框 m_Sheet.Create(this, WS_CHILD |

8、 WS_VISIBLE, 0); /创建窗口 m_Sheet.ModifyStyleEx (0, WS_EX_CONTROLPARENT); /修改风格 m_Sheet.ModifyStyle( 0, WS_TABSTOP ); / 设置窗口位置 m_Sheet.SetWindowPos( NULL, 0, 100, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE ); return TRUE; 为了方便地更新列表框内容,编写了UpdateList()函数,调用些函数可使列表框显示给定的数据表格。void CPage1:UpdateList(C

9、AttendanceRS& rs) /更新列表框内容 int i=0; CString strID,strTime; rs.Open(); / 打开出勤记录表 m_cList.DeleteAllItems(); / 清除列表框内容 while(!rs.IsEOF() / 对数据表中所有记录进行处理 m_cList.InsertItem(i, ); / 添加新Item strID.Format(%d, rs.m_ID); / 转换为字符串 m_cList.SetItemText(i, 0, strID); m_cList.SetItemText(i, 1, rs.m_PERSON); m_cLi

10、st.SetItemText(i, 2, rs.m_IN_OUT); m_cList.SetItemText(i, 3, rs.m_IO_TIME.Format(%Y-%m-%d %H:%M); rs.MoveNext(); / 跳到下一条记录 i+; rs.Close(); / 关闭出勤记录表添加部门和全体员工出勤记录的过程最终可分解为添加单个员工记录的过程。为了避免程序的重复,设置了下面的子程序:/ 添加出勤记录函数IO_Add(CString strPersonID) int counter; / 用于计数 CString strIO; / 保存出入情况 CCounterRS rs_co

11、unter(&db); / 构造计数器记录表/ 记录编号 rs_counter.m_strFilter = ID=A; / 设置过滤器,提取计数值 rs_counter.Open(); / 打开计数器记录表 counter=rs_counter.m_COUNTER_VALUE; / 提取计数值 counter+; / 计数值加1 rs_counter.Edit(); / 编辑计数器 rs_counter.m_COUNTER_VALUE=counter; / 保存当前计数 rs_counter.Update(); / 提交修改 rs_counter.Close(); / 关闭计数器记录表/ 添加

12、记录 / 判断确定出入情况 if(CButton*)GetDlgItem(IDC_RADIO_OUT)-GetCheck() strIO=O else strIO=I / 转换出入时间类型 int nYear,nMonth,nDay,nHour,nMinute; / 年,月,日,时,分 sscanf(m_strIOTime.Left(4), , &nYear); / 得到年 sscanf(m_strIOTime.Mid(5,2), nMonth); / 得到月 sscanf(m_strIOTime.Mid(8,2), nDay); / 得到日 sscanf(m_strIOTime.Mid(11

13、,2), nHour); / 得到时 sscanf(m_strIOTime.Mid(14,2), nMinute); / 得到分 / 得到出入时间CTime IO_time(nYear,nMonth,nDay,nHour,nMinute,0); CAttendanceRS rs_attendance(& / 构造考勤记录表 rs_attendance.Open(); / 打开考勤记录表 rs_attendance.AddNew(); / 追加考勤记录 rs_attendance.m_ID=counter;rs_attendance.m_PERSON=strPersonID; rs_attend

14、ance.m_IN_OUT=strIO; rs_attendance.m_IO_TIME=IO_time; rs_attendance.Update(); rs_attendance.Close(); / 关闭考勤记录表 UpdateList(rs_attendance); / 更新列表框3考勤统计对话框源代码清单当输入员工号时,检索员工姓名,用于确认输入。void CStatDlg:OnChangeStatEdtSeekpersonid() UpdateData(); / 更新数据 CPersonRS rs(& / 构造记录集 rs.m_strFilter = + m_strPersonID

15、 + / 设置过滤条件 / 打开记录集 if(rs.GetRecordCount()=1) / 判断员工记录是否存在 m_strPersonName=rs.m_NAME; / 得到员工姓名 else m_strPersonName.Empty(); / 清除员工姓名的显示 / 关闭记录集 UpdateData(FALSE); / 更新界面数据在以上代码中用到了StrToTime函数,这是一个全局函数,代码如下:Ctime StrToTime(Cstring str) /时间串格式“%Y-%m-%d %H:%M:%S”,如“1999-01-01 11:11:11”int nYear,nMonth

16、,nDay,nHour,nMinute,nSecond;sscanf(str.Left(4),”%d”,& /得到年sscanf(str.Mid(5,2),”%d”,& /得到月sscanf(str.Mid(8,2),”%d”,& /得到日sscanf(str.Mid(11,2),”%d”,& /得到时sscanf(str.Mid(14,2),”%d”,& /得到分sscanf(str.Mid(17,2),”%d”,&nSecond); /得到秒/构造Ctime变量Ctime result(nYear,nMonth,nDay,nHour,nMinute,nSecond);Return result;4.参考文献:1、陈建春.Visual C+开发GIS系统,开发实例剖析,2000年.2、陈建春.Visual C+高级编程技术,开发实例剖析,1999年.3、李于剑.Visual C+实践和提高,图形图象编程篇, 2001年.4、同志工作室.Visual C+6.0开发技巧和实例教程, 2000年.5、赵仕健. Visual C+6.0编程和实例分析, 2000年.6、钱 能. C+程序设计教程, 1999年.

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

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