VC++课设-公司员工工资管理系统_第1页
VC++课设-公司员工工资管理系统_第2页
VC++课设-公司员工工资管理系统_第3页
VC++课设-公司员工工资管理系统_第4页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、公司员工工资管理系统1 课程设计目的公司员工工资管理系统是典型的人员信息管理系统,其主要的功能是把人员管理过程信息化,自动化以减轻人工的重复繁琐劳动。其开发主要包括后台数据库的建立维护以及前台应用程序的开发两个方面。对于后台数据库要求建立一个稳定的数据库,保持数据的一致性,完整性,安全性也是必要的。对于前台要求稳定,实用,易用。本系统是为公司人事管理的各种工作而设计的。根据需求分析,需要实现对系统用户,基本信息(公司部门,人员相关信息等),考勤考评的管理。经过分析,本系统使用SQL SERVER 做为其后台数据库,采用ADO 数据库链接技术;Visual C+做为开发工具,提供了相当齐备的类库

2、、友好的编程界面和多种多样的数据库访问技术。其中ADO 使得编写数据库应用程序变得简单容易。公司人事管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性,完整性,安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。2 功能描述系统功能分析企业工资管理系统需要完成的功能主要有* 系统数据初始化* 员工基本信息数据的输入* 员工基本信息数据的修改、删除* 企业工资的基本设定* 员工工资的浏览* 员工个人工资表的查询3 方案论证3.1 总体设计系统功能模块设计如下图所示。员工信息资员员员料工工工输增查修入删询改员工工

3、资管理系 统工工资资基汇本总设置基员工个工个本工人资资人工奖罚福总工资金款利表资查询图 1系统功能模块3.2 详细设计3.2.1 数据库设计通过对企业工资管理的内容和数据流程分析,设计的数据项和数据结构如下。* 员工基本状况包括的数据库项有员工号、员工姓名、性别、所在部门、生日、家庭住址、联系电话等。因为本程序中只涉及到工资管理,故为了说明简单在数据库中只包含进了与员工的工资相关的资料,如入厂时间、所在部门、岗位、工资级别等。* 工资级别的工资金额,包括的数据库项有工资技能等级、工资额。* 企业部门及工作岗位信息包括的数据库项有部门名称、工作岗位名称、岗位工资等。* 公司福利金额包含的数据库项

4、有福利值。* 工资信息包含的数据库项有员工号、员工姓名、员工基础工资、公司福利、员工实得工资。3.2.2 数据库概念结构设计根据公司员工信息管理系统设计的信息数据和系统功能模块结构,公司员工信息管理系统数据库包括工资详情表、登陆框结构表、工资详情表、员工信息表。为数据库员工工资表添加如下数据表。表 1 工资详情表结构字段名称数据类型说明编号自动编号ID文本员工号departmen文本部门号name文本姓名salary数字工资remark文本备注表 2登陆框结构字段名称Namepassword数据类型文本文本说明用户名密码表 3工资详情表结构字段名称数据类型说明编号自动编号ID文本员工号depa

5、rtment文本部号basic数字基本工资bonus数字奖金welfare数字福利fine数字罚款total数字总工资表 4 员工信息表结构字段名称数据类说明编号自动编号ID文本员工号department文本部门号name文本姓名sex文本性别tob文本职务tel文本电话address文本住址3.3 创建数据源为数据库创建用户DSN,数据源名称为 “员工工资表 ”。图 2 创建数据源3.3.1 数据库结构的实现在需求分析、概念结构设计的继承上得数据库的逻辑结构之后,我们就可以在数据库系统中实现该逻辑结构。数据库的逻辑结构直接使用项目管理器来实现在这之前先建一个名为 salary 工资的项目保存

6、在磁盘,如D salary 。存储为D:salarydatabasesalary.dbc。为数据库添加数据表存储为Dsalarydatabasetms.dbf.3.3.2 程序界面设计(1)员工工资模块设计图 3 员工工资管理模块查询控件的设计在CEX_Viewl类中添加按扭控件查询IDC_BUTTON_QUERYY的BN_CLICKED消息映射并添加下列代码。void CEx_View:OnButtonQuery()UpdateData();m_strQuery.TrimLeft ();if(m_strQuery.IsEmpty ()MessageBox( 要查询的员工号不能为空);retu

7、rn;if(m_pSet-IsOpen ()m_pSet-Close();m_pSet-m_strFilter.Format(ID=%s,m_strQuery);m_pSet-m_strSort=department;m_pSet-Open();if(!m_pSet-IsEOF()UpdateData(FALSE);elseMessageBox( 没有查到你要找员工的记录!);(2)添加、修改、删除控件的设计添加一对话框资源 ID 号为 IDD_SALARY_TABLE,将表单资源的控件复制到对话框即可,然后为对话框资源创建一个对话框类CSalaryDlg,在 MFC 中为控件添加成员变量如下

8、图所示。图 4 员工工资表界面图 5 为控件添加成员变量然后为 IDOK添加 BN_CLICKED消息映射并添加下列代码:void CSalaryDlg:OnOK()UpdateData();m_strID.TrimLeft();m_strDepartment.TrimLeft();if(m_strID.IsEmpty()MessageBox( 员工号不能为空!);elseif(m_strDepartment.IsEmpty()MessageBox( 部门号不能为空!);elseCDialog:OnOK();然后 CEx_View 类中的三个按扭 IDC_REC_ADDIDC_REC_EDIT

9、IDC_REC_DEL添加BN_CLICKED消息映射 ,并添加下列代码:void CEx_View:OnRecAdd()CSalaryDlg dlg;if(dlg.DoModal()=IDOK)m_pSet-AddNew();m_pSet-m_department =dlg.m_strDepartment;m_pSet-m_ID =dlg.m_strID;m_pSet-m_name =dlg.m_strName;m_pSet-m_salary =dlg.m_fSalary;m_pSet-Update();m_pSet-Requery();void CEx_View:OnRecEdit()CS

10、alaryDlg dlg;dlg.m_strDepartment =m_pSet-m_department;dlg.m_strID =m_pSet-m_ID;dlg.m_strName =m_pSet-m_name;dlg.m_fSalary =m_pSet-m_salary;if(dlg.DoModal()=IDOK)m_pSet-Edit();m_pSet-m_department =dlg.m_strDepartment;m_pSet-m_ID =dlg.m_strID;m_pSet-m_name =dlg.m_strName;m_pSet-m_salary =dlg.m_fSalary

11、;m_pSet-Update();m_pSet-Requery();UpdateData(FALSE);void CEx_View:OnRecDel()CRecordsetStatus status;m_pSet-GetStatus(status);m_pSet-Delete();if(status.m_lCurrentRecord=0)m_pSet-MoveNext();elsem_pSet-MoveFirst();UpdateData(FALSE);(3)工资详情模块的设计图 6 工资详情设计为对话框资源创建一个对话框类CDetailDlg, 在MFC 中为控件添加成员变量如下图所示。图

12、7 为控件添加成员变量为表单资源的按扭添加 BN_CLICKED消息映射并添加下列代码。void CEx_View:OnButtonDetail()CDetailDlg dlg;dlg.DoModal();在 CDetailDlg类中添加按扭控件查询IDC_BUTTON_QUERYY2的 BN_CLICKED消息映射并添加下列代码void CDetailDlg:OnButtonQuery2()UpdateData();m_strQuery2.TrimLeft ();if(m_strQuery2.IsEmpty ()MessageBox( 要查询的员工号不能为空!);return;CString

13、 str;str=m_strQuery2;CDetailSet cSet;cSet.m_strFilter.Format(ID=%s,str);cSet.Open();if(!cSet.IsEOF()m_strDepartment=cSet.m_department;m_fBasic=cSet.m_basic;m_fBonus=cSet.m_bonus;m_fWelfare=cSet.m_welfare;m_fFine=cSet.m_fine;m_fTotal=cSet.m_total;m_strID=cSet.m_ID;UpdateData(FALSE);elseMessageBox( 查询

14、的员工记录不存在!);if(cSet.IsOpen()cSet.Close();添加一对话框资源 ID 号为 IDD_DETAIL_TABEL 将工资详情的控件复制到对话框即可。然后为话框资源创建一个对话框类 CDtabelDlg 在MFC 中为控件添加成员变量如下图所示。图 8 工资详情表界面然后为 IDOK添加 BN_CLICKED消息映射,并添加下列代码:void CDtabelDlg:OnOK()UpdateData();m_strID.TrimLeft();m_strDepartment.TrimLeft();if(m_strID.IsEmpty()MessageBox( 员工号不能

15、为空!);elseif(m_strDepartment.IsEmpty()MessageBox( 部门号不能为空!);elseCDialog:OnOK();然后 CDetailDlg 类中的三个按扭, IDC_REC_ADD ,IDC_REC_EDIT ,IDC_REC_DEL添加BN_CLICKED消息映射,并添加下列代码:void CDetailDlg:OnButtonAdd2()CDtabelDlg dlg;if(dlg.DoModal()=IDOK)CDetailSet pSet;pSet.AddNew();pSet.m_department =dlg.m_strDepartment;

16、pSet.m_ID =dlg.m_strID;pSet.m_basic =dlg.m_fBasic;pSet.m_bonus =dlg.m_fBonus;pSet.m_welfare =dlg.m_fWelfare;pSet.m_fine =dlg.m_fFine;pSet.m_total =dlg.m_fTotal;pSet.Update();pSet.Requery();void CDetailDlg:OnButtonEdit2()CDetailSet pSet;pSet.Open();UpdateData();pSet.Edit();pSet.m_department=m_strDepa

17、rtment;pSet.m_ID= m_strID;pSet.m_basic=m_fBasic;pSet.m_bonus= m_fBonus;pSet.m_welfare=m_fWelfare;pSet.m_fine= m_fFine;pSet.m_total= m_fTotal;UpdateData(FALSE);pSet.Update();pSet.Requery();pSet.Close();MessageBox( 修改成功 );void CDetailDlg:OnButtonDel2()UpdateData();CDetailSet cSet;cSet.Open();cSet.m_st

18、rFilter=ID=+m_strID+;cSet.Requery();cSet.Delete();cSet.Close();UpdateData(false);(4) 登陆框的设计如上的方法依次为其创建对话框类DengluDlg 和CRecordSet 派生类 CDengluSet 在MFC 中为控件添加成员变量。登陆框界面如下图所示。图 9 登陆框界面然后为 IDOK添加 BN_CLICKED消息映射,并添加下列代码:BOOL CDengluDlg:check()UpdateData();CDengluSet pSet;pSet.Open();if(m_stryonghu.IsEmpty(

19、)|m_strmima.IsEmpty()MessageBox( 请输用户名和密码!);return false;pSet.m_strFilter.Format(name=%s,m_stryonghu);pSet.Requery();if(pSet.m_name!=m_stryonghu|pSet.m_password!=m_strmima)MessageBox( 密码或用户名有错!);return false;return true;void CDengluDlg:OnOK()CWnd *m_pMainWnd;if(!check()return;CDialog:OnOK();m_pMainW

20、nd=AfxGetMainWnd();CDialog:OnOK();4 系统测试4.1系统测试结果系统测试结果如图所示。图 10 进入登陆框测试用户进入主界面如下图所示。图 11 进入主界面测试4.2 异常处理由于时间匆忙以及本人水平有限,本程序存在的问题比较多,自认为主要有以下几个方面。(1)程序没有对输入的员工信息诸如工号、姓名、部门号等进行检测其合理性所以在工号姓名、部门号等中可以输入字母或在名字中可以输入数字就在所难免了作为一个员工信息管理,这样的安全性是致命的。要解决这个问题就要在重载函数中加入各种判断语句工作量比较大。(2)由于水平有限没有制作图形界面多媒体等美化程序的设置只是一些

21、简单的对话框和界面,看起来难免有些单调不够完善。(3)程序的功能也是一个问题员工的信息太简单,可进行的操作也少可能有些功能实现起来显得有些别扭。5 心得体会通过这次课题设计,我觉得做好一个程序,灵活运用是关键。把基础学好不一定能把程序编好,但基础知识不好,一定编不出好程序。做大规模的程序不只是一个人努力就行了,一定要有团队合作能力。编程最主要是思路清晰,只要你把思路理顺了,就有利于你在编程的过程中少走弯路。要想学好这门课我觉得除了在课堂上认真学习之外也要做好以下几点:1.认真对待每一个程序的编写2.做好对每一个所编程序的总结3.写程序尽量要规范、严谨,效率尽量要高4.养成自我测试的习惯5.多看

22、一些别人编的程序,把好的思路和方法记下来,以备不时之需6.要有恃之以恒的精神以及严谨的科学研究作风在努力奋斗中,我终于把本次课题设计顺利完成。回想起课题设计过程中面对程序错误一大堆的失望与成功完成程序中每一个模块的喜悦时,我真正的体会到了:细节决定成败;学术不管是哪一门,只要你用心去对待它,它也会用心地来回报你,这也正印证了一句话: “一分耕耘一分收获 ”。6 参考文献1 郑阿奇 ,丁有和 .Visual C+教程 M. 北京:清华大学出版社 ,2016.3:346-3492 马石安 ,魏文平 .Visual C+程序设计与应用教程题解及课程设计M. 北京:清华大学出版社 ,2015.7:10

23、1-2303 郑莉 . C+语言程序设计案例教程 M. 北京:清华大学出版社 ,2016.7:24-1394 黄明 .面向对象程序设计习题详解 M. 北京:机械工业出版社 ,2015.9:32-1055 徐士良 .C 常用算法程序集 M. 北京:清华大学出版社 ,2015.9:29-916 黄维 通 .Visual C+ 面 向 对象与可 视化 设计 ( 第 2 版 )M. 北京 : 清华 大 学出 版社 ,2014.12:36-1057 附录(部分源代码)在CEX_Viewl类中添加按扭控件查询IDC_BUTTON_QUERYY的BN_CLICKED消息映射并添加下列代码。void CEx_

24、View:OnButtonQuery()UpdateData();m_strQuery.TrimLeft ();if(m_strQuery.IsEmpty ()MessageBox(要查询的员工号不能为空);return;if(m_pSet-IsOpen ()m_pSet-Close();m_pSet-m_strFilter.Format(ID=%s,m_strQuery);m_pSet-m_strSort=department;m_pSet-Open();if(!m_pSet-IsEOF()UpdateData(FALSE);elseMessageBox(没有查到你要找员工的记录!);然后为

25、 IDOK添加 BN_CLICKED消息映射并添加下列代码:void CSalaryDlg:OnOK()UpdateData();m_strID.TrimLeft();m_strDepartment.TrimLeft();if(m_strID.IsEmpty()MessageBox(员工号不能为空! );elseif(m_strDepartment.IsEmpty()MessageBox(部门号不能为空! );elseCDialog:OnOK();然后 CEx_View 类中的三个按扭 IDC_REC_ADDIDC_REC_EDITIDC_REC_DEL添加BN_CLICKED消息映射 ,并添

26、加下列代码 :void CEx_View:OnRecAdd()CSalaryDlg dlg;if(dlg.DoModal()=IDOK)m_pSet-AddNew();m_pSet-m_department =dlg.m_strDepartment;m_pSet-m_ID =dlg.m_strID;m_pSet-m_name =dlg.m_strName;m_pSet-m_salary =dlg.m_fSalary;m_pSet-Update();m_pSet-Requery();void CEx_View:OnRecEdit()CSalaryDlg dlg;dlg.m_strDepartme

27、nt =m_pSet-m_department;dlg.m_strID =m_pSet-m_ID;dlg.m_strName =m_pSet-m_name;dlg.m_fSalary =m_pSet-m_salary;if(dlg.DoModal()=IDOK)m_pSet-Edit();m_pSet-m_department =dlg.m_strDepartment;m_pSet-m_ID =dlg.m_strID;m_pSet-m_name =dlg.m_strName;m_pSet-m_salary =dlg.m_fSalary;m_pSet-Update();m_pSet-Requer

28、y();UpdateData(FALSE);void CEx_View:OnRecDel()CRecordsetStatus status;m_pSet-GetStatus(status);m_pSet-Delete();if(status.m_lCurrentRecord=0)m_pSet-MoveNext();elsem_pSet-MoveFirst();UpdateData(FALSE);为表单资源的按扭添加 BN_CLICKED消息映射并添加下列代码。void CEx_View:OnButtonDetail()CDetailDlg dlg;dlg.DoModal();在CDetailD

29、lg 类中添加按扭控件查询 IDC_BUTTON_QUERYY2 的BN_CLICKED 消息映射并添加下列代码void CDetailDlg:OnButtonQuery2()UpdateData();m_strQuery2.TrimLeft ();if(m_strQuery2.IsEmpty ()MessageBox(要查询的员工号不能为空!);return;CString str;str=m_strQuery2;CDetailSet cSet;cSet.m_strFilter.Format(ID=%s,str);cSet.Open();if(!cSet.IsEOF()m_strDepart

30、ment=cSet.m_department;m_fBasic=cSet.m_basic;m_fBonus=cSet.m_bonus;m_fWelfare=cSet.m_welfare;m_fFine=cSet.m_fine;m_fTotal=cSet.m_total;m_strID=cSet.m_ID;UpdateData(FALSE);elseMessageBox(查询的员工记录不存在!);if(cSet.IsOpen()cSet.Close();然后为 IDOK添加 BN_CLICKED消息映射,并添加下列代码:void CDtabelDlg:OnOK()UpdateData();m_s

31、trID.TrimLeft();m_strDepartment.TrimLeft();if(m_strID.IsEmpty()MessageBox(员工号不能为空! );elseif(m_strDepartment.IsEmpty()MessageBox(部门号不能为空! );elseCDialog:OnOK();然后 CDetailDlg 类中的三个按扭, IDC_REC_ADD ,IDC_REC_EDIT ,IDC_REC_DEL添加BN_CLICKED消息映射,并添加下列代码:void CDetailDlg:OnButtonAdd2()CDtabelDlg dlg;if(dlg.DoModal()=IDOK)CDetailSet pSet;pSet.AddNew();pSet.m_department =dlg.m_strDepartment;pSet.m_ID =dlg.m_strID;pSet.m_basic =dlg.m_fBasic;pSet.m_bonus =dlg.m_fBonus;pSet.m_we

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论