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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、完整版人事考勤管理系统c+毕业课程设计文档课程设计 人事考勤管理系统 第一部分:开发背景.3第二部分:系统分析3第三部分:系统设计 .9第四部分:公共类设计.15第五部分:主题窗设计.16第六部分:用户登录模块设计.17第七部分:用户管理模块设计20第八部分:部门管理模块设计23第九部分:人员信息管理模块设计.32第十部分:考勤模块设计40第十一部分:考勤汇总模块设计45第十二部分:后续补充部分: 一些过程的具体实现方法总结及图片解释:.51第十三部分:心得.51人事考勤管理系统 开发背景 某公司业务不断发展,员工数量不断增加,人事考勤方面的管理已成为公司管理中的重要部分,但传统的人事考勤制度

2、已不能有效地管理员工的出勤状况,急需一套人事考勤管理的有效工具人事考勤管理系统。 二、系统分析1) 需求分析 通过对人事考勤管理过程的研究和分析,要求本系统应该具有以下功能。a) 用户登录。b) 部门信息录入c) 人员信息管理d) 考勤信息录入e) 考勤信息汇总。2) 系统功能描述用户需要输入用户名和密码进入人事考勤管理系统,对各部门、员工的基本信息进行维护和管理。在考勤管理模块中录入员工当天的考勤信息,同时可对年、月、员工进行查询。此外,还可以通过考勤汇总查询模块对员工某月的考勤记录进行汇总,计算出员工月工作天数、早退、迟到的天数。 三、系统设计1) 系统目标 人事考勤管理系统以实现员工日常

3、出勤信息管理为设计目标,加以强大的数据库管理功能,可以极大地提高人事部门的日常工作效率。本系统在设计时满足以下几点:a) 采用人机对话的操作方式,信息查询灵活、方便、快捷、准确,数据存储安全可靠。b) 对考勤信息的操作简单,可以方便地进行添加、修改、和删除。c) 可以录入员工信息、部门信息。d) 对员工的考勤信息按月汇总计算。e) 对用户输入的数据,系统进行严格的数据检验,尽可能排除人为错误。f) 系统最大限度地实现了易维护性和易操作性。g) 系统运行稳定、安全可靠。2) 系统功能结构 人事考勤管理系统的功能结构如图所示: 3) 业务流图人事考勤管理系统业务流程图如图: 4) 系统预览: 人事

4、考勤管理系统由多个功能模块组成,下面仅列出一些典型的功能模块,其他模块以后陆续列出:a) 部门管理模块如图:主要管理各部门之间的结构信息b) 用户管理模块如图:用于用户的一些操作管理c) 人员信息管理如图:主要用于维护员工的基本信息d) 考勤管理模块如图: 用于记录人事考勤的信息e) 考勤汇总查询如图: 对员工的考勤信息进行汇总统计5) 数据库设计A. 数据库分析人事考勤系统采用SQL Server 2008 数据库,数据库名称为 tb_person 在数据库中建立四个表存储不同的信息,如图:B. 数据库逻辑设计a) 管理员信息表(tab_user),用于保存管理员的信息,如图:b) 部门信息

5、表(tab_Dept)用于记录部门的信息,如图: C) 考勤信息表(tab_check)用于记录考勤信息c) 员工信息表(tab_Employees)保存公司员工信息,如图: 四、公共类设计 本系统采用ADO连接数据库。为了能够方便的使用ADO建立数据库连接并进行相应的数据操作,在公共类中对系统中是使用的ADO操作进行了封装。在系统中建立了ADO的两个公共类CADOConnection和CADODataSet,这两个类定义在ADO. FilesSystemadomsado15.dll no_namespace rename(EOF,adoEOF)class CADOConnectionpriv

6、ate: static void InitADO();初始化ADO static void UnInitADO();protected: _ConnectionPtr m_Connection;指针接口public: BOOL IsOpen();判断是否与数据库连接 _ConnectionPtr GetConnection();获取连接接口 CString GetSQLConStr();获取SQL连接字符串 BOOL Open(CString ConStr);建立数据库连接 CADOConnection(); virtual CADOConnection();CADOConnection类的实

7、现代码如下:CADOConnection * GetConnection()GetConnection函数是一个全局函数,用于返回全局数据库连接对象的的指针 return &g_Connection;CADOConnection:CADOConnection()CADOConnection方法是构造方法,用于初始化OLE和创建_Connection接口指针 InitADO(); m_Connection.CreateInstance(ADODB.Connection);CADOConnection:CADOConnection()CADOConnection方法是构造方法,用于取消OLE 的初

8、始化和释放_Connection接口指针 if (IsOpen() m_Connection-Close(); m_Connection = NULL; UnInitADO();void CADOConnection:InitADO()InitADO是一个静态方法,用于初始化OLE if (ConCount+ = 0) CoInitialize(NULL);void CADOConnection:UnInitADO()UnInitADO是一个静态方法,用于取消初始化OLE if (-ConCount = 0) CoUninitialize();BOOL CADOConnection:Open(

9、CString ConStr)通过指定的数据库连接字符串于SQL数据库建立连接 if (IsOpen() m_Connection-Close(); m_Connection-Open(_bstr_t)ConStr,adModeUnknown); return IsOpen();CString CADOConnection:GetSQLConStr()生成数据库连接需要的字符串 CString Str; Str.Format(Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Cata

10、log=tb_person;Data Source=LONGFEI-PCSQLEXPRESS); return Str;_ConnectionPtr CADOConnection:GetConnection()该方法用于返回_Connection接口指针 return m_Connection;BOOL CADOConnection:IsOpen()判断当前数据库连接对象与数据库的连接状态 long State; m_Connection-get_State(&State); if (State = adStateOpen) return true; return false;CADOData

11、Set类的定义如下:class CADODataSetprotected: _RecordsetPtr m_DataSet;数据集接口指针 CADOConnection *m_Connection;数据库连接对象public: BOOL Open(CString SQLStr,int LockType);打开记录集 void Delete();记录删除 int GetRecordNo();获取记录集行号 void move(int nIndex);移动记录指针 void Save();保存对记录集的修改 void SetFieldValue(CString FieldName,_variant

12、_t Value);设置字段的值 void AddNew();添加新纪录 BOOL Next();记录集指针指向下一个记录 FieldsPtr GetFields();获取记录集字段集合 int GetRecordCount();获取记录集中记录数量 void SetConnection(CADOConnection *pCon);设置记录集的数据库连接对象 BOOL Open(CString SQLStr);打开记录集 CADODataSet(); virtual CADODataSet();private: BOOL IsOpen();CADODataSet类的实现如下: CADOData

13、Set:CADODataSet()该方法为记录集实现类的构造方法,在该方法中实现记录集接口对象的创建 m_DataSet.CreateInstance(ADODB.Recordset);CADODataSet:CADODataSet()实现记录集的关闭与接口的释放 if (IsOpen() m_DataSet-Close(); m_DataSet = NULL; m_Connection = NULL;void CADODataSet:SetConnection(CADOConnection *pCon)设置记录集所连接的数据库连接类的对象 m_Connection = pCon;int CA

14、DODataSet:GetRecordCount()获取记录集中数据的数量 if (IsOpen() return m_DataSet-GetRecordCount(); else return 0;BOOL CADODataSet:Open(CString SQLStr)打开数据集 if (IsOpen() m_DataSet-Close(); * m_DataSet-Open(_bstr_t(SQLStr), _variant_t(IDispatch*)g_Connection.GetConnection(), true), adOpenKeyset, adLockOptimistic,

15、adCmdText); return IsOpen(); *BOOL CADODataSet:IsOpen()判断数据集是否处于打开状态 long State; m_DataSet-get_State(&State); if (State = adStateOpen) return true; return false;FieldsPtr CADODataSet:GetFields()用来获取记录集中字段的集合 return m_DataSet-GetFields();BOOL CADODataSet:Next()记录集指针下移一位 if (m_DataSet-adoEOF) return f

16、alse; m_DataSet-MoveNext(); return true;void CADODataSet:AddNew() m_DataSet-AddNew();void CADODataSet:SetFieldValue(CString FieldName, _variant_t Value)想记录集中指定的字段赋值 m_DataSet-PutCollect(_bstr_t)FieldName,Value);void CADODataSet:Save()保存记录集数据所做的修改 m_DataSet-Update();void CADODataSet:move(int nIndex)将

17、记录集的当前指针移动到指定的索引位置 m_DataSet-MoveFirst(); m_DataSet-Move(nIndex);int CADODataSet:GetRecordNo()获取记录集中的当前行号 return m_DataSet-AbsolutePosition;void CADODataSet:Delete()删除记录集中的当前行 m_DataSet-Delete(adAffectCurrent);BOOL CADODataSet:Open(CString SQLStr, int LockType) if (IsOpen() m_DataSet-Close(); * m_Da

18、taSet-Open(_bstr_t(SQLStr), _variant_t(IDispatch*)g_Connection.GetConnection(), true), adOpenKeyset,(LockTypeEnum) LockType, adCmdText); return IsOpen(); 五、主题窗设计A.主题窗由菜单和图片组成,如图:B.主题窗设计步骤: a启动visual c+,选择FileNew命令,打开New对话框 b在左侧选择MFC AppWizard(exe)选项,在Project name编辑框中输入工程名称,在location编辑框中设置保存工程的路径,然后单

19、击OK按钮,打开MFC AppWizard对话框,选择对话框编程,打击fish c像工程中导入位图,菜单资源(具体操作在最后有补充) 六、用户登录模块设计A 概述,登录界面是每个管理系统应该具备的,本系统的登录模块如图: B . 技术分析 窗体应在主题窗创建之前并显示,在登录窗体创建的同时应该建立数据库连接,具体操作如下: BOOL bCon = 、GetConnection()-Open(GetConnection()-GetSQLConStr(); CLoginDialog logindlg; if (logindlg.DoModal() != IDOK) return false; :C

20、oInitialize(NULL); CPersonDlg dlg;C. 实现过程a. 创建一个对话框b. 向对话框中添加两个静态文本控件、一个编辑框控件、和两个按钮控件。分别设置两个静态文本控件的Caption属性为“用户名”和“密码”设置编辑框控件类型为password;分别设置连个按钮为“确定”和“取消”。C. 在窗体初始化方法中创建用户表的数据,并将用户添加到列表框控件中。代码如下: BOOL CLoginDialog:OnInitDialog() CDialog:OnInitDialog(); m_DataSet.SetConnection(GetConnection(); m_Da

21、taSet.Open(Select * From Tab_User); int count = m_DataSet.GetRecordCount(); for (int i = 0; iItemLUserName-Value); m_DataSet.Next(); m_UserList.SetCurSel(0); return TRUE; return TRUE unless you set the focus to a control EXCEPTION: OCX Property Pages should return FALSEd 确定按钮事件代码如下:void CLoginDialog

22、:OnLogin() CString sql,user,pass; m_UserList.GetWindowText(user); m_PassWord.GetWindowText(pass); sql.Format(Select * From tab_user Where UserName = %s and PassWord = %s, user,pass); m_DataSet.Open(sql); if (m_DataSet.GetRecordCount() = 1) :SetUserName(user); this-OnOK(); else AfxMessageBox(用户名或密码不正

23、确!); 七、用户管理模块A. 概况:能实现添加,修改,删除等操作如图: B. 实现过程:a 创建一个对话框b 向对话框中添加相应的控件c 给对话框添加对话框类d 给类添加函数及成员变量e 给控件关联变量f 编写函数 C实现代码: a定义UpdateGrid方法用来更新列表视图中的信息代码如下: void CUserManage:UpdateGrid() m_DataSet.Open(Select * From tab_User); m_grid.DeleteAllItems(); for (int i = 0 ; i ItemLUserName-Value); int no = m_Data

24、Set.GetRecordNo(); m_grid.SetItemData(i,no); m_DataSet.Next(); b添加按钮代码如下: void CUserManage:OnAppend() CUserEdit useredit; if (useredit.DoModal() = IDOK) m_DataSet.AddNew(); m_DataSet.SetFieldValue(UserName,(_bstr_t)useredit.name); m_DataSet.Save(); UpdateGrid(); c. 删除按钮代码:void CUserManage:OnDelete()

25、 if (MessageBox(是否删除此记录!,提示, MB_YESNO|MB_ICONWARNING) = IDYES) int no = m_grid.GetItemData(m_grid.GetSelectionMark(); m_DataSet.move(no-1); m_DataSet.Delete(); m_DataSet.Save(); UpdateGrid(); d. 修改按钮代码:void CUserManage:OnEdit() CUserEdit useredit; int no = m_grid.GetItemData(m_grid.GetSelectionMark(

26、); m_DataSet.move(no-1); useredit.name = (char *)(_bstr_t)m_DataSet.GetFields()-ItemLUserName-Value; if (useredit.DoModal() = IDOK) m_DataSet.SetFieldValue(UserName,(_bstr_t)useredit.name); m_DataSet.Save(); UpdateGrid(); 八、部门管理模块设计A 概述:该模块记录了部门间的的层次结构和部门信息,一般使用树控件实现,如图: B 实现过程:a. 创建一个对话框b. 向对话框中添加相

27、应的控件c. 给对话框添加对话框类d. 给类添加函数及成员变量e. 给控件关联变量f. 编写函数 C. 相关代码如下: BOOL CDeptManage:OnInitDialog() 初始化函数 CDialog:OnInitDialog(); m_DataSet.SetConnection(:GetConnection(); UpdateDept(); return TRUE; 将部门信息一次性读入树控件中。代码如下: void CDeptManage:GetNode(HTREEITEM pNode, int nPid) HTREEITEM node; CADODataSet DataSet; DataSet.SetConnection(:GetConnection(); CString str; str.Format(Select * From tab_Dept where pid = %d,nPid); DataSet.Open(str); int count = DataSet.GetRecordCount(); int ID; _variant_t value; for (int i = 0;iIte

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

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