会计软件分析与设计_第1页
会计软件分析与设计_第2页
会计软件分析与设计_第3页
会计软件分析与设计_第4页
会计软件分析与设计_第5页
已阅读5页,还剩183页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

年5月29日会计软件分析与设计文档仅供参考会计软件分析与设计

第一章帐务处理程序分析

学习目的与要求:

帐务核算系统是会计核算软件中使用最为广泛、最为重要的一个子系统。

本章以系统开发过程为主线,简要介绍各过程的任务、要求及注意事项。

经过本章的学习,要求读者对帐务处理系统的开发过程及每个过程所涉

及的原理有一个初步的了解,明白各个过程完成的内容及任务对以后工

作的重要性。

内容提要

第一节会计工作现状调查

一、系统工作状况调查的主要内容

1、数据方面的调查。

2、处理内容方面的调查。

3、特殊事务方面的调查。

4、处理方式方面的调查。

5、代码方面的调查。

二、企业一般采用的帐务处理程序

1、记帐凭证帐务处理程序

2、科目汇总表帐务处理程序

3、汇总记帐凭证帐务处理程序

4、多栏式日记帐务处理程序

三、会计工作状况调查的意义

会计工作现状调查是进行系统初步设计的基础,如果会计工作现状没有调查清楚就进行系统

设计,则可能出现许多问题,满足不了用户的需要和功能不全的问题就要使设计人员从头再

来进行系统的调查,因此,设计人员应认真对待调查工作。

第二节系统规划

一、系统规划的任务

根据现状调查所获得的资料,首先应归纳出用户的基本需求,除满足用户提

出的要求外,应说明还有哪些附加功能,对于不能满足的用户要求要说明原

因,所有的系统功能要清楚,在计算机系统的配置,会计数据处理方法,系

统开发的初步安排等方面进行规划,编写需求分析说明书。

二、系统规划的内容

1、计算机系统的配置方面。

2、在信息的处理方式方面。

3、在软件开发计划方面。

第三节概要设计

一、概要设计的任务及意义

概要设计是在系统可行性分析之后,为实现系统进行的技术设计,概要设计

工作的好坏,直接影响到费用的多少,开发进度的快慢。

二、概要设计的内容

1、系统要求。

2、系统目标的确定。

3、环境设计。

4、通用性设计。

5、保密性设计。

6、可维护性设计。

7、外部设计。

8、文件设计及其应考虑的因素

数据的使用频度;数据的基本内容;记录格式;数据的流量;在某些时刻

下,是否有两个及以上的程序使用数据;占用文件时,是对文件的全部记

录进行处理,还是处理其中某一部分;文件及数据的保密度,允许哪些人

存取数据,允许哪些人只读或禁止访问;文件名。

第四节详细设计

一、详细设计的任务

1、对概要设计的功能模块进行过程描述,开发一个能够直接转换成程序语言

代码的软件表示,这种表示应当是无歧义且高度结构化的。

2.为每个模块建立一个”软件开发卷宗”文件。

二、详细设计阶段的实施步骤

1、将概要设计产生的构成软件系统的各个功能模块逐步细化,形成若干个

程序模块。

2、采用详细设计工具对程序模块进行过程描述。

3、确定各个模块间的详细接口信息。

4、编写”程序设计说明书”。

5、按完成标志进行评审,如未发现异常问题,则处理结束,否则而进行

修改,修改后再次评审,直至经过为止。

三、详细设计的完成标志

1、详细地规定了各模块之间的接口,包括参数的形式和传递方式,上下

层调用关系。

2、确定了模块内的算法及数据结构。

四、过程的结构化构造

1、过程的结构化与非结构化

2、过程的结构化应遵循的原则

使用有限数量的基本逻辑结构;利用基本结构将过程组成容易识别的”块”;

每块都有且只能有一个入口和一个出口;易于转换成程序代码;容易修改设

五、详细设计工具

1、图形工具,以图示方法描述模块处理过程。

2、语言工具,有伪代码或结构化英语来描述数据和处理过程。

3、表格工具,用表格来表示详细处理过程,这类工具适于处理逻辑十分复杂

的条件和活动间的关联。

4、几种常见的详细设计工具:

流程图;框图;判定树

第五节详细设计交付的文件

一、程序设计说明书

程序设计说明书又称详细设计说明书。编制目的是说明一个软件系统各层次中的

每一个模块的设计考虑,其应考虑如下内容:

1.编写目的;2.程序系统的结构;3.程序设计说明(程序描述;功能;性能;

输入项;输出项;算法;流程逻辑;接口;存贮分配;注释设计;限制条件;

测试计划;尚未解决的问题)

二、模块开发说明书

模块开发说明书是在详细设计说明书经评审和批准后建立的,并在模块开发过程

中逐步编写出来,它是管理人员监督开发进度并为以后的维护人员使用的技术文

件,其主要内容如下:

标题;模块开发情况(时间安排);功能说明;设计说明;源代码清单;

测试说明;评审的结论

第二章用户界面程序设计

学习目的与要求:

用户界面就是用户与计算机系统进行相互交流数据与信息的一些接口规范,

用户界面的友好性直接关系到软件系统的质量。本章经过介绍数据输入界面、

菜单等有关内容,说明在进行系统友好界面设计时应遵循的一些基本规则及

常见惯例,经过学习,要求读者掌握菜单概念及菜单选择的程序实现。

内容提要

第一节数据输入界面设计

一、用户界面及其设计要求

1、用户界面这一术语指的是用户和程序如何相互沟通,屏幕上的任何信息、

文档资料以及键盘输入的命令都是用户界面的一部分,对屏幕设置,提

示、菜单和联机帮助信息设计的好坏决定着用户界面是否高效、友好,

也决定着软件是否能为用户接受,最佳的用户界面强调良好的屏幕设计,

易于使用和用户友好。

2、用户界面设计时应考虑的一般原则:

必须集成于系统设计之中,而不最后加上;减少击键次数来提高用户效率;

预测用户的下一步动作;提供错误信息来帮助纠正错误;

提供文档来减少培训时间;带有帮助信息;支持其它的输入装置。

二、输入数据程序设计要遵循如下原则:

1、简明性

2、一致性

3、完整性

4、使用颜色的原则

5、输入格式

第二节菜单和命令设计

一、菜单及其功能

1、菜单系统将当前允许用户选择操作的功能名称在屏幕上显示出来,让用户

选择并完成该功能的一种用户界面形式。

2、菜单的功能

·使不熟练的的用户熟练软件,即表述其功能和特性

·提供可选项的清单

·简化选择,从而防止产生错误

·降低训练费用,因为菜单一步步引导用户完成任务

·减少用户的记忆负担

二、菜单式样

1、水平上托式菜单。

2、竖直上托式。

3、下拉菜单。

4、全屏幕菜单。

5、图标式菜单(类WINDOWS风格)。

三、菜单设计的考虑及权衡

1、设计按下ESC键将控制返回到上一级菜单。

2、同时提供亮条选择菜单及字母菜单选择。

3、考虑用户拥有使用过的其它软件的菜单风格。

4、提供快捷选择。

四、菜单设计原则

1、菜单设计所使用的名称要前后一致。

2、减少选项的数目,一般不要超过8项。

3、减少菜单级数的数目,一般不要超过4级。

4、提供快速返回键。

5、菜单选项的选项内容易于理解,一般不要使用技术性强的术语。

第四第用户界面程序设计举例

一、下拉式菜单设计举例

CLEAR

DOWHILE.T.

@1,1PROMPT"凭证输入”

@1,10PROMPT”查询”

@1,20PROMPT”记帐”

@1,30PROMPT”打印”

@1,40PROMPT”系统设置”

@1,50PROMPT”月末结转”

@1,60PROMPT”数据库维护”

@1,70PROMPT”退出”

MENUTOCHO

DOCASE

CASECHO=1

SELECT10

USEGQCW1

APPENDBLANK

REPLACEBHWITHMXM,RRWITH"凭证输入”;

RQWITHMA1,SJ1WITHTIME()

SETCOLORTOGB

@4,2CLEARTO11,22DOUBLE

SETCOLORTOWIB

@3,1CLEARTO10,21DOUBLE

@5,3PROMPT”1,采购单输入”

@6,3PROMPT”2,领料单输入”

@7,3PROMPT”3,修改采购单”

@8,3PROMPT”4,修改领料单”

@9,3PROMPT”0,退出”

MENUTOCHO1

DOCASE

······

ENDCASE

······

ENDCASE

ENDDO

二、全屏幕菜单设计举例

三、全屏幕菜单设计举例2

第三章系统设置程序程序分析与设计

学习目的与要求:

本章介绍系统设置模块中的系统人员管理、科目设置与管理、自动转帐设置、

银行对账设置等功能模块的有关内容。经过本章的学习,要求读者对口令设置及

校验、科目代码设置的意义、科目代码增删的有关原则、自动转帐设置的原理、

银行对账设制的原理及实现要有一定的理解。

内容提要

第一节系统人员管理及口令设置

一、系统人员管理

1、系统人员管理的意义

2、在帐务处理系统可设立如下一些岗位,各自具有一定的权限范围:

(1)系统管理:可进行科目代码设置,系统人员管理、结帐、数据管理

等功能的操作。

(2)制单:可进行会计凭证的录入操作。

(3)复核:可进行会计凭证的复核操作。

(4)修改:可进行会计凭证的修改操作;

(5)处理:可进行记帐、对帐等操作;

(6)打印:可进行打印输出各种帐、证、表的操作。

3、人员设置数据库中应设置的数据项。

二、口令的设置与修改。

*口令修改模块

SETTALKOFF

CLEAR

IFFILE(”KL.DBF”)

RESTOREFROMKL.DBFADDI

ENDTF

JX=Y

DOWHILEJX

KL="KL"+LTRIM(STR(K,3))

KLM="KLM"+LTRIM(STR(K,3))

IFTYPE("&KLM")=UPPER("C")

STOREUPPER("AAA")TO&KL

STORESPACE(30)TO&KLM

ELSE

STORE&KLM+SPAC(30-LFN(&KLM))TO&KLM

ENDIF

STORECHR(ASC(SUBS(&KL、1、1))+50)+CHR(ASC(SUBS(&KL、2、1))+45);

+CHP(ASC(SUBS(&KL、3、1))+40)TO&KL

CLEAR

@1,30SAY”修改口令”+STR(K,2)

@3,5SAY”原口令名为:”+&KLM

@3,50SAY”原口令为”+&KL

@5,5SAY”口令名改为:”GET&KLM

@5,50SAY”改口令为:”GET&KL

@8,32SAY”继续修改?”GETJXPICTURE"Y"

READ

STORETRIM(&KLM)TO&KLM

STORECHR(ASC(SUBS(&KL,1,1))-50)+CHR(ASC(SUBS(&KL2.1))-45);

+CHR(ASC(SUBS(&KL3.1))-40)TO&KL

K=K+1

ENDDO

SAVETOKL.DBFALLLIKEKL*

RETURN

三、口令校验程序的设计应注意以下一些问题:

1、口令明码不能显示。

2、口令输入允许一定的出错次数。

3、口令密码的检验能够采用通用模块完成。

4、口令明码长度有一定的要求。

5、口令输入出错时的处理要恰当。

第二节科目设置与管理

一、设置科目代码的意义

1、便于反映会计科目间的逻辑关系,便于分类、检索、加快计算机处理速度,

利用会计科目代码的不同位数,能够反映会计科目间的逻辑关系。

2、减少数据含义的不确定性。

3、能够节省存储单元、提高运算速度和正确性。

4、便于输入。

二、科目代码的设置要求和编码方式

1、科目代码设置要求

适合计算机处理;简明实用;要有系统性(一级科目代码位长3位,代码

首位为1表示资产类科目;2表示负债类科目;3表示所有者权益类科目;

4表示成本类科目;5表示损益类科目);要有扩展性;单义性。

2、编码方式

会计科目的编码方式,一般采用群码,组码和顺序码等相结合的编码方式。

三、科目代码设置

1、科目代码设置主控模块

该模块是科目代码设置的主控模块,用户能够根据需求分别选择科目代码

的增、删、改、查询、打印等功能,退出模块前,应根据总分类帐户与明

细帐户平行登记的原理,将各明细科目自下向上逐级汇总,进行核对,判

断总分类帐户的金额与其所属各明细分类帐户金额的合计数是否相等;还

应根据资产等于负债加所有者权益的平衡关系,核对所有科目的借方余额

是否等于贷方余额,以确保输入数据的正确性。

2、增加科目的内容及注意事项

应包括的内容主要有:科目代码、科目名称、科目级别、科目类别、余额

方向,年初余额、期初余额、借方发生额、贷方发生额、借方累计发生额、

贷方累计发生额。系统正常运行时,如果某科目已记帐,在该科目下级增

加新的明细科目,应考虑该科目下级各明细科目金额的合计数是否与该科

目的金额相等。

3、科目代码设置主控模块

DEFIWINDZWSZ2FROM4,28TO15,50SHADCOLOSCHE14

DOWHILE.T.

ACTIWINDZWSZ2

@0,2SAY"科目维护控制模块"

@2,5PROMPT"1:增加科目"

@3,5PROMPT"2:单项查询"

@4,5PROMPT"3:删除科目"

@5,5PROMPT"4:修改科目"

@6,5PROMPT"5:全屏查询"

@7,5PROMPT"6:打印科目表"

@8,5PROMPT"0:退出"

@9,2SAY"请选择"

MENUTOCHO

DEACWINDZWSZ2

DOCASE

CASECHO=1

DOZWSZ21

CASECHO=2

DOKMBRO

CASECHO=3

DOKMDE

CASECHO=4

DOKMXG

CASECHO=5

DOKMBRO1

CASECHO=6

DOK2D

CASECHO=7

EXIT

ENDCASE

ENDDO

DEACWINDZWSZ2

RETURN

4、增加科目的程序实现

5、修改科目模块程序设计时应考虑的问题主要有:

为方便操作、修改方式既可单一科目修改,也可对科目余额表进行浏览修改;

被修改的科目应该没有被登帐,没有发生额和余额,避免造成会计核算的数

据丢失或失真。

6、删除科目

用于删除无用的科目,既可是一级科目或控制科目,也可是明细科目。删除

科目模块程序设计时考虑的问题主要有:

1.如果删除的是明细科目,则要求该明细科目既无余额,也无发生额。

2.若是一级科目(总帐科目)或控制性科目,则要求该科目本身,及其所

属的所有明细科目都没有余额和发生额,且该一级科目或控制性科目被

删除后,其所属的所有明细科目也自动被删除。

第三节自动转帐设置

一、自动转帐及其意义

1、自动转帐

2、机制凭证

3、自动转帐分录

4、为什么要进行自动转帐设置

二、自动转帐分录的分类

1、第一类自动转帐分录其金额的大小与本月发生的任何经济业务无关,称为独立

自动分录。独立自动分录能够在任何时候用于编制机制凭证,即能够在月初使

用,也可能在月末使用。

2、第二类自动转帐分录其金额的大小与本月发生的业务有关,称为相关自动分录。

相关自动分录只能在某些相关的经济业务发生后才能用来编制机制凭证。

三、自动转帐分录的定义

1、自动转帐分录文件的结构

1、自动转帐分录的定义

第四节银行对帐的设计

一、未达账项的类型及产生原因

1、未达账项的类型:

银收我未收未达帐项;银付我未付未达帐项;

我收银未收未达帐项;我付银未付未达帐项。

2、未达账项的产生原因:

时间上的延误;记录上的错误。

二、银行对账模块应设置的功能

1、输入对帐单。经过此功能,把银行给企事业单位的对帐单输入计算机,

存入”对帐单文件”。

2、初始银行未达帐项录入。经过此模块,把使用计算机辅助对帐前已存在的

我有银无业务从银行存款余额调节表上摘录下来,存入”银行日记帐未达

帐项文件”。

3、自动银行对帐。由计算机自动在”对帐单文件”和”银行日记帐未达帐项

文件”中寻找完全相同的经济业务予以核销,所谓完全相同的经济业务是

指经济业务发生的时间、内容、摘要、结算票据号、金额都相同的经济业

务,由于同一笔业务在银行和单位日记帐上分别由不同的人记载,经济业

务发生的时间,摘要等不可能一模一样,因此比较经济业务是否相同的标

准(也称匹配标准)只有票据号(如:支票号)和金额,对于没有票据号的经

济业务,只能看金额是否相同,一般情况下,可由计算机先比较票据号和

金额,核销掉相同的经济业务,剩下的经济业务再用金额作匹配标准进行

匹配。

无论同时用票据号和金额作匹配标准,还是只用金额作匹配标准,都可能

有下列几种可能:

1.”对帐单文件”中一条业务记录只和”银行日记帐未达帐项”文件

中一条业务记录相同。

2.”对帐单文件”中一条业务记录和”银行日记帐未达帐项文件”中

多条业务记录相同。

3.”对帐单文件”中多条业务记录和”银行日记帐未达帐项文件”中

一条业务记录相同。

4.”对帐单文件”中多条业务记录和”银行日记帐未达帐项文件”中

多条业务记录相同。

4、手工核销未达帐项

有些经济业务是不可能经过”自动银行对帐”模块核销的,只能用强制的

方式由人工核销。

四、银行对帐主程序

DEFIWINDZHDZDSRFROM4,30TO12,50SHADCOLOSCHE14

DOWHILE.T.

ACTIWINDZHDZDSR

B1=2

@0,2SAY"对帐单处理"

@1,B1PROMPT"录入银行对帐单"

@2,B1PROMPT"查询修改对帐单"

@3,B1PROMPT"打印银行对帐单"

@4,B1PROMPT"生成银行调节表"

@5,B1PROMPT"返回"

MENUTOYHDZ

DOCASE

CASEYHDZ=1

DOZHSR

CASEYHDZ=2

DOZHCX

CASEYHDZ=3

DEACWINDZHDZDSR

DOZHDY

ACTIWINDZHDZDSR

CASEYHDZ=4

DEACWINDZHDZDSR

DOSCDZD

ACTIWINDZHDZDSR

CASEYHDZ=5

EXIT

ENDCASE

ENDDO

DEACWINDZHDZDSR

RETU

五、对帐单输入程序

DEFIWINDZHSR1FROM2,12TO17,68SHADCOLOSCHE14

DEFIWINDZHSR2FROM18,20TO20,60SHADCOLOSCHE12

DEFIWINDZHSR3FROM18,20TO20,60SHADCOLOSCHE14

ACTIWINDZHSR2

MY="N"

@0,0SAY"银行对帐单数据将丢失!继续否Y/N?"GETMY

READ

DEACWINDZHSR2

IFUPPE(MY)<>"Y"

RETU

ENDI

ACTIWINDZHSR3

@0,0SAY"帐号和金额同时为空则退出"

SELE10

USEDATA\ZHDZBINDEDATA\ZHDZB1

SELE9

USEDATA\ZHSRINDEDATA\ZHSR1

ZAP

DIMEMJE1(10),MJE2(10),MZH(10)

DOWHILE.T.

I=1

DOWHILEI<=10

STOR0.00TOMJE1(I),MJE2(I)

STORSPACE(20)TOMZH(I)

I=I+1

ENDD

I=1

MZJE=0.0

ACTIWINDZHSR1

@0,0SAY"银行对帐单"

@1,4SAY"请输入总金额"GETMZJEPICT".99"

@2,1SAY"==============================="

@3,1SAY"帐号收入付出"

DOWHILEI<=10

@I+3,1GETMZH(I)

@I+3,25GETMJE1(I)

@I+3,40GETMJE2(I)

READ

IFLEN(TRIM(MZH(I)))=0.AND.(MJE1(I)=0.OR.MJE2(I)=0)

DEACWINDZHSR1

DEACWINDZHSR3

SELE9

USE

SELE10

USE

RETU

ENDI

SELE10

SEEKTRIM(MZH(I))

IFEOF()

ACTIWINDZHSR2

@0,0SAY"帐号错,按任意继续!"

WAIT""

MJE1(I)=0

MJE2(2)=0

MZH(I)=SPACE(20)

DEACWINDZHSR2

LOOP

ENDI

SELE9

APPEBLAN

REPLZHWITHMZH(I),JE1WITHMJE1(I),JE2WITHMJE2(I)

REPLZJEWITHMZJE

I=I+1

ENDD

DEACWINDZHSR1

ACTIWINDZHSR3

MX="Y"

@0,0SAYSPACE(55)

@0,0SAY"继续输入否Y/N?"GETMX

READ

DEACWINDZHSR3

IFUPPE(MX)<>"Y"

SELE10

USE

SELE9

USE

RETU

ELSE

LOOP

ENDI

ENDD

习题:

1.试编写”科目代码设置”主控模块的程序。

2.试编写”修改科目”模块的程序。

3.试编写”删除科目”模块的程序。

4.如果口令存放于数据库中,”口令设置”和”口第四章凭证处理程序分析与设计

第一节凭证的手工处理

一、凭证的分类

1、凭证一般分为原始凭证和记帐凭证

2、记帐凭证一般分为收款凭证、付款凭证和转帐凭证。

记帐凭证一般具有以下内容:

1.凭证的名称。

2.填制凭证的日期和编号。

3.经济业务的内容摘要。

4.经济业务的金额。

5.填制凭证的单位及有关人员。

6.应借应贷帐户的名称。

7.所附原始凭证的张数和过帐备注。

二、会计人员对记帐凭证的处理程序大至如下:

1.根据原始凭证填制记帐凭证;

2.审核凭证,审查其合法性、正确性;

3.修改凭证,对错误的凭证进行修改;

4.查阅凭证,查阅已填制的凭证;

5.传递凭证,从填制或取得会计凭证到将其归档保存为止,在有关业务部门之

间按照规定的时间,路线传递处理的程序。

第二节电算化凭证处理

一、电算化凭证处理的功能

1.录入为用户提供:

显示凭证表格;灵活的编辑手段;保存用户录入的凭证;

提供一定的检控功能;返回主控模块;

2.查询为用户提供:

用户查询某个特定凭证;按凭证编号查询;

按任一条件查询满足条件的第一张凭证;

按任意组合条件查询满足条件的第一张凭证(凭证编号不能参加条件组合);

用户查询多张凭证;

按任一条件逐个查询满足条件的凭证;

按任意组合条件逐个查询满足条件的凭证;

暂存查询信息;

3、修改及删除

4、凭证输出

二、电算化凭证处理与手工凭证处理的区别:

1.信息项不完全相同

2.凭证的编号方法不一样

3.存储形式不同

4.存储空间的利用率不一样

第三节凭证处理程序的安全可靠性

一、凭证出错的来源

1、人为造成

2、(系统)处理程序出错。

3、电算化凭证处理模块的安全可靠性控制的措施:

1.严格的多级安全控制用户级;凭证级

2.全方位的录入检测

二、数据安全可靠性的实施措施

1、逻辑校验法利用数据间的逻辑关系

2、平衡校验法利用”有借必有贷,借贷必相等”的会计基本准则。

3、查询校验法利用数据的相对稳定性

4、关联校验法利用凭证数据的对应不可能性

5、重复校验法利用概率统计的原理

第四节凭证处理程序的设计

一、系统应满足的要求

1.稳定性

系统应能保证所有的处理稳定、处理的结果不随时间波动,仅仅依赖于输入。

2.一致性

系统内的数据必须保持一致。

3.良好的用户界面

用户界面要求方便适用、美观简洁。

4.灵活性

不受时间、过程的限制。

5.完备性

提供一切有关凭证处理的功能,并加以强化。

6.快速

二、凭证处理模块的设计

第五节凭证处理程序的实现

一、凭证录入

****************

*凭证输入总控程序PZSR.PRG

****************

PARAW_TITLE,BAR_NUM

HIDEMENUMAINMENU

SETCOLOROFSCHEME13TORGB(150,150,150,50,50,50),,;

RGB(150,150,150,50,50,50),RGB(150,150,150,150,0,0),RGB(150,150,150,50,50,50)

DEFINEWINDOWSZFROM1,0TO23,79FOOTER""+W_TITLE+""COLORSCHEME13

ACTIVATEWINDOWSZ

CHO=1

DOCASE

CASEBAR_NUM=1

DOPZSR11

CHO=0

CASEBAR_NUM=2

DOPZSR22

CHO=0

CASEBAR_NUM=3

DOPZSR4

CHO=0

CASEBAR_NUM=5

PZLXQ="S"

DOCXPZKHC1WITHPZLXQ

CASEBAR_NUM=6

PZLXQ="F"

DOCXPZKHC1WITHPZLXQ

CASEBAR_NUM=7

PZLXQ="Z"

DOCXPZKHC1WITHPZLXQ

CASEBAR_NUM=9

DOPZXG11

SELE1

DELEALLFORJE=0

PACK

CHO=0

CASEBAR_NUM=10

DOPZXG22

SELE1

DELEALLFORJE=0

PACK

CHO=0

CASEBAR_NUM=11

DOPZXG4

SELE1

DELEALLFORJE=0

PACK

CHO=0

CASEBAR_NUM=13

DODYPZ

CASEBAR_NUM=14

DODYPZMXB1

CASEBAR_NUM=15

DODYPZHZB

ENDCASE

IFCHO=0

DOPZKBF

ENDIF

CLEARWINDOWSZ

RETURN

*:EOF:PZSR.PRG

*******************

*收款凭证输入程序PZSR11.PRG

*******************

SETTALKOFF

DEFIWINDPZSR1FROM19,20TO21,60SHADCOLOSCHE12

DEFIWINDPZSR2FROM19,10TO21,70SHADCOLOSCHE14

AN="Y"

PUBLICDIMENSIONZY(25),DFKM(25),JE(25),XMH(25)

DOWHILEUPPER(AN)="Y"

JFKM1=""

FDJ1=0

BH1=""

RQ1=MRQ

MRB="S"

DOZWBHWITHBH1

MY=1

MX="Y"

MHJ=0

MHJ1=0

MHJ2=0

MX="Y"

DOWHILEUPPER(MX)="Y"

I=1

DOWHILEI<=25

STORESPACE(24)TOZY(I)

DFKM(I)=SPACE(11)

XMH(I)=SPACE(10)

JE(I)=0.00

I=I+1

ENDDO

CLEAR

DOWHILE.T.

CLEARTYPE

A2="XXXXXXXXXXXXXXXXXXXXXXXX"

A3="999########"

A5="XXXXXXXXXX"

A6=".99"

DOWHILE.T.

SETFORMATTOPZ12

READ

IFREADKEY()=36.OR.READKEY()=292

EXIT

ELSE

LOOP

ENDIF

ENDDO

SETFORMATTO

@17,58GETFDJ1PICTURE"99"

READ

IFJFKM1="".AND.BH1=""

CLEAR

RETURN

ENDIF

IFMY=1

SELECT1

SEEK"&BH1"+"S"

IF.NOT.EOF()

ACTIWINDPZSR1

@0,1SAY"重号,按任意键重新输入"

WAIT""

DEACWINDPZSR1

LOOP

ENDIF

SELECT2

SEEK"&BH1"+"S"

IF.NOT.EOF()

ACTIWINDPZSR1

@0,1SAY"重号,按任意键重新输入"

WAIT""

DEACWINDPZSR1

LOOP

ENDIF

ENDIF

SELE1

IFLEN(TRIM(BH1))<4

ACTIWINDPZSR1

@0,1SAY"编号长度不够4位,按任键重新输入!"

WAIT""

DEACWINDPZSR1

LOOP

ENDIF

SELECT3

IFJFKM1=""

LOOP

ELSE

SEEKJFKM1

IF.NOT.EOF()

ACTIWINDPZSR2

@0,1SAY"借方科目名称:"+TRIM(KMMC)+"按任意键继续"

WAIT""

DEACWINDPZSR2

ENDIF

IFEOF().OR.UPPE(KMRB)="H"

ACTIWINDPZSR1

@0,1SAY"借方科目错,按任意键重新输入"

WAIT""

DEACWINDPZSR1

LOOP

ENDIF

ENDIF

I=1

DOWHILEI<=25

IFDFKM(I)<>""

MHJ2=MHJ2+JE(I)

MHJ1=MHJ2

ENDIF

I=I+1

ENDDO

@15,61GETMHJ1PICTURE"#########.##"

READ

IFMHJ1<>MHJ2

ACTIWINDPZSR1

@0,1SAY"输入金额错,按任意键继续"

WAIT""

DEACWINDPZSR1

MHJ2=MHJ

LOOP

ENDIF

FLAG=0

SELECT3

J=1

DOWHILEJ<=25

IFJE(J)<>0.00

IFTRIM(DFKM(J))<>""

SEEKTRIM(DFKM(J))

IF.NOT.EOF()

MKMDM=TRIM(DFKM(J))

KMMC1=""

DOZW_KMMCWITHMKMDM,KMMC1

IFLEN(TRIM(KMMC1))<>0

ACTIWINDPZSR2

@0,1SAY"贷方科目名称:"+TRIM(KMMC1)+"按任意键继续"

WAIT""

DEACWINDPZSR2

ENDI

ENDIF

IFEOF().OR.UPPE(KMRB)="H"

FLAG=1

EXIT

ENDIF

ENDIF

ENDIF

J=J+1

ENDDO

IFFLAG=1

ACTIWINDPZSR1

@0,1SAYTRIM(DFKM(J))+"贷方科目代码错,按任意键重新输入"

WAIT""

DEACWINDPZSR1

MHJ2=MHJ

LOOP

ENDIF

FLAG3=0

SELECT4

I=1

DOWHILEI<=25

IFLEN(TRIM(XMH(I)))<>0

SEEKTRIM(XMH(I))

IFEOF()

ACTIWINDPZSR1

@0,1SAY"编号:"+TRIM(XMH(I))+"错,按任意键重新输入"

WAIT""

DEACWINDPZSR1

FLAG3=1

EXIT

ENDIF

IFLEN(TRIM(XMH(I)))<>LEN(TRIM(PJH))

ACTIWINDPZSR1

@0,1SAY"编号:"+TRIM(XMH(I))+"错,按任意键重新输入"

WAIT""

DEACWINDPZSR1

FLAG3=1

EXIT

ENDIF

ACTIWINDPZSR2

@0,1SAY"名称:"+TRIM(DWMC)+"按任意键继续"

WAIT""

DEACWINDPZSR2

ENDIF

I=I+1

ENDDO

IFFLAG3=1

MHJ2=MHJ

LOOP

ENDIF

YN="Y"

ACTIWINDPZSR1

@0,1SAY"请检查录入凭证正确否?Y/N"GETYN

READ

IFUPPER(YN)<>"Y"

MHJ2=MHJ

DEACWINDPZSR1

LOOP

ELSE

MHJ=MHJ2

DEACWINDPZSR1

EXIT

ENDIF

ENDDO

SELECT1

J=1

DOWHILEJ<=25

IFJE(J)<>0.00

IFDFKM(J)<>""

APPENDBLANK

REPLACERQWITHRQ1,BHWITHBH1,ZYWITHZY(J)

REPLACEKMDMWITHDFKM(J),JEWITHJE(J),PZRBWITH"S"

REPLACEJDWITH"D",PJHWITHXMH(J)

ENDIF

ENDIF

J=J+1

ENDDO

ACTIWINDPZSR1

STORE"N"TOMX

@0,1SAY"还有同号凭证否Y/N?"GETMX

READ

DEACWINDPZSR1

IFUPPER(MX)="N"

APPENDBLANK

REPLACERQWITHRQ1,BHWITHBH1,ZYWITHZY(1),KMDMWITHJFKM1

REPLACEJEWITHMHJ,PZRBWITH"S",JDWITH"J"

REPLACEFDJWITHFDJ1

EXIT

ENDIF

MX="Y"

MY=0

ENDDO

ACTIWINDPZSR1

@0,1SAY"继续输入否?Y/N"GETAN

READ

DEACWINDPZSR1

IFUPPER(AN)<>"Y"

EXIT

ENDIF

ENDDO

CLEAR

RETURN

*:EOF:PZSR11.PRG

****************

*生成凭证号ZWBH.PRG

****************

PARAMETERSMBH

SETTALKOFF

SELE1

SETINDETODATA\PZKHC1

GOTOP

LOCATEFORUPPER(PZRB)=UPPER(MRB)

IFEOF()

SELECT2

SETINDETOPZK1

LOCATEFORUPPER(PZRB)=UPPER(MRB)

IFEOF()

MBH="0001"

RETURN

ELSE

GOBOTTOM

MBH=BH

DOWHILE.NOT.BOF()

IFUPPER(PZRB)<>UPPER(MRB)

SKIP-1

IFBOF()

MBH="0001"

EXIT

ENDIF

ELSE

X1=VAL(BH)

X1=X1+1

X2=TRIM(LTRIM(STR(X1)))

DOCASE

CASELEN(X2)=1

MBH="000"+X2

CASELEN(X2)=2

MBH="00"+X2

CASELEN(X2)=3

MBH="0"+X2

CASELEN(X2)=4

MBH=X2

ENDCASE

EXIT

ENDIF

ENDDO

RETURN

ENDIF

ELSE

GOBOTTOM

MBH=BH

DOWHILE.NOT.BOF()

IFUPPER(PZRB)<>UPPER(MRB)

SKIP-1

IFBOF()

MBH="0001"

EXIT

ENDIF

ELSE

X1=VAL(BH)

X1=X1+1

X2=TRIM(LTRIM(STR(X1)))

DOCASE

CASELEN(X2)=1

MBH="000"+X2

CASELEN(X2)=2

MBH="00"+X2

CASELEN(X2)=3

MBH="0"+X2

CASELEN(X2)=4

MBH=X2

ENDCASE

EXIT

ENDIF

ENDDO

ENDIF

RETURN

******************

*凭证输入格式文件PZSR11.FMT*

******************

*****************

*第一屏*

*****************

@17,50SAY'附单据张'

@5,16GETJFKM1

@5,36GETRQ1

@5,64GETBH1

@9,3GETZY(1)PICTA2

@9,30GETDFKM(1)PICTA3

@9,43GETXMH(1)PICTA5

@9,60GETJE(1)PICTA6

@10,3GETZY(2)PICTA2

@10,30GETDFKM(2)PICTA3

@10,43GETXMH(2)PICTA5

@10,60GETJE(2)PICTA6

@11,3GETZY(3)PICTA2

@11,30GETDFKM(3)PICTA3

@11,43GETXMH(3)PICTA5

@11,60GETJE(3)PICTA6

@12,3GETZY(4)PICTA2

@12,30GETDFKM(4)PICTA3

@12,43GETXMH(4)PICTA5

@12,60GETJE(4)PICTA6

@13,3GETZY(5)PICTA2

@13,30GETDFKM(5)PICTA3

@13,43GETXMH(5)PICTA5

@13,60GETJE(5)PICTA6

@17,20SAY'第一屏'

@20,26SAY'输入完一张凭证键F1退出'

READ

******************

*生成科目名称ZW_KMMC*

******************

PARAMETERSKMDM,KMMC1

KMDM1=""

KMDM2=""

KMDM3=""

KMDM4=""

KMDM1=SUBSTR(KMDM,1,3)

DOCASE

CASELEN(TRIM(KMDM))=11

KMDM2=SUBSTR(KMDM,1,5)

KMDM3=SUBSTR(KMDM,1,7)

KMDM4=SUBSTR(KMDM,1,9)

KMDM4=SUBSTR(KMDM,1,11)

CASELEN(TRIM(KMDM))=9

KMDM2=SUBSTR(KMDM,1,5)

KMDM3=SUBSTR(KMDM,1,7)

KMDM4=SUBSTR(KMDM,1,9)

CASELEN(TRIM(KMDM))=7

KMDM2=SUBSTR(KMDM,1,5)

KMDM3=SUBSTR(KMDM,1,7)

CASELEN(TRIM(KMDM))=5

KMDM2=SUBSTR(KMDM,1,5)

ENDCASE

MI=1

KMMC1=""

SELECT3

DOWHILEMI<=4

MJ=STR(MI,1)

IFKMDM&MJ<>""

SEEKKMDM&MJ

KMMC1=KMMC1+TRIM(KMMC)+"/"

KMDM&MJ=""

ENDIF

MI=MI+1

ENDDO

RETURN

*******************

*查询凭证程序CXPZKHC1.PRG*

*******************

PARAPZLXQ

PUBLICDIMENSIONPZH1(1000)

STORE""TOPZH1

DEFIWINDPZCXFROM3,25TO16,50SHADDOUBLCOLOSCHE14

DEFIWINDPZCX1FROM18,20TO21,60SHADDOUBLCOLOSCHE14

DOWHILE.T.

ACTIWINDPZCX

@0,3SAY"凭证查询功能选择模块"

@2,3PROMPT"1.按日期查询"

@3,3PROMPT"2.按凭证号查询"

@4,3PROMPT"3.按科目码查询"

@5,3PROMPT"4.按金额查询"

@6,3PROMPT"5.按组合条件查询"

@7,3PROMPT"6.查询期限发生额"

@8,3PROMPT"0.退出"

@10,2SAY"请选择"

MENUTOCH

DEACWINDPZCX

B12=DATE()

B11=DATE()

I1=1

DOCASE

CASECH=1

DOWHILE.T.

ACTIWINDPZCX1

@0,0SAY"输入查询日期求:日至日"

@0,15GETB11

@0,27GETB12

READ

DEACWINDPZCX1

IFB11>B12

LOOP

ELSE

EXIT

ENDIF

ENDDO

SELECT1

B0="'"+DTOC(B11)+"'"

B2="'"+DTOC(B12)+"'"

B1="RQ>=CTOD("+B0+").AND.RQ<=CTOD("+B2+").AND.UPPE(PZRB)='";

+UPPE(PZLXQ)+"'"

KZ1=""

DOCXPZKHC2WITHPZLXQ,KZ1

IFKZ1<>""

LOOP

ENDIF

DOCXPZKHC3WITHPZLXQ

CASECH=2

DOWHILE.T.

A11=""

A12=""

ACTIWINDPZCX1

@0,0SAY"请输入查询凭证号:号至号"

@0,18GETA11PICTURE"9999"

@0,28GETA12PICTURE"9999"

READ

A11=TRIM(A11)

A12=TRIM(A12)

DEACWINDPZCX1

IFA11>A12.OR.LEN(TRIM(A11))=0.OR.LEN(TRIM(A12))=0

LOOP

ELSE

EXIT

ENDIF

ENDDO

B1="BH>='"+A11+"'.AND.BH<='"+A12+"'.AND.UPPE(PZRB)='"+

UPPE(PZLXQ)+"'"

SELECT1

KZ1=""

DOCXPZKHC2WITHPZLXQ,KZ1

IFKZ1<>""

LOOP

ENDIF

DOCXPZKHC3WITHPZLXQ

CASECH=3

KMBM1=""

DOWHILE.T.

ACTIWINDPZCX1

@0,0SAY"请输入查询科目编码:"GETKMBM1PICTURE""

READ

DEACWINDPZCX1

IFLEN(TRIM(KMBM1))=0

LOOP

ELSE

EXIT

ENDIF

ENDDO

KMBM1="'"+KMBM1+"'"

B1="KMDM="+KMBM1+".AND.UPPE(PZRB)="+"'"+UPPE(PZLXQ)+"'"

SELECT1

KZ1=""

DOCXPZKHC2WITHPZLXQ,KZ1

IFKZ1<>""

LOOP

ENDIF

DOCXPZKHC3WITHPZLXQ

CASECH=4

C11=0

ACTIWINDPZCX1

@0,0SAY"请输入查询金额:"GETC11PICTURE".99"

READ

DEACWINDPZCX1

B1="JE="+STR(C11,12,2)+".AND.UPPE(PZRB)="+"'"+UPPE(PZLXQ)+"'"

SELECT1

KZ1=""

DOCXPZKHC2WITHPZLXQ,KZ1

IFKZ1<>""

LOOP

ENDIF

DOCXPZKHC3WITHPZLXQ

CASECH=5

DOWHILE.T.

A111=0

A112=0

C11=""

C12=0

ACTIWINDPZCX1

@0,0SAY"输入查询要求:日期日至日"

@1,0SAY"凭证号号至号"

@0,17GETB11

@0,27GETB12

@1,17GETA111PICTURE"9999"

@1,27GETA112PICTURE"9999"

READ

DEACWINDPZCX1

IFA111>A112.OR.B11>B12.OR.A111=0.OR.A112=0

LOOP

ELSE

EXIT

ENDIF

ENDDO

B0="'"+DTOC(B11)+"'"

B2="'"+DTOC(B12)+"'"

B1="RQ>=CTOD("+B0+").AND.RQ<=CTOD("+B2+").AND.BH>="+"'"+;

STR(A111,4,0)+"'"+".AND.BH<="+"'"+STR(A112,4,0)+"'"+;

".AND.UPPE(PZRB)="+"'"+UPPE(PZLXQ)+"'"

SELECT1

KZ1=""

DOCXPZKHC2WITHPZLXQ,KZ1

IFKZ1<>""

LOOP

ENDIF

DOCXPZKHC3WITHPZLXQ

CASECH=6

KMBM1=""

RQ1=0

RQ2=0

DOWHILE.T.

ACTIWINDPZCX1

@0,1SAY"请输入查询科目代码:"GETKMBM1PICTURE"9999999"

READ

DEACWINDPZCX1

IFKMBM1=""

LOOP

ELSE

EXIT

ENDIF

ENDDO

SELECT3

SEEKKMBM1

IFEOF()

ACTIWINDPZCX1

@0,0SAY"查无此科目码!按任一键返回!"

WAIT""

DEACWINDPZCX1

LOOP

ENDIF

DOWHILE.T.

ACTIWINDPZCX1

@0,0SAY"请输入查询期限从日至日"

@0,17GETRQ1PICTURE"99"VALIDRQ1>=1.AND.RQ1<=31

@0,24GETRQ2PICTURE"99"VALIDRQ2>=1.AND.RQ2<=31

READ

DEACWINDPZCX1

IFRQ1>RQ2.OR.RQ1=0.OR.RQ2=0

LOOP

ELSE

EXIT

ENDIF

ENDDO

DOCXPZKHC4

CASECH=7

RETURN

ENDCASE

ENDDO

RETURN

*:EOF:CXPZKHC1.PRG

*******************

*查询凭证子程序CXPZKHC2.PRG*

*******************

PARAMETERSPZLXQ,KZ1

DEFIWINDPZCX21FROM18,20TO20,60SHADCOLOSCHE12

SELECT1

GOTOP

LOCAFOR&B1

IFEOF()

ACTIWINDPZCX21

@0,0SAY"查无此凭证!按任一键返回!"

WAIT""

DEACWINDPZCX21

KZ1="N"

RETURN

ENDIF

PZH1=SPACE(4)

DOWHILE.NOT.EOF()

IFPZH1(I1)<>BH

I1=I1+1

PZH1(I1)=BH

ENDIF

CONTINUE

ENDDO

RETURN

**********************

*查询凭证子程序CXPZKHC3.PRG*

**********************

PARAPZLXQ

SELE12

USEDATA\ZWKLK

MDWMC=DWMC

SELECT1

J=2

DOWHILEJ<=I1

LOCATEFORBH=PZH1(J).AND.PZRB=PZLXQ

IFLOWER(PZLXQ)="S"

LX="收款"

ELSE

IFLOWER(PZLXQ)="F"

LX="付款"

ELSE

LX="转帐"

ENDIF

ENDIF

@1,35SAYLX+"凭证"

LINE1="单位:"+TRIM(MDWMC)+""+NN+"年"+YY+"月"+RR+"日"+"第"+BH+"号"

LINE2="┏━━━━━━━━━┳━━━━━━━━━━━┳━┳━━━━━━┓"

LINE3="┃摘要┃科目名称┃JD┃金额┃"

LINE4="┣━━━━━━━━━╋━━━━━━━━━━━╋━╋━━━━━━┫"

@2,0SAYLINE1

@3,0SAYLINE2

@4,0SAYLINE3

@5,0SAYLINE4

PZH1(J)=BH

I=5

DOWHILE.NOT.EOF().AND.BH=PZH1(J).AND.PZRB=PZLXQ

SELECT3

STORE""TOKMMC1,KMMC2,KMMC3

IFLEN(TRIM(A->KMDM))=3

SEEKA->KMDM

KMMC1=TRIM(KMMC)

ELSE

IFLEN(TRIM(A->KMDM))=5

SEEKLEFT(A->KMDM,3)

KMMC1=TRIM(KMMC)

SEEKA->KMDM

KMMC2=TRIM(KMMC)

ELSE

IFLEN(TRIM(A->KMDM))=7

SEEKLEFT(A->KMDM,3)

KMMC1=TRIM(KMMC)

SEEKLEFT(A->KMDM,5)

KMMC2=TRIM(KMMC)

SEEKA->KMDM

KMMC3=TRIM(KMMC)

ELSE

SEEKLEFT(A->KMDM,3)

KMMC1=TRIM(KMMC)

SEEKLEFT(A->KMDM,5)

KMMC2=TRIM(KMMC)

SEEKLEFT(A->KMDM,7)

KMMC3=TRIM(KMMC)

SEEKA->KMDM

KMMC3=KMMC3+TRIM(KMMC)

ENDIF

ENDIF

ENDIF

SELECT1

IFI<=12

I=I+1

@I,0SAY"┃"+SUBS(ZY,1,18)

@I,20SAY"┃"+TRIM(KMMC1)+"-"+TRIM(KMMC2)+"-"+TRIM(KMMC3)

IFLOWER(JD)="J"

@I,56SAY"┃"+"借"+"┃"+STR(JE,12,2)+"┃"

ELSE

@I,56SAY"┃"+"贷"+"┃"+STR(JE,12,2)+"┃"

ENDIF

ELSE

@ROW(),0SAY"┗━━━━━━━━━┻━━━━━━━━━━━┻━┻━━━━━━┛"

@ROW()+1,20SAY"阅毕,按任一键继续"

WAIT""

CLEA

@1,35SAYLX+"凭证"

@2,0SAYLINE1

@3,0SAYLINE2

@4,0SAYLINE3

@5,0SAYLINE4

I=6

@I,0SAY"┃"+SUBS(ZY,1,18)

@I,20SAY"┃"+TRIM(KMMC1)+"-"+TRIM(KMMC2)+"-"+TRIM(KMMC3)

IFLOWER(JD)="J"

@I,56SAY"┃"+"借"+"┃"+STR(JE,12,2)+"┃"

ELSE

@I,56SAY"┃"+"贷"+"┃"+STR(JE,12,2)+"┃"

ENDIF

ENDIF

SKIP

ENDDO

@I+1,0SAY"┗━━━━━━━━━┻━━━━━━━━━━━┻━┻━━━━━━┛"

@I+2,10SAY"第"+LTRIM(RTRIM(STR(J-1)))+"张"

@I+3,10SAY"按'R'键返屏!'Q'键退出!其它键继续..."

WAIT""TOF1

IFUPPE(F1)="Q"

CLEA

RETURN

ENDIF

CLEA

IFUPPE(F1)="R"

J=J-2

ENDIF

IFJ<1

J=1

ENDIF

J=J+1

ENDDO

IFJ=2

RETURN

ENDIF

@I+3,8SAY"查询完毕,按任一键返回"

WAIT""

@I+3,8SAYSPACE(70)

RETURN

第五章登记帐薄程序分析与设计

第一节登记帐薄程序分析

在凭证输入结束后即需要用凭证数据来更新科目余额文件中相应科目的发生额数

据项和累计发生额数据项,并计算出期末余额数据项,由于凭证数据中相同科目

的业务不止一笔,因此,在更新数据之前,即要将凭证数据按科目代码进行汇总

,将汇总的结果来对科目余额文件中相应的科目余额数据项进行更新操作,从而

形成最新的科目余额数据,然后根据逐级汇总的方法,下级科目汇总后生成上级

科目余额数据,这就是登记帐薄的过程。这个过程有两个主要步骤,一是凭证汇

总,二是按科目逐级汇总。

只有明细科目的数据是从临时汇总库得到的,其它的数据都是由下级科目经汇总

后得到的,在登记帐薄程序中所要用到的数据库有PZKHC.DBF文件(未登帐凭证数

据)、KMYE.DBF(科目余额)、DMMCK.DBF(单位往来帐余额文件)和PZK.DBF(已登帐

凭证文件),另外就是一些临时用汇总文件,临时用汇总文件的文件结构与凭证库

文件结构相同,这些文件的内容如下所示:

凭证库文件结构

1RQ日期D8

2BH凭证号C4

3KMDM科目代码C113:2:2:2:2与科目代码库的内容一致

4ZY摘要C24

5JE金额N122

6FDJ附单据N2

7PZRB凭证类别C1S,F,Z

8JD借贷C1J,D

9PJH单位代码C10与单位往来帐的一致

科目余额库文件结构

1RQ(日期)日期型8

2KMDM(科目代码)字符型113:2;2:2:2

3KMMC(科目名称)字符型12

4NCYE(年初余额)数值型122

5NCLX(年初类型)字符型12J,D

6QCYE(期初余额)数值型142

7QCLX(期初类型)字符型1J,D

8JFF(借方发生)数值型142

9DFF(贷方发生)数值型142

10JFLJ(借方累计)数值型142

11DFLJ(贷方累计)数值型142

12QMYE(期末余额)数值型142

13QMLX(期末类型)字符型1J,D

14KMRB(科目待征)字符型1H汇总型,M明细型

单位往来帐文件结构

1PJH单位编号字符型10

2DWMC单位名称字符型24

3QCYE期初余额数字型122

4QCLX期初类型字符型1

5JFF借方发生额数字型122

6DFF贷方发生额数字型122

7JFLJ借方累计额数字型122

8DFLJ贷方累计额数字型122

9QMYE期末余额数字型122

10QMLX期末类型字符型1

第二节登记帐薄程序设计

文件被打开的工作区间是:

A区:凭证文件(未登帐凭证文件)PZKHC.DBF

B区:凭证文件(已登帐凭证文件)PZK.DBF

C区:科目余额文件KMYE.DBF

D区:单位往来帐文件DWMC.DBF

E区:单位往来帐凭证文件

***************

*更新帐薄GXZP.PRG*

***************

DEFIWINDGXZPFROM4,20TO16,60SHADCOLOSCHE14DOUBL

DEFIWINDGXZP1FROM18,20TO20,60SHADCOLOSCHE12

ACTIWINDGXZP

YY="N"

@0,1SAY"登计帐簿否Y/N?"GETYYPICTURE"X"

READ〖LM〗

〖KH14*2〗[JZ]图5.2

IFUPPER(YY)<>"Y"

DEACWINDGXZP

RETURN

ENDIF

SELECT9

USEBAK\KMYEBFINDEXBAK\KMYEBF1

DELETEALL

PACK

APPENDFROMDATA\KMYE

USE

SELECT9

USEBAK\DMMCKBFINDEXBAK\DMMCKBF1

DELETEALL

PACK

APPENDFROMDATA\DMMCK

USE

SELECT3

REINDEX

SELECT1

SETINDETODATA\PZKHC2

REINDEX

SELECT4

REINDEX

IFFILE("MKMHZJ.DBF")

ERASEMKMHZJ.DBF

ENDI

IFFILE("MKMHZD.DBF")

ERASEMKMHZD.DBF

ENDI

SELECT1

PZH1=BH

GOBOTTOM

PZH2=BH

IFRECCOUNT()=0

ACTIWINDGXZP1

@0,1SAY"凭证缓冲文件没有记录,按任意键退出!"

WAIT""

DEACWINDGXZP1

DEACWINDGXZP

RETURN

ENDIF

MDWMC=""

@1,1SAY"正在进行汇总"+TRIM(MDWMC)+"记帐凭证..."

IFFILES("KMHZJ.DBF")

ERASEKMHZJ.DBF

ENDIF

IFFILES("KMHZD.DBF")

ERASEKMHZD.DBF

ENDIF

SELECT1

TOTALONKMDMTOKMHZJFORUPPER(JD)="J"FIELDSJE

TOTALONKMDMTOKMHZDFORUPPER(JD)="D"FIELDSJE

TOTALONPJHTOMKMHZJFORUPPER(JD)="J";

.AND.TRIM(PJH)<>SPACE(LEN(TRIM(PJH)))FIELDSJE

TOTALONPJHTOMKMHZDFORUPPER(JD)="D";

.AND.TRIM(PJH)<>SPACE(LEN(TRIM(PJH)))FIELDSJE

SELECT0

USEKMHZJ

INDEXONKMDMTOKMHZJ1

SETINDEXTOKMHZJ1

SELECT0

USEKMHZD

INDEXONKMDMTOKMHZD1

SETINDEXTOKMHZD1

SELECT0

USEMKMHZJ

INDEXONPJHTOMKMHZJ1

SETINDEXTOMKMHZJ1

SELECT0

USEMKMHZD

INDEXONPJHTOMKMHZD1

SETINDEXTOMKMHZD1

@2,1SAY"正在更新科目余额文件的本期发生额..."

SELECT3

UPDAONKMDMFROMKMHZJREPLJFFWITHJFF+KMHZJ->JE,;

JFLJWITHJFLJ+KMHZJ->JE,RQWITHRQRANDOM

UPDAONKMDMFROMKMHZDREPLDFFWITHDFF+KMHZD->JE,;

DFLJWITHDFLJ+KMHZD->JE,RQWITHRQRANDOM

PH="Y"

@3,1SAY"正在汇总余额文件的本期发生额.."

DOGXFSEWITH"F",PH

IFUPPER(PH)<>"Y"

SELECTKMYE

DELETEALL

PACK

APPENDFROMBAK\KMYEBF

SELECTDMMCK

DELETEALL

PACK

APPENDFROMBAK\DMMCKBF

ACTIWINDGXZP1

@0,1SAY"本次做帐不成功,请检查凭证,按任意键退出"

WAIT""

DEACWINDGXZ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论