欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    职工工资管理系统设计与源代码.doc

    • 资源ID:3784583       资源大小:172KB        全文页数:18页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    职工工资管理系统设计与源代码.doc

    职工工资管理系统一、 设计目标:按照软件工程的规范,以SQL Server或Access为后台数据库,以Delphi 或Visual C+为前端开发工具,设计并实现一个简化的工资管理系统。二、 需求描述该系统存储了某单位全体职工和工资信息。职工的基本信息包括:职工编号、姓名、性别、出生年月、职称、最后学历、工资和婚否。每一个职工的工资信息包括:月份、职工编号、职工姓名、基本工资、津贴、岗贴、补贴、房贴、交通补贴、应发数、房租、储蓄、会费、个人所得税、应扣数、实发数、其他收入。个人所得税计算方法设为:应发数少于800元为0;8001000元的部分为5%;10005000元的部分为10%;5000元以上的部分为20%。系统功能如下:1 职工信息管理:a. 增加职工信息。增加新职工时输入新职工的基本信息;b. 删除某职工的基本信息。如,职工死亡或离职时;c. 修改某职工(指定职工编号)的某些信息(如,加工资、获得新学位、晋升职称、结婚或离婚)。2 工资管理:a. 增加工资信息。当增加新职工时,添加某职工的工资信息;b. 职工离职或死亡时,删除某职工的工资信息;c. 修改工资信息。当月开始增加或减少某些项工资或扣款数变化时,修改某职工的部分工资信息;3 查询与统计:a. 查询职工信息,如查询全体职工信息,或按职称、学历、出生年月、出生年月之前/ 之后、已婚/ 未婚等条件或多个条件的组合来查询相应的职工信息。b. 查询指定编号职工的工资信息;c. 按时间段统计职工收入或单位的工资支出。三、 概要设计四、 详细设计void CWorkerMgr6View:OnExit()OnExit();void CWorkerMgr6View:OnRecordFirst()if(m_pSet->IsBOF()m_pSet->SetFieldNull(NULL);elsem_pSet->MoveFirst();UpdateData(FALSE);/更新对话框窗口void CWorkerMgr6View:OnRecordLast()m_pSet->MoveLast();UpdateData(FALSE);/更新对话框窗口void CWorkerMgr6View:OnRecordNext()if(m_pSet->IsBOF()m_pSet->SetFieldNull(NULL);/判断是否溢出if(m_pSet->IsEOF()AfxMessageBox("已经到达最后记录");elsem_pSet->MoveNext();UpdateData(FALSE);void CWorkerMgr6View:OnRecordPre()if(m_pSet->IsBOF()AfxMessageBox("已经到达第一个记录");m_pSet->MoveFirst();m_pSet->MovePrev();UpdateData(FALSE);void CWorkerMgr6View:OnAddWorker()HRESULT hr;tryhr =m_pConnection.CreateInstance("ADODB.Connection");/创建Connection对象if(SUCCEEDED(hr)hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=worker.mdb","","",adModeUnknown);/连接数据库/上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;catch(_com_error e)/捕捉异常CString errormessage;errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage();AfxMessageBox(errormessage);/显示错误信息CAddWorker dl;if(dl.DoModal()=IDOK)m_pSet->AddNew();m_pSet->m_name=dl.m_nm;m_pSet->m_id=dl.m_ids;m_pSet->m_sex=dl.m_sx;m_pSet->m_born=dl.m_bn;m_pSet->m_zhichen=dl.m_zhch;m_pSet->m_xueli=dl.m_xli;m_pSet->m_salary=dl.m_sala;m_pSet->m_marry=dl.m_marr;m_pSet->Update();m_pSet->MoveLast();UpdateData(false);OnAddMoney();void CWorkerMgr6View:OnDeleteWorker()HRESULT hr;tryhr =m_pConnection.CreateInstance("ADODB.Connection");/创建Connection对象if(SUCCEEDED(hr)hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=worker.mdb","","",adModeUnknown);/连接数据库/上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;catch(_com_error e)/捕捉异常CString errormessage;errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage();AfxMessageBox(errormessage);/显示错误信息CDelWorker dl;if(dl.DoModal()=IDOK)UpdateData(true);trylong id=dl.m_idid;CString str;str.Format("DELETE from worker where ID=%d",id);_variant_t RecordsAffected;m_pConnection->Execute(_bstr_t)str,&RecordsAffected,adCmdText);AfxMessageBox("删除成功!");catch(_com_error*e)AfxMessageBox(e->ErrorMessage();m_pSet->MoveNext();if(m_pSet->IsEOF()m_pSet->MoveLast();UpdateData(FALSE);void CWorkerMgr6View:OnChangWorker()HRESULT hr;tryhr =m_pConnection.CreateInstance("ADODB.Connection");/创建Connection对象if(SUCCEEDED(hr)hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=worker.mdb","","",adModeUnknown);/连接数据库/上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;catch(_com_error e)/捕捉异常CString errormessage;errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage();AfxMessageBox(errormessage);/显示错误信息CChangeWork dl2;if(dl2.DoModal()=IDOK)UpdateData(true);long id=dl2.m_wid;m_pSet->MoveFirst();while(m_pSet->m_id!=dl2.m_wid)m_pSet->MoveNext();CChangeOne dl1;dl1.m_name1=m_pSet->m_name;dl1.m_id1=m_pSet->m_id;dl1.m_sex1=m_pSet->m_sex;dl1.m_born1=m_pSet->m_born;dl1.m_zhichen1=m_pSet->m_zhichen;dl1.m_xueli=m_pSet->m_xueli;dl1.m_salary1=m_pSet->m_salary;dl1.m_marry1=m_pSet->m_marry;if(dl1.DoModal()=IDOK)m_pSet->Edit();m_pSet->m_name=dl1.m_name1;m_pSet->m_id=dl1.m_id1;m_pSet->m_sex=dl1.m_sex1;m_pSet->m_born=dl1.m_born1;m_pSet->m_zhichen=dl1.m_zhichen1;m_pSet->m_xueli=dl1.m_xueli;m_pSet->m_salary=dl1.m_salary1;m_pSet->m_marry=dl1.m_marry1;m_pSet->Update();/m_pSet->MoveNext();UpdateData(false);void CWorkerMgr6View:OnMShowDetail()CMShowDetail dl;long id=m_pSet->m_id;m_pSet->MoveFirst();while(m_pSet->m_id!=id)m_pSet->MoveNext();dl.m_month=m_pSet->m_month;dl.m_id=m_pSet->m_id;dl.m_name=m_pSet->m_name;dl.m_base=m_pSet->m_base;dl.m_jintie=m_pSet->m_jintie;dl.m_gangtie=m_pSet->m_gangtie;dl.m_butie=m_pSet->m_butie;dl.m_fangtie=m_pSet->m_fangtie;dl.m_jiaotong=m_pSet->m_jiaotong;dl.m_yingfa=dl.m_base+dl.m_jintie+dl.m_gangtie+dl.m_butie+dl.m_fangtie+dl.m_jiaotong;dl.m_fangzu=m_pSet->m_fangzu;dl.m_chuxu=m_pSet->m_chuxu;dl.m_huifei=m_pSet->m_huifei;if(dl.m_yingfa<800)dl.m_gerentax=0;else if(dl.m_yingfa>=800&&dl.m_yingfa<=1000)dl.m_gerentax=dl.m_yingfa*0.05f;else if(dl.m_yingfa>1000&&dl.m_yingfa<=5000)dl.m_gerentax=dl.m_yingfa*0.1f;else if(dl.m_yingfa>5000)dl.m_gerentax=dl.m_yingfa*0.2f;dl.m_yingkou=dl.m_fangzu+dl.m_chuxu+dl.m_huifei+dl.m_gerentax;dl.m_shifa=dl.m_yingfa-dl.m_yingkou;dl.m_other=m_pSet->m_other;dl.DoModal();void CWorkerMgr6View:OnAddMoney()CAddMoney dl;dl.m_id=m_pSet->m_id;dl.m_name=m_pSet->m_name;if(dl.DoModal()=IDOK)m_pSet->Edit();m_pSet->m_base=dl.m_base;m_pSet->m_month=dl.m_month;m_pSet->m_jintie=dl.m_jintie;m_pSet->m_gangtie=dl.m_gangtie;m_pSet->m_butie=dl.m_butie;m_pSet->m_fangtie=dl.m_fangtie;m_pSet->m_jiaotong=dl.m_jiaotong;dl.m_yingfa=dl.m_base+dl.m_jintie+dl.m_gangtie+dl.m_butie+dl.m_fangtie+dl.m_jiaotong;m_pSet->m_yingfa=dl.m_yingfa;m_pSet->m_fangzu=dl.m_fangzu;m_pSet->m_chuxu=dl.m_chuxu;m_pSet->m_huifei=dl.m_huifei;if(dl.m_yingfa<800)dl.m_gerentax=0;else if(dl.m_yingfa>=800&&dl.m_yingfa<=1000)dl.m_gerentax=dl.m_yingfa*0.05f;else if(dl.m_yingfa>1000&&dl.m_yingfa<=5000)dl.m_gerentax=dl.m_yingfa*0.1f;else if(dl.m_yingfa>5000)dl.m_gerentax=dl.m_yingfa*0.2f;m_pSet->m_gerentax=dl.m_gerentax;dl.m_yingkou=dl.m_fangtie+dl.m_chuxu+dl.m_huifei+dl.m_gerentax;m_pSet->m_yingkou=dl.m_yingkou;dl.m_shifa=dl.m_yingfa-dl.m_yingkou;m_pSet->m_shifa=dl.m_shifa;m_pSet->m_other=dl.m_other;m_pSet->Update();/m_pSet->MoveLast();UpdateData(false);void CWorkerMgr6View:OnDeleteMoney()HRESULT hr;tryhr =m_pConnection.CreateInstance("ADODB.Connection");/创建Connection对象if(SUCCEEDED(hr)hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=worker.mdb","","",adModeUnknown);/连接数据库/上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;catch(_com_error e)/捕捉异常CString errormessage;errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage();AfxMessageBox(errormessage);/显示错误信息CDeleteMoney dl;if(dl.DoModal()=IDOK)UpdateData(true);trylong id=dl.m_id;CString str;str.Format("DELETE from worker where ID=%d",id);_variant_t RecordsAffected;m_pConnection->Execute(_bstr_t)str,&RecordsAffected,adCmdText);AfxMessageBox("删除成功!");catch(_com_error*e)AfxMessageBox(e->ErrorMessage();m_pSet->MoveNext();if(m_pSet->IsEOF()m_pSet->MoveLast();UpdateData(FALSE);void CWorkerMgr6View:OnChangeMoney()HRESULT hr;tryhr =m_pConnection.CreateInstance("ADODB.Connection");/创建Connection对象if(SUCCEEDED(hr)hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=worker.mdb","","",adModeUnknown);catch(_com_error e) /捕捉异常CString errormessage;errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage();AfxMessageBox(errormessage); /显示错误信息CChangeWork dl2;if(dl2.DoModal()=IDOK)UpdateData(true);long id=dl2.m_wid;m_pSet->MoveFirst();while(m_pSet->m_id!=dl2.m_wid)m_pSet->MoveNext();CChangeMoney dl1;dl1.m_month=m_pSet->m_month;dl1.m_name=m_pSet->m_name;dl1.m_id=m_pSet->m_id;dl1.m_base=m_pSet->m_base;dl1.m_jintie=m_pSet->m_jintie;dl1.m_gangtie=m_pSet->m_gangtie;dl1.m_butie=m_pSet->m_butie;dl1.m_fangtie=m_pSet->m_fangtie;dl1.m_jiaotong=m_pSet->m_jiaotong;dl1.m_yingfa=dl1.m_base+dl1.m_jintie+dl1.m_gangtie+dl1.m_butie+dl1.m_fangtie+dl1.m_jiaotong;dl1.m_fangzu=m_pSet->m_fangzu;dl1.m_chuxu=m_pSet->m_chuxu;dl1.m_huifei=m_pSet->m_huifei;if(dl1.m_yingfa<800)dl1.m_gerentax=0;else if(dl1.m_yingfa>=800&&dl1.m_yingfa<=1000)dl1.m_gerentax=dl1.m_yingfa*0.05f;else if(dl1.m_yingfa>1000&&dl1.m_yingfa<=5000)dl1.m_gerentax=dl1.m_yingfa*0.1f;else if(dl1.m_yingfa>5000)dl1.m_gerentax=dl1.m_yingfa*0.2f;dl1.m_yingkou=dl1.m_gerentax+dl1.m_fangzu+dl1.m_chuxu+dl1.m_huifei;dl1.m_shifa=dl1.m_yingfa-dl1.m_yingkou;dl1.m_other=dl1.m_other;if(dl1.DoModal()=IDOK)m_pSet->Edit();m_pSet->m_name=dl1.m_name;m_pSet->m_id=dl1.m_id;m_pSet->m_month=dl1.m_month;m_pSet->m_base=dl1.m_base;m_pSet->m_jintie=dl1.m_jintie;m_pSet->m_gangtie=dl1.m_gangtie;m_pSet->m_butie=dl1.m_butie;m_pSet->m_fangtie=dl1.m_fangtie;m_pSet->m_jiaotong=dl1.m_jiaotong;m_pSet->m_yingfa=dl1.m_base+dl1.m_jintie+dl1.m_gangtie+dl1.m_butie+dl1.m_fangtie+dl1.m_jiaotong;m_pSet->m_fangzu=dl1.m_fangzu;m_pSet->m_chuxu=dl1.m_chuxu;m_pSet->m_huifei=dl1.m_huifei;if(m_pSet->m_yingfa<800)m_pSet->m_gerentax=0;else if(m_pSet->m_yingfa>=800&&m_pSet->m_yingfa<=1000)m_pSet->m_gerentax=m_pSet->m_yingfa*0.05f;else if(m_pSet->m_yingfa>1000&&m_pSet->m_yingfa<=5000)m_pSet->m_gerentax=m_pSet->m_yingfa*0.1f;else if(m_pSet->m_yingfa>5000)m_pSet->m_gerentax=m_pSet->m_yingfa*0.2f;m_pSet->m_yingkou=dl1.m_fangzu+dl1.m_chuxu+dl1.m_huifei+m_pSet->m_gerentax;m_pSet->m_shifa=m_pSet->m_yingfa-m_pSet->m_yingkou;m_pSet->m_other=dl1.m_other;m_pSet->Update();/m_pSet->MoveNext();UpdateData(false);void CWorkerMgr6View:OnFindMoney()HRESULT hr;tryhr =m_pConnection.CreateInstance("ADODB.Connection");/创建Connection对象if(SUCCEEDED(hr)hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=worker.mdb","","",adModeUnknown);catch(_com_error e) /捕捉异常CString errormessage;errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage();AfxMessageBox(errormessage); /显示错误信息CFindNo dl2;if(dl2.DoModal()=IDOK)UpdateData(true);long id=dl2.m_id;m_pSet->MoveFirst();while(m_pSet->m_id!=dl2.m_id)m_pSet->MoveNext();CMShowDetail dl1;dl1.m_month=m_pSet->m_month;dl1.m_name=m_pSet->m_name;dl1.m_id=m_pSet->m_id;dl1.m_base=m_pSet->m_base;dl1.m_jintie=m_pSet->m_jintie;dl1.m_gangtie=m_pSet->m_gangtie;dl1.m_butie=m_pSet->m_butie;dl1.m_fangtie=m_pSet->m_fangtie;dl1.m_jiaotong=m_pSet->m_jiaotong;dl1.m_yingfa=dl1.m_base+dl1.m_jintie+dl1.m_gangtie+dl1.m_butie+dl1.m_fangtie+dl1.m_jiaotong;dl1.m_fangzu=m_pSet->m_fangzu;dl1.m_chuxu=m_pSet->m_chuxu;dl1.m_huifei=m_pSet->m_huifei;if(dl1.m_yingfa<800)dl1.m_gerentax=0;else if(dl1.m_yingfa>=800&&dl1.m_yingfa<=1000)dl1.m_gerentax=dl1.m_yingfa*0.05f;else if(dl1.m_yingfa>1000&&dl1.m_yingfa<=5000)dl1.m_gerentax=dl1.m_yingfa*0.1f;else if(dl1.m_yingfa>5000)dl1.m_gerentax=dl1.m_yingfa*0.2f;dl1.m_yingkou=dl1.m_gerentax+dl1.m_fangzu+dl1.m_chuxu+dl1.m_huifei;dl1.m_shifa=dl1.m_yingfa-dl1.m_yingkou;dl1.m_other=dl1.m_other;dl1.DoModal();void CWorkerMgr6View:OnStaticsMoney()HRESULT hr;tryhr =m_pConnection.CreateInstance("ADODB.Connection");/创建Connection对象if(SUCCEEDED(hr)hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=worker.mdb","","",adModeUnknown);catch(_com_error e) /捕捉异常CString errormessage;errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage();AfxMessageBox(errormessage); /显示错误信息m_pSet->MoveFirst();float sum=0;while(!m_pSet->IsEOF()sum=sum+m_pSet->m_shifa;m_pSet->MoveNext();CString string;string.Format("%f",sum);MessageBox(string,"统计当月支出",MB_OKCANCEL);五、 测试及结果分析(a)在此前端主界面下查看后台数据库中员工的基本信息。并且可以通过单击确定按键和菜单栏选项,进行一些常规操作,包括添加职工信息、删除职工信息、修改职工信息、工资管理、信息查询与统计等内容(部分功能操作界面如下图)。(b)单击主界面中“工资具体明细”打开本可视界面在此界面下查看某员工工资的具体清单。(c) 在主界面的“职工信息管理”菜单栏里选择“添加职工信息”打开本界面,在这个界面中可以添加新职工的基本信息,并且为后面继续录入职工工资明细清单做准备。(d)这是一个先通过后台检索功能实现数据库检索随即执行删除操作的管理界面,在姓名(姓名不作为主键,故当数据库中此条没有重复情况下可用)或编号栏中任输入一条信息执行检索,单击“OK”进行删除操作。六、 调试过程中出现的问题七、 课程设计总结本次程序设计代码使用C+语言编写,对Windows编程的知识又进行了一次系统学习,通过网络查询相关资料,并在校BBS上询问借鉴别人的经验以及同学的探讨帮助编写了该程序。程序使用C+语言编写前台,Access作为后台数据库。这是学习C+语言和数据库以来,首次尝试使用C+语言来编写前端与后台数据库连接,并具有完整功能的管理系统。其中出现了一些严重的错误,包括两大“瓶颈”难题:一个是在用MFC建立视图时,建立的是单文本框,在编写第一个添加职工时可以执行,但是在写第二个添加工资菜单时出现了数据库不能访问情况,经过查找帮助发现数据库的访问不能为同时两个窗口,于是改用多文本框;一个是双表访问问题,在使用两个表被同时访问时系统提示数据库连接失败,而且之前职工表也不能连接成功,后将职工信息与工资信息两表合一,问题得以解决。在出现的错误中还包括一些被遗忘的语法,通过讨论学习不断调试使其得以弥补。这次动手操作我发现原来学的很牢固的知识点由于长期不用还是会被遗忘,要经常的动手编写一些代码才能对Windows编程有深刻的体会。通过调试程序感觉我可以通过一些错误提示对程序的错误语句进行猜测、检查、修改。该次试验让我改变了以前认为没代码可编的想法,其实生活中有很多事情我们可以尝试用计算机语言编写,用电脑去实现对我们学习计算机很有帮助。

    注意事项

    本文(职工工资管理系统设计与源代码.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开