账务处理与报表MIS的设计与实现.ppt
管理信息系统,主 讲:李国红E-mail:,2023/8/26,管理信息系统:李国红主讲,2,6.1 账务处理与报表系统设计概述6.2 会计科目设置6.3 记账凭证输入处理6.4 登记现金日记账6.5 登记总账6.6 损益表数据自动生成及输出6.7 账务处理与报表系统的菜单设计6.8 MIS操作维护设计与实现6.9 MIS用户登录的设计与实现,第6章 账务处理与报表系统的设计与实现,2023/8/26,管理信息系统:李国红主讲,3,6.1 账表MIS概述(1/4),1.账表MIS的任务:(P153),2023/8/26,管理信息系统:李国红主讲,4,6.1 账表MIS概述(2/4)2.账务与报表处理的DFD:(P154),2023/8/26,管理信息系统:李国红主讲,5,6.1 账表MIS概述(3/4),3.账务处理系统的主要功能模块:,2023/8/26,管理信息系统:李国红主讲,6,6.1 账表MIS概述(4/4),4.VFP开发环境设置与相关操作VFP系统环境设置主要操作和常用命令、常用函数项目管理器的使用,2023/8/26,管理信息系统:李国红主讲,7,6.2 会计科目设置,6.2.1 科目输入6.2.2 科目查询与修改6.2.3 科目删除6.2.4 记录定位及信息提示框,2023/8/26,管理信息系统:李国红主讲,8,6.2.1 科目输入,1.科目输入包括设置会计科目和输入期初数。2.建立会计科目表文件kjkm.dbf,表中包括kmbh、kmmc、jdfx、qcye四个字段,数据通过表单界面输入。3.设计表单,含科目编号、科目名称、借贷方向、期初余额等的标签及其文本框。其中期初余额文本框应设置为数值型数据类型的文本框。4.编程。应考虑:科目编号不能为空(位数不低于4)、科目编号不能重复、多于4位的科目必须有上级科目。5.功能演示6.考虑科目输入的基本过程。7.用VFP实现账表MIS的系统初始化。有关命令及函数。,转科目输入程序流程,2023/8/26,管理信息系统:李国红主讲,9,Kjkm.dbf数据表的结构,返科目输入返查询修改返科目删除,2023/8/26,管理信息系统:李国红主讲,10,科目输入用户界面,2023/8/26,管理信息系统:李国红主讲,11,上级科目假设,假设:从二级科目开始,某科目的代码去掉最后二位即为该科目的上级科目。一级科目:1001、1002、1101、二级科目:100201、100202、三级科目:10020101、10020102、余类推。,2023/8/26,管理信息系统:李国红主讲,12,科目输入的基本过程,1002,银行存款,1,1256000.00,2023/8/26,管理信息系统:李国红主讲,13,有关命令及函数、属性、方法,set exact on|offuselocate for append blankreplace with len()alltrim()subs()或 left()space()messagebox(),found()对象.value对象.setfocus对象.refresh对象.release,2023/8/26,管理信息系统:李国红主讲,14,a=messagebox(真的想退出吗?,4+48,提示),单击“是”,a=6单击“否”,a=7,a=7,a=6,2023/8/26,管理信息系统:李国红主讲,15,a=messagebox(要提示的信息!,0+48,提示),a=1,转“科目输入”,2023/8/26,管理信息系统:李国红主讲,16,会计科目输入程序流程,2023/8/26,管理信息系统:李国红主讲,17,用VFP实现账表MIS的科目输入“确定”按钮的Click过程,set exact onb=0use kjkmkmbh1=allt(thisform.text1.value)length1=len(allt(thisform.text1.value)if length14 b=messagebox(请输入不低于四位的科目编号!,48)else loca for allt(kmbh)=kmbh1,2023/8/26,管理信息系统:李国红主讲,18,辅助功能文本框单击被清空,Text2、Text3的Click事件This.value=space(0)Text4的Click事件This.value=0,2023/8/26,管理信息系统:李国红主讲,19,取消本次输入“取消”按钮的Click过程,thisform.text1.value=spac(0)thisform.text2.value=spac(0)thisform.text3.value=spac(0)thisform.text4.value=0.00,2023/8/26,管理信息系统:李国红主讲,20,退出输入模块“退出”按钮的Click过程,a=messagebox(真的想退出吗?,4+48,提示)if a=6 thisform.releaseendif,if messagebox(真的想退出吗?,4+48,提示)=6 thisform.releaseendif,2023/8/26,管理信息系统:李国红主讲,21,进一步思考的问题,有关a=messagebox(“XXXXXX”,m+48,“提示”)见(P185-186),2023/8/26,管理信息系统:李国红主讲,22,(P185-186)b=messagebox(XXXXXXXXXXXX!,m+48,提示),m=0单击“确定”,b=1m=1单击“确定”,b=1单击“取消”,b=2,2023/8/26,管理信息系统:李国红主讲,23,(P185-186)b=messagebox(XXXXXXXXXXXX!,m+48,提示),m=2单击“终止”,b=3单击“重试”,b=4单击“忽略”,b=5m=5单击“重试”,b=4单击“取消”,b=2,2023/8/26,管理信息系统:李国红主讲,24,(P185-186)b=messagebox(XXXXXXXXXXXX?,m+48,提示),m=3单击“是”,b=6单击“否”,b=7单击“取消”,b=2m=4单击“是”,b=6单击“否”,b=7,2023/8/26,管理信息系统:李国红主讲,25,(P185-186)a=messagebox(XXXXXXXXXXXX,m+48,提示),单击“确定”,a=1单击“取消”,a=2单击“终止”,a=3单击“重试”,a=4单击“忽略”,a=5单击“是”,a=6单击“否”,a=7,2023/8/26,管理信息系统:李国红主讲,26,本节小结,账表MIS的任务及模块结构账表MIS的系统初始化kjkm.dbf表文件输入表单界面会计科目设置流程科目设置的VFP实现进一步思考问题,2023/8/26,管理信息系统:李国红主讲,27,本节结束!,2023/8/26,管理信息系统:李国红主讲,28,上机步骤,在F:盘以自已的学号或姓名建立文件夹。打开VFP,利用工具,选项将新建文件夹所在目录设置为默认目录。建表(文件名不要用“表1.dbf”)。创建表单,输入代码。运行。关机。,2023/8/26,管理信息系统:李国红主讲,29,6.2.2 科目查询与修改,1、数据表的结构:同Kjkm.dbf2、科目查询与修改表单界面设计3、科目查询与修改功能目标指定查询条件查询与修改操作退出:thisform.release4、功能的实现,2023/8/26,管理信息系统:李国红主讲,30,查询与修改表单界面,返回,2023/8/26,管理信息系统:李国红主讲,31,指定查询条件,表单的Load与Unload事件Load:定义Public xiangmu(4),bijiao(7)Combo1与Combo2关联的数据源RowSourceType:5-数组RowSource:xiangmu、biaojiaoStyle:2-下拉列表框表单的Init事件 Combo1和Combo2的InteractiveChange事件 Text2的数据类型和输入掩码 Text1和Text2的Click事件,2023/8/26,管理信息系统:李国红主讲,32,查询与修改,Cursor1的Filter属性表单初始运行后,表格中不含数据:.F.Combo2的ControlSource属性bj:“”、“=”宏替换&bj.:、=“查询”按钮的Click事件 表格只读选择不同项目时对应的不同条件tjCursor1的filter属性设置为tj根据Combo1是否“期初余额”,为Text2或Text1设置焦点刷新表单,2023/8/26,管理信息系统:李国红主讲,33,本节结束,2023/8/26,管理信息系统:李国红主讲,34,6.2.3 科目删除,1、表的结构:同Kjkm.dbf2、界面设计3、相关功能选择列表项删除功能的实现实现退出功能单击Text1,内容被清空单击Combo1,Text1获得焦点,2023/8/26,管理信息系统:李国红主讲,35,删除科目界面,下拉列表框,Style属性为2,2023/8/26,管理信息系统:李国红主讲,36,列表项,表单的Load过程:public shuzu(4)Combo1下拉列表框对应的数据源类型、数据源以及用于保存所选列表项的变量RowSourceType:5-数组RowSource:shuzuControlSource:xuanxian表单的Init过程bo1.listindex=2,2023/8/26,管理信息系统:李国红主讲,37,“删除”按钮的Click事件,do case case xuanxiang=科目编号 ziduan=kmbh case xuanxiang=科目名称 ziduan=kmmc case xuanxiang=借贷方向 ziduan=jdfx case xuanxiang=期初余额 ziduan=qcyeendcase,2023/8/26,管理信息系统:李国红主讲,38,“删除”按钮的Click事件,use kjkmif ziduanqcye locate for allt(&ziduan)=allt(thisform.text1.value)if found()dele for allt(&ziduan)=allt(thisform.text1.value)pack thisform.text1.value=space(0)else messagebox(没找到相关记录!,0+48,提示)endifelse locate for&ziduan.=val(thisform.text1.value)if found()dele for&ziduan.=val(thisform.text1.value)pack thisform.text1.value=space(0)else messagebox(没找到相关记录!,0+48,提示)endifendifuse,2023/8/26,管理信息系统:李国红主讲,39,利用比较运算符和宏替换的删除设计,2023/8/26,管理信息系统:李国红主讲,40,数据删除以科目删除为例,设计表单Combo1的设置:RowsourceType:1-值;RowSource:科目编号,科目名称,借贷方向,期初余额;Style:2-下拉列表框Combo2的设置:RowsourceType:1-值;RowSource:=、,;ControlSource:ysf;Style:2-下拉列表框Form1的Init过程代码:Tmbo1.listindex=2Tmbo2.listindex=3Thisform.setfocus删除按钮的Click过程代码宏替换函数:&变量.,2023/8/26,管理信息系统:李国红主讲,41,use kjkmdo case case allt(bo1.value)=科目编号 ziduan=kmbh case allt(bo1.value)=科目名称 ziduan=kmmc case allt(bo1.value)=借贷方向 ziduan=jdfx case allt(bo1.value)=期初余额 ziduan=qcyeendc if allt(bo1.value)期初余额 locate for&ziduan.&ysf.allt(thisform.text1.value)if found()delete for&ziduan.&ysf.allt(thisform.text1.value)pack else,2023/8/26,管理信息系统:李国红主讲,42,messagebox(无符合条件的记录!,0+48,提示)endifelse locate for&ziduan.&ysf.val(thisform.text1.value)if found()delete for&ziduan.&ysf.val(thisform.text1.value)pack else messagebox(无符合条件的记录!,0+48,提示)endif endifuse,2023/8/26,管理信息系统:李国红主讲,43,本节结束,2023/8/26,管理信息系统:李国红主讲,44,6.2.4 记录定位及信息提示框,记录定位功能的实现首记录、上一条、下一条、末记录信息提示框的运用与表示Messagebox(“提示信息”,m+n,“提示”),2023/8/26,管理信息系统:李国红主讲,45,2023/8/26,管理信息系统:李国红主讲,46,6.3 记账凭证输入处理,1.概述记账凭证是登记账薄的直接依据,分为收款凭证、付款凭证和转账凭证3类,但输入记账凭证采用统一的记账凭证的输入屏幕格式。输入数据的正确是保证账内数据正确的关键,也是由记账凭证正确生成会计报表、账薄数据的关键。功能演示2.功能实现建立记账凭证表文件jzpzfb.dbf和jzpzzb.dbf。表中的字段包括pzh、rq、fjzs、sh、zd;pzh、zy、km、jd、je等。其中sh字段的值后三位为_#$表示已登账,由程序自动处理;其余字段的值通过表单界面输入。,2023/8/26,管理信息系统:李国红主讲,47,6.3 记账凭证输入处理,设计凭证输入表单。主表的数据在表格中输入,附表的数据在文本框中输入,其中,日期和附件张数文本框应分别设置成日期型和数值型数据的文本框,借贷和科目通达下拉列表选择输入(科目必须是kjkm.dbf表中存在的科目编号)。编程。应考虑:必须指定科目、借贷;输入金额不能为0;借贷必须平衡;须输入制单人;各命令按钮在必要的时候变为灰色,需要的时候变成可用状态。记账凭证输入的基本过程、程序流程。用VFP实现记账凭证处理。准备工作、命令按钮代码、其他辅助功能。,2023/8/26,管理信息系统:李国红主讲,48,记账凭证数据表的结构,2023/8/26,管理信息系统:李国红主讲,49,记账凭证用户输入表单,2023/8/26,管理信息系统:李国红主讲,50,记账凭证输入基本过程,2023/8/26,管理信息系统:李国红主讲,51,输入记账凭证流程图,转“记账凭证及相关处理”,2023/8/26,管理信息系统:李国红主讲,52,准备工作,建立数据环境添加kjkm、jzpzfb、jzpzzb、建立表间关系文本框、表格与数据表建立关联日期、附件张数文本框设置日期文本框:日期型,Value属性为。附件张数文本框:数值型,掩码为99。辅助功能的实现Form1的BufferMode:2-开放式。命令按钮状态方法程序:buttonstatus1、buttonstatus2、buttonstatus3Form1.load、unload、Init事件Text6.InteractiveChange事件,2023/8/26,管理信息系统:李国红主讲,53,用VFP实现记账凭证处理“新增凭证”按钮的Click过程(1/2),if len(allt(thisform.text6.value)0&如果Text6中输入了凭证号 sele()&选择jzpzfb工作区 locate for allt(pzh)=allt(thisform.text6.value)&查jzpzfb中有无匹配凭证号 if.not.found()&如果输入至Text6中的凭证号是一个新的凭证号 thisform.buttonstatus2&“输入分录”、“取消”按钮有效,其余按钮无效 append blank&在jzpzfb中追加一条空记录 thisform.text1.value=thisform.text6.value&Text1自动取Text6中的值 thisform.text6.value=space(0)&Text6中的内容清空 thisform.text6.readonly=.t.&Text6的ReadOnly属性设置为.t.thisform.text2.value=date()&Text2中自动取值为系统当前日期 thisform.refresh&刷新表单,返回记账凭证及相关处理,2023/8/26,管理信息系统:李国红主讲,54,用VFP实现记账凭证处理“新增凭证”按钮的Click过程(2/2),else&如果输入至Text6中的凭证号已存在于jzpzfb中 thisform.buttonstatus1&“新增凭证”、“关闭”按钮有效,其余按钮无效=messagebox(已存在此凭证号的凭证!,48)&提示对话框 thisform.text6.setfocus&Text6文本框获得焦点 endifelse&如果Text6中还未输入凭证号 thisform.buttonstatus1&“新增凭证”、“关闭”按钮有效,其余按钮无效=messagebox(请输入新增凭证的凭证号!,48)&提示对话框 thisform.text6.setfocus&Text6文本框获得焦点endif,2023/8/26,管理信息系统:李国红主讲,55,用VFP实现记账凭证处理“输入分录”按钮的Click过程,sele()appe blankreplace pzhthisform.buttonstatus3,2023/8/26,管理信息系统:李国红主讲,56,用VFP实现记账凭证处理“确定”按钮的Click过程(1/3),sele()set filter to allt(pzh)=allt(thisform.text1.value)locate for len(allt(km)=0 if.not.found()locate for len(allt(jd)=0 if.not.found()locate for je=0.00 if.not.found()sum je to je_jie for allt(jd)=借 sum je to je_dai for allt(jd)=贷 if je_jie=je_dai,2023/8/26,管理信息系统:李国红主讲,57,用VFP实现记账凭证处理“确定”按钮的Click过程(2/3),if len(allt(thisform.text5.value)0 sele()=tableupdate(.t.)sele()=tableupdate(.t.)thisform.refresh thisform.buttonstatus1 thisform.text6.readonly=.f.else=messagebox(请输入制单人!,48)thisform.buttonstatus3 thisform.text6.readonly=.t.endif,2023/8/26,管理信息系统:李国红主讲,58,用VFP实现记账凭证处理“确定”按钮的Click过程(3/3),else=messagebox(借贷不平衡!,48)thisform.grid1.column_JE.setfocus endif else=messagebox(金额不能为0!,48)endif else=messagebox(指定借或贷!,48)endif else=messagebox(请指定科目!,48)endif,2023/8/26,管理信息系统:李国红主讲,59,用VFP实现记账凭证处理“取消”按钮的Click过程,sele()=tablerevert(.t.)sele()=tablerevert(.t.)thisform.refreshthisform.buttonstatus1thisform.text6.readonly=.f.,2023/8/26,管理信息系统:李国红主讲,60,用VFP实现记账凭证处理“关闭”按钮的Click过程,a=messagebox(真的想退出吗?,4+48,提示)if a=6 thisform.releaseendif,if messagebox(真的想退出吗?,4+48,提示)=6 thisform.releaseendif,返回记账凭证及相关处理,2023/8/26,管理信息系统:李国红主讲,61,其他辅助功能,防止手工修改Text1、Text2、Column_PZH、Text4中的值ReadOnly设置为:.T.-真防止对已审核凭证进行更改Text3、Text5、Grid1的When过程允许正常输入与修改操作:Text6.GotFocus防止修改状态下执行新增凭证和关闭操作Text3、Text5、textZY、ComboKM、ComboJD、ComboJE的InteractiveChange事件使输入凭证号更方便Text6.Click:this.value=space(0),2023/8/26,管理信息系统:李国红主讲,62,本节小结,2023/8/26,管理信息系统:李国红主讲,63,本节结束!,2023/8/26,管理信息系统:李国红主讲,64,6.4 登记现金日记账,不要求,2023/8/26,管理信息系统:李国红主讲,65,6.5 登记总账处理,总账即总分类账,是按照一级科目设立账户,以货币为计量单位,连续核算整个企业各种资金占用、资金来源、资金增减变动及其结余的总括情况的一种分类账。登记总账的依据是:会计科目表(kjkm.dbf)、记账凭证附表(jzpzfb.dbf)、记账凭证主表(jzpzzb.dbf)。会计科目:KJKM(kmbh,kmmc,jdfx,qcye)记账凭证附表:JZPZFB(pzh,rq,fjzs,sh,zd)记账凭证主表:JZPZZB(pzh,zy,km,jd,je)总账:ZZ(rq,zzh,kmbh,kmmc,jffs,dffs,jdfx,ye)功能演示基本过程及程序流程相关命令与函数及程序,2023/8/26,管理信息系统:李国红主讲,66,登记总账基本过程,1区zz,2区jzpz,3区kjkm,转登记总账处理,4区jzpzfb,2023/8/26,管理信息系统:李国红主讲,67,登记总账流程图,转登记总账处理,2023/8/26,管理信息系统:李国红主讲,68,相关命令与函数,set filter to set filt to len(allt(sh)!=0 and right(allt(sh),3)!=_#$set filt to len(allt(kmbh)=4set filt to allt(kmbh)=kmbh1set filt to rq=rq1.and.zzh=zzh1sum to for sum je to jffs1 for left(km,4)=kmbh1.and.jd=借sum je to dffs1 for left(km,4)=kmbh1.and.jd=贷do whileloop(exit)enddogo top、go bottom、skipeof()、found()qcs1=iif(eof(),qcye1,ye),转登记总账处理,2023/8/26,管理信息系统:李国红主讲,69,登记总账程序djzz.prg,set talk offset exact onopen database zwclsele 1use zzsele 2use jzpzset filt to len(allt(sh)!=0 and right(allt(sh),3)!=_#$go toppzh1=pzhgo bottompzh2=pzhzzh1=汇+allt(pzh1)+-+allt(pzh2),2023/8/26,管理信息系统:李国红主讲,70,登记总账程序djzz.prg,rq1=rqgo topsele 3use kjkmset filt to len(allt(kmbh)=4go topdo while.not.eof()kmbh1=allt(kmbh)kmmc1=kmmc jdfx1=jdfx qcye1=qcye sele jzpz loca for left(km,4)=allt(kmbh1),2023/8/26,管理信息系统:李国红主讲,71,登记总账程序djzz.prg,if.not.found()sele kjkm skip loop endif sum je to jffs1 for left(km,4)=kmbh1.and.jd=借 sum je to dffs1 for left(km,4)=kmbh1.and.jd=贷 sele zz set filt to allt(kmbh)=kmbh1 go bottom qcs1=iif(eof(),qcye1,ye)ye1=iif(jdfx1=1,qcs1+jffs1-dffs1,qcs1-jffs1+dffs1),2023/8/26,管理信息系统:李国红主讲,72,登记总账程序djzz.prg,appe blan repl rq with rq1,zzh with zzh1 repl kmbh with kmbh1,kmmc with kmmc1 repl jffs with jffs1,dffs with dffs1 repl jdfx with jdfx1,ye with ye1 sele kjkm skipenddo,2023/8/26,管理信息系统:李国红主讲,73,sele 4 use jzpzfbrepl sh with allt(sh)+_#$for len(allt(sh)!=0.and.right(allt(sh),3)!=_#$=messagebox(生成总账结束!,48,提示)sele zzset filt to rq=rq1.and.zzh=zzh1brow noeditclose database set exact offset talk onretu,2023/8/26,管理信息系统:李国红主讲,74,2023/8/26,管理信息系统:李国红主讲,75,6.6 损益表数据自动生成及输出,损益表(syb.dbf)中的数据由总账表(zz.dbf)中取得。总账:ZZ(rq,zzh,kmbh,kmmc,jffs,dffs,jdfx,ye)损益表:SYB(xm,hc,bys,ljs,kmbh,bz)损益表数据生成原理:确定会计期间,预置syb.dbf表中的有关内容,kmbh长度取1、4、8分别处理,由程序依据总账表的数据自动生成损益表文件中的本月数和本年累计数。通过VFP6.0的报表生成器完成损益表的输出,也可通过建立查询在屏幕上输出有关内容。,2023/8/26,管理信息系统:李国红主讲,76,总账表部分数据,损益表部分数据,2023/8/26,管理信息系统:李国红主讲,77,生成损益表表单,use zzgo bottthisform.text1.value=allt(str(year(rq)thisform.text2.value=allt(str(month(rq)use,表单的Init过程代码:,2023/8/26,管理信息系统:李国红主讲,78,损益表数据自动生成及输出N-S图,2023/8/26,管理信息系统:李国红主讲,79,生成损益表代码,set talk offset exact onset safety offsele 1use zzset filter to year(rq)=val(thisform.text1.value)and month(rq)=val(thisform.text2.value)go topsele 2use sybrepl all bys with 0,ljs with 0go top&以便从损益表的首记录开始,以下求本月数,2023/8/26,管理信息系统:李国红主讲,80,do while.not.eof()kmbh1=allt(kmbh)&kmbh1为syb表当前记录的kmbh(去掉前后空格)length=len(kmbh1)&length为syb表当前记录的kmbh去掉前后空格后的长度 do case case length=8 declare sz(2)&数组sz表示本月数 sele 1&总账表工作区 i=1 do while ibz=d,dffs-jffs,jffs-dffs)else sz(i)=0 endif i=i+1 enddo sele 2&损益表工作区 repl bys with sz(1)+sz(2),2023/8/26,管理信息系统:李国红主讲,81,case length=4 sele 1&总账表工作区 loca for allt(kmbh)=kmbh1 if found()bys1=iif(b-bz=d,dffs-jffs,jffs-dffs)else bys1=0 endif sele 2&损益表工作区 repl bys with bys1 case length=1 r=recn()sum bys to bys1 for bz=d sum bys to bys2 for bz=j go r repl bys with bys1-bys2 endc skipendd,2023/8/26,管理信息系统:李国红主讲,82,go top month(rq)=val(thisform.text2.value).and.allt(kmbh)=subs(kmbh1,4*i-3,4)go bottom sz1(i)=iif(eof(),0,ye)i=i+1 enddo sele 2&损益表工作区 repl ljs with sz1(1)+sz1(2),2023/8/26,管理信息系统:李国红主讲,83,case length=4 sele 1 month(rq)=val(thisform.text2.value).and.allt(kmbh)=kmbh1 go bottom ljs1=iif(eof(),0,ye)sele 2&损益表工作区 repl ljs with ljs1 case length=1 r=recn()sum ljs to ljs1 for bz=d sum ljs to ljs2 for bz=j go r repl ljs with ljs1-ljs2 endc skipendd,2023/8/26,管理信息系统:李国红主讲,84,copy to syb+allt(thisform.text1.value)+-+allt(thisform.text2.value)+.dbf;fields xm,hc,bys,ljs syb+allt(thisform.text1.value)+-+allt(thisform.text2.value)+.dbfclose databasesset safety onset exact offset talk on,2023/8/26,管理信息系统:李国红主讲,85,2023/8/26,管理信息系统:李国红主讲,86,6.7 账务处理与报表系统的菜单设计,1、功能模块,2023/8/26,管理信息系统:李国红主讲,87,2、菜单规划与设计,2023/8/26,管理信息系统:李国红主讲,88,2、菜单规划与设计,2023/8/26,管理信息系统:李国红主讲,89,菜单设计,2、菜单规划与设计,2023/8/26,管理信息系统:李国红主讲,90,2、菜单规划与设计,2023/8/26,管理信息系统:李国红主讲,91,3、报表设计创建与修改报表:modi report 报表文件名预览报表:report form 报表主名.frx for 条件 preview打印报表:report form 报表主名.frx for 条件 to printer4、查询设计创建与修改查询:modi query 查询文件名执行查询:do 查询主文件名.qpr5、菜单的运行执行菜单,生成:生成扩展名为.mpr的可执行菜单文件执行菜单:Do 菜单文件主名.mpr,2023/8/26,管理信息系统:李国红主讲,92,6.8 MIS操作维护设计与实现,1、在zwcl数据库中建立mima.dbf表,返回:用户登录,2023/8/26,管理信息系统:李国红主讲,93,2、增加操作员设计表单Text2、Text3的PasswordChar:*退出:thisform.release确定:,2023/8/26,管理信息系统:李国红主讲,94,set exact onopen database zwcluse mimaif len(allt(thisform.text1.value)0&输入的操作员密码不全为空格 locate for allt(czy)=allt(thisform.text1.value)if found()messagebox(已有此操作员,请重新输入!,0+48)thisform.text1.value=space(0)thisform.text2.value=space(0)thisform.text3.value=space(0)else&密码表中无与Text1中匹配的内容 if allt(thisform.text2.value)=allt(thisform.text3.value)if len(allt(thisform.text2.value)0 appe blank repl czy with allt(thisform.text1.value)repl mm with allt(thisform.text2.value)thisform.text1.value=space(0)thisform.text2.value=space(0)thisform.text3.value=space(0)else&Text2中未输入字符或输入的是空格字符串 messagebox(请输入密码,注意不能全为空格!,0+48)endif,2023/8/26,管理信息系统:李国红主讲,95,else&Text2与Text3中的内容不相同 messagebox(密码不一致,请重新输入!,0+48)thisform.text2.value=space(0)thisform.text3.value=space(0)endif endifelse&Text1中未输入字符或输入的是空格字符串 messagebox(请输入操作员代码,注意不能全为空格!,0+48)thisform.text2.value=space(0)thisform.text3.value=space(0)endifclose databaseset exact off,2023/8/26,管理信息系统:李国红主讲,96,3、删除操作员设计表单Combo1:RowSourceType:6-字段;RowSource:mima.czy;Style:2-下拉列表框;ControlSource:mima.czyText1:PasswordChar:*,2023/8/26,管理信息系统:李国红主讲,97,Form1.Load:open database zwcl Form1.Init:thisform.text1.setfocus Form1.Unload:close databaseCombo