员工工资管理系统.docx
- 文档编号:5962484
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:23
- 大小:678.43KB
员工工资管理系统.docx
《员工工资管理系统.docx》由会员分享,可在线阅读,更多相关《员工工资管理系统.docx(23页珍藏版)》请在冰点文库上搜索。
员工工资管理系统
员工工资管理系统
1课程设计的目的
员工工资管理问题,一直是企业内的一个大问题。
工资问题的有效解决将有利于管理者更好的管理企业,也有利于员工安心工作,所以对于一个企事业单位来说有一个好的工资管理系统是必不可少的。
工资管理系统应包括员工的基本工资的浏览查询等功能。
并且有一个方便易操作的界面对管理者来说是很必要的。
本系统基于这些原因以精简的界面和方便易操作的设计思想设计了该小型的员工工资管理系统。
本系统主要解决一般的企事单位内的工资管理问题,建立一个透明、相容、一致、易查的工资管理信息系统。
本系统开发平台为WindowsXP,程序设计设计语言采用VisualC++,数据库采用McrosoftAccess,程序运行平台为Windows2000/XP/7。
本系统主要实现对员工工资的查询、添加、修改、删除和统计功能,通过对各个模块的设计来实现不同的功能。
程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。
员工工资管理系统将达到以下几个目的:
(1)提供更好的服务
员工工资管理系统可以迅速、有效地收集各种信息,加强内部的信息沟通。
各种用户可以直接从系统中获得自己所需的各种信息,并根据相关的信息做出决策和相应的行动方案。
(2)降低成本
员工工资管理系统通过减少员工工资管理工作的操作成本、降低员工流动率以及减少通信费用等达到降低企业运作成本的目的。
2设计方案及论证
2.1系统需求分析
要实现一个软件系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。
下面就对员工工资管理系统的设计进行需求分析。
首先,因为工资是面向特定的某些对象的,所以人员进入系统应该进行身份验证。
管理人员进入工资系统后,可以查看和编辑员工的工资,由于员工有很多,所以系统必须记录员工一些一般信息。
至于工资,一般公司的工资是由很多部分组成,比如,基本工资、绩效、奖金、补助等等,还要扣除保险、水电等一些费用,这些都要让员工自己清楚的看到,所以要一一体现出来。
最后一个工资计算体现出应发工资减掉扣除的工资的过程,最后给出实际发的工资。
2.3系统的技术可行性
(1)技术可行性
系统的性质为管理软件,因而数据库的设计与操纵是系统设计的核心。
我在半年时间学习了数据库的有关知识,具备一定的系统分析与设计能力,基本熟悉数据库的设计与操纵;因而该系统的实现在技术上是可行的。
(2)人员可能性
我有上机实验经验,目前时间充足,可以完成开发任务。
我有深厚的文字功底,可以参与用户文档的制作、内部文档整理、后期测试等任务。
2.4总体设计
程序设计设计语言采用VisualC++,数据库采用McrosoftAccess,设计的员工工资管理系统,用户由系统的登录见面登录系统,输入密码,进入该员工工资管理系统的主界面,系统包括主界面、编辑界面、工资计算三个个部分,用户可根据自己的需求选择员工进行编辑和查询工资,结束后可退出该系统。
[1]根据总体分析,得到系统的功能模块。
如图1所示:
员工工资管理系统
用户登录界面
退出
用户登录
主界面
修改
删除
添加
工资计算
退出
确定
统计结果
图1系统模块图
2.5 数据库设计
(1)实体E-R图
这一设计阶段是在需求分析的基础上,设计出能满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
将现实世界的实体,属性和联系转化为抽象的概括的概念模型。
构成E-R图的基本要素是实体型、属性和联系。
员工信息的实体-属性图,如图2所示。
图2员工工资实体-属性图
选择“文件”→“新建”菜单,在右边任务窗格中单击“空数据库”,弹出一个对话框,指定数据库名员工工资管理系统.mdb。
单击“创建”按钮。
就创建了数据库,,该课程一共需要2张表,分别存放相应的数据信息,其中工资数据表是关键表,用于存放基础数据信息。
它涉及职员信息和工资情况的表;另一张表用来存放登录的用户名和密码用来登录的时候用。
[2]
(2)员工的工资数据库表
员工的工资数据库表的设计界面如图3所示
图3工资数据表
员工工资数据库表的数据结构如表1所示
表1员工工资数据库表
字段名称
字段类型
字段大小
员工编号
字符型
8
部门编号
字符型
8
工龄
数值型
1000
姓名
字符型
10
职称
字符型
12
基础工资
数值型
10
奖金
数值型
10
车补
数值型
10
饭补
数值型
10
其他补助
数值型
10
(3)员工的登录表
员工的登录对话框记录着用户需要的登录的用户名和密码,表结构如图3所示:
表2用户的登录表
字段名称
字段类型
字段大小
Username
字符型
10
Password
数值型
6
员工登录对话框表的设计界面如图4所示
图4员工的登录数据表
(4)ODBC数据源
Windows中的ODBC组件是出现在系统的“控制面板”管理工具中。
双击ODBC图标,进入ODBC数据源管理器。
运行ODBC组件,进入ODBC数据源管理器。
单击“添加”按钮,弹出有一驱动程序列表的“创建新数据源”对话框,在该对话框中选择MicrosoftAccessDriver。
单击“完成”按钮,进入指定驱动程序的安装对话框,数据源名称设为“员工工资管理系统”,单击“选择”按钮将本实验中的数据库。
单击“确定”按钮,刚才创建的用户数据源被添加在“ODBC数据源管理器”的“用户数据源”列表中。
2.6 具体界面设计
打开计算机,启动VisualC++6.0系统创建一个单文档应用程序,在工程名称框中输入Win32应用程序项目名称员工工资管理系统。
(1)登录界面的设计
系统登录表单主要任务是输入密码,其作用是保护系统数据的安全性。
只有合法用户才可以使用本系统。
当系统运行时,首先打开登录窗体,只有有权限的用户才能进入系统。
在【用户名】文本框中输入后按Tab键,程序将自动查询用户名并跳到【密码】文本框中,输入密码后按Enter键即可进入系统,登陆界面的实现如图5示:
[3][4]
图5登陆界面
具体的步骤如下:
①将本项目工作区窗口切换到ResourceView页面插入一个对话框资源,打开属性对话框,设置字体设置,向对话框中添加两个编辑框:
“请输入用户名”(IDC_EDIT_USERNAME)、“请输入密码”(IDC_EDIT_USERPASSWD)为登陆界面对话框资源模板添加控件如表3所示。
表3登陆界面控件属性设置
添加的控件
ID号
标题
静态文本框
IDC_STATIC
用户名:
静态文本框
IDC_STATIC
密码:
编辑框
IDC_EDIT_USERNAME
编辑框
IDC_EDIT_USERPASSWD
按钮
IDC_BUTTON_OK
确定
按钮
IDC_BUTTON_CANCEL
取消
②双击对话框模板或按【Ctrl+W】快捷键为对话框资源建立类向导。
为该对话框类取个名字:
CDlg_login。
③左键双击IDC_EDIT_USERNAME(或者单击后,点击右边的addvariables),为IDC_EDIT1增加一个对应在类中的名字:
m_login_name。
点击’确定’。
同样也对IDC_EDIT_USERPASSWD也取一个名字:
m_login_pwd。
④【Ctrl+W】快捷键,进入类向导界面,为IDC_BUTTON_OK和IDC_BUTTON_CANCEL添加代码voidCdenglu:
:
OnOK()
{
//TODO:
Addextravalidationhere
UpdateData();
m_username.TrimLeft();
if(m_username.IsEmpty())
{
MessageBox("请输入用户名!
");
return;
}
CDatabasedatabase;
database.OpenEx(_T("DSN=工资管理数据库"),CDatabase:
:
noOdbcDialog);
CRecordsetrecset(&database);
CStringmSqlStr;
mSqlStr="SELECT*FROM登录对话框WHEREusername='";
mSqlStr=mSqlStr+m_username;
mSqlStr=mSqlStr+"'ANDpassword='";
mSqlStr=mSqlStr+m_password;/
mSqlStr=mSqlStr+"'";
if(!
recset.Open(CRecordset:
:
forwardOnly,mSqlStr,CRecordset:
:
readOnly))
{
AfxMessageBox("登陆界面表打开失败!
");
return;
}
if(!
recset.IsEOF())
{
//Openallfunctionforuser
AfxMessageBox("登录成功");
}
else
{AfxMessageBox("登录失败!
");
return;
}
}
voidCdenglu:
:
OnCancel()
{//TODO:
Addextracleanuphere
CDialog:
:
OnCancel();
exit(0);
⑤在mainFrm.cpp文件的前面添加:
#include"dlg_login.h"。
在运行过程中,点击OK后,主窗体会显示出来,并没有在用户名以及密码框中输入。
要求输入正确的用户名和密码,主窗体才能显示出来。
增加一个成员函数,点击OK。
(2)系统编辑界面的设计
进入主界面,主要是编辑员工的基本信息,可以对这些基本信息进行添加删除修改等一些操作,具体的设计界面如图6所示
图6用户主界面
(3)员工工资管理系统表单对话框资源模板添加部分控件如表4所示。
表4表单对话框控件及属性
添加的控件
ID号
标题
编辑框
IDC_QUESTION
编辑框
IDC_ANSWER
编辑框
IDC_REANAME
编辑框
IDC_IDNUM
编辑框
IDC_AGE
编辑框
IDC_PHINE
编辑框
IDC_QUESTION
静态文本框
IDC_STATIC
年份
静态文本框
IDC_STATIC
月份
静态文本框
IDC_STATIC
员工编号
静态文本框
IDC_STATIC
员工姓名
静态文本框
IDC_STATIC
员工部门
静态文本框
IDC_STATIC
基本工资
静态文本框
IDC_STATIC
业绩工资
静态文本框
IDC_STATIC
津贴
静态文本框
IDC_STATIC
各种补助
静态文本框
IDC_STATIC
水电费
组框
IDC_STATIC
编辑模块
组框
IDC_STATIC
查询模块
按钮
IDC_BUTTON
添加
按钮
IDC_BUTTON
删除
按钮
IDC_BUTTON
修改
按钮
IDC_BUTTON
查询
①双击对话框模板或按【Ctrl+W】快捷键为对话框资源建立类向导。
在弹出MFCClassWizard对话框,切换到MemberVaribles选项卡,在Classname框中为上述控件添加相关联的数据成员变量。
②具体代码如下
//CMyViewdatabasesupport
CRecordset*CMyView:
:
OnGetRecordset()
{
returnm_pSet;
}
//CMyViewmessagehandlers
BOOLCMyView:
:
OnCommand(WPARAMwParam,LPARAMlParam)
{
//TODO:
Addyourspecializedcodehereand/orcallthebaseclass
CStringstr;
CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CStatusBar*pStatus=&pFrame->m_wndStatusBar;
if(pStatus)
{
CRecordsetStatusrStatus;
m_pSet->GetStatus(rStatus);
str.Format("当前记录:
%d/总记录:
%d",1+rStatus.m_lCurrentRecord,m_pSet->GetRecordCount());
pStatus->SetPaneText(1,str);
}
returnCRecordView:
:
OnCommand(wParam,lParam);
}voidCMyView:
:
OnChaxunzgbh()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
m_ZGBH.TrimLeft();
m_ZGBH.TrimRight();
if(m_ZGBH.IsEmpty())
{
MessageBox("要查询的员工编号不能为空");
return;
}
m_pSet->Close();
m_pSet->m_strFilter.Format("ZGBH='%S'",m_ZGBH);//查询字符串m_ZGBH
m_pSet->m_strSort="YF";
m_pSet->Open();
if(!
m_pSet->IsEOF())
UpdateData(FALSE);
else
MessageBox("没有查到你要找的纪录!
");
m_pSet->Close();
}
voidCMyView:
:
OnButtonAdd()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CEditDlgdlg;
if(dlg.DoModal()==IDOK)
{
m_pSet->AddNew();/
m_pSet->m_NF=dlg.m_intNF;
m_pSet->m_YF=dlg.m_intYF;
m_pSet->m_ZGBH=dlg.m_strZGBH;
m_pSet->m_ZGXM=dlg.m_strZGXM;
m_pSet->m_ZGBM=dlg.m_strZGBM;
m_pSet->m_JBGZ=dlg.m_longJBGZ;
m_pSet->m_YJGZ=dlg.m_longYJGZ;
m_pSet->m_JJ=dlg.m_longJJ;
m_pSet->m_JT=dlg.m_longJT;
m_pSet->m_GZBZ=dlg.m_longGZBZ;
m_pSet->m_SDF=dlg.m_longSDF;
m_pSet->m_FZ=dlg.m_longFZ;
m_pSet->m_HF=dlg.m_longHF;
m_pSet->m_CX=dlg.m_longCX;
m_pSet->m_BX=dlg.m_longBX;
m_pSet->Update();
m_pSet->Requery();
}
}
voidCMyView:
:
OnButtonDelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CRecordsetStatusstatus;
m_pSet->GetStatus(status);
m_pSet->Delete();
if(status.m_lCurrentRecord==0)
m_pSet->MoveNext();
else
m_pSet->MoveFirst();
UpdateData(FALSE);
}
voidCMyView:
:
OnButtonEdit()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CEditDlgdlg;
dlg.m_intNF=m_pSet->m_NF;
dlg.m_intYF=m_pSet->m_YF;
dlg.m_strZGBH=m_pSet->m_ZGBH;
dlg.m_strZGXM=m_pSet->m_ZGXM;
dlg.m_strZGBM=m_pSet->m_ZGBM;
dlg.m_longJBGZ=m_pSet->m_JBGZ;
dlg.m_longYJGZ=m_pSet->m_YJGZ;
dlg.m_longJJ=m_pSet->m_JJ;
dlg.m_longJT=m_pSet->m_JT;
dlg.m_longGZBZ=m_pSet->m_GZBZ;
dlg.m_longSDF=m_pSet->m_SDF;
dlg.m_longFZ=m_pSet->m_FZ;
dlg.m_longHF=m_pSet->m_HF;
dlg.m_longCX=m_pSet->m_CX;
dlg.m_longBX=m_pSet->m_BX;
//IDOK
if(dlg.DoModal()==IDOK)
{m_pSet->Edit();/
m_pSet->m_NF=dlg.m_intNF;
m_pSet->m_YF=dlg.m_intYF;
m_pSet->m_ZGBH=dlg.m_strZGBH;
m_pSet->m_ZGXM=dlg.m_strZGXM;
m_pSet->m_ZGBM=dlg.m_strZGBM;
m_pSet->m_JBGZ=dlg.m_longJBGZ;
m_pSet->m_YJGZ=dlg.m_longYJGZ;
m_pSet->m_JJ=dlg.m_longJJ;
m_pSet->m_JT=dlg.m_longJT;
m_pSet->m_GZBZ=dlg.m_longGZBZ;
m_pSet->m_SDF=dlg.m_longSDF;
m_pSet->m_FZ=dlg.m_longFZ;
m_pSet->m_HF=dlg.m_longHF;
m_pSet->m_CX=dlg.m_longCX;
m_pSet->m_BX=dlg.m_longBX;
m_pSet->Update();
//m_pSet->Requery();
UpdateData(FALSE);
}
}
voidCEditDlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
UpdateData();
m_strZGBH.TrimLeft();
m_strZGXM.TrimLeft();
m_strZGBM.TrimLeft();
if(m_strZGBH.IsEmpty())
MessageBox("员工编号不能为空!
");
else
if(m_strZGXM.IsEmpty())
MessageBox("员工姓名不能为空!
");
else
if(m_strZGBM.IsEmpty())
MessageBox("员工部门不能为空!
");
else
CDialog:
:
OnOK();
}
(4)系统工资统计界面的设计
员工的最后实际发的工资是经过计算后的,这个界面就是体现出这个计算的过程,应发工资减掉各种扣钱,得到最后的工资,设计界面如图7所示
图7用户主界面
①为IDC_GUOJI对话框资源模板添加控件如表5所示
表5单对话框控件及属性
添加的控件
ID号
标题
静态文本框
IDC_STATIC
应发合计
静态文本框
IDC_STATIC
扣除合计
静态文本框
IDC_STATIC
实发工资
编辑框
IDC_IDUNM
编辑框
IDC_GUOJI
编辑框
IDC_CMDE
按钮
IDC_BUTTON_OK
确定
按钮
IDC_BUTTON_CANCEL
取消
②按Ctrl+W键,弹出MFCClassWizard对话框,切换到MemberVaribles选项卡,在Classname框中选择IDC_GUOJI,为上述控件添加相关联的数据成员变量。
③代码如下:
voidCMyView:
:
OnButtonTongji()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CTongjidlg;
dlg.m_YFHJ=m_pSet->m_JBGZ+m_pSet->m_YJGZ+m_pSet->m_JJ+m_pSet->m_JT+m_pSet->m_GZBZ;
dlg.m_KCHJ=m_pSet->m_SDF+m_pSet->m_FZ+m_pSet->m_HF+m_pSet->m_BX+m_pSet->m_CX;
dlg.m_SFGZ=dlg.m_YFHJ-dlg.m_KCHJ;
dlg.DoModal();
UpdateData(FALSE);/}
3设计结果与分析
3.1 系统登录界面设计
进入程序后,首先出现的是【员工登陆】对话框,在【用户名】文本框中输入后按Tab键,程序将自动查询用户名并跳到【密码】文本框中,输入密码后按Enter键即可进入系统,执行denglu.cpp文件,调用CEditDlg:
:
OnOK()函数。
登录对话框如图8所示。
图8员工登录对话框
3.2 系统主界面设计
登录成功后将显示主界面主界面如图9所示,在此界面可以选择各种按钮进行不同的操作。
比如点击【添加】按钮,系统将执行EditDlg.cpp文件,调用voidCMyView:
:
OnButtonAdd()函数。
然后将进出编辑对话框,对数据进行添加操作。
点击【查询】按钮,调用voidCMyView:
:
OnChaxunzgbh()函数。
系统将显示出该员工号的工资。
点击【工资统计结果】按钮,调用CMyView:
:
OnButtonTongji()函数,系统将显示该员工号的工资。
[3]
图9主界面
3.3 编辑功能的实现
(1)增加功能
单击“增加“按钮,进入增加记录功能窗体,如图10所示。
在上边的编辑框中,可以很清楚看到整个表中的记录和主视图一致,在编辑框中输入完成了记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 员工 工资管理 系统