工资管理系统设计与开发本科学位论文.docx
《工资管理系统设计与开发本科学位论文.docx》由会员分享,可在线阅读,更多相关《工资管理系统设计与开发本科学位论文.docx(29页珍藏版)》请在冰豆网上搜索。
![工资管理系统设计与开发本科学位论文.docx](https://file1.bdocx.com/fileroot1/2023-1/6/a573887a-20b6-4a1f-a7f0-52d69bda0e94/a573887a-20b6-4a1f-a7f0-52d69bda0e941.gif)
工资管理系统设计与开发本科学位论文
目录
工资管理系统
目录
摘要
0引言
1系统需求分析
2总体设计
1项目规划
2系统功能结构
3设计目标
3系统设计
1开发及运行环境
2数据库设计
4主要功能模块设计
1建立工程框架
2封装数据库
3主窗口设计
4登录模块设计
5员工录入模块设计
6总体查询模块设计
7员工工资添加模块设计
8用户管理模块设计
附录A参考文献
附录B数据表
摘要
【摘要】
随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的管理工具,不断改善企业的服务质量,提高工作效率。
无论是行政职能,还是生产运作的管理要求的不断提高,在很大程度上使企业不得不改变传统的经营管理方式以适应快速发展的社会主义市场经济,改变企业管理方式、方法已经成为企业发展的先决条件。
建设一个科学高效的信息管理系统是解决这一问题的必由之路。
对企业内部的财务运用现代化技术进行管理,是提高工作效率的有效手段。
工资管理作为企业内部财务管理的一个重要方面,也逐步被企业管理者所重视,由于企业的规模的不断扩,大企业职工人数的不断增多,使工资发放成为企业管理中的一个重课题;再加上每一位职工的具体实际情况相同,规章章制度的不断完善,增大了个人工资发放难度;每个人每月的工资都要通过工资制度的审核,这大大增加了管理人员的工作量,通过计算机管理系统对员工工资进行全面的统计与管理,全面解决了工资管理过程中所遇到的各种问题,并且克服了传统管理方式中的易出错等问题。
工资管理系统成为企业现代化管理中的首选管理工具。
【关键词】工资管理系统
0引言
传统的工资管理方法,都是通过人工统计和计算的管理方式进行的。
这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了财务管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对每一位职工进行管理,严格按照工资条款及发放制度计算并发展员工工资。
企业工资管理系统可以完成日常工资的管理,如查询、修改、增加、删除以及存储等操作,迅速准确地完成各种工资数据的的统计和汇总工作,快速打印出工资报表等,大大提高了企业的管理效率。
1系统需求分析
根据市场的需求,要求系统具有以下功能:
❑对单位人员的变动进行处理。
❑对职工的工资进行计算、修改。
❑查询统计功能。
❑报表打印功能。
2总体设计
2.1项目规划
工资管理系统是由基本信息管理、工资查询、工资管理、系统管理和帮助等几个功能模块组成,规划系统功能模块如下:
❑基本信息管理模块
基本信息管理模块主要包括员工录入、员工删除2部分。
❑工资查询模块
工资查询模块主要包括基本工资查询、浮动工资查询、加班/休假查询、总体查询4个部分。
❑工资管理模块
工资管理模块主要包括工资发放管理、基本工资管理、浮动工资管理3个部分。
❑系统管理模块
系统管理模块主要包括用户管理、修改密码、退出系统3个部分。
❑帮助模块
帮助模块主要包括关于1个部分。
2.2系统功能结构
工资系统的功能结构如图1所示。
图1系统功能图
2.3设计目标
本系统是根据中小企业的实际需求而开发的,完全能够实现企业对客户的自动化管理,通过本系统可以达到以下目标:
❑系统运行稳定,安全可靠。
❑界面设计美观,人机交互界面友好。
❑信息查询灵活、方便、快捷、准确,数据存储安全可靠。
❑满足键盘和鼠标的双重操作,完全支持回车键。
❑采用多种方式查询数据。
❑操作员可以随时修改自己的口令。
❑对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
❑数据保密性强,为每个用户设置相应的权限级别。
3系统设计
3.1开发及运行环境
1.硬件要求
CPU:
300MHz以上的处理器。
内存:
128MB,推荐256MB。
硬盘:
150MB以上剩余空间。
显示像素:
最低800*600,最佳效果1024*768。
2.软件要求
操作系统:
Windows2000/NT/XP/CE。
数据库:
SQLServer2000。
3.2数据库设计
1.数据库概要说明
数据库GZFFXT中包括员工基础信息表、员工基本工资表、员工浮动工资表、员工加班/休假表、工资发放明细表、用户表6个数据表。
图2所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。
可以清晰地反应数据库信息。
图2数据库概要说明
2.主要数据表的结构
数据库中的数据表请参见附录B。
4主要功能模块设计
4.1建立工程框架
在VisualC++中建立文档管理系统的基本框架,步骤如下:
(1)单击菜单“File-->New”命令,打开“New”对话框,单击“Projects”选项卡,选择“MFCAppWizard(exe)”,输入工程名,并设置路径,如图3所示。
图3“New”对话框
(2)单击“OK”按钮,“MFCAppWizard-Step1”对话框已经打开,如图4所示,选项“Dialogbase”,接着单击“Next”按钮。
图4“MFCAppWizard-Step1”对话框
(3)在弹出的“MFCAppWizard-Step2of4”对话框中,输入对话框标题,如图5所示。
图5“MFCAppWizard-Step2of4”对话框
(4)在接下来的对话框中保持默认的选项。
设置好的属性如图6所示,单击“OK”按钮后,就完成了新建工程。
图6设计好的工程属性
4
4.2主窗口设计
1.菜单资源设计
主窗口菜单设置的主要步骤如下:
(1)单击“ResourceView”选项卡,右键单击“GZGLXTResources”选项,选择“Insert”菜单项,打开“InsertResource”窗口,如图7所示。
图7“InsertResource”窗口
(2)选择“Menu”文件夹,单击“New”按钮,在GZGLXTResources目录下新增一个Menu目录项,菜单ID为IDR_MENU1。
双击此菜单,对此菜单项的属性进行设计。
如图8所示。
图8设计菜单属性图
2.客户区设计
(1)打开对话框IDD_GZGLXT_DIALOG属性窗口,在对话框中添加1个Picture控件,用来存放图片。
在Menu组合框中选择IDR_MENU1。
如图9所示。
图9系统主界面
(2)预先在下边留出状态栏,声明CTime、CstatusBarCtrl类对象实体代码如下。
CTimet;
CStatusBarCtrlm_StatusBar;
引用的外部变量
externCCzyxxbffxxb;
(3)在OnInitDialog成员函数中添加状态栏。
//TODO:
Addextrainitializationhere
t=CTime:
:
GetCurrentTime();
m_StatusBar.EnableAutomation();
m_StatusBar.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,0);//ID_STATUSBAR);
intwidth[]={200,370,500};
m_StatusBar.SetParts(4,&width[0]);
m_StatusBar.SetText("吉林省明日科技有限公司",0,0);
CStringStatusText;
StatusText.Format("当前用户:
%s",ffxxb.GetCzyName());
m_StatusBar.SetText(StatusText,0,1);
CStringstrdate;
strdate.Format("当前时间:
%s",t.Format("%y-%m-%d"));
m_StatusBar.SetText(strdate,0,2);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
(4)打开ClassWizard窗口,为菜单项ID_EXIT添加代码。
程序调用OnOK()函数关闭对话框,退出系统。
voidCGZGLXTDlg:
:
OnExit()
{
//TODO:
Addyourcommandhandlercodehere
OnOK();
}
4.3登录模块设计
1.实现目标
登录模块功能是完成用户登录本系统的操作,用户登录对话框的设计如图10所示
图10登录对话框
2.设计步骤
(1)向项目中添加一个新Dialog资源,资源ID为IDD_LOGIN。
在IDD_LOGIN对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“用户登录”。
(2)从Controls面板上向Dialog资源中添加2个Static、1个Picture、2个Edit,更改资源的属性,并为资源设置相对应的变量,如表1所示。
表1资源设置
ID
Properties
MemberVariables
Type
Member
IDC_EDIT1
默认
CString
m_name
IDC_EDIT2
PassWordTRUE
CString
m_pwd
IDOK
Caption登录
IDCANCEL
Caption退出
IDC_STATIC
TypeBitmap
3.代码分析
(1)引用的外部变量。
externCCzyxxbffxxb;
(2)响应“登录”按钮的代码。
voidCLogin:
:
OnOK()
{
//TODO:
Addextravalidationhere
//将对话框中编辑框的数据读取到成员变量中
UpdateData(true);
if(m_name=="")
{
MessageBox("请输入用户名");
return;
}
//如果读取数据和用户输入不同,则返回
if(ffxxb.HaveCzy(m_name,m_pwd)!
=1)
{
MessageBox("用户名或密码错误!
");
return;
}
ffxxb.SetCzyName(m_name);
jb="1";
//判断当前用户级别
if(ffxxb.HaveCzyjb(m_name,m_pwd,jb)==1)
{
ffxxb.SetCzyjb(jb);
}
CDialog:
:
OnOK();
}
下面在主对话框中添加代码,使对话框在启动时首先打开登录对话框。
在主窗口选择OnInitDialog函数,该函数将打开登录对话框,如果用户不是通过单击“登录”按钮关闭对话框,则调用OnOK函数关闭主对话框,具体代码如下:
BOOLCWordGLXTDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
......
//TODO:
Addextrainitializationhere
CLogingin;
if(gin.DoModal()!
=IDOK)
OnOK();
......
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
4.4员工录入模块设计
1.实现目标
添加员工信息,员工录入对话框的设计如图11所示
图11员工录入对话框
2.设计步骤
(1)向项目中添加一个新Dialog资源,资源ID为IDD_YGTJK。
在IDD_YGTJK对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“员工录入”。
(2)从Controls面板上向Dialog资源中添加4个Static、2个Combo、2个Edit,更改资源的属性,并为资源设置相对应的变量,如表2所示。
表2资源设置
ID
Properties
MemberVariables
Type
Member
IDC_EDIT1
默认
CString
m_id
IDC_EDIT2
默认
CString
m_name
IDC_COMBO1
TypeBitmap
CComboBox
m_sex
IDC_COMBO2
Caption退出
CComboBox
M_whcd
IDOK
Caption添加
IDCANCEL
Caption退出
3.代码分析
(1)打开ClassWizard窗口,添加在OnInitDialog成员函数,向OnInitDialog添加代码如下。
BOOLCYgjctjdlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
SetIcon(m_hIcon,TRUE);
m_sex.AddString("男");
m_sex.AddString("女");
m_whcd.InsertString(0,"专科");
m_whcd.InsertString(1,"本科");
m_whcd.InsertString(2,"研究生");
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
(2)当用户单击“添加“按钮时,实现添加员工功能,其响应代码如下
voidCYgjctjdlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
CYgjcxxbxxb;
UpdateData(true);
if(m_id=="")
{
MessageBox("编号不能为空");
return;
}
if(m_name=="")
{
MessageBox("姓名不能为空");
return;
}
if(xxb.HaveId(m_id)==1)
{
MessageBox("员工编号已存在");
return;
}
xxb.SetYGid(m_id);
xxb.SetYGxm(m_name);
CStringsex,whcd;
m_sex.GetWindowText(sex);
if(sex=="")
{
MessageBox("性别不能为空");
return;
}
//从组合框中读取文本
m_sex.GetLBText(m_sex.GetCurSel(),strsex);
xxb.SetSex(strsex);
m_whcd.GetWindowText(whcd);
if(whcd=="")
{
MessageBox("文化程度不能为空");
return;
}
m_whcd.GetLBText(m_whcd.GetCurSel(),strwhcd);
xxb.SetWHcd(strwhcd);
xxb.sql_insert();
//向浮动工资表添加编号、姓名
CYgfdgzxmbxmb;
xmb.SetYGid(m_id);
xmb.SetYGxm(m_name);
xmb.sql_insert();
//向基本工资表添加编号、姓名
CYgjbgzbgzb;
gzb.SetYGid(m_id);
gzb.SetYGxm(m_name);
gzb.sql_insert();
//向加班休假表添加编号、姓名
CYgjbsjbsjb;
sjb.SetYGid(m_id);
sjb.SetYGxm(m_name);
sjb.sql_insert();
CDialog:
:
OnOK();
}
4.5员工工资添加模块设计
1.实现目标
添加员工实际发放的工资情况,员工工资添加对话框设计如图12所示。
图12员工工资添加对话框
2.设计步骤
(1)向项目中添加一个新Dialog资源,资源ID为IDD_YGGONGZITJ。
在IDD_YGGONGZITJ对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“员工工资添加”。
(2)从Controls面板上向Dialog资源中添加19个Static、17个Edit、2个Button控件,更改资源的属性,并为资源设置相对应的变量,如表3所示。
表3资源设置
ID
Properties
MemberVariables
Type
Member
IDC_EDIT1
默认
CString
m_id
IDC_EDIT2
默认
CString
m_name
IDC_EDIT3
默认
int
m_jbgz
IDC_EDIT4
默认
int
m_zwgz
IDC_EDIT5
默认
int
m_glgz
IDC_EDIT6
默认
int
m_zfbz
IDC_EDIT7
默认
int
m_shbz
IDC_EDIT8
默认
int
m_bxf
IDC_EDIT9
默认
int
m_jiabts
IDC_EDIT10
Read-onlyTRUE
CEdit
m_jiabgz
IDC_EDIT11
默认
int
m_sjts
IDC_EDIT12
Read-onlyTRUE
CEdit
m_sjgz
IDC_EDIT13
默认
int
m_ylbxj
IDC_EDIT14
默认
int
m_grsds
IDC_EDIT15
默认
int
m_sfgz
IDC_EDIT16
Read-onlyTRUE
CEdit
m_yfgz
IDC_EDIT17
Read-onlyTRUE
CEdit
m_syye
IDOK
Caption添加
IDCANCEL
Caption退出
IDC_BUTTONsyye
Caption上月余额
IDC_BUTTONyfgz
Caption应发工资
3.代码分析
(1)双击“IDC_EDIT9”控件,自动生成OnChangeEdit9函数,实现用户添加加班天数时,加班工资自动计算并显示,具体代码如下:
voidCYggztjdlg:
:
OnChangeEdit9()
{
//TODO:
IfthisisaRICHEDITcontrol,thecontrolwillnot
//sendthisnotificationunlessyouoverridetheCDialog:
:
OnInitDialog()
//functionandcallCRichEditCtrl().SetEventMask()
//withtheENM_CHANGEflagORedintothemask.
UpdateData(true);
CStringstr;
str.Format("%d",m_jiabts*40);
m_jiabgz.SetWindowText(str);
UpdateData(false);
//TODO:
Addyourcontrolnotificationhandlercodehere
}
(2)双击“上月余额”按钮,系统自动添加消息响应函数OnBUTTONsyye,具体代码如下。
voidCYggztjdlg:
:
OnBUTTONsyye()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(true);
if(m_id=="")
{
MessageBox("请先填写员工编号");
return;
}
ADOConnm_AdoConn;
m_AdoConn.OnInitADOConn();
t=CTime:
:
GetCurrentTime();
intm,y;
CStringstr;
m=t.GetMonth()-1;
y=t.GetYear();
if(m==0)
{
m=12;
y=y-1;
}
CGzffmxbmxb;
if(mxb.Havesyye(m_id,y,m)==1)
{
CStringsql;
sql.Format("select*fromgzffmxbwhereygid='%s'andyear(sjian)='%i'andmonth(sjian)='%i'",m_id,y,m);
m_AdoConn.GetRecordSet((_bstr_t)sql);
str=(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("Yu_E");
m_syye.SetWindowText(str);
}
else
{
m_syye.SetWindowText("0");
}
UpdateData(false);
m_AdoConn.ExitConnect();
}
在头文件中添加下列代码。
CTimet;
(3)双击“应发工资”按钮,系统自动添加消息响应函数OnBUTTONyfgz,具体代码如下:
voidCYggztjdlg:
:
OnBUTTONyfgz()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(true);
CStringsyye;
m_syye.GetWindowText(syye);
if(syye=="")
{
MessageBox("请先添加上月余额");
return;
}
intyfgz;
yfgz=atoi(syye)+m_jbgz+m_glgz+m_zwgz