1、会计软件分析与设计会计软件分析与设计第一章 帐务处理程序分析学习目的与要求:帐务核算系统是会计核算软件中使用最为广泛、最为重要的一个子系统。本章以系统开发过程为主线,简要介绍各过程的任务、要求及注意事项。经过本章的学习,要求读者对帐务处理系统的开发过程及每个过程所涉及的原理有一个初步的了解,明白各个过程完成的内容及任务对以后工作的重要性。内容提要第一节 会计工作现状调查一、系统工作状况调查的主要内容、数据方面的调查。、处理内容方面的调查。、特殊事务方面的调查。、处理方式方面的调查。、代码方面的调查。二、企业一般采用的帐务处理程序、记帐凭证帐务处理程序、科目汇总表帐务处理程序、汇总记帐凭证帐务处
2、理程序、多栏式日记帐务处理程序三、会计工作状况调查的意义会计工作现状调查是进行系统初步设计的基础,如果会计工作现状没有调查清楚就进行系统设计,则可能出现许多问题,满足不了用户的需要和功能不全的问题就要使设计人员从头再来进行系统的调查,因此,设计人员应认真对待调查工作。第二节 系统规划一、系统规划的任务根据现状调查所获得的资料,首先应归纳出用户的基本需求,除满足用户提出的要求外,应说明还有哪些附加功能,对于不能满足的用户要求要说明原因,所有的系统功能要清楚,在计算机系统的配置,会计数据处理方法,系统开发的初步安排等方面进行规划,编写需求分析说明书。二、系统规划的内容、计算机系统的配置方面。、在信
3、息的处理方式方面。、在软件开发计划方面。第三节 概要设计一、概要设计的任务及意义概要设计是在系统可行性分析之后,为实现系统进行的技术设计,概要设计工作的好坏,直接影响到费用的多少,开发进度的快慢。二、概要设计的内容、系统要求。、系统目标的确定。、环境设计。、通用性设计。、保密性设计。、可维护性设计。、外部设计。、文件设计及其应考虑的因素数据的使用频度;数据的基本内容;记录格式;数据的流量;在某些时刻下,是否有两个及以上的程序使用数据;占用文件时,是对文件的全部记录进行处理,还是处理其中某一部分;文件及数据的保密度,允许哪些人存取数据,允许哪些人只读或禁止访问;文件名。第四节 详细设计一、详细设
4、计的任务、对概要设计的功能模块进行过程描述,开发一个能够直接转换成程序语言代码的软件表示,这种表示应当是无歧义且高度结构化的。2.为每个模块建立一个”软件开发卷宗”文件。二、详细设计阶段的实施步骤、将概要设计产生的构成软件系统的各个功能模块逐步细化,形成若干个程序模块。、采用详细设计工具对程序模块进行过程描述。、确定各个模块间的详细接口信息。、编写”程序设计说明书”。、按完成标志进行评审,如未发现异常问题,则处理结束,否则而进行修改,修改后再次评审,直至经过为止。三、详细设计的完成标志、详细地规定了各模块之间的接口,包括参数的形式和传递方式,上下层调用关系。、确定了模块内的算法及数据结构。四、
5、过程的结构化构造、过程的结构化与非结构化、过程的结构化应遵循的原则使用有限数量的基本逻辑结构;利用基本结构将过程组成容易识别的”块”;每块都有且只能有一个入口和一个出口;易于转换成程序代码;容易修改设计五、详细设计工具、图形工具,以图示方法描述模块处理过程。、语言工具,有伪代码或结构化英语来描述数据和处理过程。、表格工具,用表格来表示详细处理过程,这类工具适于处理逻辑十分复杂的条件和活动间的关联。、几种常见的详细设计工具:流程图;框图;判定树第五节 详细设计交付的文件一、程序设计说明书程序设计说明书又称详细设计说明书。编制目的是说明一个软件系统各层次中的每一个模块的设计考虑,其应考虑如下内容:
6、1.编写目的;2.程序系统的结构;3.程序设计说明(程序描述;功能;性能;输入项;输出项;算法;流程逻辑;接口;存贮分配;注释设计;限制条件;测试计划;尚未解决的问题)二、模块开发说明书模块开发说明书是在详细设计说明书经评审和批准后建立的,并在模块开发过程中逐步编写出来,它是管理人员监督开发进度并为以后的维护人员使用的技术文件,其主要内容如下:标题;模块开发情况(时间安排);功能说明;设计说明;源代码清单;测试说明;评审的结论第二章 用户界面程序设计 学习目的与要求:用户界面就是用户与计算机系统进行相互交流数据与信息的一些接口规范,用户界面的友好性直接关系到软件系统的质量。本章经过介绍数据输入
7、界面、菜单等有关内容,说明在进行系统友好界面设计时应遵循的一些基本规则及常见惯例,经过学习,要求读者掌握菜单概念及菜单选择的程序实现。内容提要 第一节 数据输入界面设计 一、用户界面及其设计要求、用户界面这一术语指的是用户和程序如何相互沟通,屏幕上的任何信息、文档资料以及键盘输入的命令都是用户界面的一部分,对屏幕设置,提示、菜单和联机帮助信息设计的好坏决定着用户界面是否高效、友好,也决定着软件是否能为用户接受,最佳的用户界面强调良好的屏幕设计,易于使用和用户友好。、用户界面设计时应考虑的一般原则:必须集成于系统设计之中,而不最后加上;减少击键次数来提高用户效率; 预测用户的下一步动作;提供错误
8、信息来帮助纠正错误;提供文档来减少培训时间;带有帮助信息;支持其它的输入装置。 二、输入数据程序设计要遵循如下原则: 、简明性、一致性、完整性、使用颜色的原则、输入格式 第二节 菜单和命令设计 一、菜单及其功能、菜单 系统将当前允许用户选择操作的功能名称在屏幕上显示出来,让用户选择并完成该功能的一种用户界面形式。、菜单的功能使不熟练的的用户熟练软件,即表述其功能和特性 提供可选项的清单 简化选择,从而防止产生错误 降低训练费用,因为菜单一步步引导用户完成任务 减少用户的记忆负担二、菜单式样 、水平上托式菜单。、竖直上托式。、下拉菜单。、全屏幕菜单。、图标式菜单(类WINDOWS风格)。三、菜单
9、设计的考虑及权衡 、设计按下ESC键将控制返回到上一级菜单。、同时提供亮条选择菜单及字母菜单选择。、考虑用户拥有使用过的其它软件的菜单风格。、提供快捷选择。四、菜单设计原则 、菜单设计所使用的名称要前后一致。、减少选项的数目,一般不要超过项。、减少菜单级数的数目,一般不要超过级。、提供快速返回键。、菜单选项的选项内容易于理解,一般不要使用技术性强的术语。 第四第 用户界面程序设计举例 一、下拉式菜单设计举例 CLEAR DO WHILE.T. 1, 1 PROMPT凭证输入” 1,10 PROMPT”查询” 1,20 PROMPT”记帐” 1,30 PROMPT”打印” 1,40 PROMPT
10、”系统设置” 1,50 PROMPT”月末结转” 1,60 PROMPT”数据库维护” 1,70 PROMPT”退出” MENU TO CHO DO CASE CASE CHO=1 SELECT 10 USE GQCW1 APPEND BLANK REPLACE BH WITH MXM,RR WITH凭证输入” ;RQ WITH MA1,SJ1 WITH TIME() SET COLOR TO GB 4,2 CLEAR TO 11,22 DOUBLE SET COLOR TO WIB 3,1 CLEAR TO 10,21 DOUBLE 5,3 PROMPT”1,采购单输入” 6,3 PROMP
11、T”2,领料单输入” 7,3 PROMPT”3,修改采购单” 8,3 PROMPT”4,修改领料单” 9,3 PROMPT”0,退出” MENU TO CHO1 DO CASE ENDCASEENDCASEENDDO二、全屏幕菜单设计举例三、全屏幕菜单设计举例2第三章 系统设置程序程序分析与设计 学习目的与要求:本章介绍系统设置模块中的系统人员管理、科目设置与管理、自动转帐设置、银行对账设置等功能模块的有关内容。经过本章的学习,要求读者对口令设置及校验、科目代码设置的意义、科目代码增删的有关原则、自动转帐设置的原理、银行对账设制的原理及实现要有一定的理解。内容提要第一节 系统人员管理及口令设置
12、 一、系统人员管理 、系统人员管理的意义、在帐务处理系统可设立如下一些岗位,各自具有一定的权限范围: (1)系统管理:可进行科目代码设置,系统人员管理、结帐、数据管理等功能的操作。(2)制单:可进行会计凭证的录入操作。(3)复核:可进行会计凭证的复核操作。(4)修改:可进行会计凭证的修改操作;(5)处理:可进行记帐、对帐等操作;(6)打印:可进行打印输出各种帐、证、表的操作。、人员设置数据库中应设置的数据项。二、口令的设置与修改。*口令修改模块 SET TALK OFF CLEAR IF FILE(”KL.DBF”) RESTORE FROM KL.DBF ADDI ENDTF JX=Y DO
13、 WHILE JX KL=KL+LTRIM(STR(K,3) KLM=KLM+LTRIM(STR(K,3) IF TYPE(&KLM)=UPPER(C) STORE UPPER(AAA)TO &KL STORE SPACE(30)TO &KLM ELSE STORE &KLM+SPAC(30-LFN(&KLM)TO &KLM ENDIF STORE CHR(ASC(SUBS(&KL、1、1)+50)+CHR(ASC(SUBS(&KL、2、1)+45); +CHP(ASC(SUBS(&KL、3、1)+40)TO &KL CLEAR 1,30 SAY”修改口令”+STR(K,2) 3,5 SAY”
14、原口令名为:”+&KLM 3,50 SAY”原口令为”+&KL 5,5 SAY”口令名改为:”GET &KLM 5,50 SAY”改口令为:”GET &KL 8,32 SAY”继续修改?”GET JX PICTUREY READ STORE TRIM(&KLM)TO &KLM STORE CHR (ASC(SUBS(&KL,1,1)-50)+CHR (ASC(SUBS(&KL 2.1)-45); +CHR(ASC(SUBS(&KL 3.1)-40)TO &KL K=K+1 ENDDO SAVE TO KL.DBF ALL LIKE KL* RETURN三、口令校验程序的设计应注意以下一些问题:
15、 、口令明码不能显示。、口令输入允许一定的出错次数。、口令密码的检验能够采用通用模块完成。、口令明码长度有一定的要求。、口令输入出错时的处理要恰当。第二节 科目设置与管理 一、设置科目代码的意义 、便于反映会计科目间的逻辑关系,便于分类、检索、加快计算机处理速度,利用会计科目代码的不同位数,能够反映会计科目间的逻辑关系。、减少数据含义的不确定性。、能够节省存储单元、提高运算速度和正确性。 、便于输入。二、科目代码的设置要求和编码方式 、科目代码设置要求 适合计算机处理;简明实用;要有系统性(一级科目代码位长3位,代码首位为1表示资产类科目;2表示负债类科目;3表示所有者权益类科目;4表示成本类
16、科目;5表示损益类科目);要有扩展性;单义性。、编码方式 会计科目的编码方式,一般采用群码,组码和顺序码等相结合的编码方式。 三、科目代码设置 、科目代码设置主控模块该模块是科目代码设置的主控模块,用户能够根据需求分别选择科目代码的增、删、改、查询、打印等功能,退出模块前,应根据总分类帐户与明细帐户平行登记的原理,将各明细科目自下向上逐级汇总,进行核对,判断总分类帐户的金额与其所属各明细分类帐户金额的合计数是否相等;还应根据资产等于负债加所有者权益的平衡关系,核对所有科目的借方余额是否等于贷方余额,以确保输入数据的正确性。 、增加科目的内容及注意事项应包括的内容主要有:科目代码、科目名称、科目
17、级别、科目类别、余额方向,年初余额、期初余额、借方发生额、贷方发生额、借方累计发生额、贷方累计发生额。系统正常运行时,如果某科目已记帐,在该科目下级增加新的明细科目,应考虑该科目下级各明细科目金额的合计数是否与该科目的金额相等。、科目代码设置主控模块DEFI WIND ZWSZ2 FROM 4,28 TO 15,50 SHAD COLO SCHE 14 DO WHILE .T.ACTI WIND ZWSZ2 0 , 2 SAY 科目维护控制模块 2 , 5 PROMPT 1:增加科目 3 , 5 PROMPT 2:单项查询 4 , 5 PROMPT 3:删除科目 5 , 5 PROMPT 4:
18、修改科目 6 , 5 PROMPT 5:全屏查询 7 , 5 PROMPT 6:打印科目表 8 , 5 PROMPT 0:退出 9 , 2 SAY 请选择 MENU TO CHO DEAC WIND ZWSZ2 DO CASE CASE CHO=1 DO ZWSZ21 CASE CHO=2 DO KMBRO CASE CHO=3 DO KMDE CASE CHO=4 DO KMXG CASE CHO=5 DO KMBRO1 CASE CHO=6 DO K2D CASE CHO=7 EXIT ENDCASE ENDDO DEAC WIND ZWSZ2 RETURN 、增加科目的程序实现、修改科目
19、模块程序设计时应考虑的问题主要有: 为方便操作、修改方式既可单一科目修改,也可对科目余额表进行浏览修改;被修改的科目应该没有被登帐,没有发生额和余额,避免造成会计核算的数据丢失或失真。、删除科目 用于删除无用的科目,既可是一级科目或控制科目,也可是明细科目。删除科目模块程序设计时考虑的问题主要有:1.如果删除的是明细科目,则要求该明细科目既无余额,也无发生额。2.若是一级科目(总帐科目)或控制性科目,则要求该科目本身,及其所属的所有明细科目都没有余额和发生额,且该一级科目或控制性科目被删除后,其所属的所有明细科目也自动被删除。第三节 自动转帐设置 一、自动转帐及其意义、自动转帐、机制凭证、自动
20、转帐分录、为什么要进行自动转帐设置二、自动转帐分录的分类 、第一类自动转帐分录其金额的大小与本月发生的任何经济业务无关,称为独立自动分录。独立自动分录能够在任何时候用于编制机制凭证,即能够在月初使用,也可能在月末使用。、第二类自动转帐分录其金额的大小与本月发生的业务有关,称为相关自动分录。相关自动分录只能在某些相关的经济业务发生后才能用来编制机制凭证。三、自动转帐分录的定义 、自动转帐分录文件的结构、自动转帐分录的定义第四节 银行对帐的设计 一、未达账项的类型及产生原因、未达账项的类型:银收我未收未达帐项;银付我未付未达帐项;我收银未收未达帐项;我付银未付未达帐项。、未达账项的产生原因:时间上
21、的延误;记录上的错误。二、银行对账模块应设置的功能、输入对帐单。经过此功能,把银行给企事业单位的对帐单输入计算机,存入”对帐单文件”。、初始银行未达帐项录入。经过此模块,把使用计算机辅助对帐前已存在的我有银无业务从银行存款余额调节表上摘录下来,存入”银行日记帐未达帐项文件”。、自动银行对帐。由计算机自动在”对帐单文件”和”银行日记帐未达帐项文件”中寻找完全相同的经济业务予以核销,所谓完全相同的经济业务是指经济业务发生的时间、内容、摘要、结算票据号、金额都相同的经济业务,由于同一笔业务在银行和单位日记帐上分别由不同的人记载,经济业务发生的时间,摘要等不可能一模一样,因此比较经济业务是否相同的标准
22、(也称匹配标准)只有票据号(如:支票号)和金额,对于没有票据号的经济业务,只能看金额是否相同,一般情况下,可由计算机先比较票据号和金额,核销掉相同的经济业务,剩下的经济业务再用金额作匹配标准进行匹配。 无论同时用票据号和金额作匹配标准,还是只用金额作匹配标准,都可能有下列几种可能:1.”对帐单文件”中一条业务记录只和”银行日记帐未达帐项”文件中一条业务记录相同。 2.”对帐单文件”中一条业务记录和”银行日记帐未达帐项文件”中多条业务记录相同。 3.”对帐单文件”中多条业务记录和”银行日记帐未达帐项文件”中一条业务记录相同。 4.”对帐单文件”中多条业务记录和”银行日记帐未达帐项文件”中多条业务
23、记录相同。 、手工核销未达帐项 有些经济业务是不可能经过”自动银行对帐”模块核销的,只能用强制的方式由人工核销。 四、银行对帐主程序DEFI WIND ZHDZDSR FROM 4,30 TO 12,50 SHAD COLO SCHE 14 DO WHILE .T. ACTI WIND ZHDZDSR B1=2 0, 2 SAY 对帐单处理 1 , B1 PROMPT 录入银行对帐单 2 , B1 PROMPT 查询修改对帐单 3 , B1 PROMPT 打印银行对帐单 4, B1 PROMPT 生成银行调节表 5 , B1 PROMPT 返 回 MENU TO YHDZ DO CASE CA
24、SE YHDZ=1 DO ZHSR CASE YHDZ=2 DO ZHCX CASE YHDZ=3 DEAC WIND ZHDZDSR DO ZHDY ACTI WIND ZHDZDSR CASE YHDZ=4 DEAC WIND ZHDZDSR DO SCDZD ACTI WIND ZHDZDSR CASE YHDZ=5 EXIT ENDCASE ENDDO DEAC WIND ZHDZDSR RETU 五、对帐单输入程序DEFI WIND ZHSR1 FROM 2,12 TO 17,68 SHAD COLO SCHE 14 DEFI WIND ZHSR2 FROM 18,20 TO 20,
25、60 SHAD COLO SCHE 12 DEFI WIND ZHSR3 FROM 18,20 TO 20,60 SHAD COLO SCHE 14 ACTI WIND ZHSR2 MY=N 0,0 SAY 银行对帐单数据将丢失!继续否Y/N? GET MY READ DEAC WIND ZHSR2 IF UPPE(MY)Y RETU ENDI ACTI WIND ZHSR3 0,0 SAY 帐号和金额同时为空则退出 SELE 10 USE DATAZHDZB INDE DATAZHDZB1 SELE 9 USE DATAZHSR INDE DATAZHSR1 ZAP DIME MJE1(10
26、),MJE2(10),MZH(10) DO WHILE .T. I=1 DO WHILE I=10 STOR 0.00 TO MJE1(I),MJE2(I) STOR SPACE(20) TO MZH(I) I=I+1 ENDD I=1 MZJE=0.0 ACTI WIND ZHSR1 0,0 SAY 银 行 对 帐 单 1,4 SAY 请输入总金额 GET MZJE PICT .99 2,1 SAY = 3,1 SAY 帐 号 收 入 付 出 DO WHILE I=10 I+3,1 GET MZH(I) I+3,25 GET MJE1(I) I+3,40 GET MJE2(I) READ I
27、F LEN(TRIM(MZH(I)=0.AND.(MJE1(I)=0.OR.MJE2(I)=0) DEAC WIND ZHSR1 DEAC WIND ZHSR3 SELE 9 USE SELE 10 USE RETU ENDI SELE 10 SEEK TRIM(MZH(I) IF EOF() ACTI WIND ZHSR2 0,0 SAY 帐号错,按任意继续! WAIT MJE1(I)=0 MJE2(2)=0 MZH(I)=SPACE(20) DEAC WIND ZHSR2 LOOP ENDI SELE 9 APPE BLAN REPL ZH WITH MZH(I),JE1 WITH MJE
28、1(I),JE2 WITH MJE2(I) REPL ZJE WITH MZJE I=I+1 ENDD DEAC WIND ZHSR1 ACTI WIND ZHSR3 MX=Y 0,0 SAY SPACE(55) 0,0 SAY 继续输入否Y/N? GET MX READ DEAC WIND ZHSR3 IF UPPE(MX)Y SELE 10 USE SELE 9 USE RETU ELSE LOOP ENDI ENDD 习题: 1.试编写”科目代码设置”主控模块的程序。 2.试编写”修改科目”模块的程序。 3.试编写”删除科目”模块的程序。 4.如果口令存放于数据库中,”口令设置”和”口第
29、四章 凭证处理程序分析与设计 第一节 凭证的手工处理 一、凭证的分类、凭证一般分为原始凭证和记帐凭证、记帐凭证一般分为收款凭证、付款凭证和转帐凭证。记帐凭证一般具有以下内容:1.凭证的名称。 2.填制凭证的日期和编号。 3.经济业务的内容摘要。 4.经济业务的金额。 5.填制凭证的单位及有关人员。 6.应借应贷帐户的名称。 7.所附原始凭证的张数和过帐备注。 二、会计人员对记帐凭证的处理程序大至如下: 1.根据原始凭证填制记帐凭证; 2.审核凭证 ,审查其合法性、正确性; 3.修改凭证,对错误的凭证进行修改; 4.查阅凭证,查阅已填制的凭证; 5.传递凭证,从填制或取得会计凭证到将其归档保存为
30、止,在有关业务部门之间按照规定的时间,路线传递处理的程序。第二节 电算化凭证处理 一、电算化凭证处理的功能1.录入 为用户提供: 显示凭证表格;灵活的编辑手段;保存用户录入的凭证;提供一定的检控功能;返回主控模块;2.查询 为用户提供:用户查询某个特定凭证;按凭证编号查询;按任一条件查询满足条件的第一张凭证;按任意组合条件查询满足条件的第一张凭证(凭证编号不能参加条件组合);用户查询多张凭证;按任一条件逐个查询满足条件的凭证;按任意组合条件逐个查询满足条件的凭证;暂存查询信息;3、修改及删除 4、凭证输出 二、电算化凭证处理与手工凭证处理的区别: 1.信息项不完全相同2.凭证的编号方法不一样3
31、.存储形式不同4.存储空间的利用率不一样第三节 凭证处理程序的安全可靠性 一、凭证出错的来源、人为造成、(系统)处理程序出错。、电算化凭证处理模块的安全可靠性控制的措施:1.严格的多级安全控制 用户级;凭证级2.全方位的录入检测二、数据安全可靠性的实施措施、逻辑校验法 利用数据间的逻辑关系、平衡校验法 利用”有借必有贷,借贷必相等”的会计基本准则。 、查询校验法 利用数据的相对稳定性、关联校验法 利用凭证数据的对应不可能性、重复校验法 利用概率统计的原理第四节 凭证处理程序的设计 一、系统应满足的要求 1.稳定性 系统应能保证所有的处理稳定、处理的结果不随时间波动,仅仅依赖于输入。2.一致性
32、系统内的数据必须保持一致。3.良好的用户界面 用户界面要求方便适用、美观简洁。4.灵活性 不受时间、过程的限制。5.完备性 提供一切有关凭证处理的功能,并加以强化。6.快速 二、凭证处理模块的设计 第五节 凭证处理程序的实现 一、凭证录入 * * 凭证输入总控程序 PZSR.PRG * PARA W_TITLE,BAR_NUM HIDE MENU MAINMENU SET COLOR OF SCHEME 13 TO RGB(150,150,150,50,50,50),;RGB(150,150,150,50,50,50),RGB(150,150,150,150,0,0),RGB(150,150,
33、150,50,50,50) DEFINE WINDOW SZ FROM 1,0 TO 23,79 FOOTER +W_TITLE+ COLOR SCHEME 13 ACTIVATE WINDOW SZ CHO=1 DO CASE CASE BAR_NUM=1 DO PZSR11 CHO=0 CASE BAR_NUM=2 DO PZSR22 CHO=0 CASE BAR_NUM=3 DO PZSR4 CHO=0 CASE BAR_NUM=5 PZLXQ=S DO CXPZKHC1 WITH PZLXQ CASE BAR_NUM=6 PZLXQ=F DO CXPZKHC1 WITH PZLXQ C
34、ASE BAR_NUM=7 PZLXQ=Z DO CXPZKHC1 WITH PZLXQ CASE BAR_NUM=9 DO PZXG11 SELE 1 DELE ALL FOR JE=0 PACK CHO=0 CASE BAR_NUM=10 DO PZXG22 SELE 1 DELE ALL FOR JE=0 PACK CHO=0 CASE BAR_NUM=11 DO PZXG4 SELE 1 DELE ALL FOR JE=0 PACK CHO=0 CASE BAR_NUM=13 DO DYPZ CASE BAR_NUM=14 DO DYPZMXB1 CASE BAR_NUM=15 DO
35、DYPZHZB ENDCASE IF CHO=0 DO PZKBF ENDIF CLEAR WINDOW SZ RETURN *: EOF: PZSR.PRG * * 收款凭证输入程序 PZSR11.PRG * SET TALK OFF DEFI WIND PZSR1 FROM 19,20 TO 21,60 SHAD COLO SCHE 12 DEFI WIND PZSR2 FROM 19,10 TO 21,70 SHAD COLO SCHE 14 AN = Y PUBLIC DIMENSION ZY(25) , DFKM(25) , JE(25) , XMH(25) DO WHILE UPP
36、ER(AN)=Y JFKM1 = FDJ1 = 0 BH1 = RQ1 = MRQ MRB = S DO ZWBH WITH BH1 MY = 1 MX = Y MHJ = 0 MHJ1 = 0 MHJ2 = 0 MX = Y DO WHILE UPPER(MX)=Y I = 1 DO WHILE I=25 STORE SPACE(24) TO ZY(I) DFKM(I) = SPACE(11) XMH(I) = SPACE(10) JE(I) = 0.00 I = I+1 ENDDO CLEAR DO WHILE .T. CLEAR TYPE A2 = XXXXXXXXXXXXXXXXXXX
37、XXXXX A3 = 999# A5 = XXXXXXXXXX A6 = .99 DO WHILE .T. SET FORMAT TO PZ12 READ IF READKEY()=36.OR.READKEY()=292 EXIT ELSE LOOP ENDIF ENDDO SET FORMAT TO 17 , 58 GET FDJ1 PICTURE 99 READ IF JFKM1= .AND.BH1= CLEAR RETURN ENDIF IF MY=1 SELECT 1 SEEK &BH1+S IF .NOT.EOF() ACTI WIND PZSR1 0 , 1 SAY 重号,按任意键
38、重新输入 WAIT DEAC WIND PZSR1 LOOP ENDIF SELECT 2 SEEK &BH1+S IF .NOT.EOF() ACTI WIND PZSR1 0 , 1 SAY 重号,按任意键重新输入 WAIT DEAC WIND PZSR1 LOOP ENDIF ENDIF SELE 1 IF LEN(TRIM(BH1)4 ACTI WIND PZSR1 0 , 1 SAY 编号长度不够4位,按任键重新输入! WAIT DEAC WIND PZSR1 LOOP ENDIF SELECT 3 IF JFKM1= LOOP ELSE SEEK JFKM1 IF .NOT.EOF
39、() ACTI WIND PZSR2 0 , 1 SAY 借方科目名称: +TRIM(KMMC)+ 按任意键继续 WAIT DEAC WIND PZSR2 ENDIF IF EOF().OR.UPPE(KMRB)=H ACTI WIND PZSR1 0 , 1 SAY 借方科目错,按任意键重新输入 WAIT DEAC WIND PZSR1 LOOP ENDIF ENDIF I = 1 DO WHILE I=25 IF DFKM(I) MHJ2 = MHJ2+JE(I) MHJ1 = MHJ2 ENDIF I = I+1 ENDDO 15 , 61 GET MHJ1 PICTURE #.# RE
40、AD IF MHJ1MHJ2 ACTI WIND PZSR1 0 , 1 SAY 输入金额错,按任意键继续 WAIT DEAC WIND PZSR1 MHJ2 = MHJ LOOP ENDIF FLAG = 0 SELECT 3 J = 1 DO WHILE J=25 IF JE(J)0.00 IF TRIM(DFKM(J) SEEK TRIM(DFKM(J) IF .NOT.EOF() MKMDM = TRIM(DFKM(J) KMMC1 = DO ZW_KMMC WITH MKMDM , KMMC1 IF LEN(TRIM(KMMC1)0 ACTI WIND PZSR2 0 , 1 SAY
41、 贷方科目名称: +TRIM(KMMC1)+ 按任意键继续 WAIT DEAC WIND PZSR2 ENDI ENDIF IF EOF().OR.UPPE(KMRB)=H FLAG = 1 EXIT ENDIF ENDIF ENDIF J = J+1 ENDDO IF FLAG=1 ACTI WIND PZSR1 0 , 1 SAY TRIM(DFKM(J)+贷方科目代码错,按任意键重新输入 WAIT DEAC WIND PZSR1 MHJ2 = MHJ LOOP ENDIF FLAG3 = 0 SELECT 4 I = 1 DO WHILE I=25 IF LEN(TRIM(XMH(I)0
42、 SEEK TRIM(XMH(I) IF EOF() ACTI WIND PZSR1 0 , 1 SAY 编号:+TRIM(XMH(I)+错,按任意键重新输入 WAIT DEAC WIND PZSR1 FLAG3 = 1 EXIT ENDIF IF LEN(TRIM(XMH(I)LEN(TRIM(PJH) ACTI WIND PZSR1 0 , 1 SAY 编号:+TRIM(XMH(I)+错,按任意键重新输入 WAIT DEAC WIND PZSR1 FLAG3 = 1 EXIT ENDIF ACTI WIND PZSR2 0 , 1 SAY 名称:+TRIM(DWMC)+ 按任意键继续 WAIT DEAC WIND PZSR2 ENDIF I = I+1 EN