字符界面 数据录入流程控制

发表于:2007-07-04来源:作者:点击数: 标签:
中国建设 银行 北京分行 陈德模 软件 开发 过程中,往往需要为录入数据而设计许多不同的录入界面,编写不同的录入控制程序,这不仅费时费力,而且使程序变得冗长。其实,认真分析就会发现他们有很多共同点,完全可以把这种编程工作简化。现介绍一种字符界面环
中国建设银行北京分行 陈德模

  软件开发过程中,往往需要为录入数据而设计许多不同的录入界面,编写不同的录入控制程序,这不仅费时费力,而且使程序变得冗长。其实,认真分析就会发现他们有很多共同点,完全可以把这种编程工作简化。现介绍一种字符界面环境下数据录入流程控制的方法供大家参考。

  数据录入流程控制简单说就是根据数据录入者的操作将光标定位于屏幕界面的不同位置、读取相应类型数据的过程。它是录入界面设计、数据读取操作处理、录入流程控制三方面的结合。

  录入界面往往根据需要而变化;数据读取操作可以分类设计,每类数据的读取操作相对不变;录入流程则根据界面上数据项的变化而变化,但对其每项数据来说是可以不变的。因此,在设计新的数据录入程序时,只需设计所需录入界面即可,而录入流程控制及数据读取操作处理则可一劳永逸,这样就不必重复编写类似程序,大大简化了编程。 一、 设计并定义录入界面   根据需要设计录入界面式样,按一定的语法格式命名、定义所需录入数据项的属性,并以一定格式(如纯文本方式)保存这些信息,供数据录入流程控制程序使用。例如我们想设计编写一个“个人信息录入”界面程序,需录入姓名、性别、生日、学历、工资、电话等信息,其界面式样设计及各数据项属性定义如下,并以纯文本方式保存于文件中(以下简称此文件为“界面格式文件”)。 Form:{录入界面开始/ 界面式样段} 个 人 信 息 录 入<> 姓名[name ] 学历[degree ] 性别[sex ] (0-男 1-女) 工资[salary ] 生日[birthday ] 电话[telephone ] End; {录入界面结束} Define: {录入数据项属性定义开始 数据项属性定义段} Name [Type=char(10) , Color=Blue]; {姓名,10个字符长,蓝色} Sex [Type=number(1), Range(0,1)]; {性别,1位数值长,0-1范围取值} Birthday [Type=Date]; {生日,日期型(缺省长度10个字符)} Degree [Type=Member (0-小学,1-中专,2-学士,3-硕士)]; {学历,集合型取值,取值范围0-3, 读取该项值时弹出选择菜单} Salary [Type=Float(10,2)]; {工资,10位浮点数,小数点后保留两位} Default [Font=宋体,Color=Black, Size=18] {缺省项,此项可选,用于定义所有数据项的默认属性, 此处定义了默认字体及其颜色和大小} end {录入数据项属性定义结束}

  注:“{ }”中内容为注释项,可有可无。

  上述文件分为录入界面式样设计及数据项属性定义两段。界面式样为屏幕显示用,其中“[ ]”为数据项录入区域界定符,其内含的字符串为数据项名称,这些名称在显示录入界面时被过滤,其余均照原样显示于屏幕指定位置或某指定窗口中,完全是“所见即所得”。数据项属性定义段分别定义了各数据项的基本属性,如数据类型、长度、取值范围、颜色、字体等属性,这些属性可以根据设计者的需要进行设置。数据项属性定义中“default"项用于改变所有数据项的公共属性,若不改变可不用。 二、构造数据读取操作函数   在读取数据时,由于数据类型不同,读取数据有效性验证方法也有所不同,但常用的几种数据类型可以归纳为整数型、字符型、浮点型、日期型、集合型五种。因此下面构造了五个函数来满足这五种数据类型的读取操作(也可增加别的数据类型读取函数)。他们的功能及格式描述如下:

  1.读取整数型数据函数

  ReadInteger(win,x,y,length,start,end):在窗口win的x、y处读取start~end范围内的长度为length的整数。因此,其中win为读数窗口名称;x、y 为win内坐标偏移量;length为读取数据长度;start、end为数据起始范围,均为零或无此两参数表示无范围限制。

  2.读入字符型数据函数

  ReadChar(win,x,y,length):返回字符串。各项参数同1。

  3.读入浮点型数据函数

  ReadFloat(win,x,y,length,point):返回浮点数。point为小数点位数,其余各项参数同1。

  4.读入日期型数据函数

  ReadDate(win,x,y,format):返回格式化的日期型数据。 format为日期格式,如yyyy/mm/dd(年/月/日)、mm/dd/yyyy(月/日/年)、yyyy-mm -dd(年-月-日)等格式。各项参数同1。

  5.读入集合型数据函数

  ReadSet(win,x,y,*members):返回集合中某个被选中的成员的值。Members为成员集合,其余各参数同1。当此函数被调用时,用members成员构成下拉选择菜单供操作者选择。

  上述所有函数在进行数据读取时均能进行简单的增、删、插、改、光标前后移动等数据编辑功能。编写数据录入流程控制程序

  流程控制程序是数据录入控制的主体程序,其主要功能是根据界面格式文件信息显示录入界面,同时根据录入者操作定位并调用相应数据类型读取函数录入数据。具体流程如下:

  1.读取上述界面格式文件并显示界面式样于指定屏幕位置(窗口win的起始位置+偏移量);如果需要可对界面格式文件进行语法检查,以排除语法错误。上例界面可显示如下: 个人信息录入 姓名[ ] 学历[ ] 性别[ ](0-男 1-女) 工资[ ] 生日[ ] 电话[ ]

  2.根据界面格式文件的“界面式样段”中“[ ]”的数量来统计数据项的个数;记住数据项的名称并计算它们于win中的相对位置;

  3.从界面格式文件的“数据项属性定义段”中读取各数据项的属性;

  4.动态申请与数据项一致的的存储空间以备存储录入数据;

  5.根据录入者的操作定位至相应的数据项;

  6.根据该数据项的数据类型属性调用相应的数据读取函数进行数据读取操作并将读取结果保存到对应的存储空间中,录入下个数据项转至5;

  7.读取操作完毕后,按一定格式返回各项已读取数据,供外部程序进行处理。整个读取操作完成。

  数据读取过程中,可根据录入者的操作随时定位于任意数据项。各数据项的先后读取顺序可按由上至下的顺序决定,亦可通过各数据项的编码属性进行定义。

  上述功能实现后,在编写新的数据录入程序时,勿需重新编程,只需用普通编辑软件编写所需的界面格式文件,然后调用数据读取流程控制程序即可。这一方法,我在Unix环境下用C语言编程实现,并应用于实际工作的多个业务处理系统中,取得了非常好的运行效果。  

原文转自:http://www.ltesting.net