VC课设公司员工工资管理系统.doc

上传人:wj 文档编号:1220868 上传时间:2023-04-30 格式:DOC 页数:23 大小:1.12MB
下载 相关 举报
VC课设公司员工工资管理系统.doc_第1页
第1页 / 共23页
VC课设公司员工工资管理系统.doc_第2页
第2页 / 共23页
VC课设公司员工工资管理系统.doc_第3页
第3页 / 共23页
VC课设公司员工工资管理系统.doc_第4页
第4页 / 共23页
VC课设公司员工工资管理系统.doc_第5页
第5页 / 共23页
VC课设公司员工工资管理系统.doc_第6页
第6页 / 共23页
VC课设公司员工工资管理系统.doc_第7页
第7页 / 共23页
VC课设公司员工工资管理系统.doc_第8页
第8页 / 共23页
VC课设公司员工工资管理系统.doc_第9页
第9页 / 共23页
VC课设公司员工工资管理系统.doc_第10页
第10页 / 共23页
VC课设公司员工工资管理系统.doc_第11页
第11页 / 共23页
VC课设公司员工工资管理系统.doc_第12页
第12页 / 共23页
VC课设公司员工工资管理系统.doc_第13页
第13页 / 共23页
VC课设公司员工工资管理系统.doc_第14页
第14页 / 共23页
VC课设公司员工工资管理系统.doc_第15页
第15页 / 共23页
VC课设公司员工工资管理系统.doc_第16页
第16页 / 共23页
VC课设公司员工工资管理系统.doc_第17页
第17页 / 共23页
VC课设公司员工工资管理系统.doc_第18页
第18页 / 共23页
VC课设公司员工工资管理系统.doc_第19页
第19页 / 共23页
VC课设公司员工工资管理系统.doc_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VC课设公司员工工资管理系统.doc

《VC课设公司员工工资管理系统.doc》由会员分享,可在线阅读,更多相关《VC课设公司员工工资管理系统.doc(23页珍藏版)》请在冰点文库上搜索。

VC课设公司员工工资管理系统.doc

公司员工工资管理系统

1课程设计目的

公司员工工资管理系统是典型的人员信息管理系统,其主要的功能是把人员管理过程信息化,自动化以减轻人工的重复繁琐劳动。

其开发主要包括后台数据库的建立维护以及前台应用程序的开发两个方面。

对于后台数据库要求建立一个稳定的数据库,保持数据的一致性,完整性,安全性也是必要的。

对于前台要求稳定,实用,易用。

本系统是为公司人事管理的各种工作而设计的。

根据需求分析,需要实现对系统用户,基本信息(公司部门,人员相关信息等),考勤考评的管理。

经过分析,本系统使用SQLSERVER做为其后台数据库,采用ADO数据库链接技术;VisualC++做为开发工具,提供了相当齐备的类库、友好的编程界面和多种多样的数据库访问技术。

其中ADO使得编写数据库应用程序变得简单容易。

公司人事管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。

对于前者要求建立起数据一致性,完整性,安全性好的库。

而对于后者则要求应用程序功能完备,易使用等特点。

2功能描述

系统功能分析

企业工资管理系统需要完成的功能主要有

*系统数据初始化

*员工基本信息数据的输入

*员工基本信息数据的修改、删除

*企业工资的基本设定

*员工工资的浏览

*员工个人工资表的查询

3方案论证

3.1总体设计

系统功能模块设计如下图所示。

员工工资管理系统

工资汇总

工资基本设置

员工信息

资料输入

员工增删

员工查询

员工修改

基本工资

员工奖金

工资福利

个人罚款

工资总表

人工资查询

图1系统功能模块

3.2详细设计

3.2.1数据库设计

通过对企业工资管理的内容和数据流程分析,设计的数据项和数据结构如下。

*员工基本状况包括的数据库项有员工号、员工姓名、性别、所在部门、生日、家庭住址、联系电话等。

因为本程序中只涉及到工资管理,故为了说明简单在数据库中只包含进了与员工的工资相关的资料,如入厂时间、所在部门、岗位、工资级别等。

*工资级别的工资金额,包括的数据库项有工资技能等级、工资额。

*企业部门及工作岗位信息包括的数据库项有部门名称、工作岗位名称、岗位工资

等。

*公司福利金额包含的数据库项有福利值。

*工资信息包含的数据库项有员工号、员工姓名、员工基础工资、公司福利、员工

实得工资。

3.2.2数据库概念结构设计

根据公司员工信息管理系统设计的信息数据和系统功能模块结构,公司员工信息管理系统数据库包括工资详情表、登陆框结构表、工资详情表、员工信息表。

为数据库员工工资表添加如下数据表。

表1工资详情表结构

字段名称

数据类型

说明

编号

自动编号

ID

文本

员工号

departmen

文本

部门号

name

文本

姓名

salary

数字

工资

remark

文本

备注

表2登陆框结构

字段名称

数据类型

说明

Name

文本

用户名

password

文本

密码

表3工资详情表结构

字段名称

数据类型

说明

编号

自动编号

ID

文本

员工号

department

文本

basic

数字

基本工资

bonus

数字

奖金

welfare

数字

福利

fine

数字

罚款

total

数字

总工资

表4员工信息表结构

字段名称

数据类

说明

编号

自动编号

ID

文本

员工号

department

文本

部门号

name

文本

姓名

sex

文本

性别

tob

文本

职务

tel

文本

电话

address

文本

住址

3.3创建数据源

为数据库创建用户DSN,数据源名称为“员工工资表”。

图2创建数据源

3.3.1数据库结构的实现

在需求分析、概念结构设计的继承上得数据库的逻辑结构之后,我们就可以在数据库系统中实现该逻辑结构。

数据库的逻辑结构直接使用项目管理器来实现在这之前先建一个名为salary工资的项目保存在磁盘,如D\salary。

存储为

D:

\salary\database\salary.dbc。

为数据库添加数据表存储为D\salary\database\

tms.dbf.

3.3.2程序界面设计

(1)员工工资模块设计

图3员工工资管理模块

查询控件的设计

在CEX_Viewl类中添加按扭控件查询IDC_BUTTON_QUERYY的BN_CLICKED消息映射并添加下列代码。

voidCEx_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);

else

MessageBox("没有查到你要找员工的记录!

");

}

(2)添加、修改、删除控件的设计

添加一对话框资源ID号为IDD_SALARY_TABLE,将表单资源的控件复制到对话框即可,然后为对话框资源创建一个对话框类CSalaryDlg,在MFC中为控件添加成员变量如下图所示。

图4员工工资表界面

图5为控件添加成员变量

然后为IDOK添加BN_CLICKED消息映射并添加下列代码:

voidCSalaryDlg:

:

OnOK()

{

UpdateData();

m_strID.TrimLeft();

m_strDepartment.TrimLeft();

if(m_strID.IsEmpty())

MessageBox("员工号不能为空!

");

else

if(m_strDepartment.IsEmpty())

MessageBox("部门号不能为空!

");

else

CDialog:

:

OnOK();

}

然后CEx_View类中的三个按扭IDC_REC_ADDIDC_REC_EDITIDC_REC_DEL添加

BN_CLICKED消息映射,并添加下列代码:

voidCEx_View:

:

OnRecAdd()

{

CSalaryDlgdlg;

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();

}

}

voidCEx_View:

:

OnRecEdit()

{

CSalaryDlgdlg;

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;

m_pSet->Update();

m_pSet->Requery();

UpdateData(FALSE);

}

}

voidCEx_View:

:

OnRecDel()

{

CRecordsetStatusstatus;

m_pSet->GetStatus(status);

m_pSet->Delete();

if(status.m_lCurrentRecord==0)

m_pSet->MoveNext();

else

m_pSet->MoveFirst();

UpdateData(FALSE);

}

(3)工资详情模块的设计

图6工资详情设计

为对话框资源创建一个对话框类CDetailDlg,在MFC中为控件添加成员变量如下图所示。

图7为控件添加成员变量

为表单资源的按扭添加BN_CLICKED消息映射并添加下列代码。

voidCEx_View:

:

OnButtonDetail()

{

CDetailDlgdlg;

dlg.DoModal();

}

在CDetailDlg类中添加按扭控件查询IDC_BUTTON_QUERYY2的BN_CLICKED消息映射并添加下列代码

voidCDetailDlg:

:

OnButtonQuery2()

{

UpdateData();

m_strQuery2.TrimLeft();

if(m_strQuery2.IsEmpty())

{

MessageBox("要查询的员工号不能为空!

");

return;

}

CStringstr;

str=m_strQuery2;

CDetailSetcSet;

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);

}

else

MessageBox("查询的员工记录不存在!

");

if(cSet.IsOpen())cSet.Close();

}

添加一对话框资源ID号为IDD_DETAIL_TABEL将工资详情的控件复制到对话框即可。

然后为话框资源创建一个对话框类CDtabelDlg在MFC中为控件添加成员变量如下图所示。

图8工资详情表界面

然后为IDOK添加BN_CLICKED消息映射,并添加下列代码:

voidCDtabelDlg:

:

OnOK()

{

UpdateData();

m_strID.TrimLeft();

m_strDepartment.TrimLeft();

if(m_strID.IsEmpty())

MessageBox("员工号不能为空!

");

else

if(m_strDepartment.IsEmpty())

MessageBox("部门号不能为空!

");

else

CDialog:

:

OnOK();

}

然后CDetailDlg类中的三个按扭,IDC_REC_ADD,IDC_REC_EDIT,IDC_REC_DEL添加

BN_CLICKED消息映射,并添加下列代码:

voidCDetailDlg:

:

OnButtonAdd2()

{

CDtabelDlgdlg;

if(dlg.DoModal()==IDOK){

CDetailSetpSet;

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_welfare=dlg.m_fWelfare;

pSet.m_fine=dlg.m_fFine;

pSet.m_total=dlg.m_fTotal;

pSet.Update();

pSet.Requery();

}

}

voidCDetailDlg:

:

OnButtonEdit2()

{

CDetailSetpSet;

pSet.Open();

UpdateData();

pSet.Edit();

pSet.m_department=m_strDepartment;

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("修改成功");

}

voidCDetailDlg:

:

OnButtonDel2()

{

UpdateData();

CDetailSetcSet;

cSet.Open();

cSet.m_strFilter="ID='"+m_strID+"'";

cSet.Requery();

cSet.Delete();

cSet.Close();

UpdateData(false);

}

(4)登陆框的设计

如上的方法依次为其创建对话框类DengluDlg和CRecordSet派生类CDengluSet在MFC中为控件添加成员变量。

登陆框界面如下图所示。

图9登陆框界面

然后为IDOK添加BN_CLICKED消息映射,并添加下列代码:

BOOLCDengluDlg:

:

check()

{

UpdateData();

CDengluSetpSet;

pSet.Open();

if(m_stryonghu.IsEmpty()||m_strmima.IsEmpty())

{

MessageBox("请输用户名和密码!

");

returnfalse;

}

pSet.m_strFilter.Format("name='%s'",m_stryonghu);

pSet.Requery();

if(pSet.m_name!

=m_stryonghu||pSet.m_password!

=m_strmima)

{MessageBox("密码或用户名有错!

");

returnfalse;

}

returntrue;

}

voidCDengluDlg:

:

OnOK()

CWnd*m_pMainWnd;

if(!

check())

return;

CDialog:

:

OnOK();

m_pMainWnd=AfxGetMainWnd();

CDialog:

:

OnOK();

}

4系统测试

4.1系统测试结果

系统测试结果如图所示。

图10进入登陆框测试

用户进入主界面如下图所示。

图11进入主界面测试

4.2异常处理

由于时间匆忙以及本人水平有限,本程序存在的问题比较多,自认为主要有以下几个方面。

(1)程序没有对输入的员工信息诸如工号、姓名、部门号等进行检测其合理性所以在工号姓名、部门号等中可以输入字母或在名字中可以输入数字就在所难免了

作为一个员工信息管理,这样的安全性是致命的。

要解决这个问题就要在重载函数

中加入各种判断语句工作量比较大。

(2)由于水平有限没有制作图形界面多媒体等美化程序的设置只是一些简单的对

话框和界面,看起来难免有些单调不够完善。

(3)程序的功能也是一个问题员工的信息太简单,可进行的操作也少可能有些功能

实现起来显得有些别扭。

5心得体会

通过这次课题设计,我觉得做好一个程序,灵活运用是关键。

把基础学好不一定能把程序编好,但基础知识不好,一定编不出好程序。

做大规模的程序不只是一个人努力就行了,一定要有团队合作能力。

编程最主要是思路清晰,只要你把思路理顺了,就有利于你在编程的过程中少走弯路。

要想学好这门课我觉得除了在课堂上认真学习之外也要做好以下几点:

1.认真对待每一个程序的编写

2.做好对每一个所编程序的总结

3.写程序尽量要规范、严谨,效率尽量要高

4.养成自我测试的习惯

5.多看一些别人编的程序,把好的思路和方法记下来,以备不时之需

6.要有恃之以恒的精神以及严谨的科学研究作风

在努力奋斗中,我终于把本次课题设计顺利完成。

回想起课题设计过程中面对程序错误一大堆的失望与成功完成程序中每一个模块的喜悦时,我真正的体会到了:

细节决定成败;学术不管是哪一门,只要你用心去对待它,它也会用心地来回报你,这也正印证了一句话:

“一分耕耘一分收获”。

6参考文献

[1]郑阿奇,丁有和.VisualC++教程[M].北京:

清华大学出版社,2016.3:

346-349

[2]马石安,魏文平.VisualC++程序设计与应用教程题解及课程设计[M].北京:

清华大学出版社,2015.7:

101-230

[3]郑莉.C++语言程序设计案例教程[M].北京:

清华大学出版社,2016.7:

24-139

[4]黄明.面向对象程序设计习题详解[M].北京:

机械工业出版社,2015.9:

32-105

[5]徐士良.C常用算法程序集[M].北京:

清华大学出版社,2015.9:

29-91

[6]黄维通.VisualC++面向对象与可视化设计(第2版)[M].北京:

清华大学出版社,2014.12:

36-105

7附录(部分源代码)

在CEX_Viewl类中添加按扭控件查询IDC_BUTTON_QUERYY的BN_CLICKED消息映射并添加下列代码。

voidCEx_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);

else

MessageBox("没有查到你要找员工的记录!

");

}

然后为IDOK添加BN_CLICKED消息映射并添加下列代码:

voidCSalaryDlg:

:

OnOK()

{

UpdateData();

m_strID.TrimLeft();

m_strDepartment.TrimLeft();

if(m_strID.IsEmpty())

MessageBox("员工号不能为空!

");

else

if(m_strDepartment.IsEmpty())

MessageBox("部门号不能为空!

");

else

CDialog:

:

OnOK();

}

然后CEx_View类中的三个按扭IDC_REC_ADDIDC_REC_EDITIDC_REC_DEL添加

BN_CLICKED消息映射,并添加下列代码:

voidCEx_View:

:

OnRecAdd()

{

CSalaryDlgdlg;

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();

}

}

voidCEx_View:

:

OnRecEdit()

{

CSalaryDlgdlg;

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;

m_pSet->Update();

m_pSet->Requery();

UpdateData(FALSE);

}

}

voidCEx_View:

:

OnRecDel()

{

CRecordsetStatusstatus;

m_pSet->GetStatus(status);

m_pSet->Delete();

if(status.m_lCurrentRecord==0)

m_pSet->MoveNext();

else

m_pSet->MoveFirst();

UpdateData(FALSE);

}

为表单资源的按扭添加BN_CLICKED消息映射并添加下列代码。

voidCEx_View:

:

OnButtonDetail()

{

CDetailDlgdlg;

dlg.DoModal();

}

在CDetailDlg类中添加按扭控件查询IDC_BUTTON_QUERYY2的BN_CLICKED消息映射并添加下列代码

voidCDetailDlg:

:

OnButtonQuery2()

{

UpdateData();

m_strQuery2.TrimLeft();

if(m_strQuery2.IsEmpty())

{

MessageBox("要查询的员工号不能为空!

");

return;

}

CStringstr;

str=m_strQuery2;

CDetailSetcSet;

cSet.m_

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2