管理信息系统数据输入模块的设计与实现
[摘 要]本文以会计科目的输入设计与实施为例,以Microsoft Visual FoxPro 6.0为关系数据库管理系统,分析与阐述了管理信息系统数据输入模块的实施原理与方法,探讨了会计科目输入的程序流程,并提供了相应的程序代码。
[关键词]管理信息系统;会计科目;信息输入;VFP程序设计
数据输入模块是管理信息系统的一个关键性的处理模块,输入数据的正确性与可靠性是管理信息系统发挥其功能的重要保证,输入模块设计的好坏将会直接影响到管理信息系统的正常使用。输入模块设计与实现的基本原理是:首先设计与建立简便易用的用户输入界面及相关的数据表文件,然后选择合适的程序设计语言,并根据信息输入的程序流程设计相应的程序代码;程序运行时,用户通过用户输入界面从键盘录入所要求的原始数据,所录入的数据符合要求时将被存储在指定的数据表文件中,不满足要求时则不能保存到相应的数据表文件,而且应当有相应的提示信息。现以Microsoft Visual FoxPro 6.0(以下简称VFP)数据库管理系统为系统开发环境,以会计科目的输入设计与实施为例,说明信息输入模块的设计与实现方法。
1 会计科目输入模块的实施原理
1.1会计科目输入模块的功能目标
会计科目信息包括科目编号、科目名称、借贷方向和期初余额等,这些信息的输入通过会计科目输入的表单界面进行,其表单界面如图1所示。将会计科目信息通过键盘分别输入至表单中对应的Textl、Text2、Text3、Text4文本框中,然后单击“确定”按钮;这时,若从键盘输入至表单的信息符合要求,则将这些信息保存至会计科目表kjkm.dbf中,否则需做进一步判断与处理,只有符合要求的会计科目信息才能保存在kjkm.dbf数据表中。kjkm.dbf数据表的结构如表1所示。
从键盘输入至表单的信息是否符合要求,主要由程序自动判断与处理,用户不必关心。信息是否符合要求主要看表单上科目编号对应的Textl文本框中的数据是否符合要求,以下情况均不符合要求:①Textl文本框中为空白数据(空字串或空格);②TextI中的数据位数不符合要求;③Textl中的科目编号对应的上级科目在kjkm.dbf数据表中没有匹配的记录;④Textl中的科目编号在kjkm.dbf数据表中已有匹配的记录。单击“确定”按钮时,只要出现上述情况之一,都会弹出信息提示对话框并要求进一步操作与处理,直到Textl中的数据满足要求时,才能通过单击“确定”按钮将表单上的数据存储在kjkm.dbf中。
在信息输入的过程中,若单击表单上的“取消”按钮,便取消了本次输入并将焦点定位于Textl文本框,等待重新输入;若单击“退出”按钮,将弹出提示信息“真的想退出吗?”的对话框,再单击对话框上的“是”按钮将退出输入模块,但单击对话框上的“否”按钮并不退出。
1.2会计科日表kjkm.dbf的结构
建立会计科目数据表,其结构如表l所示,相应的数据表文件kjkm.dbf保存在默认目录(或指定目录)下。
其中,科目编号kmbh字段的值可以是一级科目,也可以是二、三、四级科目。这里假定一级科目的科目编号用3位代码表示,非一级科目的科目编号用它的上级科目编号后面加2位代码表示。例如,一级科目“银行存款”的科目编号是102,二级科目“银行存款一工行”的科目编号可用10201表示,三、四级科目的编号可用1020101、102010101等来表示。当然,kmbh字段的宽度也可根据实际需要设计为5位、7位、ll位等,对后面提到的程序不会有任何影响。这样设计时,要求科目编号的位数不能低于3位,而且必须是奇数。另外,科目编号kmbh在数据表kjkm.dbf中是主码,不允许为空值,也不能有重复的值出现,而且,通过表单界面输入非一级科目的科目编号时,必须保证kjkm.dbf中已保存了与之对应的上级科目编号。通过表单界面输入信息时,程序应能够自动判断出是否满足所有这些要求,并进行相应处理。
科目名称kmmc、借贷方向jdfx、期初余额qcye的宽度也应根据实际需要设计成其他值,这里给出的只是参考值。
1.3会计科目输入的表单界面
新建用于会计科目信息输入的表单,其界面如图1所示,相应的表单文件保存在默认目录(或指定目录)下。如果要改变表单界面上文字的字体、字号、颜色,需要在各标签控件和命令按钮控件的属性对话框中设置FontName、FontSize、ForeColor属性;如果改变直线的颜色,可通过设置其BorderColor属性进行,也可以通过操作调色板实现。
由于期初余额qcye在会计科目表kjkm.dbf中为数值型数据,宽度为12,小数位为2位,这就需对Text4文本框做如下处理:用鼠标右键单击Text4文本框,在弹出的快捷菜单中选择“生成器”,出现“文本框生成器”对话框,在“格式”选项卡将“数值类型”设置为“数值型”,并将“输入编码”设置为“999999999.99”。
由于科目编号、科目名称、借贷方向为字符型数据,它们对应的Textl、Text2、Text3文本框不必再作处理。
2 会计科目输入的程序流程
会计科目信息输入时,程序应能够自动判断出从键盘输入的数据是否符合会计科目表kjkm.dbf存储信息的要求,并做出相应的处理,其程序流程如图2所示。
3 会计科目输入的VFP程序代码及相关说明
3.1会计科目输入的VFP程序代码
会计科目的输入是通过会计科目输入的表单界面进行的,而要将从键盘输入至表单界面对应文本框中的数据保存至会计科目表kjkm.dbf中,则需要单击表单上的“确定”按钮。因此,“确定”按钮的Click事件的程序代码应当与图2所示的“会计科目输入程序流程”相对应。“确定”按钮的Click事件的VFP程序代码对应如下。
set exact on b=O
use kjkm
kmbhl=allt(、thisform.textl.value)
lengthl=len(allt(thisform.textl.value))
if lengthl3
if mod(1en(allt(kmbhl)),2)=1
go top
loca for allt(kmbh)=left(allt(kmbhl),lengthl-2)
if.not.found0
b=messagebox(“无上级科目,请输入上级科目!”,48)
thisform.textl.value=left(allt(kmbhl),lengthl-2)
thisform.text2.value=space(1)
thisform.text3.value=space(1)
thisform.text4.value=0.00
thisform.text2.setfocus
endif else
b=messageboxf(“科目编号位数不对,请重新输入!”,48)
thisform.textl.setfocus
endif
endif
endif
if b=0
appe blan
repl kmbh with kmbhl
repl kmmc with thisform.text2.value
repl jdfx with thisform.text3.value
repl qcye with thisform.text4.value
thisform.textl.value=space(1)
thisform.text2.value=space(1)
thisform.text3.value=space(1)
thisform.text4.value=0.00
thisform.refresh
thisform.text 1.setfocus
endif use
set exact off
3.2相关说明
kmbhl、lengthl是中间变量,分别表示输入至Textl文本框中的科目编号(去掉前后空格)及其长度。当lengthl3时,还要看Textl文本框中科目编号的位数是否符合要求,以及kjkm.dbf表中是否已经有相应的上级科目编号存在。
b是中间变量,只有当b=0时,才可以将输入至表单文本框中的信息保存在kjkm.dbf表中。也就是说,输入的信息存盘时,要检查b的值是否等于0。在程序中,一旦Textl文本框中接收的输入信息不满足kjkm.dbf数据表对信息的要求,就为b赋以非0值。
赋值语句b=messagebox(“请输入不低于三位的科目编号!”,48)表示弹出包含“确定”按钮的提示信息对话框,提示信息为“请输入不低于三位的科目编号!”,单击对话框中的“确定”按钮时,返回值为1,即b=l,表示表单文本框中的信息不符合kjkm.dbf数据表对信息的要求,这些信息不能保存在kkkm.dbf数据表中。其余几个类似的为b赋值的语句同理。
mod(1en(allt(kmbhl)),2)=1是一个判断条件,该条件满足时,表示输入表单的科目编号(去掉前后空格)的位数是奇数;否则输入的科目编号(去掉前后空格)的位数是偶数,这时科目编号需要重新输入。
loca for alt(kmbh)=left(alltfkmbhl),lengthl-2)的作用是在kjkm.dbf表中查找与Textl文本框中已输入的科目编号相对应的上级科目编号。
thisform.textl.value=left(alltfkmbhl),lengthl-2)的作用是将Textl文本框中的内容自动变为与所输入科目编号相对应的上级科目编号。
当b=0时。将在kjkm.dbf数据表中添加一条新记录,新记录中各字段的值与表单上对应文本框中的数据相对应,实现的方法是先用append blank语句为数据表追加一条空白记录,再用replace…with…语句将各字段的值替换成表单中对应的数据。
4 信息输入辅助功能的实现
4.1单击清空文本框
除科目编号对应的Textl文本框外,在单击科目名称、借贷方向、期初余额对应的Text2、Text3、Text4文本框时,希望能够清空其中已有的数据,以便重新输入。为实现此功能,可在接收字符型数据的Text2、Text3文本框的Click事件代码中将其Value属性值设置为一个空格,在接收数值型数据的Text4文本框的Click事件代码中将其Value属性值设置为0。
Text2、Text3文本框的Click事件对应的VFP程序代码为:this.value=space(l)
Text4文本框的Click事件对应的VFP程序代码为:this.value=0.00
4.2取消本次输入
在信息输入过程中,有时希望取消本次输入操作,即在单击“确定”按钮前将输入至表单文本框中的数据清除,而不保存这些数据到会计科目表kjkm.dbf中。这时,可通过单击表单中的“取消”按钮来完成。“取消”按钮的Click事件对应的程序流程是:依次将表单中Textl、Text2、Text3文本框的Value属性值设置为一个空格,将Text4数值型文本框的Value属性值赋以数值0,然后刷新表单,使Textl文本框获得焦点。其中,刷新表单用thisform.refresh实现,Textl文本框获得焦点用thisform.textl.setfocus实现。“取消”按钮的Click事件对应的VFP程序代码如下。
thisform.textl.value=space(1)
thisform.text2.value=space(1)
thisform.text3.value=space(1)
thisform.text4.value=O.00
thisform.refresh
thisform.text1.setfocus
4.3退出输入模块
信息输入完毕,应退出输入模块,可通过单击表单上的“退出”按钮完成此操作。“退出”按钮的Click事件对应的程序流程是:弹出与提示信息“真的想退出吗?”相对应的对话框,该对话框上有“是”与“否”两个按钮,单击“是”按钮时释放表单,单击“否”按钮时不释放表单。弹出包含“是”与“否”按钮的对话框的功能可用函数messagebox(“真的想退出吗?”4+48)来实现,单击“是”按钮时返回值为6,单击”否”按钮时返回值为7。刷新表单可用thisform.release实现。“退出”按钮的Click事件对应的VFP程序代码如下。
if messagebox(“真的想退出吗?”,4+48)=6
thisform.release
endif
[收稿日期]2006-07-25
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务