企业工资管理系统.docx
《企业工资管理系统.docx》由会员分享,可在线阅读,更多相关《企业工资管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
企业工资管理系统
目录
1企业工资管理系统概述1
1.1企业工资管理系统的现状分析1
1.1.1企业工资管理的应用现状1
1.1.2管理系统开发的目的1
1.2系统的主要功能1
1.3方法概要1
2企业管理系统平台的选用2
2.1数据库技术的现状与发展2
2.2数据库系统的选择原则2
2.3系统开发工具的选择2
3工资管理系统分析3
3.1系统可行性分析研究3
3.2需求分析3
4详细设计与实现3
4.1系统功能设计3
4.2数据库设计4
4.2.1概念设计4
4.2.2数据库逻辑结构设计5
4.3创建系统主表单7
4.3.1创建主程序7
4.3.2创建可视类8
4.3.3创建系统主菜单9
4.4创建“数据管理”模块10
4.4.1创建“员工信息管理”表单10
4.4.2创建“员工信息查询”表单10
4.4.3创建“基础数据管理”表单11
4.5创建“员工奖惩”模块11
4.5.1创建“员工奖励”表单11
4.6创建“工资管理”模块12
4.6.1创建自定义函数12
4.6.2创建“工资统计发放”表单12
4.6.3创建“工资发放历史”表单13
4.7创建“系统管理”模块13
4.7.1创建“Encode.prg”程序13
4.7.2创建“系统登陆”表单13
4.7.3创建“修改密码”表单14
4.8连编程序14
5结束语14
6致谢15
7参考文献16
企业工资管理系统
1企业工资管理系统概述
1.1企业工资管理系统的现状分析
1.1.1企业工资管理的应用现状
随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。
建设一个科学高效的信息管理系统是解决这一问题的必由之路。
企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。
工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理,可能会造成企业的破产,因此,开发一个简单易用的管理系统是必须的。
1.1.2管理系统开发的目的
随着经济的发展,企业面向大型化、规模化发展,对于大中型企业来说,员工、职称等与工资管理的信息随之急剧增加。
在这种情况下,单靠人工来处理员工的工资不但显的力不从心,而且极容易出错。
因此,有必要在工资管理中引入现代化的信息管理手段来减少工资管理的强度及出现错误的机率。
1.2系统的主要功能
企业工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、增加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对日照汇隆矿业有限公司的具体要求,设计了企业工资管理系统。
企业工资管理系统主要有以下几大功能:
1.对单位人员的变动进行处理。
一个单位的职工不会是一成不变的,总是在不断的变化:
有调出、有调入、也有职工在本单位内部调动。
因此,设计系统是应考虑到这些情况。
2.对职工的工资进行计算、修改。
可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算应发金额、应扣金额及实发金额等。
3.查询统计功能。
要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某部门工资数在某一范围的职工的工资情况等。
1.3方法概要
本工资管理系统是采用面向对象的程序设计思想进行编制的,整个系统由若干个表单、类以及一个主菜单组成,有项目管理器统一管理全部程序的编写和调试。
用户可以通过主菜单或总表单调用系统的各项功能。
1.面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。
2.所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。
一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。
对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。
用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。
3.类可视为一个产品模具、一个模块。
在面向对象设计中,类是对象的原型,是对象的制作器。
类的概念是面向对象程序设计最重要的特征。
所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。
4.面向对象设计的核心是类的设计。
例如:
可以定义一个“工资查询表单”类,该类中可以定义查询的姓名、年龄、工资等等信息,则以此类为原型可以设计出众多的“工资查询表单”类的对象实例,这些实体都具有类中所定义的特征。
5.设计的工资管理系统也是建立在一系列类基础之上的,其编程的思想是:
先根据一定的需要创建一系列的子类或直接调用vfp提供的基类,编制程序时,由这些类派生出相应的对象,所派生出的对象继承了其父类所有的功能,而且具有很好的封装性,这样就可利用派生出的对象像搭积木一样来设计自己的程序。
打个比方,就比如要制造一台机器,首先要制造各种零件的模具,然后用制造好的模具生产出所需的零件,所有这些做完后,剩下的就只是如何把这些零件组装起来,这样一台机器就很容易制造出来了。
实际编程也是如此。
每个表单都是由一定数量的对象按某一种方式组合在一起的,程序编制的核心是类的设计
2企业管理系统平台的选用
2.1数据库技术的现状与发展
数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论与实践上都得到了很大的发展。
现在数据库是数据处理的主要工具,是管理信息系统(MIS)的核心部分。
数据库系统是当今计算机信息系统的核心,是计算机技术和应用发展的关键。
传统的数据库系统旨在处理永久、稳定的数据,强调维护数据的完整性、一致性。
数据库理论与技术的发展极其迅速,应用日益广泛。
当今的信息社会中,它几乎无所不在。
以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得极大成功。
计算机世界报社与IBM公司联合举办了"21世纪数据库技术发展专家研讨会"IBMDB2的创始人DonaldHaderle先生与国内著名数据库专家就下世纪数据库发展的趋势、数据库领域革命性的突破、IBMDB2的应用、数据仓库的实施、我国数据库技术和应用的现状及趋势、我国数据库用户的需求等问题,进行了广泛而深入的讨论。
2.2数据库系统的选择原则
1.数据库系统采用易于集成的,开放的技术。
2.产品质量优异,可靠性高,适于长期运行,能支持关键应用。
3.数据安全,保密性高。
4.能提供分布式数据库功能。
5.支持多种开发环境,软件开发容易。
6.扩充性和升级能力强。
2.3系统开发工具的选择
现在市场上有很多管理系统的开发工具,如:
Visualbasic、delphi、ASP等等,数据库开发工具又有很多种,如:
Access,SQLSever,Oracle等等。
这些都是很出色的管理信息系统及数据库的开发工具。
不过VisualFoxPro有着以下几项特点:
VisualFoxPro7.0是Microsoft公司推出的全新的pc平台关系数据库管理系统。
它是面向对象领域的佼佼者,是一种能迅速开发优秀程序的工具,它已成为当前窗口应用系统最具实力的数据库软件集成开发平台,它完整而丰富的工具、及其友好的图形用户界面、简单得数据存取方式、良好的兼容性及真正的可编译性,是系统成为目前最完美的数据库系统。
不但兼容早期的各种版本,同时还提供了许多基于windows的崭新功能。
使得其应用更加广泛。
3工资管理系统分析
3.1系统可行性分析研究
可行性研究的目的使用最小的代价在尽可能短的时间里确定问题是否能解决,通过复杂系统的规模与目标,研究与此类似的系统后,我们具体从下面两个方面考虑。
技术上的可行性由于对企业管理系统这一类的企业生产销售系统进行开发已有一定的时期,有很多成功的实例,技术基础也已经非常雄厚,因而技术上的准备应该不成问题。
经济上的可行性由于企业管理系统是一个比较小型的系统,是由我一个人进行开发的,所以从人力、物力、财力方面来说都是可行的。
3.2需求分析
对用户需求的分析应该全面、深入、发展,全面是指考查由MIS管理的信息是否有纰漏,必须保证各静态、动态信息的完全;深入是指对信息的内容、结构、含义、变换、生存周期的分析和认识;发展是指对信息未来发展变化的预测,因为信息在某个系统、机构内的变化往往存在着自身特有的发展规律,需求分析应该预见这种规律,否则就会缩短MIS的使用寿命。
为了保证需求分析的完备性,就必须保证需求分析的时间。
系统的功能要求:
1.整体结构合理,风格一致,模块化结构,界面清晰,接口灵活,操作简便。
2.开发方法,文档规范化,便于管理,可扩充。
3.完善的数据输入,维护,输出。
4.自检性能高,容错性能高,用户误输、错输均有提示。
某个用户的操作错误不会引起整个系统的瘫痪,错误操作有警告,以便用户及时改正。
4详细设计与实现
4.1系统功能设计
本系统中实现的企业工资管理系统的总体功能结构模块如图4.1所示:
4.2数据库设计
4.2.1概念设计
概念设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。
概念设计中自顶向下的实体分析方法,即常用的实体联系模型(简称E-R模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。
用实体间联系反映现实世界事物间的内在联系。
E-R模型是建立概念性数据模型的有力工具。
本系统应设计的实体和属性如下:
员工信息表:
员工编号,姓名,性别,出生日期,籍贯,民族,文化程度,毕业学校,健康状况,婚姻状况,身份证号码,家庭电话,办公电话,手机,电子邮件,银行帐号,工资等级,进入日期,岗位名称,备注。
工资统计信息表:
员工编号,员工姓名,工资月份,等级工资,实际工龄,工龄工资,岗位工资,奖励金额,惩罚金额,工资总额,所得税额,实际工资。
工资历史信息表:
员工编号,员工姓名,工资月份,等级工资,实际工龄,工龄工资,岗位工资,奖励金额,惩罚金额,工资总额,所得税额,实际工资,发放日期,领取人,发放状态
员工惩罚信息表:
员工编号,惩罚类型,惩罚原因,惩罚日期,惩罚金额,惩罚说明
员工奖励信息表:
员工编号,奖励类型,奖励原因,奖励日期,奖励金额,奖励说明
等级工资信息表:
等级名称,等级工资。
岗位工资信息表:
岗位名称,岗位工资。
工龄工资信息表:
工龄年数,工资数量。
个人所得税率表:
编号,级数,不计税工资,工资下限,工资上限,所得税率,速算扣除数,备注。
系统用户信息表:
用户,密码,姓名。
4.2.2数据库逻辑结构设计
1.员工信息表如表4.1所示:
表4.1员工信息表
字段名
数据类型
说明
员工编号
字符型
字段宽度为12,主索引字段,不能为空
姓名
字符型
字段宽度为30
性别
字符型
字段宽度为2,默认值为“男”
出生日期
日期型
字段宽度为8
籍贯
字符型
字段宽度为40
民族
字符型
字段宽度为10
文化程度
字符型
字段宽度为10
毕业学校
字符型
字段宽度为40
健康状况
字符型
字段宽度为40
婚姻状况
字符型
字段宽度为4
身份证号码
字符型
字段宽度为18,输入掩码:
999999999999999999
家庭电话
字符型
字段宽度为13,输入掩码:
9999999999999
办公电话
字符型
字段宽度为13,输入掩码:
9999999999999
手机
字符型
字段宽度为13,输入掩码:
9999999999999
电子邮件
字符型
字段宽度为50
银行帐号
字符型
字段宽度为30
工资等级
整型
字段宽度为4
进入日期
日期型
字段宽度为8
岗位名称
字符型
字段宽度为30
备注
字符型
字段宽度为100
2.工资统计信息表如表4.2所示:
表4.2工资统计信息表
字段名
数据类型
说明
员工编号
字符型
字段宽度为12,普通索引字段,不能为空
员工姓名
字符型
字段宽度为30
工资月份
字符型
字段宽度为12
等级工资
浮点型
字段宽度为8,2位小数
实际工龄
整型
字段宽度为4,2位小数
工龄工资
浮点型
字段宽度为8,2位小数
岗位工资
浮点型
字段宽度为8,2位小数
奖励金额
浮点型
字段宽度为8,2位小数
惩罚金额
浮点型
字段宽度为8,2位小数
工资总额
浮点型
字段宽度为8,2位小数
所得税额
浮点型
字段宽度为8,2位小数
实际工资
浮点型
字段宽度为8,2位小数
3.工资历史信息表如表4.3所示:
4.3工资历史信息表
字段名
数据类型
说明
员工编号
字符型
字段宽度为12,普通索引字段,不能为空
员工姓名
字符型
字段宽度为30
工资月份
字符型
字段宽度为12
等级工资
浮点型
字段宽度为8,2位小数
实际工龄
整型
字段宽度为4
工龄工资
浮点型
字段宽度为8,2位小数
岗位工资
浮点型
字段宽度为8,2位小数
奖励金额
浮点型
字段宽度为8,2位小数
惩罚金额
浮点型
字段宽度为8,2位小数
工资总额
浮点型
字段宽度为8,2位小数
所得税额
浮点型
字段宽度为8,2位小数
实际工资
浮点型
字段宽度为8,2位小数
发放日期
日期型
字段宽度为4
领取人
字符型
字段宽度为30
发放状态
字符型
字段宽度为12
4.员工惩罚信息表如表4.4所示:
表4.4员工惩罚信息表
字段名
数据类型
说明
员工编号
字符型
字段宽度为12,普通索引字段,不能为空
惩罚类型
字符型
字段宽度为30
惩罚原因
字符型
字段宽度为150
惩罚日期
日期型
字段宽度为20
惩罚金额
浮点型
字段宽度为8,2位小数
惩罚说明
备注型
字段宽度为4
5.员工奖励信息表如表4.5所示:
表4.5员工奖励信息表
字段名
数据类型
说明
员工编号
字符型
字段宽度为12,普通索引字段,不能为空
奖励类型
字符型
字段宽度为30
奖励原因
字符型
字段宽度为150
奖励日期
日期型
字段宽度为20
奖励金额
浮点型
字段宽度为8,2位小数
奖励说明
备注型
字段宽度为4
6.等级工资信息表如表4.6所示:
表4.6等级工资信息表
字段名
数据类型
说明
等级名称
整型
字段宽度为4,主索引字段,不能为空
等级工资
浮点型
字段宽度为8,2位小数
7.岗位工资信息表如表4.7所示:
表4.7岗位工资信息表
字段名
数据类型
说明
岗位名称
字符型
字段宽度为30,主索引字段,不能为空
岗位工资
浮点型
字段宽度为8,2位小数
8.工龄工资信息表如表4.8所示:
表4.8工龄工资信息表
字段名
数据类型
说明
工龄年数
整型
字段宽度为4,主索引字段,不能为空
工资数量
浮点型
字段宽度为8,2位小数
9.个人所得税率表如表4.9所示:
表4.9个人所得税率表
字段名
数据类型
说明
编号
整型
字段宽度为4,主索引字段,不能为空
级数
字符型
字段宽度为2
不计税工资
浮点型
字段宽度为8,2位小数
工资下限
浮点型
字段宽度为8,2位小数
工资上限
浮点型
字段宽度为8,2位小数
所得税率
浮点型
字段宽度为8,2位小数
速算扣除数
浮点型
字段宽度为8,2位小数
备注
浮点型
字段宽度为150
10.系统用户信息表如表4.10所示:
表4.10系统用户信息表
字段名
数据类型
说明
用户名
字符型
字段宽度为30,主索引字段,不能为空
密码
字符型
字段宽度为30
姓名
字符型
字段宽度为20
4.3创建系统主表单
4.3.1创建主程序
主程序是程序的入口,使用VisualFoxPro开发的可执行程序将从主程序开始执行,然后使用主程序来调用其他的程序或者表单。
本系统使用prg程序作为主程序,在主程序中进行的操作包括初始化系统环境、设置系统环境、声明全局变量、调用登陆表单,最后开始事件循环,根据如上设计与描述,系统的主程序main.prg的代码如下所示:
closeall
clearall
setescapeoff
settalkoff
setsysmenuoff
setcenturyon
setdateansi
_screen.maxbutton=.f.
_screen.minbutton=.f.
_screen.closable=.f.
publicccuruser
ccuruser=""
opendatabasesalary
domainmenu.mpr
doformlogon
readevents
quit
4.3.2创建可视类
在VsualFxPo中使用可视类是面向对象程序设计的一种表现,通过使用可视类可以大大的简化操作,并且可以保持截面风格的统一。
本系统中需要使用4个可视类:
第1个是自定义按钮类;第2个是移动记录类;第3个是操作记录类,第4是查询记录类。
1.创建自定义按钮类
在系统中创建自定义按钮类的目的在于保持系统中界面风格的一致,在该类中定义好按钮的字体、颜色等属性后,在后面使用按钮时只需要创建该类的对象即可。
创建好的“MyCmd”类如图4.2所示:
图4.2“MyCmd”类图
2.创建移动记录类
在项目管理器中创建一个基于“Container”类的类,命名为“MyMove”,在命令组中添加4个“MyCmd”类的对象,创建好的“MyMove”类如图4.3所示:
图4.3“MyMove”类图
“MyMove”类的作用是使用其中的4个按钮来移动表的记录指针的位置。
下面来介绍各个按钮的Click事件代码:
“首记录”:
gotop
thisform.refresh
“上记录”ifbof().or.recno()=1
messagebox('已到首记录',48,'企业工资管理系统')
else
skip-1
endif
thisform.Mrefresh
“下记录”ifeof()orrecno()=reccount()
messagebox('已到末记录',48,'企业工资管理系统')
else
skip
endif
thisform.refresh
“末记录”gobottom
thisform.refresh
当记录指针位于表的不同位置时,“MyMove”类中的按钮具有不同的状态。
主要是当表为空时,该类中的4个按钮都不可用:
当记录指针位于第1条记录时,只有“下记录”和“末记录”可用;当记录指针位于最后1条记录时,只有“上记录”和“首记录”可用。
把控制类中按钮状态的代码添加到类的“refresh”事件中。
代码略。
3.创建操作记录类
在项目管理器中创建一个基于“Container”类的类,命名为“MyAdmin”,在命令组中添加6个“MyCmd”类的对象,创建好的“操作记录”类如图4.4所示:
图4.4“MyAdmin”类图
“MyAdmin”类中的各个按钮用来操作表单中记录,这些操作随着表单的不同而不同,所以不便在类中添加按钮的操作代码,等到在表单中创建类的对象后添加。
4.创建查询记录类
在项目管理器中创建一个基于“Container”类的类,命名为“MySearch”,创建好的类如图4.5所示:
图4.5“MySearch”类图
4.3.3创建系统主菜单
系统主菜单的作用是调用系统中提供的所有功能,该主菜单将按照功能模块的形式来组织菜单的结构。
创建菜单的结构如表4.11所示:
表4.11菜单结构图
菜单
菜单项
结果
命令
数据管理
员工信息管理
命令
Doformstaffadm
员工信息查询
命令
Doformstaffser
基础数据管理
命令
Doformbasicset
奖惩操作
员工奖励操作
命令
Doformstaffenc
工资管理
工资统计发放
命令
Doformsalarystc
工资发放历史
命令
Doformsalaryhs
系统管理
修改密码
命令
Doformsetpass
退出系统
命令
Clearevents
4.4创建“数据管理”模块
4.4.1创建“员工信息管理”表单
员工信息管理表单用来管理企业中员工的基本信息,在该表单中可以新增、添加、修改和删除员工的基本信息。
创建好的表单布局如图4.6所示:
图4.6“员工信息管理”表单图
4.4.2创建“员工信息查询”表单
员工信息查询表单中的查询按钮的功能设计是被单击时检测表单中的文本框和组合框中是否为空,如果非空,则根据文本框和组合框所对应的数据项生成相应的查询条件,将这些条件用“and”连接为最终的查询条件,进行查询,创建好的表单如图4.7所示:
图4.7“员工信息查询”表单图
4.4.3创建“基础数据管理”表单
基础数据管理表单可以分别对所得税率、岗位工资、工资等级和工龄工资进行设置。
创建好的表单如图4.8所示:
图4.8“基础数据管理”表单图
4.5创建“员工奖惩”模块
4.5.1创建“员工奖励”表单
员工奖励表单用来对员工进行奖励,对员工进行奖励产生的奖励金额将出现在工资统计结果中。
创建好的表单如图4.9所示:
图4.9“员工奖励”表单图
4.6创建“工资管理”模块
4.6.1创建自定义函数
1.创建“SDS”函数
该函数用来根据给定的金额计算个人所得税。
SDS.prg的代码如下:
functionsds(nnum)
nnum=nnum-800
selectsalarytax
locatefornnum>工资下限.and.nnum<工资上限
iffound()
sdse=salarytax.速算扣除数+(nnum-salarytax。
工资下限)*所得税*0.01
else
sdse=0
endif
returnsdse
endfunc
2.创建“SalaryStc”函数
该函数的功能是计算员工信息表中每个员工的工资,该函数的代码略.
4.6.2创建“工资统计发放”表单
工资统计发放用来统计并发放员工信息表中的所有员工的工资。
创建好的表单如图4.10
所示:
图4.10“工资统计发放”