《工资管理系统VisualFox.docx》由会员分享,可在线阅读,更多相关《工资管理系统VisualFox.docx(32页珍藏版)》请在三一办公上搜索。
1、摘 要本文简单介绍了工资的业务流程,在整体分析工资各部门以及部门之间的实际工作业务的基础之上,结合管理信息系统开发的理念,管理信息系统简称MIS是一个计算机的数据处理过程的系统.它是一个机构为了支持决策及其它必需的管理功能提供及时有效的信息而开发的,并且可按需要把人工操作过程结合在一起。本课题,企业工资管理信息系统就是MIS的一种。本企业工资管理系统适用于大多数企业工资管理的使用,我采用Microsoft visual Foxpro 7.0版本,它是微软公司推出的可视化语言集成包Microsoft Visual Foxpro 7.0中的一员,其功能更加强大。本系统是采用面向对象的程序设计思想进
2、行编制的,整个系统由若干个表单、类、报表以及一个主菜单组成,由项目管者统一管理全部程序的编写和调试。用户可通过主菜单或表单来调用系统的各项功能。全文共分七个章节,通过对业务流程的分析以及对系统的模块设计、实体-联系图(E-R图)设计、关系模式设计、数据库设计、代码设计、人机界面设计等,详细地阐明了本系统开发的目的、过程及预期效果。关键词:MIS, Microsoft visual Foxpro 7.0,目的、过程。目 录摘要第一章 工资管理系统简介311 系统编辑环境312 系统开发环境4第二章 系统分析521 系统的课题来源523 数据字典和数据库中的表结构7第三章 系统设计1131 代码设
3、计1132 模块功能图23第四章 系统使用说明书24 41 安装说明书2442工具说明书2443 操作说明25第五章 系统的评价和维护27结束语29参考文献30致谢31第一章 工资管理系统简介1.1 系统编辑环境本企业工资管理系统适用于大多数企业工资管理的使用,我采用Microsoft visual Foxpro 7.0版本,它是微软公司推出的可视化语言集成包Microsoft Visual Foxpro 7.0中的一员,其功能更加强大。Microsoft Visual Foxpro 7.0 在6.0版本的基础上功能得到了进一步加强,该产品的有机的结合了数据库系统等程序设计语言,在设计桌面数据
4、库系统方面具有明显的优势。Microsoft Visual FoxPro 7.0 加强的项目管理器、向导、生成器、查询和视图、OLE连接、ActiveX集成、帮助系统制作、数据导入和导出以及面向对象程序设计等方面的功能,从而使用更加方便快捷地开发出优秀数据系统。1、 查询和管理功能更加强大(1) Microsoft Visual FoxPro 7.0拥有将近150条命令和200余种函数,加快了软件设计速度,其功能空间强大。(2) 采用了优化应用程序的Rushmore技术,Ru shmore 是一种从表中快速的先取记录集的技术,它使查询响应的时间缩短到最小,从而显著地提高了查询速度。(3) Mi
5、crosoft Visual FoxPro 7.0提供了项目管理器,帮助用户管理项目开发中的数据、文档、源代码和类库等。2、轻松创建界面Microsoft Visual FoxPro 7.0具有可视化程序设计的待点,提供了向导、生成器、设计器等界面操作工具,回快了构建程序框架和设计表单界面的进程。同时,借助其对象有型,可以充分使用面对象程序设计的所有功能。3、加强了对SQL语言的支持在Microsoft Visual FoxPro 7.0中,SQL命令已经由原来的4种扩充为现在的8种,培增强Visual FoxPro语言的功能。4、引入了新的数据库结构Visual FoxPro中引入数据库表和
6、自由表的概念。在建立表时就规定是否隶属于某个数据或以自由表的形式存在,并且可以在数据库环境中建立表之间的永久亲系和临时关系,对数据文件的管理更加科学、更加有效。5、使用OLE进行系统集成通过使用OLE(object linled and embeded 对象连接与嵌入)技术,便于共享其它数据源(office办公自动化软件)的数据,扩展了系统的功能。6、增强的网络功能支持客户机/服务器结构,可以访问本地计算机和远程服务器,并通过视图和建立事务处理程序来实现并控制对数据的共享。1.2 系统开发环境配置(1) 机型:586以上(2) 硬盘:32MB以上(3) 内存容量:128MB以上(4) 光盘驱动
7、器:1个CDROM 40倍速以上(5) 显示器:Microsoft windows 支持的VGA彩显,分辨率为800*600或更的监视器(6) 其它:鼠标,健盘,打印机(7) 操作系统:WINDOWS 982000NETXP(8) 软件: Visual FoxPro 7.0第二章 系统分析2.1 系统的课题来源管理信息系统简称MIS是一个计算机的数据处理过程的系统.它是一个机构为了支持决策及其它必需的管理功能提供及时有效的信息而开发的,并且可按需要把人工操作过程结合在一起。本课题,企业工资管理信息系统就是MIS的一种。工资管理信息系统的开发目标是:克服现在工资管理中存在的人工管理,统计与查询单
8、一、管理效率低下等问题;能科学有效的管理工资,方便地查询职工和统计、修改、汇总、发放工资等情况,对所需要的数据以表格形式显示,以报表形式打印,并为将来进一步扩充和发展工资管理系统奠定基础。一、企业工资管理系统的主要功能:随着经济的发展,企业正向着大型化、规模化发展,面对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且容易出错,工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、增加、删除以及存储打印等,迅速准确地完成各种工资信息的统计计算和汇总工作,快速打印出工资报表。针对系统服务对象的具体要求,设计
9、了此工资管理系统,该工资管理系统主要有以下几大工功能:1、 对单位人员的变动进行处理。一个单位职工不会是一成不变的,总是在不断地变化:有调出、有调入、也有职工在要单位内部调动以及辞职、退休、死亡等。因此,设计时考虑到这些情况。2、 对职工工资进行修改、计算。可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算工龄、实发金额、总扣数应发金额等。3、 查询统计功能。要求既是可以单项查询,比如查看某个职工的工资情况,也可以以多项查询,比如某部门职工的工资情况以及工资汇总,部门工资统计及工资排序等。4、 打印工资功能。它能打印每个员工一月的工资,同时附加工资条,也可打印
10、每个部门的工资及全部员工工资的汇总!5、 工资数据管理功能。可以对单位中旧数据转出,数据的转入及对数据的初始化!保证了数据的准确性,整齐性!二、工资管理系统方法概要本系统是采用面向对象的程序设计思想进行编制的,整个系统由若干个表单、类、报表以及一个主菜单组成,由项目管者统一管理全部程序的编写和调试。用户可通过主菜单或表单来调用系统的各项功能。面向对象程序设计不再是单纯的从代码的第一行一直编到最后一方,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与发展。所谓的对象是一种抽象的名称,用来对应现实世界存在的“东西”。一个窗口、一个按钮、一个菜单都可
11、视为一个对象,而按钮对象、菜单对象又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是一不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户需知道其任何细节,操作是填封闭,对象之间只能通过函数调用相互通信。类可视为一产品模具、一个模块。在面向对象程序设计中,类是对象的原型,是对象的制作器。类的概念是面向对程序设计最重要的待征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任意一个对象的共同的行为待征,是对一组件质相同的对象的程序描述,概括了对象的共同性质和数据。面向对象程序的核心是类的设计。例如:可以定义一个“记录条”类,该类中可以在数据
12、环境中浏览添加的表的信息,则以此类为原型可以设计也众多的“记录条”类的对象条例,这些实体都具有类中的定义的待征。设计的工资管理系统也是建立在一系列类基础之上的,其编程的思想是:根据一定的需要创建一系列的子类或直接调用VFP提供的基类,编制程序时,由这些类派生出相应的对象,所派生出的对象继承了其父类所有的功能,而且具有很好的填封装性,这样就可以利用派生出的对象像搭积木一样来设计自己的程序。打个比方,就比如要制造一台机器,首先要制造各种零件的模具,然后用制造女子的模具生产出所需的零件。退出本系统一、 下面对其与本系统开发相关的功能加以简单介绍:1、 建立数据库:菜单中新建数据库选项,按提示操作2、
13、 建立表、字段、索引:找开数据库,新建按钮,选择表,按提示操作。3、 创建用户界面:窗体的设计、菜单的设计、工具栏的使用、对话框的使用、帮助系统的设计。具体操作参照参考书。4、 基本控件:文本框、命令按钮、标签、复选框、框架、等等。具体使用方参照参考书。5、 调试及错误处理功能:能捕获错误并按自己的要求进行相应的处理。具体的使用方法参照参考书。6、 数据库访问:向数据环境添加数据库,对数据库中的记录进行增加、删除、修改、查询等操作。具体使用方法参照参考书。7、 数据报表设计器:把数据库中的数据生成报表预览。操作过程:选把数据库添加到数数据环境中,再用报表控件生成报表。具体操作参照考书。二、针对
14、工资表管理系统的具体要求,在设计时把整个系统划分为以下几个模块:1、 员工基本信息模快2、 工资管理及其信息模块3、 系统维护模块4、 工资打印模块5、 关于系统数据模块6、 退出模块由于采用了模块化设计思想,大大提高了设计的效率,而且最大限度地减少不必要的错误码。在实际操作中,本系统的设计思想是:保持一个基本库不变,作为原始库;每月由原始库生成一个当月库,填写或更改某些项目时,在当月库中修改,数据更改完毕后,将结果保存。为实现以上设计思想,在每月始变更前,首先初始化数据库,将一些变动项清为零,而基准则保持不变;之后种种修改、该工资管理系统要求数据库保持相对稳定、无较大的变动,但是每月需要填写
15、的变项又必须经常变化,针对本系统的这些特点,因此在设计时,就尽量保持原始数据库不变,在每月进行日常的数据操作前,都要对工资数据进行原化处理,由原始数据库生一个月过程库,以后对工资档案进行数据操作,如:修改、添加、删除、查询等,都要在当月过程库中进行,数据更改完毕后,将结果作业个结果库,作为每月留档用的数据库。由于采用了这种过程库的办法因而避免了用户直接原始数据库进行操作,从而提高数据库的安全性。2.2 数据字典和数据库中的表结构建立数据字典是为了对数据流程图上的别元素做出详细的定义和说明。数据流程图配以数据字典就可以从图形和文字两个方面对系统的逻辑模型进行描述,从而形成一个完整的说明,它包括两
16、大部分:数据字典条目和数据字典内容。数据字典条目:1、 用记表(用户名、密码)字段类符型宽度用户名字符型8密码字符型102、 职工信息(职工编号、职工姓名、性别、出生日期、年龄、部门编号、职等编号、住址、工作时间、身份证号、工资帐号、党员、退休、死亡)字段类型宽度索引职工编号字符型6主索引职工姓名字符型8性别字符型2出生日期Date8年龄数值型3部门编号字符型6Regular职等编号字符型6Regular住址字符型16工作时间Date8身份证字符型18工资帐号字符型6党员逻辑1退休逻辑1死亡逻辑13、 职等(职等编号、职等职称、职等工资)字段类型宽度小数位索引职等编号字符型6职等职称字符型12
17、职等工资数值型814、 工资(职工编号、职工姓名、年份、月份、输入日期、职等编号、部门编号、职等工资、岗位工资、水电煤气、加班工资、补发工资、效益工资、事假、效益、应发数、失业金、养老保险、补扣、互助金、个税、防洪基金、总扣数、实发数、发放)字型类型宽度小数位索引职工编号字符型6Regular职工姓名字符型8年份数值型40月份数值型20输放日期Date8职等编号字符型6部门编号字符型6职等工资数值型8岗位工资数值型8水电煤气数值型8加班工资数值型8实发工资数值型8效益工资数值型8事假数值型8效益数值型8应发数数值型8失业金数值型8养老保险数值型8补扣数值型8互助金数值型8个税数值型8防洪基金数
18、值型8总扣数数值型8实发数数值型8发放逻辑15、 部门(部门编号、部门名称)字段类型宽度索引部门编号字符型2主索引部门名称字符型86、 关于本系统数据库之间的关系7、 数据库需求分析是数据结构设计的第一个阶段,是非常重要的一个阶段这个阶段主要是确定基本数据、数据结构以及数据处理流程,组成一份详细的数据字典,为以后进一步设计打下基础。在仔细调查企业工资管理过程的基础上,我们得到本系统所处理的数据流程,如下图所示: 职等设置基本信息录职等信息管理基本信息录部门设置部门信息管理基本信息录基本信息录员工信息管理基本信息录员工信息查询企业工资管理ER图第三章 系统设计3.1 代码设计代码设计在系统分析阶
19、段就应开始,由于编制代码需要仔细调查和多方面协调,所以一件很费事的工作,需要经过一段时间,到系统设计阶段,才能最后定下来。代码是代表事物名称、属性、状态等的符号。代码在信息系统中是人和计算机的共同语言,是两者交换信息的工具,为便于计算机处理,一般用数字、字母、或者他们的组合来表示代码。合理的编码结构是信息处理系统是否具有生命力的一个重要因素。下面是设计代码时需要注意的一些部题:1、 设计的代码必须在逻辑上能满足用户的需要。2、 每一代码地其所代表的事物或属性都必须具有唯一性。3、 代码设计欲留足够的位置,以适应需要的变化。4、 代码要系统化,码的编制应尽量标准化,尽量使代码结构对各个有关方面都
20、具有实用意义,便于信息交流。部分表单及代码:在系统主界面菜单“员工基本信息”中选择“职等信息管理”,出现如下图所示的界面。职等信息管理1、此表单的主要功能是对职等表中的记录进行添加、删除、修改、保存等操作,且通过表格来浏览表中的内容!2、“职等工资管理”表单所需要的数据环境选中此表单,右击此表单选数据,再选添加,选zd,出现如下所示的界面:3、“职等信息管理”表单中的主要属怀设置:职工编号的enabled的值为F职工编号的rowsource的值为zd.zdbh表格grdzd的rowsoure的值为zd表格grdzd的rowsourcetype的值为1-别名Form1的autocenter的值为
21、T,即居中Form1的showwindow的值为1,在顶层表单中4、“职等信息管理”表单中的事件代码为:【添加】按钮中click事件中的代码为:IF mand1.caption=“添加”thisform.txtzdbh.enabled=.f.thisform.txtzdzc.enabled=.t.thisform.txtzdgz.enabled=.t.thisform.oldrecord=RECNO()GO bottommand1.Caption=“确认”mand2.Enabled=.f.mand3.Enabled=.f.mand5.Enabled=.f.mand4.Enabled=.t.lo
22、cal bhbh=RIGHT(zdbh,4)bh=VAL(bh)+1do caseCASE bh999Bh=STR(bh,4)Bh=“ZD”+bhCASE bh99bh=STR(bh,3)bh=“ZD0”+bhCASE bh9bh=STR(bh,2)bh=”zdoo”+bhOTHERWISEbh=STR(bh,1)bh=“ZD000”+bhENDCASEAPPEND blankthisform.txtzdbh.Value=bhthisform.txtzdzc.setfocusELSEmand1.caption=“添加”thisform.txtzdbh.enabled=.f.thisform.t
23、xtzdzc.enabled=.f.thisform.txtzdgz.enabled=.f.mand2.Enabled=.t.mand3.Enabled=.t.mand5.Enabled=.t.mand4.Enabled=.f.TABLEUPDATE(.f.)ENDIFThisform.Refresh【删除】按钮的click事件的代码:use zd exclusivegetzdbh=thisform.txtzdbh.valueDELETE Form zd where zdbh=getzdbhthisform.grdZd.RecordSource=nullIF MESSAGEBOX(“真的要删除
24、吗?”,4+48,“提示”)=6PACKthisform.grdZd.RecordSource=“zd”thisform.grdZd.column1.Width=75thisform.grdZd.column2.Width=75thisform.grdZd.column3.Width=75thisform.grdzd.Refreshthisform.txtzdbh.ControlSource=“zd.zdbh”thisform.txtzdzc.ControlSource=“zd.zdzc”thisform.txtzdgz.ControlSource=“zd.zdgz”ELSEthisform.
25、grdZd.RecordSource=“d”thisform.grdZd.column1.Width=75thisform.grdZd.column2.Width=75thisform.grdZd.column3.Width=75thisform.txtzdbh.ControlSorce=“zd.zdbh”thisform.txtzdzc.ControlSorce=“zd.zdzc”thisform.txtzdgz.ControlSorce=“zd.zdgz”thisform.grdzd.refreshRECALLENDIFSET MULTILOCKS ONCURSORSETPROP(“buf
26、fering”,2)Thisform.Refresh【修改】按钮中click事件的主要代码:IF mand3.caption=“修改”thisformtxtzdbh.Enabled=.f.thisformtxtzdzc.Enabled=.t.thisformtxtzdgz.Enabled=.t.mand1.Enabled=.f.mand2.Enabled=.f.mand3.Enabled=.t.mand4.Enabled=.t.mand5.Enabled=.f.mand3.Caption=“保存”thisform.txtzdzc.SetFocusELSETmand3.Caption=“修改”T
27、ABLEUPDATE(.f.)thisform.txtzdbh.Enabled=.f.thisform.txtzdzc.Enabled=.f.thisform.txtzdgz.Enabled=.f.mand1.Enabled=.t.mand2.Enabled=.t.mand3.Enabled=.t.mand4.Enabled=.f.mand5.Enabled=.t.ENDIFThisform.Refresh【取消】按钮中click事件的主要代码:IF mand1.caption=“确定”mand1.caption=“添加”mand2.enabled=.t.mand3.enabled=.t.ma
28、nd5.enabled=.t.TABLEREVERT(.f.)GO bottomENDIFIF thisform. mand3.caption=“保存”Tmand3.caption=“修改”Tmand1.enabled=.t.Tmand2.enabled=.t.Tmand5.enabled=.t.TABLEREVERT(.f.)ENDIFthisform.Refreshmand1.enabled=.t.mand2.enabled=.t.mand3.enabled=.t.mand4.enabled=.f.mand5.enabled=.t.thisform.txtzdbh.Enabled=.f.t
29、hisform.txtzdzc.Enabled=.f. thisform.txtzdgz.Enabled=.f.thisform.Refresh【退出】按钮中click事件的代码:thisform.releasethisform.refreshForm的init事件中的代码:SET MULTILOCKS ON在系统的主界面菜单“工资管理及其信息”中选择“工资查询”打开如下图所示的“工资查询”表单。工资查询:1、“工资查询表单”可以实现下列功能:个人工资查询和部门工资查询。在进行个人工资查询时需根据年份、月份及工资帐号进行个人工资查询;当进行部门工资查询时:可以分别通过生产部、办公室、财务部、生
30、产车间、销售部及全部对部门工资进行查询。2、 工资查询表单的主要属性为:对象属性值说明Form1AutoCenter.T.居中Form1Showwindow1在顶层表单中Combo1RowsourceType3SQL语句Combo1RowsourceSelect.distinct nf from gz into cursor mSQL语句Combo2RowsourceType3Combo2RowsourceSelect.distinct nf from gz into cursor nCombo3RowsourceType3Combo3RowsourceSelect.distinct nf f
31、rom gz into cursor sl3、“工资查询”表单所需要的数据环境:选中此表单,右击此表单选数据环境,再选添加,选gz表,zgxx表出现如下所示的界面:4、工资查询表单的主要代码:个人工资查询:查询按钮的主要代码为:SELECT zgxxLOCATE for gzzh=alltrim(bo3.Value)Aa=zgbhSELECT gzLOCATE FOR zgbh=aa and nf =VAL(bo1.Value)and yf=VAL(bo2.value)IF FOUND()thisform.pageframe1.page1.text1.Value=gz.bmbhthisform
32、.pageframe1.page1.text2.Value=gz.zgbhthisform.pageframe1.page1.text3.Value=gz.zgxmthisform.pageframe1.page1.text4.Value=gz.gwgzthisform.pageframe1.page1.text5.Value=gz.bfgzthisform.pageframe1.page1.text6.Value=gz.xygzthisform.pageframe1.text1.Value=gz.syj+gz.ylbx+gx.bx+gx.hxj+gx.gs+gz.fhjjthisform.p
33、ageframe1.page1.text9.Value=gz.zdgz+gx.gwxz+gz.sdmq+gz.jbgz+gz.bfgz+gx.xygz-gz.xythisform.pageframe1.page1.text8.value=thisform.pageframe1.page1.text9.Value-thisform.pageframe1.page1.text7.valuethisform.pageframe1.page1.text10.Value=gz.jbgzthisform.pageframe1.page1.RefreshELSEMESSAGEBOX(“没有找到此记录!”,4
34、8,“提示”)thisform.pageframe1.page1.text1.Value=”thisform.pageframe1.page1.text2.Value=”thisform.pageframe1.page1.text3.Value=”thisform.pageframe1.page1.text4.Value=”thisform.pageframe1.page1.text5.Value=”thisform.pageframe1.page1.text6.Value=”thisform.pageframe1.page1.text7.Value=”thisform.pageframe1.
35、page1.text8.Value=”thisform.pageframe1.page1.text9.Value=”thisform.pageframe1.page1.text10.Value=”bo1.Value=”bo2.Value=”bo3.Value=”thisform.pageframe1.page1.RefreshENDIFENDIFGO topThisform.Refresh部门工资查询:查询的主要代码为:do caseCASE thisform.pageframe1.page2.optiongroup1.option1.Value=1Thisform.pgaeframe1.pa
36、ge2.grdgx.RecordSource=;“SELECT*from gx where gx.bmbh=BM0001into cursor ls”thisfrom.pageframe1.page2.grdgx.RefreshCASE thisform.pageframe1.page2.optiongroup1.option2.Value=1thisform.pageframe1.page2.grdgz.RecordSource=;“SELECT*from gz where gz.bmbh=BM0002into cursor 1s”thisform.pageframe1.page2.grdg
37、z.RefreshCASE thisformpageframe1.page2.optiongroup1.option3.Value=1Thisform.pageframe1.page2.grdgz.RecordSource=;“SELECT*form gz where gz.bmbh=BM0003into cursor 1s”Thisform.pageframeq.page2.grdgz.RefreshCASE thisform.pageframe1.page2.optiongroup1.option4.Value=1Thisform.pageframe1.page2.grdgz.Record
38、Source=;“SELECT*form gz.where gz.bmbh=BM0004into cursor 1s”Thisform.pageframe1.page2.grdgz.RefreshCASE thisform.pageframe1.page2.optiongroup1.option5.Value=1Thisform.pageframe1.page2.grdgz.RecordSource=;“SELECT*form gz.where gz.bmbh=BM0005into cursor 1s”Thisform.pageframe1.page2.grdgz.RefreshCase th
39、isform.pageframe1.page2.optiongroup1.option6.Value=1Thisfrom.pageframe1.page2.grdgz.RecordSource=”SELECT*form gz into cursor ls”Thisform.pageframe1.page2.grdgz.RefreshEndcase退出的主要代码为:Thisform.Release注意:当时行个人工资查询时:选择的年份和月份必须是库中存在的日期.a) 工资排序及打印在系统的主界面菜单“工资管理及其信息”中选择“工资的排序及打印”打开如下图所示的“工资排序及打印”表单。1、“工资排
40、序”表单可以对工资分别通过排序字段中的年份、月份、部门编号等字段进行排序;还可以进行个人工资打印、部门工资打印、全部工资打印。2、工资排序及打印的主要属性为:对象属性值说明Form1AutoCenter .T.居中Form1Showwindow1在顶层表单中Combo1RowsourceType1值Combo1Rowsourcegz.zgbh.zgxm,gz.nf,gz.yf.gz.s3、“工资排序及打印”表单所需要的数据环境:选中此表单,右击此表单选数据环境,再选添加,选gz表,出现如下所示的界面:4、工资排序及打印表单的主要代码:排序确定的主要代码为:SELECT gzFindex=ALLTRIM(bo1.value)INDEX ON &findex t