课程设计-职工工资管理系统.doc
课 程 设 计 论 文题 目 职工工资管理系统 姓 名 xx 学 号 xx 班 级 xx 指导教师 xx 日 期 xxxx-xx-xx 一需求分析3 1.1数据分析3 1.2功能分析3二数据库设计42.1数据库需求分析42.2数据库概念结构设计5三系统的建立53.1项目管理器53.2人事工资管理系统界面63.3建立菜单栏73.4表的建立73.5浏览职工信息83.6职工信息查询103.7工资汇总11一、 需求分析随着经济的发展,企业正向着大型化、规模化发展,而对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且极容易出错。该系统就是设计一个小型企业工资的数据库管理系统,由计算机代替人工执行一系列诸如增加新员工,删除旧员工,工资查询,统计等操作。这样就使办公人员可以轻松快捷地完成工资管理的任务。1.1 数据分析实现工资的集中管理。可供财务人员对本单位的人员以及工资进行增加、删除、修改、查询,对人事的管理及工资发放中的应发工资合计等项目由系统自动进行计算;同时本系统还可对人事及工资管理情况进行多角度查询。1.2系统功能分析系统功能分析是在系统开发的总体任务的基础工业上完成的系统数据初始化;员工基本信息数据的输入;员工基本信息的修改和删除;企业工资的基本设定;员工工资的浏览;员工个人工资表的查询;员工工资的计算;在系统功能分析的基本上,根据VFP程序编制的特点,得到如图所示的系统功能模块图人事工资管理系统工资信息工资汇总工资查询资料输入员工增删系统维护员工查询基础工资岗位工资工龄工资工资总表工资浏览工资查询增加用户删除用户员工信息 VFP是编程前期比较实用的软件,它功能强大,是面向对象的编程开发工具软件。基于VFP的工资管理软件,能实现工资管理的很多部分,由于能力以及编程软件限制,很多功能没能深入开发,下面就介绍一下这个软件的开发过程在数据库应用系统的开发过程中,数据库的结构设计是其中重要的一个环节。数据库设计的好好坏将直接对应用系统的效率以及实现的效果产生影响。好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具人较快的响应速度,能简化基于此数据库的应用程序的实现等。二、 数据库设计2.1数据库需求分析是数据库结构设计应该尽量设计的第一个阶段,是非常重要的一个阶段。这个阶段主是要确定基本数据、数据结构处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础,在仔细调查企业人事工资管理系统的基础上,得到本系统所处理的数据流程,如数据流程图:通过对企业人事工资管理的内容和数据流程分析,针对本程序,设计的数据项和数据结构如下:员工基本状况。包括的数据库项有员工号、姓名、性别、所在部门、身份证号、生日、籍贯、国籍、民簇、婚姻状况、健康状况、参加工作时间、员工状态.工资级别和工资金额。包括的数据库项有工资等级、工资额。企业部门及工作岗位信息。包括的数据库项有部门名称、工作岗位、工资等。工龄的工资金额。包括的数据库项有工龄及对应工资额。工资信息。包含的数据项有员工号、员工姓名、基础工资、岗位工资、工龄工资、实得工资。级别工资设设定岗位工资设设定工龄工资设设定工资基本设定员工信息员工工资数据流程图 通过流程图我们可以很清晰的看到员工工资的计算及总体情况2.2数据库概念结构设计:根据上面的设计规划出的实体有:员工实体、员工工资实体、工资等级实体、部门岗位实体、工龄实体,公司福利实体。ER图如下:员工基础工资岗位工资工龄工资福利费用对应员工工资包含对应对应对应对应工资等级部门工资工龄公司福利 三、系统的建立3.1项目管理器首先是建立项目管理器,如下图所示:3.2人事工资管理系统界面在项目管理器中新建一个表单,名称为人事工资管理系统,如下图所示:只有一个界面是不行的,那么我们看到表单中有2个按钮,进入系统和退出系统,要实现它们的功能就需要对它们进行设置。首先是进入系统的设置,对它的代码设置是“do 菜单1.mprrelease thisform”do 菜单1.mpr是运行菜单项,具体什么菜单我们下面介绍release thisform是释放当前表单,也就是关闭人事工资管理系统这个表单退出系统的代码则是 release thisform 释放此表单3.3建立菜单栏在项目管理器中建立一个菜单,如下要求:菜单中包括职工信息,工资设定,工资汇总,工资查询和退出职工信息中 还包括浏览,编译,查询等选项类似 工资设定中 还包括了基本工资,岗位工资,工龄工资这样 程序运行的时候就到了do 菜单1.mpr,此时的系统界面是这样的3.4表的建立任何程序都少不了表的支持,没有数据库,添加,删除等操作几乎无法实现,我们首先建一个员工信息表,ygxx其具体设置如上然后录入员工的基本信息再建员工的基本工资表 jbgz只要设置如下继续建立员工的岗位工资表和工龄工资表到此,程序有了一个很好的开始,也可以说,这个小程序开始显露生机,下面我们要做的就是完善它的功能。3.5浏览职工信息工资管理软件就要知道职工的基本信息,年龄,性别,工龄,在什么岗位工作,是属于什么工种,这些都为工资的结算提供了很好的帮助。我们需要再建立一个表单,类型如下:我们可以很清楚的看到职工的基本信息,职工号,岗位,姓名,性别,工龄,工资等级,这些基本信息对于工资的定位和发放有很好的帮助那怎么实现职工信息的浏览呢,我们看到右边有5个按钮,这些按钮就是控制浏览职工信息的指挥棒,我们先看以下“首行”里面的代码go topThis.enabled=.f.ThisForm.Command2.enabled=.f.ThisForm.Command3.enabled=.t.ThisForm.Command4.enabled=.t.thisform.refresh在这些代码中 go top 是控制信息到第一个记录,enabled是控制按钮是否可用,refresh是刷新表单,让跳转的记录信息能更新到当前表单中按钮“上一条”的代码如下skip -1 if bof()messagebox("已是首记录!",48,"信息窗口")ThisForm.Command1.enabled=.f.This.enabled=.f.elseThisForm.Command3.enabled=.t.ThisForm.Command4.enabled=.t.endifthisform.refresh代码skip -1的意思是向上翻转记录,bof()意思是是否到记录的首个下一条的代码:skipthisform.refreshmand1.enabled=.t.mand2.enabled=.t.if eof()messagebox("已是尾记录!",48,"信息窗口")ThisForm.Command1.enabled=.t.Tmand2.enabled=.t.This.enabled=.f.ThisForm.Command4.enabled=.f.Endif功能和上面的按钮类似,eof()判断是否到达记录的末尾最后一个是末行的按钮,代码:go bottomThis.enabled=.f.ThisForm.Command2.enabled=.T.ThisForm.Command3.enabled=.f.ThisForm.Command4.enabled=.f.thisform.refresh代码go bttom是把记录跳转到最后一条到此,员工信息的浏览已经完成,我们可以对员工的信息一条一条的浏览,这样看来可能复杂些,下面我们用简单的方法,来查看所有员工的信息。同样是建立一个表单,不同的是,这次我们在表单中加入了一个表格,让所有员工的信息都在表格中显示出来。通过生成器,添加ygxx表,然后把表中的所有字段都移动到右边,这样,表单中的表格就变成了下面的图执行表单,我们可以发现,所有员工的信息都可以显示出来了。3.6职工信息查询下面我们介绍一下员工信息的查询功能的操作,对于VFP来说,数据的查询功能和目前所用的SQL语言类似,我们就具体操作进行说明。员工信息的查询需要有查询条件,我们所选择的查询条件是职工号和职工姓名两个,然后查询出符合条件的员工信息。同时我们还要求:当查询职工号时,职工姓名是不可选的,反过来当查询职工姓名时,职工号是不可选的,查询完成后再表单中显示出查询内容界面如图:我们可以看到,查询是靠一个按钮来实现的,那么其内含的代码十分关键,要求做到无差错查询,条件要设好,代码如下:if ThisForm.Optiongroup1.value=1set filter to 职工号=allt(thisform.text1.value)thisform.refreshelseset filter to 职工姓名=allt(thisform.text2.value)thisform.refreshendi通过我们输入的职工号或职工姓名来实现对职工信息的查询,这样我们可以方便的找到所需要的职工的基本信息,而不象以往那样用很长时间查资料,费时费力。3.7 工资汇总这是整个程序的难点,怎样实现多个表之间的联接,然后在通过一个临时的表把我们所需要的数据显示出来,其中涉及到了多表之间数据的运算。图:由表中我们可以看出,在我们建立的表中不存在“总工资”这个项目,关键的是总工资是基本工资,工龄工资,岗位工资的总和,那怎么样使它们相加后再输出到总工资呢,要实现这个目的,就需要用到select语句按钮“汇总”的代码如下:thisform.gzhzgrid.recordsource="selec dist 职工号,职工姓名,岗位工资,基本工资,工龄工资, 岗位工资+基本工资+工龄工资 as 总工资 from ygxx,gwgz,glgz,jbgz where ygxx.岗位=gwgz.岗位名称 and ygxx.工龄=glgz.工龄 and ygxx.工资等级=jbgz.工资等级"use这里我们设置了表单中表的数据源(recordsource),用select来选择并限定好它个格式,然后输出到这个表中,这样我们就可以清晰的看到我们所有员工的工资情况,有助于最后工资的发放和统计。