资源描述
n6.1 账务处理与报表系统设计概述账务处理与报表系统设计概述n6.2 会计科目设置会计科目设置n6.3 记账凭证输入处理记账凭证输入处理n6.4 登记现金日记账登记现金日记账n6.5 登记总账登记总账n6.6 损益表数据自动生成及输出损益表数据自动生成及输出n6.7 账务处理与报表系统的菜单设计账务处理与报表系统的菜单设计n6.8 MIS操作维护设计与实现操作维护设计与实现n6.9 MIS用户登录的设计与实现用户登录的设计与实现第第6 6章章 账务处理与报表系统的设计与实账务处理与报表系统的设计与实现现7/23/20241管理信息系统:李国红主讲6.1 账表账表MIS概述概述(1/4)n1.1.账表账表MISMIS的任务的任务:(P153)7/23/20242管理信息系统:李国红主讲6.1 账表账表MIS概述概述(2/4)2.2.账务与报表处理的账务与报表处理的DFD:DFD:(P154)7/23/20243管理信息系统:李国红主讲6.1 账表账表MIS概述概述(3/4)n3.3.账务处理系统的主要功能模块账务处理系统的主要功能模块:7/23/20244管理信息系统:李国红主讲6.1 账表账表MIS概述概述(4/4)n4.VFP4.VFP开发环境设置与相关操作开发环境设置与相关操作nVFP系统环境设置系统环境设置n主要操作和常用命令、常用函数主要操作和常用命令、常用函数n项目管理器的使用项目管理器的使用7/23/20245管理信息系统:李国红主讲6.2 会计科目设置会计科目设置n6.2.1 科目输入科目输入n6.2.2 科目查询与修改科目查询与修改n6.2.3 科目删除科目删除n6.2.4 记录定位及信息提示框记录定位及信息提示框7/23/20246管理信息系统:李国红主讲6.2.1 科目输入科目输入1.1.科目输入包括设置会计科目和输入期初数。科目输入包括设置会计科目和输入期初数。2.2.建立会计科目表文件建立会计科目表文件kjkm.dbfkjkm.dbf,表中包括表中包括kmbhkmbh、kmmckmmc、jdfxjdfx、qcyeqcye四个字段,数据通过表单界面输入。四个字段,数据通过表单界面输入。3.3.设计设计表单表单,含科目编号、科目名称、借贷方向、期初余额,含科目编号、科目名称、借贷方向、期初余额等的标签及其文本框。其中期初余额文本框应设置为数等的标签及其文本框。其中期初余额文本框应设置为数值型数据类型的文本框。值型数据类型的文本框。4.4.编程。应考虑:科目编号不能为空(位数不低于编程。应考虑:科目编号不能为空(位数不低于4 4)、科)、科目编号不能重复、多于目编号不能重复、多于4 4位的科目必须有位的科目必须有上级科目上级科目。5.5.功能演示功能演示6.6.考虑科目输入的考虑科目输入的基本过程基本过程。7.7.用用VFPVFP实现账表实现账表MISMIS的系统初始化。的系统初始化。有关命令及函数有关命令及函数。转科目输入程序流程7/23/20247管理信息系统:李国红主讲Kjkm.dbfKjkm.dbf数据表的结构数据表的结构返科目输入返查询修改返科目删除7/23/20248管理信息系统:李国红主讲科目输入用户界面科目输入用户界面7/23/20249管理信息系统:李国红主讲上级科目假设n假设:从二级科目开始,某科目的代码去掉从二级科目开始,某科目的代码去掉最后二位即为该科目的上级科目。最后二位即为该科目的上级科目。n一级科目:一级科目:1001、1002、1101、n二级科目:二级科目:100201、100202、n三级科目:三级科目:10020191、10020192、n余类推。余类推。7/23/202410管理信息系统:李国红主讲科目输入的基本过程kmbhkmmcjdfxqcye 1001现金现金12000.001002银行存款银行存款11256000.007/23/202411管理信息系统:李国红主讲有关命令及函数、属性、方法有关命令及函数、属性、方法nset exact on|offnusenlocate for nappend blanknreplace with nlen()nalltrim()nsubs()或或 left()nspace()nmessagebox()nfound()n对象对象.valuen对象对象.setfocusn对象对象.refreshn对象对象.release7/23/202412管理信息系统:李国红主讲a=messagebox(a=messagebox(真的想退出吗真的想退出吗?,4+48,?,4+48,提示提示)n单击单击“是是”,a=6n单击单击“否否”,a=7a=7a=67/23/202413管理信息系统:李国红主讲a=messagebox(a=messagebox(要提示的信息要提示的信息!,0+48,0+48,提示提示)a=1转“科目输入”7/23/202414管理信息系统:李国红主讲会会计计科科目目输输入入程程序序流流程程7/23/202415管理信息系统:李国红主讲用用VFPVFP实现账表实现账表MISMIS的科目输入的科目输入“确定确定”按钮的按钮的ClickClick过程过程nset exact onnb=0nuse kjkmnkmbh1=allt(thisform.text1.value)nlength1=len(allt(thisform.text1.value)nif length14n b=messagebox(请输入不低于四位的科目编号请输入不低于四位的科目编号!,48)n thisform.text1.setfocusnelsen loca for allt(kmbh)=kmbh1n 7/23/202416管理信息系统:李国红主讲辅助功能辅助功能文本框文本框单击被清空单击被清空nText2、Text3的的Click事件事件nThis.value=space(0)nText4的的Click事件事件nThis.value=07/23/202417管理信息系统:李国红主讲取消本次输入取消本次输入“取消取消”按钮的按钮的ClickClick过程过程nthisform.text1.value=spac(0)nthisform.text2.value=spac(0)nthisform.text3.value=spac(0)nthisform.text4.value=0.00nthisform.text1.setfocus7/23/202418管理信息系统:李国红主讲退出输入模块退出输入模块“退出退出”按钮的按钮的ClickClick过程过程na=messagebox(真的想退出吗真的想退出吗?,4+48,提示提示)nif a=6n thisform.releasenendifnif messagebox(真的想退出吗真的想退出吗?,4+48,提示提示)=6n thisform.releasenendif7/23/202419管理信息系统:李国红主讲进一步思考的问题n有关有关a=messagebox(“XXXXXX”,m+48,“a=messagebox(“XXXXXX”,m+48,“提示提示”)”)n见见(P185-186)(P185-186)7/23/202420管理信息系统:李国红主讲(P185-186)(P185-186)b=messagebox(XXXXXXXXXXXX!,m+48,b=messagebox(XXXXXXXXXXXX!,m+48,提示提示)nm=0n单击单击“确定确定”,b=1nm=1n单击单击“确定确定”,b=1n单击单击“取消取消”,b=27/23/202421管理信息系统:李国红主讲(P185-186)(P185-186)b=messagebox(XXXXXXXXXXXX!,m+48,b=messagebox(XXXXXXXXXXXX!,m+48,提示提示)nm=2n单击单击“终止终止”,b=3n单击单击“重试重试”,b=4n单击单击“忽略忽略”,b=5nm=5n单击单击“重试重试”,b=4n单击单击“取消取消”,b=27/23/202422管理信息系统:李国红主讲(P185-186)(P185-186)b=messagebox(XXXXXXXXXXXX?,m+48,b=messagebox(XXXXXXXXXXXX?,m+48,提示提示)nm=3n单击单击“是是”,b=6n单击单击“否否”,b=7n单击单击“取消取消”,b=2nm=4n单击单击“是是”,b=6n单击单击“否否”,b=77/23/202423管理信息系统:李国红主讲(P185-186)(P185-186)a=messagebox(a=messagebox(XXXXXXXXXXXXXXXXXXXXXXXX,m+48,m+48,提示提示)n单击单击“确定确定”,a=1n单击单击“取消取消”,a=2n单击单击“终止终止”,a=3n单击单击“重试重试”,a=4n单击单击“忽略忽略”,a=5n单击单击“是是”,a=6n单击单击“否否”,a=77/23/202424管理信息系统:李国红主讲本节小结n账表账表MIS的任务及模块结构的任务及模块结构n账表账表MIS的系统初始化的系统初始化nkjkm.dbf表文件表文件n输入表单界面输入表单界面n会计科目设置流程会计科目设置流程n科目设置的科目设置的VFP实现实现n进一步思考问题进一步思考问题7/23/202425管理信息系统:李国红主讲本节结束!7/23/202426管理信息系统:李国红主讲上机步骤n n在在在在F:F:盘以自已的学号或姓名建立文件盘以自已的学号或姓名建立文件盘以自已的学号或姓名建立文件盘以自已的学号或姓名建立文件夹。夹。夹。夹。n n打开打开打开打开VFPVFP,利用,利用,利用,利用 工具,选项工具,选项工具,选项工具,选项 将新建将新建将新建将新建文件夹所在目录设置为默认目录。文件夹所在目录设置为默认目录。文件夹所在目录设置为默认目录。文件夹所在目录设置为默认目录。n n建表(文件名不要用建表(文件名不要用建表(文件名不要用建表(文件名不要用“表表表表1.dbf”1.dbf”)。)。)。)。n n创建表单,输入代码。创建表单,输入代码。创建表单,输入代码。创建表单,输入代码。n n运行。运行。运行。运行。n n关机关机关机关机。7/23/20247/23/20242727管理信息系统:李国红主讲管理信息系统:李国红主讲6.2.2 科目查询与修改科目查询与修改n1、数据表的结构:同、数据表的结构:同Kjkm.dbfn2、科目查询与修改表单界面、科目查询与修改表单界面设计设计n3、科目查询与修改功能目标、科目查询与修改功能目标n指定指定查询条件查询条件n查询与修改查询与修改操作操作n退出:退出:thisform.releasen4、功能的实现、功能的实现7/23/202428管理信息系统:李国红主讲查询与修改表单界面返回7/23/202429管理信息系统:李国红主讲指定查询条件 n表单的表单的Load与与Unload事件事件nLoad:定义:定义Public xiangmu(4),bijiao(7)nCombo1与与Combo2关联的数据源关联的数据源nRowSourceType:5-数组数组nRowSource:xiangmu、biaojiaonStyle:2-下拉列表框下拉列表框n表单的表单的Init事件事件 nCombo1和和Combo2的的InteractiveChange事件事件 nText2的数据类型和输入掩码的数据类型和输入掩码 nText1和和Text2的的Click事件事件 7/23/202430管理信息系统:李国红主讲查询与修改 nCursor1的的Filter属性属性n表单初始运行后,表格中不含数据:表单初始运行后,表格中不含数据:.F.nCombo2的的ControlSource属性属性nbj:“”、“=”n宏替换宏替换&bj.:、=n“查询查询”按钮的按钮的Click事件事件 n表格只读表格只读n选择不同项目时对应的不同条件选择不同项目时对应的不同条件tjnCursor1的的filter属性设置为属性设置为tjn根据根据Combo1是否是否“期初余额期初余额”,为,为Text2或或Text1设置焦点设置焦点n刷新表单刷新表单7/23/202431管理信息系统:李国红主讲n本节结束本节结束7/23/202432管理信息系统:李国红主讲6.2.3 科目删除科目删除 n1、表的结构:同、表的结构:同Kjkm.dbfn2、界面、界面设计设计n3、相关功能、相关功能n选择选择列表项列表项n删除功能删除功能的实现的实现n实现退出功能实现退出功能n单击单击Text1,内容被清空,内容被清空n单击单击Combo1,Text1获得焦点获得焦点7/23/202433管理信息系统:李国红主讲删除科目界面下拉列表框,下拉列表框,Style属性为属性为27/23/202434管理信息系统:李国红主讲列表项列表项n表单的表单的Load过程:过程:public shuzu(4)nCombo1下拉列表框对应的数据源类型、数据下拉列表框对应的数据源类型、数据源以及用于保存所选列表项的变量源以及用于保存所选列表项的变量nRowSourceType:5-数组数组nRowSource:shuzunControlSource:xuanxiann表单的表单的Init过程过程nthisformbo1.listindex=2nthisform.text1.setfocus7/23/202435管理信息系统:李国红主讲“删除删除”按钮的按钮的Click事件事件ndo casen case xuanxiang=科目编号科目编号 n ziduan=kmbhn case xuanxiang=科目名称科目名称n ziduan=kmmc n case xuanxiang=借贷方向借贷方向n ziduan=jdfxn case xuanxiang=期初余额期初余额n ziduan=qcyenendcase7/23/202436管理信息系统:李国红主讲“删除删除”按钮的按钮的Click事件事件nuse kjkmnif ziduanqcyen locate for allt(&ziduan)=allt(thisform.text1.value)n if found()n dele for allt(&ziduan)=allt(thisform.text1.value)n packn thisform.text1.value=space(0)n elsen messagebox(没找到相关记录没找到相关记录!,0+48,提示提示)n endifnelsen locate for&ziduan.=val(thisform.text1.value)n if found()n dele for&ziduan.=val(thisform.text1.value)n packn thisform.text1.value=space(0)n elsen messagebox(没找到相关记录没找到相关记录!,0+48,提示提示)n endifnendifnusenthisform.text1.setfocus7/23/202437管理信息系统:李国红主讲利用比较运算符和宏替换的删除设计利用比较运算符和宏替换的删除设计7/23/202438管理信息系统:李国红主讲数据删除数据删除以科目删除为例以科目删除为例n设计表单设计表单nCombo1的设置:的设置:RowsourceType:1-值值;RowSource:科目编号,科目名称,借贷方向,科目编号,科目名称,借贷方向,期初余额期初余额;Style:2-下拉列表框下拉列表框nCombo2的设置:的设置:RowsourceType:1-值值;RowSource:、=、,;ControlSource:ysf;Style:2-下拉列表下拉列表框框nForm1的的Init过程代码:过程代码:nThisformmbo1.listindex=2nThisformmbo2.listindex=3nThisform.setfocusn删除按钮的删除按钮的Click过程代码过程代码n宏替换函数:宏替换函数:&变量变量.7/23/202439管理信息系统:李国红主讲nuse kjkmndo casen case allt(thisformbo1.value)=科目编号n ziduan=kmbhn case allt(thisformbo1.value)=科目名称n ziduan=kmmcn case allt(thisformbo1.value)=借贷方向n ziduan=jdfx n case allt(thisformbo1.value)=期初余额n ziduan=qcyenendc nif allt(thisformbo1.value)期初余额n locate for&ziduan.&ysf.allt(thisform.text1.value)n if found()n delete for&ziduan.&ysf.allt(thisform.text1.value)n packn elsen 7/23/202440管理信息系统:李国红主讲nmessagebox(无符合条件的记录!,0+48,提示)n endifnelse n locate for&ziduan.&ysf.val(thisform.text1.value)n if found()n delete for&ziduan.&ysf.val(thisform.text1.value)n packn elsen messagebox(无符合条件的记录!,0+48,提示)n endif nendifnuse7/23/202441管理信息系统:李国红主讲n本节结束本节结束7/23/202442管理信息系统:李国红主讲6.2.4 记录定位及信息提示框记录定位及信息提示框n记录定位功能的实现记录定位功能的实现n首记录、上一条、下一条、末记录首记录、上一条、下一条、末记录n信息提示框的运用与表示信息提示框的运用与表示nMessagebox(“提示信息提示信息”,m+n,“提示提示”)7/23/202443管理信息系统:李国红主讲7/23/202444管理信息系统:李国红主讲6.3 记账凭证输入处理记账凭证输入处理n1.1.概述概述n记账凭证是登记账薄的直接依据,分为收款凭证、记账凭证是登记账薄的直接依据,分为收款凭证、付款凭证和转账凭证付款凭证和转账凭证3类,但输入记账凭证采用统一类,但输入记账凭证采用统一的记账凭证的输入屏幕格式。的记账凭证的输入屏幕格式。n输入数据的正确是保证账内数据正确的关键,也是输入数据的正确是保证账内数据正确的关键,也是由记账凭证正确生成会计报表、账薄数据的关键。由记账凭证正确生成会计报表、账薄数据的关键。n功能演示功能演示n2.2.功能实现功能实现n建立建立记账凭证表文件记账凭证表文件jzpzfb.dbf和和jzpzzb.dbf。表中表中的字段包括的字段包括pzh、rq、fjzs、sh、zd;pzh、zy、km、jd、je等。其中等。其中sh字段的值后三位为字段的值后三位为_#$表示已登账,由表示已登账,由程序自动处理;其余字段的值通过表单界面输入。程序自动处理;其余字段的值通过表单界面输入。7/23/202445管理信息系统:李国红主讲6.3 记账凭证输入处理记账凭证输入处理n设计设计凭证输入表单凭证输入表单。主表的数据在表格中输入,附表的。主表的数据在表格中输入,附表的数据在文本框中输入,其中,日期和附件张数文本框应分数据在文本框中输入,其中,日期和附件张数文本框应分别设置成日期型和数值型数据的文本框,别设置成日期型和数值型数据的文本框,借贷和科目通达借贷和科目通达下拉列表选择输入下拉列表选择输入(科目必须是(科目必须是kjkm.dbf表中存在的科表中存在的科目编号)目编号)。n编程。应考虑:必须指定科目、借贷;输入金额不能为编程。应考虑:必须指定科目、借贷;输入金额不能为0;借贷必须平衡;须输入制单人;各命令按钮在必要的;借贷必须平衡;须输入制单人;各命令按钮在必要的时候变为灰色,需要的时候变成可用状态。时候变为灰色,需要的时候变成可用状态。n记账凭证输入的记账凭证输入的基本过程基本过程、程序流程程序流程。n用用VFP实现记账凭证处理。实现记账凭证处理。准备工作准备工作、命令按钮代码命令按钮代码、其他辅助功能其他辅助功能。7/23/202446管理信息系统:李国红主讲记账凭证数据表的结构记账凭证数据表的结构7/23/202447管理信息系统:李国红主讲记账凭证用户输入表单记账凭证用户输入表单7/23/202448管理信息系统:李国红主讲记账凭证输入基本过程kmbhkmbhkmmckmmcqcyeqcyejdfxjdfx1001库存现金30.0011002银行存款900.0011403原材料200.0016051其他业务收入100.002pzhrqfjzsshzd001109/28/102zd000001001209/30/101zd000001pzhzykmjdje0011购原材料购原材料1403借借35422.701001贷贷35422.700012其他收入其他收入1001借借1000.0000126051贷贷1000.007/23/202449管理信息系统:李国红主讲输输入入记记账账凭凭证证流流程程图图转“记账凭证及相关处理”7/23/202450管理信息系统:李国红主讲准备工作n建立数据环境建立数据环境n添加添加kjkm、jzpzfb、jzpzzb、建立表间关系、建立表间关系n文本框、表格与数据表建立关联文本框、表格与数据表建立关联n日期、附件张数文本框设置日期、附件张数文本框设置n日期文本框:日期型,日期文本框:日期型,Value属性为属性为。n附件张数文本框:数值型,掩码为附件张数文本框:数值型,掩码为99。n辅助功能的实现辅助功能的实现nForm1的的BufferMode:2-开放式。开放式。n命令按钮状态方法程序:命令按钮状态方法程序:buttonstatus1、buttonstatus2、buttonstatus3nForm1.load、unload、Init事件事件nText6.InteractiveChange事件事件7/23/202451管理信息系统:李国红主讲用用VFPVFP实现记账凭证处理实现记账凭证处理“新增凭证新增凭证”按钮的按钮的ClickClick过程过程(1/2)(1/2)nif len(allt(thisform.text6.value)0&如果如果Text6中输入了凭证号中输入了凭证号n sele(thisform.dataenvironment.cursor_JZPZFB.alias)&选择选择jzpzfb工作区工作区n locate for allt(pzh)=allt(thisform.text6.value)&查查jzpzfb中有无匹配凭证号中有无匹配凭证号n if.not.found()&如果输入至如果输入至Text6中的凭证号是一个新的凭证号中的凭证号是一个新的凭证号n thisform.buttonstatus2&“输入分录输入分录”、“取消取消”按钮有效,其余按钮无效按钮有效,其余按钮无效n append blank&在在jzpzfb中追加一条空记录中追加一条空记录n thisform.text1.value=thisform.text6.value&Text1自动取自动取Text6中的值中的值n thisform.text6.value=space(0)&Text6中的内容清空中的内容清空n thisform.text6.readonly=.t.&Text6的的ReadOnly属性设置为属性设置为.t.n thisform.text2.value=date()&Text2中自动取值为系统当前日期中自动取值为系统当前日期n thisform.refresh&刷新表单刷新表单 返回记账凭证及相关处理7/23/202452管理信息系统:李国红主讲用用VFPVFP实现记账凭证处理实现记账凭证处理“新增凭证新增凭证”按钮的按钮的ClickClick过程过程(2/2)(2/2)nelse&如果输入至如果输入至Text6中的凭证号已存在于中的凭证号已存在于jzpzfb中中n thisform.buttonstatus1&“新增凭证新增凭证”、“关闭关闭”按钮有效,其余按钮无效按钮有效,其余按钮无效n =messagebox(已存在此凭证号的凭证已存在此凭证号的凭证!,48)&提示对话框提示对话框n thisform.text6.setfocus&Text6文本框获得焦点文本框获得焦点n endifnelse&如果如果Text6中还未输入凭证号中还未输入凭证号n thisform.buttonstatus1&“新增凭证新增凭证”、“关闭关闭”按钮有效,其余按钮无效按钮有效,其余按钮无效n =messagebox(请输入新增凭证的凭证号请输入新增凭证的凭证号!,48)&提示对话框提示对话框n thisform.text6.setfocus&Text6文本框获得焦点文本框获得焦点nendif7/23/202453管理信息系统:李国红主讲用用VFPVFP实现记账凭证处理实现记账凭证处理“输入分录输入分录”按钮的按钮的ClickClick过程过程nsele(thisform.dataenvironment.cursor_JZPZZB.alias)nappe blanknreplace pzh with thisform.text1.valuenthisform.grid1.refreshnthisform.buttonstatus37/23/202454管理信息系统:李国红主讲用用VFPVFP实现记账凭证处理实现记账凭证处理“确定确定”按钮的按钮的ClickClick过程过程(1/3)(1/3)n sele(thisform.dataenvironment.cursor_JZPZZB.alias)n set filter to allt(pzh)=allt(thisform.text1.value)n locate for len(allt(km)=0n if.not.found()n locate for len(allt(jd)=0n if.not.found()n locate for je=0.00n if.not.found()n sum je to je_jie for allt(jd)=借借n sum je to je_dai for allt(jd)=贷贷n if je_jie=je_dai 7/23/202455管理信息系统:李国红主讲用用VFPVFP实现记账凭证处理实现记账凭证处理“确定确定”按钮的按钮的ClickClick过程过程(2/3)(2/3)n if len(allt(thisform.text5.value)0n sele(thisform.dataenvironment.cursor_JZPZFB.alias)n =tableupdate(.t.)n sele(thisform.dataenvironment.cursor_JZPZZB.alias)n =tableupdate(.t.)n thisform.refreshn thisform.buttonstatus1n thisform.text6.setfocusn thisform.text6.readonly=.f.n elsen =messagebox(请输入制单人请输入制单人!,48)n thisform.text5.setfocusn thisform.buttonstatus3n thisform.text6.readonly=.t.n endif 7/23/202456管理信息系统:李国红主讲用用VFPVFP实现记账凭证处理实现记账凭证处理“确定确定”按钮的按钮的ClickClick过程过程(3/3)(3/3)n elsen =messagebox(借贷不平衡借贷不平衡!,48)n thisform.grid1.column_JE.setfocus n endifn elsen =messagebox(金额不能为金额不能为0!,48)n thisform.grid1.column_JE.setfocusn endifn elsen =messagebox(指定借或贷指定借或贷!,48)n thisform.grid1.column_JD.setfocusn endifn elsen =messagebox(请指定科目请指定科目!,48)n thisform.grid1.column_KM.setfocusn endif7/23/202457管理信息系统:李国红主讲用用VFPVFP实现记账凭证处理实现记账凭证处理“取消取消”按钮的按钮的ClickClick过程过程nsele(thisform.dataenvironment.cursor_JZPZFB.alias)n=tablerevert(.t.)nsele(thisform.dataenvironment.cursor_JZPZZB.alias)n=tablerevert(.t.)nthisform.refreshnthisform.buttonstatus1nthisform.text6.readonly=.f.nthisform.text6.setfocus7/23/202458管理信息系统:李国红主讲用用VFPVFP实现记账凭证处理实现记账凭证处理“关闭关闭”按钮的按钮的ClickClick过程过程na=messagebox(真的想退出吗真的想退出吗?,4+48,提示提示)nif a=6n thisform.releasenendif nif messagebox(真的想退出吗真的想退出吗?,4+48,提示提示)=6n thisform.releasenendif返回记账凭证及相关处理7/23/202459管理信息系统:李国红主讲其他辅助功能n防止手工修改防止手工修改Text1、Text2、Column_PZH、Text4中中的值的值nReadOnly设置为:设置为:.T.-真真n防止对已审核凭证进行更改防止对已审核凭证进行更改nText3、Text5、Grid1的的When过程过程n允许正常输入与修改操作:允许正常输入与修改操作:Text6.GotFocusn防止修改状态下执行新增凭证和关闭操作防止修改状态下执行新增凭证和关闭操作nText3、Text5、textZY、ComboKM、ComboJD、ComboJE的的InteractiveChange事件事件n使输入凭证号更方便使输入凭证号更方便nText6.Click:this.value=space(0)7/23/202460管理信息系统:李国红主讲本节小结本节小结7/23/202461管理信息系统:李国红主讲本节结束!7/23/202462管理信息系统:李国红主讲6.4 登记现金日记账登记现金日记账n不要求不要求7/23/202463管理信息系统:李国红主讲6.5 登记总账处理登记总账处理n总账即总分类账,是按照一级科目设立账户,以货币为计总账即总分类账,是按照一级科目设立账户,以货币为计量单位,连续核算整个企业各种资金占用、资金来源、资量单位,连续核算整个企业各种资金占用、资金来源、资金增减变动及其结余的总括情况的一种分类账。金增减变动及其结余的总括情况的一种分类账。n登记总账的依据是:会计科目表(登记总账的依据是:会计科目表(kjkm.dbf)、记账凭证)、记账凭证附表(附表(jzpzfb.dbf)、记账凭证主表()、记账凭证主表(jzpzzb.dbf)。)。n会计科目:会计科目:KJKM(kmbh,kmmc,jdfx,qcye)n记账凭证附表:记账凭证附表:JZPZFB(pzh,rq,fjzs,sh,zd)n记账凭证主表:记账凭证主表:JZPZZB(pzh,zy,km,jd,je)n总账:总账:ZZ(rq,zzh,kmbh,kmmc,jffs,dffs,jdfx,ye)n功能演示功能演示n基本过程基本过程及及程序流程程序流程n相关命令与函数相关命令与函数及程序程序7/23/202464管理信息系统:李国红主讲登登记记总总账账基基本本过过程程rqpzhzykmjdjeshzd10/13/1010/13/10b1b1aaaaaaaaaa14031403借借20.0020.00sh01sh01zd01zd0110/13/1010/13/10b1b110011001贷贷20.0020.00sh01sh01zd01zd0110/13/1010/13/10b2b2bbbbbbbbbbbbbbbb10011001借借50.0050.00sh01sh01zd01zd0110/13/1010/13/10b2b210021002借借40.0040.00sh01sh01zd01zd0110/13/1010/13/10b2b260016001贷贷90.0090.00sh01sh01zd01zd01rqzzhkmbhkmmcjffsdffsjdfxye08/13/1008/13/10汇汇a1-a2a1-a210011001库存现金库存现金30.0030.0040.0040.001 120.0020.0008/13/1008/13/10汇汇a1-a2a1-a210021002银行存款银行存款100.00100.00200.00200.001 1800.00800.0009/13/1009/13/10汇汇b1-b2b1-b210011001库存现金库存现金40.0040.000.000.001 160.0060.0009/13/1009/13/10汇汇b1-b2b1-b210021002银行存款银行存款11.0011.0060.0060.001 1751.00751.00kmbhkmmcqcyejdfx10011001 库存现金库存现金30.0030.001 110021002 银行存款银行存款900.00900.001 111221122 应收账款应收账款 15000.00 15000.001 11区区zz2区区jzpz3区区kjkm转登记总账处理pzhrqfjzsshzdb110/13/105sh01_#$zd01b210/13/102sh01_#$zd024区区jzpzfb7/23/202465管理信息系统:李国红主讲登登记记总总账账流流程程图图转登记总账处理7/23/202466管理信息系统:李国红主讲相关命令与函数nset filter to nset filt to len(allt(sh)!=0 and right(allt(sh),3)!=_#$nset filt to len(allt(kmbh)=4nset filt to allt(kmbh)=kmbh1nset filt to rq=rq1.and.zzh=zzh1nsum to for nsum je to jffs1 for left(km,4)=kmbh1.and.jd=借nsum je to dffs1 for left(km,4)=kmbh1.and.jd=贷ndo whileloop(exit)enddongo top、go bottom、skipneof()、found()nqcs1=iif(eof(),qcye1,ye)转登记总账处理7/23/202467管理信息系统:李国红主讲登记总账程序登记总账程序djzz.prgdjzz.prgnset talk offnset exact onnopen database zwclnsele 1nuse zznsele 2nuse jzpznset filt to len(allt(sh)!=0 and right(allt(sh),3)!=_#$ngo topnpzh1=pzhngo bottomnpzh2=pzhnzzh1=汇汇+allt(pzh1)+-+allt(pzh2)7/23/202468管理信息系统:李国红主讲登记总账程序登记总账程序djzz.prgdjzz.prgnrq1=rqngo topnsele 3nuse kjkmnset filt to len(allt(kmbh)=4ngo topndo while.not.eof()n kmbh1=allt(kmbh)n kmmc1=kmmcn jdfx1=jdfxn qcye1=qcyen sele jzpzn loca for left(km,4)=allt(kmbh1)7/23/202469管理信息系统:李国红主讲登记总账程序登记总账程序djzz.prgdjzz.prgn if.not.found()n sele kjkmn skipn loopn endif n sum je to jffs1 for left(km,4)=kmbh1.and.jd=借借n sum je to dffs1 for left(km,4)=kmbh1.and.jd=贷贷n sele zzn set filt to allt(kmbh)=kmbh1n go bottomn qcs1=iif(eof(),qcye1,ye)n ye1=iif(jdfx1=1,qcs1+jffs1-dffs1,qcs1-jffs1+dffs1)7/23/202470管理信息系统:李国红主讲登记总账程序登记总账程序djzz.prgdjzz.prgn appe blann repl rq with rq1,zzh with zzh1n repl kmbh with kmbh1,kmmc with kmmc1n repl jffs with jffs1,dffs with dffs1n repl jdfx with jdfx1,ye with ye1n sele kjkmn skipnenddo7/23/202471管理信息系统:李国红主讲nsele 4 nuse jzpzfbnrepl sh with allt(sh)+_#$for len(allt(sh)!=0.and.right(allt(sh),3)!=_#$n=messagebox(生成总账结束生成总账结束!,48,提示提示)nsele zznset filt to rq=rq1.and.zzh=zzh1nbrow noeditnclose database nset exact offnset talk onnretu 7/23/202472管理信息系统:李国红主讲7/23/202473管理信息系统:李国红主讲6.6 6.6 损益表数据自动生成及输出损益表数据自动生成及输出n损益表(损益表(syb.dbf)中的数据由总账表()中的数据由总账表(zz.dbf)中取得。中取得。n总账:总账:ZZ(rq,zzh,kmbh,kmmc,jffs,dffs,jdfx,ye)n损益表:损益表:SYB(xm,hc,bys,ljs,kmbh,bz)n损益表数据生成原理:损益表数据生成原理:确定会计期间,预置确定会计期间,预置syb.dbf表中的有关内容,表中的有关内容,kmbh长度取长度取1、4、8分分别处理,由程序依据总账表的数据自动生成损益别处理,由程序依据总账表的数据自动生成损益表文件中的本月数和本年累计数。表文件中的本月数和本年累计数。n通过通过VFP6.0的报表生成器完成损益表的输出,也的报表生成器完成损益表的输出,也可通过建立查询在屏幕上输出有关内容。可通过建立查询在屏幕上输出有关内容。7/23/202474管理信息系统:李国红主讲rqzzhkmbhkmmcjffsdffsjdfxye6001主营业务收入主营业务收入0.0080600.006051其他业务收入其他业务收入0.001000.006601销售费用销售费用12450.370.006602管理费用管理费用2567.250.00 xmhcbysljskmbhbz一、营业收入一、营业收入181600.0081600.00 60016051d减:营业成本减:营业成本20.000.00 64016402j 营业税金及附加营业税金及附加30.000.00 6403j 销售费用销售费用412450.3712450.37 6601j 管理费用管理费用52567.252567.25 6602j 财务费用财务费用60.000.00 6603j 资产减值损失资产减值损失70.000.00 6701j加:公允价值变动收益加:公允价值变动收益80.000.00 6101d 投资收益投资收益90.000.00 6111d二、营业利润二、营业利润1066582.3866582.38 h总总账账表表部部分分数数据据损损益益表表部部分分数数据据7/23/202475管理信息系统:李国红主讲生成损益表表单生成损益表表单nuse zzngo bottnthisform.text1.value=allt(str(year(rq)nthisform.text2.value=allt(str(month(rq)nuse表单的表单的Init过程代码过程代码:7/23/202476管理信息系统:李国红主讲损损益益表表数数据据自自动动生生成成及及输输出出N-SN-S图图7/23/202477管理信息系统:李国红主讲生成损益表代码nset talk offnset exact onnset safety offnsele 1nuse zznset filter to year(rq)=val(thisform.text1.value)and month(rq)=val(thisform.text2.value)ngo topnsele 2nuse sybnrepl all bys with 0,ljs with 0ngo top&以便从损益表的首记录开始,以下求本月数7/23/202478管理信息系统:李国红主讲n do while.not.eof()n kmbh1=allt(kmbh)&kmbh1为为syb表当前记录的表当前记录的kmbh(去掉前后空格去掉前后空格)n length=len(kmbh1)&length为为syb表当前记录的表当前记录的kmbh去掉前后空格后去掉前后空格后的长度的长度n do casen case length=8n declare sz(2)&数组数组sz表示本月数表示本月数n sele 1&总账表工作区总账表工作区n i=1n do while ibz=d,dffs-jffs,jffs-dffs)n elsen sz(i)=0n endifn i=i+1n enddon sele 2&损益表工作区损益表工作区n repl bys with sz(1)+sz(2)7/23/202479管理信息系统:李国红主讲n case length=4n sele 1&总账表工作区总账表工作区n loca for allt(kmbh)=kmbh1n if found()n bys1=iif(b-bz=d,dffs-jffs,jffs-dffs)n elsen bys1=0n endifn sele 2&损益表工作区损益表工作区n repl bys with bys1n case length=1n r=recn()n sum bys to bys1 for bz=dn sum bys to bys2 for bz=jn go rn repl bys with bys1-bys2n endcn skipnendd 7/23/202480管理信息系统:李国红主讲n go top&以便从损益表的首记录开始以便从损益表的首记录开始,以下求本年累计数以下求本年累计数ndo while.not.eof()n kmbh1=allt(kmbh)&kmbh1为为syb表当前记录的表当前记录的kmbh(去掉前后空格去掉前后空格)n length=len(kmbh1)&length为为syb表当前记录的表当前记录的kmbh去掉前后空格后的长度去掉前后空格后的长度n do casen case length=8n declare sz1(2)&数组数组sz1表示本年累计数表示本年累计数n sele 1&总账表工作区总账表工作区n i=1n do while i=2n set filter to year(rq)=val(thisform.text1.value).and.;n month(rq)=val(thisform.text2.value).and.allt(kmbh)=subs(kmbh1,4*i-3,4)n go bottomn sz1(i)=iif(eof(),0,ye)n i=i+1n enddon sele 2&损益表工作区损益表工作区n repl ljs with sz1(1)+sz1(2)7/23/202481管理信息系统:李国红主讲o case length=4o sele 1&总账表工作区总账表工作区o set filter to year(rq)=val(thisform.text1.value).and.;o month(rq)=val(thisform.text2.value).and.allt(kmbh)=kmbh1o go bottomo ljs1=iif(eof(),0,ye)o sele 2&损益表工作区损益表工作区o repl ljs with ljs1o case length=1o r=recn()o sum ljs to ljs1 for bz=do sum ljs to ljs2 for bz=jo go ro repl ljs with ljs1-ljs2o endco skipoendd7/23/202482管理信息系统:李国红主讲ocopy to syb+allt(thisform.text1.value)+-+allt(thisform.text2.value)+.dbf;ofields xm,hc,bys,ljs&生成的损益表以类似于syb2009-1.dbf的形式保存omessagebox(生成损益表结束!,48,提示)osele xm as 项目,hc as 行次,bys as 本月数,ljs as 本年累计数 from;osyb+allt(thisform.text1.value)+-+allt(thisform.text2.value)+.dbfoclose databasesoset safety onoset exact offoset talk on7/23/202483管理信息系统:李国红主讲7/23/202484管理信息系统:李国红主讲6.7 账务处理与报表系统的菜单设计账务处理与报表系统的菜单设计o1、功能模块、功能模块7/23/202485管理信息系统:李国红主讲o2、菜单规划与设计、菜单规划与设计7/23/202486管理信息系统:李国红主讲o2、菜单规划与设计、菜单规划与设计7/23/202487管理信息系统:李国红主讲o菜单设计o2、菜单规划与设计、菜单规划与设计7/23/202488管理信息系统:李国红主讲o2、菜单规划与设计、菜单规划与设计7/23/202489管理信息系统:李国红主讲o3、报表设计、报表设计n创建与修改报表:创建与修改报表:modi report 报表文件名报表文件名n预览报表:预览报表:report form 报表主名报表主名.frx for 条件条件 previewn打印报表:打印报表:report form 报表主名报表主名.frx for 条件条件 to printero4、查询设计、查询设计n创建与修改查询:创建与修改查询:modi query 查询文件名查询文件名n执行查询:执
展开阅读全文