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

下载本文档

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

文档简介

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

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

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

4、根据公司员工信息管理系统设计的信息数据和系统功能模块结构,公司员工信息管理 系统数据库包括工资详情表、登陆框结构表、工资详情表、员工信息表。为数据库员工工 资表添加如下数据表。VC+课设-公司员工工资管理系统表1工资详情表结构字段名称数据类型说明编号自动编号ID文本员工号departme n文本部门号n ame文本姓名salary数字工资remark文本备注表2登陆框结构字段名称数据类型说明Name文本用户名password文本密码表3工资详情表结构字段名称数据类型说明编号自动编号ID文本员工号departme nt文本部号basic数字基本工资bon us数字奖金welfare数字福利fin

5、e数字罚款total数字总工资表4员工信息表结构字段名称数据类说明编号自动编号ID文本员工号departme nt文本部门号n ame文本姓名sex文本性别tob文本职务tel文本电话address文本住址3.3创建数据源为数据库创建用户DSN,数据源名称为员工工资表图2创建数据源331数据库结构的实现在需求分析、概念结构设计的继承上得数据库的逻辑结构之后,我们就可以在数据库 系统中实现该逻辑结构。数据库的逻辑结构直接使用项目管理器来实现在这之前先建一个 名为salary工资的项目保存在磁盘,如D salary。存储为D:salarydatabasesalary.db。为数据库添加数据表存储为

6、 Dsalarydatabase tms.dbf.程序界面设计(1)员工工资模块设计员工電工憐.51 'U3 I 11|3141BV03.帝館图3员工工资管理模块查询控件的设计在CEX_Viewl类中添加按扭控件查询IDC_BUTTON_QUERYY 的BN_CLICKED 消息映射并添加下列代码。void CEx_View:O nButto nQuery() -UpdateData();m_strQuery.TrimLeft ();if(m_strQuery .I sEmpty ()-MessageBox("要查询的员工号不能为空 ”);return;if(m_pSet-&

7、gt;lsOpe n () m_pSet->Close();m_pSet->m_strFilter.Format("ID='%s"',m_strQuery);m_pSet->m_strSort="departme nt"m_pSet->Ope n();if(!m_pSet->lsEOF()UpdateData(FALSE);elseMessageBox("没有查到你要找员工的记录!”);(2) 添加、修改、删除控件的设计添加一对话框资源ID号为IDD_SALARY_TABLE,将表单资源的控件复制到

8、对话框即可,然后为对话框资源创建一个对话框类CSalaryDlg,在MFC中为控件添加成员变量如下图所示。图4员工工资表界面Controt IDs:TypeMejnber图5为控件添加成员变量然后为IDOK添加BN_CLICKED消息映射并添加下列代码:void CSalaryDlg:O nOK()UpdateData();m_strlD.TrimLeft();m_strDepartme nt.TrimLeft();if(m_strlD.lsEmpty()MessageBox("员工号不能为空!”);elseif(m_strDepartme nt.IsEmpty()MessageBo

9、x("部门号不能为空!");elseCDialog:O nOK();添加然后 CEx_View 类中的三个按扭 IDC_REC_ADDIDC_REC_EDITIDC_REC_DELBN_CLICKED 消息映射,并添加下列代码:void CEx_View:O nRecAdd() -CSalaryDlg dlg;if(dlg.DoModal()=IDOK)m_pSet->AddNew();m_pSet->m_departme nt =dlg.m_strDepartme nt;m_pSet-> mD =dlg.m_strID;m_pSet->m _n a

10、me =dlg.m_strName;m_pSet->m_salary =dlg.m_fSalary;m_pSet->Update();m_pSet->Requery();void CEx_View:O nRecEdit() -CSalaryDIg dig;dlg.m_strDepartme nt =m_pSet->m_departme nt; dlg.m_strlD =m_pSet->m_ID;dig.m_strName =m_pSet->m _n ame; dig.m_fSaiary =m_pSet->m_saiary; if(dig.DoModai

11、()=IDOK)- m_pSet->Edit();m_pSet->m_departme nt =dig.m_strDepartme nt; m_pSet-> mD =dig.m_strID;m_pSet->m _n ame =dig.m_strName; m_pSet->m_saiary =dig.m_fSaiary; m_pSet->Update();m_pSet->Requery();UpdateData(FALSE);void CEx_View:O nRecDel() -CRecordsetStatus status; m_pSet->Ge

12、tStatus(status); m_pSet->Deiete();if(status.m_i Curre ntRecord=0) m_pSet->MoveNext();elsem_pSet->MoveFirst();UpdateData(FALSE);(3) 工资详情模块的设计图6工资详情设计为对话框资源创建一个对话框类CDetaiiDig,在MFC中为控件添加成员变量如下图所 示。Control IDs:4 4M -TypeMeniberIOC BASIC«08lm IB甘I AIDC_BONUSfloatm fBonusIDC BUnON ADDZIDC BI

13、TTON DEL2IDC BUnON EDIT?me BirnoN query?IDC DEPARTMENTCSlfingni_strDcpmbnen1IOC EDIT QUERYZCStri ngB_strOuery2IDC FINEfloutm fFineIDC IDCStri ngmstrlDIDC TOTALflostrn_fTo1?il图7为控件添加成员变量为表单资源的按扭添加BN_CLICKED消息映射并添加下列代码。void CEx_View:O nButto nDetail() -CDetailDlg dlg;dlg.DoModal();在CDetailDlg 类中添加按扭控件

14、查询 IDC_BUTTON_QUERYY2 的BN_CLICKED 消息映射并添加下列代码void CDetailDlg:O nButto nQuery2()UpdateData();m_strQuery2.TrimLeft ();if(m_strQuery2.lsEmpty ()-MessageBox("要查询的员工号不能为空!");return;CStri ng str;str=m_strQuery2;CDetailSet cSet;cSet.m_strFilter.Format("ID='%s"',str); cSet.Ope n(

15、);if(!cSet.lsEOF()m_strDepartme nt=cSet.m_departme nt;m_fBasic=cSet.m_basic;m_fBonu s=cSet.m_b onus;m_fWelfare=cSet.m_welfare;m_fFin e=cSet.m_fi ne;m_fTotal=cSet.m_total;m_strlD=cSet.mD;UpdateData(FALSE);elseMessageBox("查询的员工记录不存在!”);if(cSet.lsOpe n()cSet.Close();添加一对话框资源ID号为IDD_DETAIL_TABEL将工资

16、详情的控件复制到对话框即可。然后为话框资源创建一个对话框类CDtabelDlg在MFC中为控件添加成员变量如下图所示。图8工资详情表界面然后为IDOK添加BN_CLICKED消息映射,并添加下列代码:void CDtabelDlg:O nOK()UpdateData();m_strlD.TrimLeft();m_strDepartme nt.TrimLeft();if(m_strlD.lsEmpty()MessageBox("员工号不能为空!”);elseif(m_strDepartme nt.IsEmpty()MessageBox("部门号不能为空! ”);elseCDi

17、alog:O nOK();然后 CDetailDlg 类中的三个按扭,IDC_REC_ADD,IDC_REC_EDIT,IDC_REC_DEL添加BN_CLICKED 消息映射,并添加下列代码:void CDetailDlg:O nButto nAdd2()CDtabelDlg dlg;if(dlg.DoModal()=IDOK)CDetailSet pSet;pSet.AddNew();pSet.m_departme nt =dlg.m_strDepartme nt;pSet.mD =dlg.m_strID;pSet.m_basic =dlg.m_fBasic;pSet.m_b onus =

18、dlg.m_fB onus;pSet.m_welfare =dlg.m_fWelfare;pSet.m_fi ne =dlg.m_fFi ne;pSet.m_total =dlg.m_fTotal;pSet.Update();pSet.Requery();void CDetailDlg:OnBu 卄onEdit2()CDetailSet pSet;pSet.Ope n();UpdateData();pSet.Edit();pSet.m_departme nt=m_strDepartme nt;pSet.mD= m_strID;pSet.m_basic=m_fBasic;pSet.m_b onu

19、s= m_fBonus;pSet.m_welfare=m_fWelfare;pSet.m_fi ne= m_fFi ne;pSet.m_total= m_fTotal;UpdateData(FALSE);pSet.Update();pSet.Requery();pSet.Close();MessageBox("修改成功");void CDetailDlg:O nButto nDel2()UpdateData();CDetailSet cSet;cSet.Ope n();cSet.m_strFilter="ID="'+m_strlD+"&

20、quot;'cSet.Requery();cSet.Delete();cSet.Close();UpdateData(false);(4) 登陆框的设计如上的方法依次为其创建对话框类DengluDlg和CRecordSet派生类CDengluSet在MFC中为控件添加成员变量。登陆框界面如下图所示。用户名 Edit密码:J A A H确定 1 取消图9登陆框界面> . . T . . H = - S ' P电if -! 然后为IDOK添加BN_CLICKED消息映射,并添加下列代码:BOOL CDe ngluDlg:check()UpdateData();pSet.Ope

21、 n();if(m_stry on ghu.lsEmpty()|m_strmima.lsEmpty()- -MessageBox("请输用户名和密码!”);return false;(” name='%s"',m_stry on ghu); pSet.Requery();if(pSet.m _n ame!=m_stry on ghu|pSet.m_password!=m_strmima) MessageBox("密码或用户名有错!”);return false;return true;void CDe ngluDlg:O nOK ()CWnd *m

22、_pMai nWnd;if(!check()return;CDialog:O nOK(); m_pMai nWnd=AfxGetMai nWnd();CDialog:O nOK();4系统测试4.1系统测试结果系统测试结果如图所示。CAboulDIg 十"CDenyUDIg + ;:曲 engluSEt CDUailLJIg i'CDelaiJSet 1 *Ct*htirHo 1 * CEx_jpp B|* C匚 ;*CEx_Sl!t BrCEx_View * " rnlnnin5CI.NFil./%3l_xch?j rsijfj1寸“ 剧 !讣f | 1 ,! I

23、 .1;.; - t Ji 內-员工二资管理系筑-吨-e prr*r(<?)T fl unininrj)疋r聲慄f调试、觀改件1、査我刪八第果' 血川.<II图10进入登陆框测试用户进入主界面如下图所示oijrrih员工二竟扇E5工工疝 + * d CAboutDIg + CDengluDlg 4 盘 CDengluSet 士 : CDetflIIDIg 寸 : CDelallSet + * 1 CDtabeJDig + : CEx.App + B * CEx_Oot + * CExISet + * : C£x_Vicw 4 ' rinfnllinFT*工

24、窝详谓d姓-500S9302CL.捌R&.” 冒FiL19 TTIMfflSftrtxe - I error/51. 0 varninafs)图11进入主界面测试4.2异常处理由于时间匆忙以及本人水平有限,本程序存在的问题比较多,自认为主要有以下几个 方面。(1)程序没有对输入的员工信息诸如 工号、姓名、部门号等进行检测其合理性所以 在工号姓名、部门号等中可以输入字母或在名字中可以输入数字就在所难免了作为一个员工信息管理,这样的安全性是致命的。要解决这个问题就要在重载函数 中加入各种判断语句工作量比较大。(2)由于水平有限没有制作图形界面多媒体等美化程序的设置只是一些简单的对 话框和界

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

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

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

28、imLeft ();if(m_strQuery .I sEmpty ()MessageBox("要查询的员工号不能为空");return;if(m_pSet->lsOpen ()m_pSet->Close();m_pSet->m_strFilter.Format("ID='%s”',m_strQuery);m_pSet->m_strSort="departme nt"m_pSet->Ope n();if(!m_pSet->lsEOF()UpdateData(FALSE);elseMessage

29、Box("没有查到你要找员工的记录!");然后为IDOK添加BN_CLICKED消息映射并添加下列代码:void CSalaryDlg: :On OK()UpdateData();m_strlD.TrimLeft();m_strDepartme nt.TrimLeft();if(m_strlDsEmpty()MessageBox("员工号不能为空!");elseif(m_strDepartme nt.lsEmpty()MessageBox("部门号不能为空!");elseCDialog: On 0K();添加然后 CEx_View 类

30、中的三个按扭 IDC_REC_ADDIDC_REC_EDITIDC_REC_DELBN_CLICKED消息映射,并添加下列代码:void CEx_View:O nRecAdd()CSalaryDlg dlg;if(dlg.DoModal()=IDOK)m_pSet->AddNew();m_pSet->m_departme nt =dlg.m_strDepartme nt;m_pSet->m_ID =dlg.m_strlD;m_pSet->m _n ame =dlg.m_strName;m_pSet->m_salary =dlg.m_fSalary;m_pSet-&

31、gt;Update();m_pSet->Requery();void CEx_View:O nRecEdit()CSalaryDlg dlg;dlg.m_strDepartme nt =m_pSet->m_departme nt;dlg.m_strlD =m_pSet-> mD;dlg.m_strName =m_pSet->m _n ame;dlg.m_fSalary =m_pSet->m_salary;if(dlg.DoModal()=IDOK)m_pSet->Edit();m_pSet->m_departme nt =dlg.m_strDepart

32、me nt;m_pSet->m_ID =dlg.m_strlD;m_pSet->m _n ame =dlg.m_strName;m_pSet->m_salary =dlg.m_fSalary;m_pSet->Update();m_pSet->Requery();UpdateData(FALSE);void CEx_View:O nRecDel()CRecordsetStatus status;m_pSet->GetStatus(status);m_pSet->Delete();if(status. m_l Curre ntRecord=0) m_pSe

33、t->MoveNext();elsem_pSet->MoveFirst();UpdateData(FALSE);为表单资源的按扭添加BN_CLICKED消息映射并添加下列代码。void CEx_View:O nButto nDetail()CDetailDlg dlg;dlg.DoModal();在CDetailDlg类中添加按扭控件查询IDC_BUTTON_QUERYY2 的BN_CLICKED消息映射并添加下列代码void CDetailDlg:O nButto nQuery2()UpdateData();m_strQuery2.TrimLeft ();if(m_strQuer

34、y2.lsEmpty ()MessageBox("要查询的员工号不能为空!");return;CStri ng str;str=m_strQuery2;CDetailSet cSet;VC+课设-公司员工工资管理系统cSet.m_strFilter.Format("ID='%s”',str);cSet.Ope n();if(!cSetsEOF()m_strDepartme nt=cSet.m_departme nt;m_fBasic=cSet.m_basic;m_fB onu s=cSet.m_b onus;m_fWelfare=cSet.m_we

35、lfare;m_fFin e=cSet.m_fi ne;m_fTotal=cSet.m_total;m_strlD=cSet.m_ID;UpdateData(FALSE);elseMessageBox('查询的员工记录不存在!");if(cSet.lsOpe n()cSet.Close();然后为IDOK添加BN_CLICKED消息映射,并添加下列代码:void CDtabelDlg:O nOK()UpdateData();m_strlD.TrimLeft();m_strDepartme nt.TrimLeft();if(m_strlD.lsEmpty() MessageBo

36、x('员工号不能为空!");elseif(m_strDepartme nt.lsEmpty() MessageBox('部门号不能为空!");elseCDialog:O nOK();然后 CDetailDlg 类中的三个按扭,IDC_REC_ADD,IDC_REC_EDIT,IDC_REC_DEL添加BN_CLICKED消息映射,并添加下列代码:VC+课设-公司员工工资管理系统void CDetailDlg:O nButto nAdd2()CDtabelDIg dlg;if(dlg.DoModal()=IDOK)CDetailSet pSet;pSet. AddNew();pSet.m_departme nt =dlg.m_strDepartme nt;pSet.mD =dlg.m_strID; pSet.m_basic =d

温馨提示

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

评论

0/150

提交评论