毕业设计论文基于VC++的工资管理系统的设计与实现.docx
《毕业设计论文基于VC++的工资管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于VC++的工资管理系统的设计与实现.docx(89页珍藏版)》请在冰豆网上搜索。
![毕业设计论文基于VC++的工资管理系统的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-4/17/aa981fd7-cd04-440d-9d86-79114346ec44/aa981fd7-cd04-440d-9d86-79114346ec441.gif)
毕业设计论文基于VC++的工资管理系统的设计与实现
基于VC++的工资管理系统的设计与实现
摘要
随着计算机技术的飞速发展,计算机在企业管理中应用越来越普及。
利用计算机实现企业人事工资的管理势在必行。
本系统是结合公司实际的财务制度,经过实际的需求分析,采用功能强大的VisualC++6.0做为开发工具而开发出来的单机版工资管理系统。
工资管理系统是针对企业的工资管理业务进行计算机处理而开发的应用软件。
整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成人事、工资管理的全过程,企业的工资管理是公司管理的一个重要内容。
该系统由基本信息管理、工资管理、工资查询、系统管理、帮助等子模块组成,功能基本涵盖普通企业的工资管理业务范围。
企业应用本系统后,可以有效的提高工资管理水平。
本文从需求分析、可行性分析、总体设计、数据库设计、功能模块编程实现等方面阐述了本系统的设计过程。
为便于说明,文中绘制了程序结构框图、部分界面图和数据表。
最后附有主要的源程序代码清单。
关键词:
数据库VisualC++6.0工资管理
Thedesignapproachandimplementationofthewagesmanagementsystembasedonvc++
Abstract
Withthedevelopmentofthecomputertechnologyandcomputersareuniversallyusedinbusinessenterprisemanagemoreandmore,soitisimperativetoimplementTheManagementofEnterprisePersonnelWagesusingcomputers.Actualcompanyfinanceiscombinativeinthissystem.IhavealreadymadedemandanalysisandadoptedVisualC++6.0whichismightyinfunctionasthetooltodevelopthemanagementofenterprisepersonnelwagessystemthatisthesinglemachineversion.
SalaryManagementSystemisspeciallydesignedfortheapplicationofdevicemanagingofenterprise.Thewholesystemmustmatchtherequestwhichareoperationsimple,theinterfaceamity,vivid,practicalandsafeandcompletethemanagementofpersonalandwagesprocess.TheManagementofEnterprisePersonnelWageisanimportantcontentincompanymanage.Thesystemisconsistedwithsixsubsystems.Theyaresystemmaintenance,querying,formingandlisting.Thesefunctionscanmeetthedemandsofmostofthebusiness.Iftheenterpriseusesthissystem,themanagementofsalarycanrapidlybeimproved.Inthispaper,adescriptionisgivenonthedesignprocessofthissystemfromdemandsanalyzing,feasibilityanalysis,framedesign,databasedesign,programmingmodule.Programstructurediagram,somemapinterfacesanddatasheetsarepresentedforthepurposeofdescription.Inaddition,programsourcecodeislistedintheendofthearticle.
Keywords:
Database;VisualC++6.0;Salarymanagement
1引言
随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的管理工具,不断改善企业的服务质量,提高工作效率。
无论是行政职能,还是生产运作的管理要求的不断提高,在很大程度上使企业不得不改变传统的经营管理方式以适应快速发展的社会主义市场经济体制,改变企业管理方式和方法已经成为企业发展的先决条件,建立一个科学高效的信息管理系统是解决这一问题的好方法。
运用现代化技术对企业内部的财务进行管理,是提高企业工作效率的有效手段。
工资管理作为企业内部财务管理的一个重要方面,逐步被企业管理者所重视。
通过计算机管理系统对员工工资进行全面的统计与管理,全面解决了工资管理过程中所遇到的各种问题,并且克服了传统管理方式中的易出错等问题。
工资管理系统成为企业现代化管理中的首选管理工具。
2系统需求分析
员工工资管理系统是保证企业对员工工资的管理可以有秩序的进行的管理软件。
员工工资管理系统是用于企业对员工工资进行的集中分发管理,开发的总体任务是实现工资管理的系统化、规范化和自动化,从而达到提高工资管理效率的目的[1]。
工资管理系统主要根据公司的要求进行设计,并了解了公司工资的工作流程,该系统是由基本信息管理、工资查询、工资管理、系统管理和帮助等几个功能模块组成,规划系统功能模块如下:
(1)基本信息管理模块
基本信息管理模块主要包括员工录入、员工删除两个部分。
(2)工资查询模块
工资查询模块主要包括基本工资查询、浮动工资查询、加班/休假查询、总体查询四个部分。
(3)工资管理模块
工资管理模块主要包括工资发放管理、基本工资管理、浮动工资管理三个部分。
(4)系统管理模块
系统管理模块主要包括用户管理、修改密码、退出系统三个部分。
(5)帮助模块
帮助模块主要包括关于一个部分。
3可行性分析
传统的工资管理方法,都是通过人工统计和计算的管理方式进行的。
这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了财务管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对每一位职工进行管理,严格按照工资条款及发放制度计算并发放员工工资。
企业工资管理系统可以完成日常工资的管理,如查询、修改、增加、删除以及存储等操作,迅速准确地完成各种工资数据的统计和汇总工作,快速打印出工资报表等,大大提高了企业工资管理效率[2]。
4总体设计
系统总体设计是把需求转化为软件系统的最重要的环节。
系统总体设计的优劣在根本上决定了软件系统的质量[3]。
4.1系统功能结构
工资系统的功能结构如图1所示。
图1系统功能图
4.2设计目标
本系统是根据中小企业的实际需求而开发的,完全能够实现企业对客户的自动化管理,通过本系统可以达到以下目标:
(1)系统运行稳定,安全可靠。
(2)界面设计美观,人机交互界面友好。
(3)信息查询灵活、方便、快捷、准确,数据存储安全可靠。
(4)采用多种方式查询数据。
(5)操作员可以随时修改自己的口令。
(6)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
5系统设计
5.1使用的相关技术介绍
VisualC++是MicrosoftVisualStudio开发组件中最为强大的编程工具。
一方面,它是当今最为流行的系统开发语言,另一方面,它能够和Microsoft的操作系统无缝结合,开发出高性能的Windows应用程序[3]。
在数据库领域,VisualC++的表现也异常抢眼,它提供了多种数据库开发技术,支持几乎所有的数据库系统,如SQLServer,DB2,Sybase,FoxPro,Access等;而且还提供了良好的开发环境和丰富的文档支持。
总之,利用VisualC++可以开发出功能强大、性能优良和界面友好的数据库应用程序,这也正是许多公司长期以来采用VisualC++开发数据库系统的重要原因[3]。
VisualC++提供了可视化的编程环境,不仅可以编写面向用户的应用程序,而且还适用于编写直接对系统或设备操作的底层程序[4]。
SQLServer2000在SQLServer7.0版的基础上扩展了数据库管理系统的性能、可靠性、质量和易用性。
由于增加了这几种新的功能,因此它成为大规模联机事务处理(OLTP)、数据仓库和电子商务应用程序的优秀数据库平台[5]。
SQLServer2000是基于SQL客户/服务器(C/S)模式的数据库系统,其图形化界面使数据库管理更加简洁、灵活,同时又具有丰富的编程接口,为用户从事程序开发提供了更多的方便。
使用SQLServer2000可以获得非凡的可伸缩性和可靠性。
通过向上伸缩和向外扩展的能力,SQLServer满足了苛刻的电子商务和企业应用程序要求。
ADO是ActiveXDataObject(ActiveX数据对象)的缩写,是目前最流行的客户端数据库技术。
ADO是建立在OLEDB底层技术之上的高级编程接口[6]。
5.2数据库设计
5.2.1数据库概要说明
在使用数据库之前,先创建数据库[7]。
数据表是包含数据库中所有数据的数据库对象,表定义为列的集合[8]。
数据库GZFFXT中包括员工基础信息表、员工基本工资表、员工浮动工资表、员工加班/休假表、工资发放明细表、用户表6个数据表。
图2所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。
可以清晰地反映数据库信息。
图2数据库概要说明
5.2.2部分数据表的结构
表1Ygjcxxb(员工基础信息表)
字段名
数据类型
长度
描述
YGid
YGxm
Sex
Whcd
varchar
varchar
char
varchar
30
30
2
20
员工编号
员工姓名
性别
文化程度
表2Ygjbgzb(员工基本工资表)
字段名
数据类型
长度
描述
YGid
YGxm
JBgz
ZWgz
GLgz
YLbxj
varchar
varchar
money
money
money
money
30
30
8
8
8
8
员工编号
员工姓名
基本工资
职务工资
工龄工资
养老保险金
表3Ygfdgzxmb(员工浮动工资表)
字段名
数据类型
长度
描述
YGid
YGxm
GRsds
ZFbz
BXf
SHbz
varchar
varchar
money
money
money
money
30
30
8
8
8
8
员工编号
员工姓名
个人所得税
住房补助
保险费
生活补助
表4Ygjbsjb(员工加班休假表)
字段名
数据类型
长度
描述
YGid
YGxm
Jiabts
Jiabgz
SJts
Sjkk
varchar
varchar
int
money
int
money
30
30
4
8
4
8
员工编号
员工姓名
加班天数
加班工资
休假天数
休假扣款
5.2.3部分E-R模型的设计
图3系统部分实体—属性图
图4系统部分实体—属性图
图5系统部分实体—属性图
图6系统部分实体—属性图
图7系统部分实体—属性图
6主要功能模块设计
6.1建立工程框架
直接利用MFCAppWizard应用程序向导创建一个基于对话框的应用程序[9],对话框是Windows应用程序中的一种常用资源,其主要功能是输出信息和接收用户的输入数据[10]。
在VisualC++中建立工资管理系统的基本框架,步骤如下:
单击菜单“File-->New”命令,打开“New”对话框,单击“Projects”选项卡,选择“MFCAppWizard(exe)”,输入工程名,并设置路径,如图8所示。
图8“New”对话框
单击“OK”按钮,“MFCAppWizard-Step1”对话框已经打开,如图9所示,选项“Dialogbased”,接着单击“Next”按钮。
图9“MFCAppWizard-Step1”对话框
在弹出的“MFCAppWizard-Step2of4”对话框中,输入对话框标题,如图10所示。
图10“MFCAppWizard-Step2of4”对话框
在接下来的对话框中保持默认的选项。
设置好的属性如图11所示,单击“OK”按钮后,就完成了新建工程。
图11设计好的工程属性
6.2主窗口设计
6.2.1菜单资源设计
在程序设计中,我们所要做的很大一部分工作是对程序的输入进行响应,而我们最常用的选择方式就是用菜单进行选择。
在VisualC++6.0中,菜单功能的实现(比如增减菜单和菜单项,定义菜单的ID,菜单的布局以及菜单的初始化,提示信息等)都是通过资源文件和相关函数来实现的[11]。
主窗口菜单设置的主要步骤如下:
(1)单击“ResourceView”选项卡,右键单击“GZGLXTResources”选项,选择“Insert”菜单项,打开“InsertResource”窗口,如图12所示。
图12“InsertResource”窗口
(2)选择“Menu”文件夹,单击“New”按钮,在GZGLXTResources目录下新增一个Menu目录项,菜单ID为IDR_MENU1。
双击此菜单,对此菜单项的属性进行设计。
6.2.2客户区设计
(1)打开对话框IDD_GZGLXT_DIALOG属性窗口,在对话框中添加1个Picture控件,用来存放图片。
在Menu组合框中选择IDR_MENU1。
如图13所示。
图13系统主界面
(2)打开ClassWizard窗口,为菜单项ID_EXIT添加代码。
程序调用OnOK()函数关闭对话框,退出系统。
voidCGZGLXTDlg:
:
OnExit()
{
//TODO:
Addyourcommandhandlercodehere
OnOK();
}
6.3登录模块设计
6.3.1实现目标
登录模块功能是完成用户登录本系统的操作[2],用户登录对话框的设计如图14所示。
图14登录对话框
6.3.2设计步骤
(1)向项目中添加一个新Dialog资源,资源ID为IDD_LOGIN。
在IDD_LOGIN对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“登录框”。
(2)从Controls面板上向Dialog资源中添加2个Static、1个Picture、2个Edit,更改资源的属性,并为资源设置相对应的变量,如表5所示。
表5资源设置
ID
Properties
TypeMember
IDC_EDIT1
IDC_EDIT2
IDOK
IDCANCEL
IDC_STATIC
默认
PassWordTRUE
Caption登录
Caption退出
TypeBitmap
CString
Cstring
m_name
m_pwd
6.3.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
}
6.4员工录入模块设计
6.4.1实现目标
添加员工信息,员工录入对话框的设计如图15所示。
图15员工录入对话框
6.4.2设计步骤
(1)向项目中添加一个新Dialog资源,资源ID为IDD_YGTJK。
在IDD_YGTJK对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“员工录入”。
(2)从Controls面板上向Dialog资源中添加4个Static、2个Combo、2个Edit,更改资源的属性,并为资源设置相对应的变量,如表6所示。
表6资源设置
ID
Properties
TypeMember
IDC_EDIT1
IDC_EDIT2
IDC_COMBO1
IDC_COMBO2
IDOK
IDCANCEL
默认
默认
Caption添加
Caption退出
CString
CString
CComboBox
CComboBox
m_id
m_name
m_sex
M_whcd
6.4.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();
}
避免漏输现象:
对于一个软件来说,在保证一定功能的基础上,给使用者留出的出错机会越少,那么开发出来的软件越成功。
本系统在用户漏输某个