工资核算信息系统的分析与实现

上传人:pia****nwu 文档编号:143950841 上传时间:2022-08-26 格式:DOC 页数:21 大小:183.01KB
返回 下载 相关 举报
工资核算信息系统的分析与实现_第1页
第1页 / 共21页
工资核算信息系统的分析与实现_第2页
第2页 / 共21页
工资核算信息系统的分析与实现_第3页
第3页 / 共21页
点击查看更多>>
资源描述
1.工资核算信息系统1.1工资核算信息系统的概念工资核算信息系统是以工资数据为处理对象的计算机信息系统。主要包括以下几个环节:(1)编制工资单。(2)按部门(指定条件)汇总工资。(3)编制记帐凭证进行帐务处理。(4)打印工资条及工资单。1.2建立工资核算系统的意义工资核算的方法比较简单、固定,每个月进行工资计算的程序基本不变,工资核算的这种重复性和规律性为采用工资系统核算提供了可能性。在手工方式下,会计人员为了搞好工资核算,需要投入大量的精力和时间,但仍然很难避免错误的出现。采用工资核算系统后,无论从精度上、速度上、还是灵活性上,都是手工方式所不可比拟的,它可大大减轻财务人员的工作强度,提高工作效率。因此采用工资信息系统具有非常重要的意义。1.3工资核算信息系统与会计信息系统的关系会计信息系统是以会计数据为处理对象的计算机信息系统,工资核算系统是会计核算信息系统的一个子系统,又是财务处理系统的基础,它可以单独使用,也可以与会计核算其它系统一起使用,其与会计核算系统的关系如图1.1所示。会 计 核 算 系 统财务处理报表处理往来核算材料核算工资核算固定资产系统管理建账凭证处理记账结账账簿输出银行对账新表登记格式定义公式定义报表计算报表输出图1.1会计核算系统图1.1 会计核算系统的功能结构1.4工资核算系统的设计原则和目标建立工资核算信息系统应遵循以下原则:系统的原则:从系统的原则出发,以会计核算系统系统为基础,并与会计核算系统相协调,与财务职能相适应;提高经济效益的原则;逐步完善、发展的原则;系统统一性原则;精简原则。建立会计信息系统的目标是:信息收集制度化;信息加工标准化;信息传递规范化;信息内容系统化;信息储存档案化;会计信息工作专业化。2、工资核算系统的功能、结构、流程分析2.1工资核算系统的功能、结构分析工资核算信息系统应具有灵活设置工资项目和工资表格的功能、快速准确的核算功能、方便实用的查询功能以及必要的打印功能。工资管理系统软件的功能包括:(1)输入各种工资数据,如考勤、工时等。(2)准确无误地进行工资核算。按出勤情况自动进行个人工资计算;按收入情况自动进行个人收入调节税计算;可进行数据转换以实现与银行传递数据,由银行代发工资。(3)查询个人工资、部门工资、单位工资以及各种工资数据。(4)打印工资发放表、工资条、汇总表和职工花名册等。其功能结构如图2.1所示:工资核算软件个人工资处理工资汇总计算打印工资初始设置系统管理工资数据录入调整月份初始工资数据查询统计重算个人工资本月扣零处理计算分钱清单汇总工资数据打工资发放条打工资发放表打工资汇总表分钱单花名册部门设置设工资项表格定义设工资套扣零设置数据索引银行代发转换数据备份恢复其他管理图2.1 工资核算系统的功能结构图2.2工资核算系统的流程分析本工资软件程序的特点是数据流程比较简单,在整个系统中只有一个核心操作数据库tmp_gzk.dbf,数据关系简单增强了系统的运行稳定。其数据流程如下图所示:用户代码录入用户登陆表结构录入工资数据录入F3D2F6F5F4结构数据库gzk_stru.dbf工资库tmp_gzk.dbf代码数据库gzk_bm.dbfgzk_bz.dbfgzk_rylb.dbf D4D3F1F7F8D1密码数据库gzkuser.dbf备份每月工资数据库gzk*.dbf临时数据库D6D5F2F10修改密码F9查询工资表打印工资表用户图2.2 工资核算系统数据流程图编号数据流名称来源去向说明F1用户登陆键盘D1从键盘输入值与D1值比较F2密码修改键盘D1键盘输入新值存入D1中F3定义表结构键盘D2F4生成工资库D2D3F5工资数据录入键盘D3从键盘输入数据存入D3中F6编辑代码键盘D4D4包含部门、班组及人员类别数据库F7生成月工资库D3D5按GZK200304.dbf格式生成月工资库F8新建临时表D3D6为打印作准备F9查询工资表用户输入输入值F10打印工资表D6栏目可由用户选择表2.1数据流属性表23数据字典数据库设计的主要任务是根据系统的实现功能与数据流图确定系统所需的数据库。在本系统设计中,主要涉及以下几个主要数据库:1密码数据表(gzkusers.dbf)gzkusers(usename c(8),password c(20)记录:记录号:usename password1 zjg 2.部门数据表(gzk_bm.dbf)gzk_bm(部门 c(2) ,部门名称 c(10)记录:记录号:部门部门名称101局办202综合处303财务处 3.班组数据表(gzk_bz.dbf)gzk_bz(班组c(3) ,班组名称c(10)记录:记录号:班组班组名称 1 01 无202一派 3.人员类别数据表(gzk_rylb.dbf)gzk_rylb (类别c(2) ,类别名称c(10)记录:记录号:类别类别名称101在职202退养 4公式数据表(gzk_gs.dbf)gzk_gs(栏目1c(10),栏目2c(256),类别c(2)记录:记录栏目1栏目2类别1实发工资基础工资职务工资 01 2 实发工资(基础工资职务工资)*0.6 02 5.工资项目修改库(gzk_stru.dbf)gzk_stru( field_name c(10),field_type c(1),field_len n(3),field_dec n(3),list_check n(1)记录:记录号field_name field_type field_len field_dec list_check1 姓名c 10 02 身份证c 180 7 类别c 2 0前七项是由系统设定的,在程序中是屏蔽掉的,用户是不能修改的。以下由用户根据单位工资项目自行定义。8 基础工资 n 6 2 0 6.操作工资库,结构由工资项目修改库确定,在程序中是由工资项目修改库生成而建立的。除以上几个主要数据表外,在程序中还生成一系列临时表,主要为实现数据过渡、查询和打印功能的,在主程序退出时会自动删除。经过上述已设计好的数据流图,数据字典就可以进行下一步的程序实现了。3、工资核算系统的实现31模块流程图主程序图3.1模块流程图菜单程序gzgl.mpr关于系统帮助密码修改表单备份表单查询表单打印工资模块生成月工资库工资计算模块录入工资数据退出编辑代码模块编辑公式模块新建修改工资表模块菜单程序gzgl.mpr密码正确启动菜单程序GZGL.mpr退出密码错误退出程序登陆表单显示关于表单32模块设计与编码本节通过对部分模块的设计与编码示例来说明工资核算信息系统的实现。3.2.1.主程序(gzgl.prg)set talk off set curs offset safe offset cent on&以上代码是设置应用程序的进行环境set help to gzgl.chm&设置帮助文件set sysmenu off&关闭系统菜单clear all&清除public logpassword&设置公共变量,此变量当密码为真时为.t.否则为.f.logpassword=.f. &给logpassword赋初值with _screen&设定FoxPro主窗口属性.visible=.t.icon=scdrespl.ico &设置主窗口左上角的图标.picture=setup.bmp&设置主窗口的背景图案.windowstate=2&设置窗口最大化.caption=【工资管理系统】&设置窗口标题endwithdo form SOFABOUT with 1200&弹出软件关于窗口,时间为1.2秒。clearinkey(1.5)set curs on&打开光标do form loginSYS&弹出登陆窗口,等待用户输入登陆密码。IF logpassword&对返回的logpassword值进行判断如果为真则进行gzgl.mpr菜单程序,进入系统,否则退出程序。do gzgl.mprACTIVATE MENU _MSYSMENU NOWAITREAD eventsENDIFCLEAR EVENTSCLOSE ALLSET SYSMENU TO DEFAULT3.2.2菜单程序(gzgl.mpr)本程序中把菜单程序作为系统初始界面,并由主程序gzgl.prg调用。菜单程序对应模块参照第三章详细设计中3.1 程序功能结构。3.2.3登陆窗口模块(loginsys.scx)登陆模块运行界面如下:下面主要介绍确认按钮的click事件。sele gzkusers&选择密码库local oldpassword,wmzwmz=password&取出密码库中的伪码PP=&以下代码是对密码库password字段中保存的密码解密FOR II=10 TO 1 step -1PP=PP+SUBS(WMZ,II,1)+SUBS(WMZ,II+10,1)ENDFORDD=SUBS(PP,17,4)+SUBS(PP,1,16)M1=SUBS(DD,1,10)M2=SUBS(DD,11,10)ZMZ=INT(VAL(M1)-VAL(M2)&通过设定的数字组合得到真密码oldpassword=zmzif allt(thisform.text1.value)=allt(str(zmz)*=messagebox(欢迎使用工资系统,0+48+0)logpassword=.t.close allrelease thisformelse=messagebox(你输入的密码错误,请与工资管理员联系!,0+16+0)close allrelease thisformendif3.2.4.修改密码窗体模块(changpassword.scx)窗体中确认按钮的click事件。主要包含对用户设定的新密码进行加密成为伪码后存入密码数据库中,加密程序是解密的逆过程,代码略。3.2.5.工资库新建/修改模块(edit_gzkstru.scx)在窗体中主要包含grid控件,添加、删除、确认按钮,代码略。3.2.6设置计算公式模块(editgs.scx表单)在此表单的设计中主要涉及二个关键部分:(1)对应工资栏目如何动态地在表单中显示,因为由于工资结构的不同,需要动态改变工资栏目的显示内容。此功能主要是通过以下代码实现的:form1.init事件use gzk_rylb in 0use gzk_gs excl in 0use gzk_stru in 0sele gzk_struscan for recno()7 &屏蔽掉系统定义的的栏目 k1=L+iif(k10,str(k,1),str(k,2) k2=allt(field_name) thisform.addobject(&k1,label)&向表单中增加对象label thisform.&k1.forecolor=rgb(0,0,255) &设置label的前景色 thisform.&k1.visible=.t. thisform.&k1.backstyle=0 thisform.&k1.top=50+l*15&设置label的上边界 thisform.&k1.left=(i-1)*100+20&设置label的左边界 thisform.addobject(&k2,label)&设置栏目名称 thisform.&k2.visible=.t. thisform.&k2.backstyle=0 thisform.&k2.top=50+l*15 thisform.&k2.left=(j-1)*100+60 i=i+1 j=j+1 if mod(i,7)=0&设置回行显示 l=l+1 i=1 j=1 endif K=K+1endscan(2)对应不同人员类别设置不同的计算公式的实现。在程序中主要的通过一个combo控件与grid1控件相关联来实现的。通过公式数据库gzkgs.dbf中的“类别”字段分类计算公式。记录栏目1栏目2类别1实发工资基础工资职务工资 01(在职)2 实发工资(基础工资职务工资)*0.6 02(退养) 3.2.7.工资计算模块(gzjs.prg)close alluse tmp_gzk in 0use gzk_gs in 0sele gzk_gsfor I=1 to recc() &此处关键是防止公式设置次序不同而计算出错go topscan k1=allt(栏目1) k2=allt(substr(栏目2,2) k3=+allt(类别)+ sele tmp_gzk repl all &k1 with &k2 for 类别=&k3 sele gzk_gs endscanendfor3.2.8. 数据录入/修改模块(edit_gzk.scx)在此表单的设计中主要涉及三个关键部分(1)复选按钮框如何根据工资库结构动态变化,(2)复选按钮选定状态如何在grid控件中实现动态对应,(3)如何将部门、人员类别与grid控件进行动态绑定,以减少用户输入错误率。对于第(1)个问题可参照设置计算公式模块(editgs.scx)中的方法实现。对于第(2)(3)个问题在本程序中主要通过设计用户类mycheckbox实现的,部分代码如下:mycheck.clicklocal ii=1*移去对应combo1sele gzk_struscan for list_check=1 k1=column+str(i,iif(i10,1,2) if field_name=类别.or.field_name=部门 thisform.grid1.&k1.removeobject(combo1,combobox) endif i=i+1endscani=1*sele gzk_struif this.value=1 repl list_check with 1 for field_name=this.caption else repl list_check with 0 for field_name=this.captionendif* k=substr(this.name,6)&用此顺序要调整* this.parent.grid1.deletecolumn(&k)thisform.grid1.recordsource=tmp_gzkcoun for list_check=1 to nthisform.grid1.columncount=nscan for list_check=1 k1=column+str(i,iif(i10,1,2) k2=tmp_gzk.+allt(field_name) k3=allt(field_name)*/判断是否显示组合框if field_name=类别.or.field_name=部门 thisform.grid1.&k1.addobject(combo1,combobox) thisform.grid1.&k1.currentcontrol=combo1 thisform.grid1.&bo1.visible=.t. thisform.grid1.&bo1.rowsourcetype=6 thisform.grid1.&bo1.columncount=2 do case case field_name=类别 thisform.grid1.&bo1.rowsource=gzk_rylb.类别,类别名称 case field_name=部门 thisform.grid1.&bo1.rowsource=gzk_bm.部门,部门名称 endcaseelse thisform.grid1.&k1.currentcontrol=text1endifthisform.grid1.&k1.controlsource=&k2thisform.grid1.&k1.header1.alignment=2thisform.grid1.&k1.header1.caption=&k3thisform.grid1.&k1.width=max(field_len*8,len(field_name)*6)i=i+1endscan3.2.9查询(selegzk.scx)查询模块是利用visual foxpro 6.0自带类库实现的,代码略。0生成月工资库模块(creatmonthgzk.scx)生成月工资库控件的click事件如下:k=gzk+left(allt(dtos(date(),6)kk=gzk+left(allt(dtos(date(),6)+.dbfif file(sys(5)+sys(2003)+databak+&kk)&此处主要对文件路径的设置。 if messagebox(本月工资库已存在,要重新建立吗?,1+16+0)=1 close all else thisform.release return endifendifcopy file tmp_gzk.dbf to &kkclose allcopy file &kk to sys(5)+sys(2003)+databak+&kkdele file &kk1打印工资模块(printone.scx)数据库报表及表单设计都是静态的,如何根据不同的数据结构生成不同的报表是vfp报表设计中的一个难题,一般的方法是将数据导出到excel表中或者word文档中来实现,在此程序中我对vfp动态制表进行了探索,获得了一些设置方法,虽然与其他专用报表软件不能媲美。但至少找到了一个解决的途径。以下是实现的部分代码:titletext=+space(5)+thisform.text1.value+ &设置报表标题for each ii in .columnsif ii.width0a(i,1)=ii.controlsourcek=k+ii.controlsource+,i=i+1J=J+1endifendfork=substr(k,1,len(k)-1)endwithSELE lstmpcopy fiel &k to lstmpfrx &以上代码主要实现根据用户选择的打印栏目生成临时打印数据库crea repo lsfrx from lstmpfrxuse lsfrx.frx excl in 0sele lsfrxgo 2insert blank beforerepl platform with WINDOWS,objtype with 9,objcode with 0,NOREPEAT with .f.,pagebreak with .f.,colbreak with .f.,resetpage with .f.,plain with .f., height with 1354*headheight for platform= go 4inser blank before&设定数据分组if srfgroup=姓名 repl platform with WINDOWS,objtype with 9,objcode with 3,expr with lstmpfrx.姓名 ,NOREPEAT with .f.,pagebreak with .f.,colbreak with .f.,resetpage with .f.,plain with .f., height with 1354 for platform= else repl platform with WINDOWS,objtype with 9,objcode with 3,expr with lstmpfrx.部门名称 ,NOREPEAT with .f.,pagebreak with .f.,colbreak with .f.,resetpage with .f.,plain with .f., height with 1354 for platform= endif*调整字体和字号if .not.empty(srffont)fontface1=substr(srffont,1,at(,srffont)-1)fontsize1=substr(substr(srffont,at(,srffont)+1),1,at(,substr(srffont,at(,srffont)+1)-1)repl fontsize with val(fontsize1) for objtype=5.or.objtype=8repl fontface with fontface1 for objtype=5.or.objtype=8endif*调整组间距repl height with height+jj for objcode=3repl vpos with vpos+jj for objtype4.and.objtype9repo form lsfrx.frx window winreport prev &打印输出由上述模块的设计可以看出,通过采用计算机技术,工资核算信息系统的各项功能是完全可以实现的,本人运用工资核算信息系统处理工资核算业务,感觉非常方便,提议各企事业单位都来开发使用工资核算信息系统,使工资核算信息系统发挥更大的效用。 本文的写作得到了丽水学院周建东老师和其他计算机专业老师的热心指导,在此深表感谢。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 电气技术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!