【ACCESS精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了ACCESS精品源码-【精品】C++编写的职工工资管理系统源代码 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
职工工资管理系统一、 设计目标: 按照软件工程的规范,以 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::OnExitOnExitvoid CWorkerMgr6View::OnRecordFirstifm_pSet-IsBOFm_pSet-SetFieldNullNULLelsem_pSet-MoveFirstUpdateDataFALSE//更新对话框窗口void CWorkerMgr6View::OnRecordLastm_pSet-MoveLastUpdateDataFALSE//更新对话框窗口void CWorkerMgr6View::OnRecordNextifm_pSet-IsBOFm_pSet-SetFieldNullNULL//判断是否溢出ifm_pSet-IsEOFAfxMessageBox已经到达最后记录elsem_pSet-MoveNextUpdateDataFALSEvoid CWorkerMgr6View::OnRecordPreifm_pSet-IsBOFAfxMessageBox已经到达第一个记录m_pSet-MoveFirstm_pSet-MovePrevUpdateDataFALSEvoid CWorkerMgr6View::OnAddWorkerHRESULT hrtryhr m_pConnection.CreateInstanceADODB.Connection//创建 Connection 对象ifSUCCEEDEDhrhrm_pConnection-OpenProviderMicrosoft.Jet.OLEDB.4.0DataSourceworker.mdbadModeUnknown//连接数据库//上面一句中连接字串中的 Provider 是针对
ACCESS2000 环境的,对于
ACCESS97需要改为:ProviderMicrosoft.Jet.OLEDB.3.51catch_com_error e///捕捉异常CString errormessageerrormessage.Format连接数据库失败rn 错误信息:se.ErrorMessageAfxMessageBoxerrormessage///显示错误信息CAddWorker dlifdl.DoModalIDOKm_pSet-AddNewm_pSet-m_namedl.m_nmm_pSet-m_iddl.m_idsm_pSet-m_sexdl.m_sxm_pSet-m_borndl.m_bnm_pSet-m_zhichendl.m_zhchm_pSet-m_xuelidl.m_xlim_pSet-m_salarydl.m_salam_pSet-m_marrydl.m_marrm_pSet-Updatem_pSet-MoveLastUpdateDatafalseOnAddMoneyvoid CWorkerMgr6View::OnDeleteWorkerHRESULT hrtryhr m_pConnection.CreateInstanceADODB.Connection//创建 Connection 对象ifSUCCEEDEDhrhrm_pConnection-OpenProviderMicrosoft.Jet.OLEDB.4.0DataSourceworker.mdbadModeUnknown///连接数据库///上面一句中连接字串中的 Provider 是针对
ACCESS2000 环境的,对于
ACCESS97需要改为:ProviderMicrosoft.Jet.OLEDB.3.51catch_com_error e///捕捉异常CString errormessageerrormessage.Format连接数据库失败rn 错误信息:se.ErrorMessageAfxMessageBoxerrormessage///显示错误信息CDelWorker dlifdl.DoModalIDOKUpdateDatatruetrylong iddl.m_ididCString strstr.FormatDELETE from worker where IDdid_variant_t RecordsAffectedm_pConnection-Execute_bstr_tstrRecordsAffectedadCmdTextAfxMessageBox删除成功catch_com_erroreAfxMessageBoxe-ErrorMessagem_pSet-MoveNextifm_pSet-IsEOFm_pSet-MoveLastUpdateDataFALSEvoid CWorkerMgr6View::OnChangWorkerHRESULT hrtryhr m_pConnection.CreateInstanceADODB.Connection//创建 Connection 对象ifSUCCEEDEDhrhrm_pConnection-OpenProviderMicrosoft.Jet.OLEDB.4.0DataSourceworker.mdbadModeUnknown///连接数据库///上面一句中连接字串中的 Provider 是针对
ACCESS2000 环境的,对于
ACCESS97需要改为:ProviderMicrosoft.Jet.OLEDB.3.51catch_com_error e///捕捉异常CString errormessageerrormessage.Format连接数据库失败rn 错误信息:se.ErrorMessageAfxMessageBoxerrormessage///显示错误信息CChangeWork dl2ifdl2.DoModalIDOKUpdateDatatruelong iddl2.m_widm_pSet-MoveFirstwhilem_pSet-m_iddl2.m_widm_pSet-MoveNextCChangeOne dl1dl1.m_name1m_pSet-m_namedl1.m_id1m_pSet-m_iddl1.m_sex1m_pSet-m_sexdl1.m_born1m_pSet-m_borndl1.m_zhichen1m_pSet-m_zhichendl1.m_xuelim_pSet-m_xuelidl1.m_salary1m_pSet-m_salarydl1.m_marry1m_pSet-m_marryifdl1.DoModalIDOKm_pSet-Editm_pSet-m_namedl1.m_name1m_pSet-m_iddl1.m_id1m_pSet-m_sexdl1.m_sex1m_pSet-m_borndl1.m_born1m_pSet-m_zhichendl1.m_zhichen1m_pSet-m_xuelidl1.m_xuelim_pSet-m_salarydl1.m_salary1m_pSet-m_marrydl1.m_marry1m_pSet-Update// m_pSet-MoveNextUpdateDatafalsevoid CWorkerMgr6View::OnMShowDetailCMShowDetail dllong idm_pSet-m_idm_pSet-MoveFirstwhilem_pSet-m_ididm_pSet-MoveNextdl.m_monthm_pSet-m_monthdl.m_idm_pSet-m_iddl.m_namem_pSet-m_namedl.m_basem_pSet-m_basedl.m_jintiem_pSet-m_jintiedl.m_gangtiem_pSet-m_gangtiedl.m_butiem_pSet-m_butiedl.m_fangtiem_pSet-m_fangtiedl.m_jiaotongm_pSet-m_jiaotongdl.m_yingfadl.m_basedl.m_jintiedl.m_gangtiedl.m_butiedl.m_fangtiedl.m_jiaotongdl.m_fangzum_pSet-m_fangzudl.m_chuxum_pSet-m_chuxudl.m_huifeim_pSet-m_huifeiifdl.m_yingfa800dl.m_yingfa1000dl.m_yingfa5000dl.m_gerentaxdl.m_yingfa0.2fdl.m_yingkoudl.m_fangzudl.m_chuxudl.m_huifeidl.m_gerentaxdl.m_shifadl.m_yingfa-dl.m_yingkoudl.m_otherm_pSet-m_otherdl.DoModalvoid CWorkerMgr6View::OnAddMoneyCAddMoney dldl.m_idm_pSet-m_iddl.m_namem_pSet-m_nameifdl.DoModalIDOKm_pSet-Editm_pSet-m_basedl.m_basem_pSet-m_monthdl.m_monthm_pSet-m_jintiedl.m_jintiem_pSet-m_gangtiedl.m_gangtiem_pSet-m_butiedl.m_butiem_pSet-m_fangtiedl.m_fangtiem_pSet-m_jiaotongdl.m_jiaotongdl.m_yingfadl.m_basedl.m_jintiedl.m_gangtiedl.m_butiedl.m_fangtiedl.m_jiaotongm_pSet-m_yingfadl.m_yingfam_pSet-m_fangzudl.m_fangzum_pSet-m_chuxudl.m_chuxum_pSet-m_huifeidl.m_huifeiifdl.m_yingfa800dl.m_yingfa1000dl.m_yingfa5000dl.m_gerentaxdl.m_yingfa0.2fm_pSet-m_gerentaxdl.m_gerentaxdl.m_yingkoudl.m_fangtiedl.m_chuxudl.m_huifeidl.m_gerentaxm_pSet-m_yingkoudl.m_yingkoudl.m_shifadl.m_yingfa-dl.m_yingkoum_pSet-m_shifadl.m_shifam_pSet-m_otherdl.m_otherm_pSet-Update//m_pSet-MoveLastUpdateDatafalsevoid CWorkerMgr6View::OnDeleteMoneyHRESULT hrtryhr m_pConnection.CreateInstanceADODB.Connection//创建 Connection 对象ifSUCCEEDEDhrhrm_pConnection-OpenProviderMicrosoft.Jet.OLEDB.4.0DataSourceworker.mdbadModeUnknown///连接数据库///上面一句中连接字串中的 Provider 是针对
ACCESS2000 环境的,对于
ACCESS97需要改为:ProviderMicrosoft.Jet.OLEDB.3.51catch_com_error e///捕捉异常CString errormessageerrormessage.Format连接数据库失败rn 错误信息:se.ErrorMessageAfxMessageBoxerrormessage///显示错误信息CDeleteMoney dlifdl.DoModalIDOKUpdateDatatruetrylong iddl.m_idCString strstr.FormatDELETE from worker where IDdid_variant_t RecordsAffectedm_pConnection-Execute_bstr_tstrRecordsAffectedadCmdTextAfxMessageBox删除成功catch_com_erroreAfxMessageBoxe-ErrorMessagem_pSet-MoveNextifm_pSet-IsEOFm_pSet-MoveLastUpdateDataFALSEvoid CWorkerMgr6View::OnChangeMoneyHRESULT hrtryhr m_pConnection.CreateInstanceADODB.Connection//创建 Connection 对象ifSUCCEEDEDhrhrm_pConnection-OpenProviderMicrosoft.Jet.OLEDB.4.0DataSourceworker.mdbadModeUnknowncatch_com_error e //捕捉异常CString errormessageerrormessage.Format连接数据库失败rn 错误信息:se.ErrorMessageAfxMessageBoxerrormessage //显示错误信息CChangeWork dl2ifdl2.DoModalIDOKUpdateDatatruelong iddl2.m_widm_pSet-MoveFirstwhilem_pSet-m_iddl2.m_widm_pSet-MoveNextCChangeMoney dl1dl1.m_monthm_pSet-m_monthdl1.m_namem_pSet-m_namedl1.m_idm_pSet-m_iddl1.m_basem_pSet-m_basedl1.m_jintiem_pSet-m_jintiedl1.m_gangtiem_pSet-m_gangtiedl1.m_butiem_pSet-m_butiedl1.m_fangtiem_pSet-m_fangtiedl1.m_jiaotongm_pSet-m_jiaotongdl1.m_yingfadl1.m_basedl1.m_jintiedl1.m_gangtiedl1.m_butiedl1.m_fangtiedl1.m_jiaotongdl1.m_fangzum_pSet-m_fangzudl1.m_chuxum_pSet-m_chuxudl1.m_huifeim_pSet-m_huifeiifdl1.m_yingfa800dl1.m_yingfa1000dl1.m_yingfa5000dl1.m_gerentaxdl1.m_yingfa0.2fdl1.m_yingkoudl1.m_gerentaxdl1.m_fangzudl1.m_chuxudl1.m_huifeidl1.m_shifadl1.m_yingfa-dl1.m_yingkoudl1.m_otherdl1.m_otherifdl1.DoModalIDOKm_pSet-Editm_pSet-m_namedl1.m_namem_pSet-m_iddl1.m_idm_pSet-m_monthdl1.m_monthm_pSet-m_basedl1.m_basem_pSet-m_jintiedl1.m_jintiem_pSet-m_gangtiedl1.m_gangtiem_pSet-m_butiedl1.m_butiem_pSet-m_fangtiedl1.m_fangtiem_pSet-m_jiaotongdl1.m_jiaotongm_pSet-m_yingfadl1.m_basedl1.m_jintiedl1.m_gangtiedl1.m_butiedl1.m_fangtiedl1.m_jiaotongm_pSet-m_fangzudl1.m_fangzum_pSet-m_chuxudl1.m_chuxum_pSet-m_huifeidl1.m_huifeiifm_pSet-m_yingfam_gerentax0else ifm_pSet-m_yingfa800m_pSet-m_yingfam_gerentaxm_pSet-m_yingfa0.05felse ifm_pSet-m_yingfa1000m_pSet-m_yingfam_gerentaxm_pSet-m_yingfa0.1felse ifm_pSet-m_yingfa5000m_pSet-m_gerentaxm_pSet-m_yingfa0.2fm_pSet-m_yingkoudl1.m_fangzudl1.m_chuxudl1.m_huifeim_pSet-m_gerentaxm_pSet-m_shifam_pSet-m_yingfa-m_pSet-m_yingkoum_pSet-m_otherdl1.m_otherm_pSet-Update// m_pSet-MoveNextUpdateDatafalsevoid CWorkerMgr6View::OnFindMoneyHRESULT hrtryhr m_pConnection.CreateInstanceADODB.Connection//创建 Connection 对象ifSUCCEEDEDhrhrm_pConnection-OpenProviderMicrosoft.Jet.OLEDB.4.0DataSourceworker.mdbadModeUnknowncatch_com_error e //捕捉异常CString errormessageerrormessage.Format连接数据库失败rn 错误信息:se.ErrorMessageAfxMessageBoxerrormessage //显示错误信息CFindNo dl2ifdl2.DoModalIDOKUpdateDatatruelong iddl2.m_idm_pSet-MoveFirstwhilem_pSet-m_iddl2.m_idm_pSet-MoveNextCMShowDetail dl1dl1.m_monthm_pSet-m_monthdl1.m_namem_pSet-m_namedl1.m_idm_pSet-m_iddl1.m_basem_pSet-m_basedl1.m_jintiem_pSet-m_jintiedl1.m_gangtiem_pSet-m_gangtiedl1.m_butiem_pSet-m_butiedl1.m_fangtiem_pSet-m_fangtiedl1.m_jiaotongm_pSet-m_jiaotongdl1.m_yingfadl1.m_basedl1.m_jintiedl1.m_gangtiedl1.m_butiedl1.m_fangtiedl1.m_jiaotongdl1.m_fangzum_pSet-m_fangzudl1.m_chuxum_pSet-m_chuxudl1.m_huifeim_pSet-m_huifeiifdl1.m_yingfa800dl1.m_yingfa1000dl1.m_yingfa5000dl1.m_gerentaxdl1.m_yingfa0.2fdl1.m_yingkoudl1.m_gerentaxdl1.m_fangzudl1.m_chuxudl1.m_huifeidl1.m_shifadl1.m_yingfa-dl1.m_yingkoudl1.m_otherdl1.m_otherdl1.DoModalvoid CWorkerMgr6View::OnStaticsMoneyHRESULT hrtryhr m_pConnection.CreateInstanceADODB.Connection//创建 Connection 对象ifSUCCEEDEDhrhrm_pConnection-OpenProviderMicrosoft.Jet.OLEDB.4.0DataSourceworker.mdbadModeUnknowncatch_com_error e //捕捉异常CString errormessageerrormessage.Format连接数据库失败rn 错误信息:se.ErrorMessageAfxMessageBoxerrormessage //显示错误信息m_pSet-MoveFirstfloat sum0whilem_pSet-IsEOFsumsumm_pSet-m_shifam_pSet-MoveNextCString stringstring.FormatfsumMessageBoxstring统计当月支出MB_OKCANCEL五、 测试及结果分析 (a) 在此前端主界面下查看后台数据库中员工的基本信息。
并且可以通过单击确定按键和菜单栏选项,进行一些常规操作,包括添加职工信息、删除职工信息、修改职工信息、工资管理、信息查询与统计等内容(部分功能操作界面如下图)。
(b) 单击主界面中“工资具体明细”打开本可视界面‘在此界面下查看某员工工资的具体清单。
(c) 在主界面的“职工信息管理”菜单栏里选择“添加职工信息”打开本界面,在这个界面中可以添加新职工的基本信息,并且为后面继续录入职工工资明细清单做准备。
(d) 这是一个先通过后台检索功能实现数据库检索随即执行删除操作的管理界面,在姓名(姓名不作为主键,故当数据库中此条没有重复情况下可用)或编号栏中任输入一条信息执行检索,单击“OK”进行删除操作。
六、 调试过程中出现的问题七、 课程设计总结本次程序设计代码使用 C语言编写,对 Windows 编程的知识又进行了一次系统学习,通过网络查询相关资料,并在校 BBS 上询问借鉴别人的经验以及同学的探讨帮助编写了该程序。
程序使用 C语言编写前台,
Access 作为后台数据库。
这是学习 C语言和数据库以来,首次尝试使用 C语言来编写前端与后台数据库连接,并具有完整功能的管理系统。
其中出现了一些严重的错误,包括两大“瓶颈”难题:一个是在用 MFC 建立视图时,建立的是单文本框,在编写第一个添加职工时可以执行,但是在写第二个添加工资菜单时出现了数据库不能访问情况,经过查找帮助发现数据库的访问不能为同时两个窗口,于是改用多文本框;一个是双表访问问题,在使用两个表被同时访问时系统提示数据库连接失败,而且之前职工表也不能连接成功,后将职工信息与工资信息两表合一,问题得以解决。
在出现的错误中还包括一些被遗忘的语法,通过讨论学习不断调试使其得以弥补。
这次动手操作我发现原来学的很牢固的知识点由于长期不用还是会被遗忘,要经常的动手编写一些代码才能对 Windows 编程有深刻的体会。
通过调试程序感觉我可以通过一些错误提示对程序的错误语句进行猜测、检查、修改。
该次试验让我改变了以前认为没代码可编的想法,其实生活中有很多事情我们可以尝试用计算机语言编写,用电脑去实现对我们学习计算机很有帮助。