全套课件-《Visual-FoxPro-9.0项目开发案例教程》-李政_第1页
全套课件-《Visual-FoxPro-9.0项目开发案例教程》-李政_第2页
全套课件-《Visual-FoxPro-9.0项目开发案例教程》-李政_第3页
全套课件-《Visual-FoxPro-9.0项目开发案例教程》-李政_第4页
全套课件-《Visual-FoxPro-9.0项目开发案例教程》-李政_第5页
已阅读5页,还剩200页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualFoxPro9.0项目开发案例教程

VisualFoxPro9.0应用基础VisualFoxPro(简称VFP),起源于xBase系列的dBASEⅡ、dBASEⅢ、Clipper、FoxBase以及FoxPro,是为数据库管理和应用程序开发而设计的功能强大的面向对象环境。

VisualFoxPro9.0是Microsoft公司系列软件的最新版本,是一种优秀的数据库管理系统和开发工具。

VisualFoxPro9.0可以和其他应用程序(如MicrosoftExcel、MicrosoftWord、MicrosoftVisualBasic等)进行交互,也可以创建基于Web的应用程序。VisualFoxPro9.0应用基础VisualFoxPro9.0可以更好地支持ActiveX控件和面向对象程序设计,使得开发数据库的工具更加完善与快捷,从而成为功能强大、可靠的数据库管理系统。它提供了大量的系统开发工具和向导(Wizard),使以往费时费力的开发工作变得轻松自如。它提供了全新的智能感知技术,能够自动填写属性和参数,提高了代码录入速度和质量。1.1VFP环境与项目管理器VFP工作界面

系统界面主要包括以下几部分:命令窗口、菜单和工具栏定制VFP环境项目管理器项目管理器是VFP中各种数据和对象的主要组织工具。1.2数据库和表建立数据库建立数据表设置字段属性浏览和编辑数据表给数据表添加记录删除或还原记录建立索引

1.3查询与视图

查询是将数据表中满足某些条件的记录和字段筛选出来形成的一个子表,此子表可以像其他数据表一样保存起来以供随时使用。视图和查询类似,数据都来源于一个或几个表,这些表称之为基表。查询就是对基表进行“查看”,不能通过它来修改基表。而视图可以修改数据,并将修改后的数据传回给基表。1.3查询与视图建立和运行查询建立多表查询建立视图1.4表单设计与应用

表单(Form),是VisualFoxPro提供的一种功能强大的界面。各种对话框和窗口都是表单的不同表现形式。它可以使用户在简单明了的界面中查看数据或将数据记录输入到表中。表单以文件的形式存于磁盘,其扩展名为.scx。它可以属于某个项目,也可以游离于任何项目之外。在项目管理器中创建的表单自动隶属于该项目。

1.4表单设计与应用创建和运行表单表单常用属性AlwaysOnTopAutoCenterBackColorBorderStyleCaptionClosableDataSessionMaxButtonMinButtonMovableScrollbarsWindowStateWindowType1.4表单设计与应用表单常用方法

Release方法

Refresh方法

Show方法

Hide方法

SetFocus方法

1.4表单设计与应用表单及控件的常用事件

Init事件Destroy事件

Load事件Unload事件

GotFocus事件Click事件

DblClick事件RightClick事件

InteractiveChange事件

1.4表单设计与应用编辑方法或事件代码设置表单属性表单控件工具栏控件的操作与布局1.5报表与标签

报表是各种数据最常用的输出形式,VFP9.0中的报表不仅可以输出数据表内容,还提供了数据统计、自动布局等功能。使用报表向导在项目管理器中,选择Documents选项卡的Reports项,单击New按钮,在打开的对话框中单击ReportWizard按钮,在弹出的WizardSelection对话框中选择ReportWizard。然后按报表向导选择数据表、输出字段、排序字段、分组字段、报表风格、布局,最后保存为报表文件(.frx)。1.5报表与标签建立快速报表报表的加工调整带区宽度移动控件修改控件1.5报表与标签设计标签

标签是一种特殊类型的报表。如职工工资发放条、学生补考通知书、职工人事情况表等,都是为了满足用户实际需要而设计的报表,可以用标签实现。在项目管理器的Documents选项卡中选择Labels项,单击New按钮,再单击LabelWizard按钮,然后就可以按向导创建标签了。1.6菜单的设计与应用

在Windows下运行的软件一般都使用菜单,菜单是各种软件的主要操作手段。它可以帮助使用者按照分级选择方式,逐步选择命令,并取得最终服务的方便快捷的手段。了解VisualFoxPro系统菜单的结构、特点和行为,则是设计用户自己的菜单系统的基础。菜单结构

典型的菜单系统一般是一个下拉式菜单,由一个条形菜单(菜单栏)和一组弹出式菜单(子菜单)组成。其中条形菜单作为主菜单,弹出式菜单作为子菜单。当选择一个条形菜单选项时,激活相应的弹出式菜单。快捷菜单是一种单击鼠标右键才出现的弹出式菜单。1.6菜单的设计与应用下拉式菜单设计打开菜单设计器进行菜单设计常规选项设置菜单选项设置菜单选项设置为顶层表单添加菜单快捷菜单设计

1.7类的创建与使用

在开发应用软件过程中,有时相似的对象会多次用到。比如,多个表单的Windowtype属性都为“1-模式”,表单中都有“确定”和“取消”两个按钮,“取消”按钮中都有“thisform.release”这样的语句,等等。我们可以创建具有某些共同特性的对象,在需要时调用,共同的部分就不需要设置了,只需设置那些独特的部分。“类”就可以起到这样的作用。代表了一类对象,就好像模板一样。我们可以根据需要建立各种各样的类,并将它们保存起来,供以后调用,这样可以大大提高软件开发效率和质量。1.7类的创建与使用创建类在项目管理器上选择Classes选项卡,单击New按钮。使用类1.7类的创建与使用

对于一般控件做的类,使用起来非常简单。进入表单设计器,打开表单控件工具栏,单击上面的ViewClasses按钮,在快捷菜单中选Add项,在打开的对话框中选择类库文件,这时的工具栏显示出该类库中的类对应的按钮。这时就可以像使用标准控件一样使用类控件。若要使用标准控件,可单击表单控件工具栏上面的ViewClasses按钮,在快捷菜单中选Standard项。

1.7类的创建与使用类特征的继承与变异子类将继承该类所有的属性,也可以有自己的特性。调用类的方法程序类的代码可能不适合特定的对象,我们就需要写入自己的代码,根据类的变异特性,这时类原来的代码就不起作用了。屏蔽基类方法程序1.8常用语句IF...ENDIFDOCASE...ENDCASEDOWHILE...ENDDOFOR...ENDFORSCAN...ENDSCANSTORE表达式TO变量名表READEVENTSCLEAREVENTSCOPYFILE文件名1TO文件名2COPYSTRUCTUREEXTENDEDTO表文件名[FIELDS字段名表]1.8常用语句11.ONERROR[命令]12.ONESCAPE[命令]13.ONKEYLABEL键名[命令]14.SETCONFIRMON|OFF15.SETDEFAULTTO[路径]16.FLUSH17.CANCEL18.BLANK[FIELDS字段名列表][范围][FOR条件][WHILE条件][NOOPTIMIZE]19.RETURN20.CALCULATE表达式列表[范围][FOR条件][WHILE条件][TO变量列表|TOARRAY数组名][NOOPTIMIZE]1.9常用函数数值处理函数

1.INT(数值表达式)2.ROUND(数值表达式,小数位数)3.RAND([种子值])4.MOD(数值表达式1,数值表达式2)5.ABS(数值表达式)字符处理函数

1.9常用函数1.TRIM(字符表达式)2.LTRIM(字符表达式)3.ALLTRIM(字符表达式)4.LEFT(字符表达式,数值表达式)5.SUBSTR(字符表达式,开始截取的位置[,截取的长度])6.LEN(字符表达式)7.LIKE(字符表达式1,字符表达式2)8.RAT(要搜索的字符,被搜索的字符串[,N])9.STUFF(原字符串,开始替换的位置,被替换的字符数,用于替换的字符串)10.CHRTRAN(字符表达式1,字符表达式2,字符表达式3)

VisualFoxPro9.0应用技巧

本章通过若干实例介绍软件开发中涉及到的一些常见技巧,主要包括数据输入、数据查询、数据输出、与Excel交互、使用图形、工具栏、进度条等内容。2.1数据输入2.1.1中英文自动切换原理以文本框或组合框为父类新建一个子类,同时为这个新建的类添加一个属性,根据此属性的值分别调整imestatus()函数的值为0或1,以此来控制系统的输入法状态。2.1数据输入2.1.2组合框的记忆选择原理对组合框的每一次选择都作以记载,把选择的值存储到公共变量中,并把此变量的值保存到内存变量文件里。这样,每次进入组合框时从内存变量文件中恢复保存的变量,就可以记忆以往的选择,从而提高操作效率。2.1数据输入2.1.3编辑框中实现自动更正的方法原理1、把word的自动更正资料库文件mso.acl中的汉字词组正误信息转换为.dbf文件2、对允许输入汉字的控件的Keypress事件编写代码,对输入的汉字词组在资料库中进行校验,自动把错误的词组转换为对应正确词组。2.1数据输入2.1.4VFP智能感应的二次开发

VFP从7.0版开始增加了智能感应(IntelliSense)功能。当我们输入命令缩写及空格后,命令会自动扩展。输入函数名及左括弧、对象名及点之后,系统会自动提示相应的参数、属性、方法名等供选择。原理智能感应的所有内容及方案都在一个表中定义,表的文件名默认为foxcode.dbf,在系统变量_foxcode中存放。修改或扩展这个表的内容就可以改变智能感应的内容。2.2数据查询2.2.1热点跟踪和悬停效果在一个表单的各个控件之间进行焦点的转移时,控件能够在鼠标滑过的时候突出显示,实现的既是热点跟踪的效果。原理1、利用SpeciaEffect属性设置热点跟踪效果2、用_mouseoverfx类突出显示效果3、利用MouseEnter和MouseLeave事件进一步设置动态效果4、对Grid的记录进行控制2.2数据查询2.2.2系统的查询类及其应用原理1、VFP提供了进行查询的类库(_dataquery.vcx),应用其中的类_qbf,可以在表单的文本框中输入查询条件并显示查询结果。所有用于显示字段内容的文本框都可以用来输入相关的查询值,使用起来简单方便。2、利用了事务回滚技术2.2数据查询2.2.3用VFP设计数据表结构浏览器

原理利用COPYSTRUCTUREEXTENDED命令生成一个数据表的结构描述文件,并把结构描述文件的前四个主要字段送给表格控件作为数据源,从而实现在一个交互界面中随意选择表文件进行结构浏览2.3输出报表2.3.1VFP9.0中的多细节带区VisualFoxPro9.0的新增功能:执行多细节带区功能,实现一对多关系打印。通过打开报表设计器的属性窗口,单击OptionalBands选项卡中的Add按钮添加一个细节带区到列表中。在建立多细节带区报表时,应当按一对多关系中的父表的某个具有惟一值的字段进行分组。2.3输出报表2.3.2在报表中实现每页打印指定记录数原理可以采用数据分组的方法来实现每页打印指定记录数,而数据分组则可以使用临时表或设置报表变量的两种方法实现。使用临时表的方法设置一个局部变量DetailNum的值为每页打印的记录数,根据它对记录分组,形成分组号保存到自定义字段别名GroupCount中,把所有记录的分组号以及原有字段内容保存到临时表Temp2,作为报表的数据源。2.3输出报表2.3.2在报表中实现每页打印指定记录数使用报表变量的方法数据环境的Init事件定义一个全局变量tobePrint,保存每页要打印的记录数。新建两个报表变量nCount和nGroup。nCount用于统计已经打印的记录个数。nGroup的值来自一个表达式,表示当前记录已经满足一页最大打印记录数时,则用于代表页码的变量nGroup就会增加1。2.3输出报表2.3.3在VFP中处理JPG文件原理不将图像文件保存到GENERAL型字段中,而是把图像文件保存到一个二进制的Memo型字段,当需要显示图像时,则将该二进制Memo型字段的内容输出到一个临时文件中,然后再将临时文件名赋给Image控件或OLEBound控件对应属性来显示图像。2.3输出报表2.3.3在VFP中处理JPG文件将图像文件保存到二进制Memo型字段中的ftom函数;将二进制Memo型字段中的图像保存到一个外部文件中的mtof函数。2.4其他技术2.4.1表单Grid容器中控件的动态增删及属性设置原理1、用AddObject(zd,'Column')方法在表单的Grid1容器中添加一个“列”控件(文本框),以zd的值(选取的字段名)为控件名。2、然后,设置控件的属性。包括宽度(Width)、可见性(Visible)、控制源(ControlSource)、列标题(Header1.Caption)等。2.4其他技术2.4.2工具栏的制作原理1、如果不脱离VFP系统环境(应用程序扩展名为APP),可通过定制工具栏或“object.show”指令,来使用VFP系统提供的各种工具栏。2、利用VFP系统提供的一个工具栏类tbrEditing来创建工具栏,位于…\Samples\Classes\Samples.vcx类库中,可用于任意程序。3、指定工具栏停放位置的命令ToolBar.Dock[nLocation[,X,Y]]2.4其他技术2.4.3进度条的实现原理1、使用ActiveX控件实现进度条选定表单控件工具栏的ActiveX控件,在表单上添加一个MicrosoftProgressBarControlVersion6.0控件,并设置其Max属性值,反映查询的最大次数。2、使用_thermometer类实现进度条

_thermometer类位于“……\MicrosoftVisualFoxPro9\Ffc\_therm.vcx类库中,基类为Form,该类用于提供一个标准的进度显示。2.4其他技术2.4.4VFP与Excel交互

在VFP中控制Excel操作利用CREATEOBJECT("Excel.Application")命令生成excel对象,然后利用对象变量设置Excel的各项属性及其复制数据。在VFP中获取Excel数据利用APPENDFROM<文件名>TYPEXLS命令从EXCEL文件获取数据。个人通讯录管理器目的:

1.把亲友、同学、同事的通讯录信息集中统一管理,及时维护和更新,通过计算机提高检索速度。

2.将收集的信息打印装订成“个人通讯录”,便于平时使用。技术:

1、“筛选”子程序的定义和调用

2、输出报表样式的设计和使用。3.1软件基本要求及设计方案要求:

1.软件精巧,功能实用,界面友好。

2.数据维护方便。

3.信息检索简便、高效。

4.打印的“个人通讯录”便于使用。3.2数据库和表的设计数据库表文件Txl三个索引,索引标识名字分别为“姓名”、“单位或地址”和“群组”。3.3表单外观设计表单要具有对表信息的增、删、改、排序、查找和打印功能。3.4表单及其控件的编码3.4.1与查询功能相关的代码1、建立表单新“方法”——sx2、定义“筛选”过程把在对应文本框中输入的“群组”、“姓名”、“电话”、“单位或地址”内容作为过滤条件,通过过程把满足条件的记录筛选出来,达到查询目的。3.4表单及其控件的编码3.4.1与查询功能相关的代码3、调用“筛选”过程对Text1、Text2、Text3、Text4每个文本框的InteractiveChange事件编写一条语句thisform.sx。“全部”命令按钮的作用是清除过滤条件,显示全部记录,所以把全部条件清空后,也需调用“筛选”方法。3.4表单及其控件的编码3.4.2

与排序有关的代码根据选项按钮组的值,通过SETORDERTO语句设置不同的索引顺序3.4.3添加记录功能的实现3.4表单及其控件的编码3.4.3添加记录功能的实现利用SCATTER和GATHER命令把某一条记录原有的值传递到新记录中去,这样可以只做少量修改就完成了一条新记录的输入。3.4表单及其控件的编码3.4.4切换删除标记用函数DELETED()测试当前记录是否带有删除标记,如果已作了删除标记,则执行命令RECALL取消删除标记,否则用命令DELETE添加删除标记。

3.4表单及其控件的编码3.4.5打印和预览——报表文件txl_bb

3.4表单及其控件的编码3.4.6主程序设计

设置必要的环境状态,然后执行表单Txl_screen是系统窗口,可通过代码对它的一些属性进行设置。READEVENTS命令执行后可以接受用户事件。3.4表单及其控件的编码3.4.7表单上“退出”按钮的代码

计算带有删除标记的记录个数送给变量cnt,如果cnt大于0,则用PACK命令删除带有标记的记录。释放(关闭)表单。恢复系统状态,清用户事件,退出系统。3.5生成可执行文件项目管理器中单击Build按钮编译软件光盘目录检索与维护工具功能:家庭用光盘目录检索与维护工具技术:

1、光盘类别从代码到类别名称的自动转换

2、表的独占方式打开

3、模态表单来实现对话框效果4.1系统设计目标目标:1、设计一个表单,作为人机交互界面,要求实现对信息的增、删、改、排序、查询和打印(特殊格式)功能,这样就可以省去菜单、工具栏等对象,使软件更加简洁。2、由于“类别”信息具有一定的规律性,属于枚举型数据,并且在基础信息录入时需要大量的重复式的操作,所以我们要设法提高输入效率。这里我们采用一种直接代换式输入方法,即用代号表示类别信息进行输入。4.2数据表设计两个自由表,一个叫tab_cd(光盘信息表),另一个叫tab_lb(光盘类别表)表tab_cd建立一个升序索引,索引名为“盘序号”,索引类型为Regular,索引表达式为“盘号+序号”4.3主表单设计4.3.1主表单外观设计4.3主表单设计4.3.2主表单及控件的编码

表单的Init事件代码

1、生成编辑框(Edit1)中对应的类别提示信息。

2、表tab_cd中的记录按预先定义的索引“盘序号”排序

3、调用表单的筛选子程序sx,将光盘信息表的内容显示出来4.3主表单设计4.3.2主表单及控件的编码

表单的自定义方法sx及其代码把在对应文本框中输入的“盘号”、“内容”、“编演者”、“喜欢程序”内容和在组合框中选择“类别”组合起来作为过滤条件,通过SETFILTERTO把满足条件的记录筛选出来,达到查询的目的。4.3主表单设计4.3.2主表单及控件的编码

调用“筛选”过程除了在表单的Init事件中,通过语句thisform.sx调用筛选子程序sx以外,当文本框Text1、Text2、Text3、Text5和组合框Combo1的内容发生改变时,即当它们的内容通过键盘或鼠标修改后,激活其InteractiveChange事件,这时也需要对表tab_cd的记录进行筛选,即执行sx过程。“全部”命令按钮的作用是清除过滤条件,显示全部记录,也许调用“筛选”过程。4.3主表单设计4.3.2主表单及控件的编码

添加记录功能的实现利用SCATTER和GATHER命令把某一条记录原有的值传递到新记录中去,这样可能只需做少量修改就完成了一条新记录的输入。4.3主表单设计4.3.2主表单及控件的编码

切换删除标记“删除”按钮的Click事件可对当前记录添加或取消删除标记。4.3主表单设计4.3.2主表单及控件的编码

与排序有关的代码用语句“SETORDERto盘序号”将表中的记录按“盘序号”进行排序,然后把光标定位到第一条记录,最后用语句thisform.Grid1.Column1.Text1.SetFocus将光标定位到表单上表格Grid1第一列的文本框上。4.3主表单设计4.3.2主表单及控件的编码

打印和预览通过“预览”和“打印”按钮对报表文件tab_cd进行预览和打印。“类别”按钮对应代码调用表单form_lb对类别信息进行维护。4.3主表单设计4.3.2主表单及控件的编码

“退出”按钮对应代码

1、计算带有删除标记的记录个数送给变量jls,如果jls大于0,则用PACK命令删除带有标记的记录。

2、释放(关闭)表单。

3、恢复原有状态,清除用户事件,退出系统。4.3主表单设计4.3.2主表单及控件的编码

Grid1中第六列文本Text1的相关代码

1、第六列文本Text1的GotFocus使光标定位在第六列(类别)时,类别与代号提示信息出现在编辑框Edit1中,光标离开第六列时,提示信息消失。

2、第六列文本Text1的InteractiveChange事件能将输入的类别代号自动转换成相应的类别名称。4.4类别信息维护表单设计4.4.1类别信息维护表单外观设计4.4类别信息维护表单设计4.4.2类别信息维护表单及其控件代码表单的Init事件将记录数送给文本框Text4,作为Value值显示出来。“添加”、“删除”、“退出”按钮对应代码各按钮的代码与主表单的对应按钮代码类似或相同。4.5打印报表设计建立报表文件tab_cb.frx,预览结果如图所示4.6主程序设计主程序的主要作用是对环境进行设置,然后执行表单form_cd.scx。_screen是系统窗口,可通过代码对它的一些属性进行设置。READEVENTS命令执行后可以接受用户事件。常用类的设计与应用

本章首先介绍一下面向对象程序设计的基础知识,然后给出两个常用类的设计和应用方法。这两个类可实现对任意表的记录进行修改、增删和查询,对提高程序的可重用性,提高软件的适应性和软件开发效率具有重要意义。5.1面向对象程序设计基础1.对象(Object)2.属性(Property)3.事件(Event)和方法(Method)4.类(Class)5.继承(Inherit)7.面向对象程序设计(OOP)8.VisualFoxPro基类9.容器与控件5.2“分页增删改”类的设计用于实现对任意数据表记录的输入、增添、删除和修改操作,界面上可以显示和修改任意一条记录的全部字段,每次显示一条记录。在进行数据维护时,可以随时按指定的字段或记录号定位记录,以提高操作效率。5.2“分页增删改”类的设计5.2.1类的创建与属性设置

基类(BasedOn)为Form,指定要保存到(StoreIn)的类库为page_form,指定类名(ClassName)为fyzsg,5.2“分页增删改”类的设计5.2.2添加类的“方法”和“属性”新的方法u_show用来“显示查询控件组”,设置可见性(Visibility)为Public。方法u_hide用来隐藏查询控件组和u_rcd方法用来显示或隐藏记录的删除标记,显示当前记录号、记录数,可见性均为Public。新的属性u_key用来“指定关键字段名(两个汉字)”,设置可见性(Visibility)为Public,默认的初始值为“??”。

5.2“分页增删改”类的设计5.2.3表单类的编码

init事件代码u_show代码u_hide代码u_rcd代码5.2“分页增删改”类的设计5.2.4控件的编码在表单类上,我们放置了十二个命令按钮。记录翻阅按钮代码“首页”、“前页”、“后页”和“尾页”分别用来控制记录指针到第一条记录、上一条记录、下一条记录和最后一条记录。5.2“分页增删改”类的设计与查询相关的按钮代码单击“查内容”或“查页号”按钮时,要调整条件提示信息并显示查询控件组。记录增删与退出按钮代码“添加”命令按钮的作用是在当前数据表中追加一条新的记录,“删除”命令按钮用来对当前记录添加或取消删除标记,“退出”命令按钮对加了删除标记的记录物理删除,并释放表单。5.3“分页增删改”类的应用添加类库page_form.vcx到表单创建基于fyzsg类的表单,在表单集中删除不必要的默认表单Form1,只留下基于fyzsg类的表单并保存。修改表单运行表单5.4“通用查询”类的设计5.4.1基本设计思想

属于通用的数据库查询模块,要能够对任意指定的表(数据库中的表或自由表)确定查询条件、指定输出字段和排序字段,并要能够对输出结果进行控制。5.4“通用查询”类的设计5.4.2类的创建与属性设置基类为Form,保存到的类库为class_lsz,指定类名(ClassName)为u_serch。设置类的属性为三个页面添加控件和设置属性

5.4“通用查询”类的设计5.4.3表单类的属性定义及init事件代码添加表单类的属性表单类中添加一个自定义属性tname作为入口参数,存放要查询的数据表名。5.4“通用查询”类的设计5.4.3表单类的属性定义及init事件代码表单类的init事件代码声明全局变量,用来保存程序所需的信息和数据;从表单的自定义属性tname中取出数据表名;设置系统状态;打开指定的数据表,利用AFIELDS()函数将表的结构信息存入全局数组stru_mem、字段数送fcnt;。5.4“通用查询”类的设计5.4.4页框中Page1上按钮及其相关代码命令按钮“>”代码将列表框List1中选中的字段移动到列表框List2

命令按钮“>>”代码将列表框List1中所有字段移动到列表框List2命令按钮“<”代码将列表框List2中选中的字段移动到列表框List15.4“通用查询”类的设计5.4.4页框中Page1上按钮及其相关代码命令按钮“<<”代码将列表框List2中所有字段移回到列表框List1表单类自定义方法qhkd代码如果查找的字段存在,则①取字段名和字段值宽度的最大值,保存到数组stru_mem对应行第6列的元素当中,作为字段的输出宽度。②在数组stru_mem对应行第5列的元素中,设置输出标记.T.(此前已设置为.F.)。③累加所有输出字段的宽度,得到输出字段的总宽度,保存到全局变量HKD中。5.4“通用查询”类的设计5.4.5页框中Page2上控件及其相关代码

文本框代码用于输入查询条件关系表达式的组成部分——值。表单类自定义方法tjzts的代码能够根据当前字段类型、关系运算符描述信息进行相应的条件值提示5.4“通用查询”类的设计5.4.5页框中Page2上控件及其相关代码

“选中”和“清除”命令按钮代码“选中”按钮将两个子条件和逻辑运算符合成为总条件(逻辑表达式字符串),送给编辑框edit1,作为它的value属性值保存并显示出来。“清除”命令按钮的作用是清除编辑框edit1的内容5.4“通用查询”类的设计5.4.5页框中Page2上控件及其相关代码

表单类自定义方法ztj的代码这段代码的功能是由调用参数zd(字段名)、gx(关系运算符描述信息)、nr(值),形成子条件(关系表达式),送给全局变量jstj。5.4“通用查询”类的设计5.4.6页框中Page3上命令按钮代码

“选中”命令按钮的作用是,从列表框中取出选中的字段名,形成排序表达式送到编辑框。5.4“通用查询”类的设计5.4.7表单类命令按钮及其相关代码

表单类“显示”按钮代码“显示”按钮的作用是根据指定的输出字段、检索条件和排序字段将数据表的内容在屏幕上显示出来。表单类自定义方法zdtjpx的代码形成输出字段表列送变量sczd,取出检索条件jstj,进行排序处理。5.4“通用查询”类的设计表单类“到txt”按钮代码根据指定的输出字段、检索条件和排序字段将数据表的内容按一定格式输出到文本文件中表单类自定义方法“line1”、“line2”和“line3”代码方法“line1”的功能是输出一条横线,长度为各输出字段宽度之和。方法“line2”的功能是输出选定的字段名并控制中间的空格数以调整输出宽度与横线匹配。方法“line3”的功能是输出选定字段的值并控制中间的空格数以调整输出宽度与横线匹配。5.4“通用查询”类的设计表单类“到Excel”和“取消”按钮代码“到Excel”按钮的作用是根据指定的输出字段、检索条件和排序字段将数据表的内容输出到Excel工作簿文件中。“取消”命令按钮的作用是关闭表单。5.5“通用查询”类的应用①选择输出字段②设置查询条件③设置排序字段④开始查询购房打分排队软件目标:人工输入申请购房者的基础信息,由计算机自动求出各项分数和总分数,进行排序,打印输出结果,提高工作效率和质量。技术:用到了第5章介绍的“分页增删改”类和“通用查询”类,在动态信息提示、即时求值、宏代换应用等方面采用了比较特殊的技术。6.1数据表与菜单6.1.1数据表设计——自由表house.dbf6.1数据表与菜单

6.1.2菜单设计系统的主要功能是输入基本信息,计算各项分数和总分数,查询,排序和打印输出。其中,输入和计算由一个模块完成,查询、排序、打印输出由另一个模块(通用查询)完成。6.2主程序和“退出”程序软件的入口程序:主程序.prg

这段代码首先设置系统窗口的一些属性。包括标题、图标、背景颜色,取消最大化按钮、关闭按钮,使用窗口最大化。然后设置系统的开关或状态。最后关闭所有文件,清除所有变量,执行主菜单并读取用户事件。

软件的结束程序:退出.prg

这段代码首先恢复系统窗口的默认属性。包括标题、图标、最大化按钮、关闭按钮。然后关闭所有文件,清所有变量,释放窗口和表单,恢复系统菜单,退出VFP。6.3“输入计算”表单表单可以在第5章介绍的“分页增删改”类的基础上创建。将第5章创建的类库page_form.vcx复制到本章源代码所在的文件夹,并将类库page_form.vcx添加到本章的项目文件house.pjx中。6.3“输入计算”表单6.3“输入计算”表单

表单上与数据表对应有19个字段,为了使光标定位到每个字段的文本框时,能够在表单的文本框Text4中显示或清除提示信息,或者自动计算并填写该字段的值,需要分别对字段所在的文本框编写GotFocus事件代码。6.3“输入计算”表单需要显示提示信息的字段需要显示提示信息的有“职别”、“住户类别”、“排序类别”、“申请户型”、“学龄分”、“人口结构分”和“照顾分”,共7个字段。需要清除提示信息的字段需要清除提示信息的有“姓名”、“工资”和“奖励分”,共3个字段。6.3“输入计算”表单需要自动计算并填写内容的字段需要自动计算并填写内容(可能同时需要显示或清除提示信息)的有“工作时间”、“高校时间”、“截止时间”、“职别分”、“工资分”、“工龄分”、“高校校龄分”、“面积补差分”和“总分”,共9个字段。6.3“输入计算”表单表单自定义方法及其编码自定义方法bdsqz相当于表单中的一个函数。它将一个算术表达式字符串作为自变量,对表达式进行处理并求值,得到一个等式字符串或一个数值字符串作为函数值返回。在“面积补差分”和“照顾分”两个字段中,允许输入表达式,当光标离开该字段时,系统自动计算出表达式的值,并形成一个等式字符串或一个数值字符串重新填写到当前字段中。为此,我们对这两个字段的LostFocus事件编写代码来调用表单的自定义方法完成对表达式处理和求值操作。6.3“输入计算”表单运行表单

打开“购房打分排队.输入计算”窗口。此时,可以输入或修改当前记录各个字段的值6.4“查询输出”表单

为实现对购房打分信息的查询、排序、输出和打印功能,我们设计一个“查询输出”表单。该表单可以直接使用第5章介绍的“通用查询”类,只修改部分属性即可。6.4“查询输出”表单6.4.1创建表单并设置属性设置自定义属性tname的值为house,作为入口参数,也就是指定了要查询的数据表。此外,设置表单的Caption属性为“购房打分排队.查询输出”作为窗口标题,设置表单的icon(图标)属性为house.ico。设置标签Label1(TXT类别)和选项按钮组Optiongroup1的Visible属性为.F.,使它们不可见,因为这里用不着“多表头”的TXT文本文件类型。6.4“查询输出”表单6.4.2运行表单打开“购房打分排队.查询输出”窗口,可选择输出字段、排序字段,指定条件进行查询和输出。图书资料管理系统目标:主要针对于小型资料室,比如高校的院系资料室,中等学校以及企事业单位的图书资料室等,用于管理图书、期刊信息,进行资料查询和借阅等处理。技术:用到了第5章介绍的“分页增删改”类,创建并使用了新的“借阅者”和“浏览增删改”类,采用了“直接代换式输入”、“多表关联查询”等特殊技术,提高了输入效率和查询质量。7.1菜单与主程序设计7.1.1菜单设计

7.1菜单与主程序设计7.1.2主程序设计——main.prg

代码首先设置系统窗口的一些属性。包括标题、图标、背景颜色,取消最大化按钮、关闭按钮,使用窗口最大化。然后设置系统的开关或状态,关闭所有文件,清所有变量。最后声明必要的全局变量和数组,恢复存于文件的内存变量,执行主菜单并读取用户事件。7.2数据表与视图设计数据库:资料库.dbc

7.2.1数据表设计

“图书”、“图书流通”、“期刊”、“期刊流通”、“借阅者”五个数据库表。7.2.2视图设计

“图书借阅”和“期刊借阅”两个本地视图。

7.3类的设计与类库管理7.3.1借阅者组合框类设计基类为ComboBox,保存到类库wizstyle.vcx,指定类名为jyz

。Init事件:首先清除自身(组合框)的项目。然后选择“借阅者”数据表的工作区,按“姓名”索引排序,依次将每条记录的“姓名”字段内容添加到组合框,作为组合框的项目。7.3类的设计与类库管理LostFocus事件:取出组合框中显示的借阅者姓名。然后选择“借阅者”数据表的工作区,用Locate语句进行记录定位。如果数据表中没有指定的借阅者姓名,则添加一条记录,并将新的姓名作为记录的内容。最后,调用init事件代码,刷新组合框项目。7.3类的设计与类库管理7.3.2浏览增删改类设计

基类为Form,保存到类库wizstyle.vcx,指定类名为llzsg。

7.3类的设计与类库管理7.3.3类库管理第5章介绍的“分页增删改”类将用于本章的“图书资料管理系统”,对“图书”和“期刊”数据表内容进行分页增删改,我们可以将类库page_form中的fyzsg类复制到本章创建的类库wizstyle中。

7.4表单设计

对照7.1.1节的菜单项,我们应该设计11个表单:

图书分页增删改表单:“图书登记_a”

图书浏览增删改表单:“图书登记_b”

期刊分页订阅登记表单:“期刊登记_a”

期刊浏览订阅登记表单:“期刊登记_b”

期刊到刊登记表单:“到刊登记”借阅者名单维护表单:“借阅者”图书借还处理表单:“图书借还”期刊借还处理表单:“期刊借还”图书查询表单:“图书查询”期刊查询表单:“期刊查询”借阅清单查询表单:“借阅信息”7.4表单设计7.4.1图书分页增删表单

本表单用于实现以分页(每页一条记录)方式对图书信息进行录入、修改、添加和删除操作,在“分页增删改”类的基础上创建。

7.4表单设计7.4.2期刊分页订阅登记表单

与图书分页增删表单类似,本表单用于实现以分页方式对期刊信息的维护操作,也是在“分页增删改”类的基础上创建。表单的创建方法与图书增删改表单相同。7.4表单设计7.4.3图书浏览增删改表单

本表单用于实现以浏览(表格)方式对图书信息进行维护管理,在“浏览增删改”类的基础上创建。7.4表单设计7.4.4期刊浏览订阅登记表单

本表单用于实现以浏览方式对期刊订阅信息进行维护管理,在“浏览增删改”类的基础上创建。7.4表单设计7.4.5借阅者名单维护表单

本表单用于实现以浏览方式对借阅者名单进行维护管理,也在“浏览增删改”类的基础上创建。7.4表单设计7.4.6期刊到刊登记表单这个表单用于对已订阅的期刊进行到刊登记,在指定刊号或刊名、年份后,显示出当前已经登记的各期“期号”,单击“添加”按钮,自动按顺序添加新的“期号”,同时应具备“期号”删除和当前记录号显示功能。7.4表单设计7.4.7图书借还处理表单这个表单用于进行图书借阅和归还处理。在指定书号或书名、借阅者后,单击“借阅”按钮,进行图书借阅登记。双击“图书流通”数据表某条记录的“还期”字段,自动填写当前日期,进行归还处理。具备“取消借阅”功能。本表单使用了7.3节创建的jyz(借阅者组合框)类。7.4表单设计7.4.8期刊借还处理表单这个表单用于进行期刊借阅和归还处理。在指定刊号或刊名、年份、期号、借阅者后,单击“借阅”按钮,进行期刊借阅登记。双击“期刊流通”数据表某条记录的“还期”字段,自动填写当前日期,进行归还处理。具备“取消借阅”功能。本表单使用了7.3节创建的jyz(借阅者组合框)类。7.4表单设计7.4.9图书查询表单这个表单用于对图书信息进行查询,同时可以查询指定图书的借阅情况。采用了多表关联查询技术。7.4表单设计7.4.10期刊查询表单这个表单用于对期刊信息进行查询,同时可以查询指定期刊的借阅情况。采用了多表关联查询技术。7.4表单设计7.4.11借阅信息查询表单这个表单用于查询每位借阅者的借阅清单,使用了7.3节创建的jyz(借阅者组合框)类。7.5软件的使用软件运行后,可以通过菜单项使用相应的功能数据维护:图书分页增删改、图书浏览增删改、期刊分页订阅登记、期刊浏览订阅登记、期刊到刊登记、借阅者信息维护借还处理:图书借还、期刊借还查询:查阅图书、查阅期刊、借阅清单通用工资管理系统目标:建立适用于各企事业单位、各类人员的通用工资管理系统,能够管理月工资、日工资、计时工资和计件工资。技术:在数据表结构的定义、数据的维护、统计、查询、打印等方面都采用了通用技术。尤其是结构描述文件和宏代换起到了至关重要的作用。8.1数据表设计创建表的结构描述文件

COPYSTRUCTURETO<文件名>extended利用结构描述文件生成表

CREATE<数据表>FROM<结构描述文件>对结构描述文件的结构进行有限修改,比如添加若干字段,仍然可以用来创建数据表。利用结构描述文件的这些特性,我们可以在程序运行时,让用户修改结构描述文件的记录,然后创建数据表,达到动态修改表结构的目的。8.1数据表设计结构描述文件

ygz_j.dbf、rgz_j.dbf、jsgz_j.dbf和jjgz_j.dbf四个扩充的结构描述文件。数据表

ygz.dbf、rgz.dbf、jsgz.dbf和jjgz.dbf,分别用来保存月工资、日工资、计时工资和计件工资的有关信息。数据表gzlb.dbf——在软件运行时供用户能够选择和设置不同的工资类型。8.2菜单与主程序设计8.2.1菜单设计“退出”菜单主程序.prg8.2菜单与主程序设计8.2.2主程序设计主程序.prg

设置系统窗口的一些属性。包括标题、图标、背景颜色,取消最大化按钮、关闭按钮,使用窗口最大化。然后设置系统的开关或状态,关闭所有文件,清所有变量。最后声明三个全局变量,恢复存于文件SYS.MEM的内存变量,执行主菜单并读取用户事件。8.3系统功能的实现8.3.1工资类别设置

——类别设置.scx

在表单中通过下拉列表来指定工资类型,把工资类别名、工资类别符号、结构描述文件名放到全局变量s_lbm、s_lbf、s_lbfj中,以便在系统的各个模块中引用。并且工资类别设置具有记忆功能。8.3系统功能的实现8.3.2工资数据表结构定义——结构定义.scx

添加Grid1控件,其RecordSource属性设置为“&s_lbfj”。这样数据源就不再是固定的,而是用变量s_lbfj的值作为数据源,达到动态指定数据源的效果,表格中反映对应的表结构描述文件。利用当前结构描述文件修改对应的工资数据表结构。8.3系统功能的实现8.3.2工资数据表结构定义——结构定义.scx

表单的Load事件:以独占方式打开由全局变量s_lbfj所指定的扩充结构描述文件,并将表单标题修改为“XX库结构”。表单的Activate事件:显示当前数据表(结构描述文件)的记录总数Grid1每一列文本对象的GotFocus事件:动态地显示出相应的提示信息“插入”按钮的作用是在当前结构描述文件中插入一条记录“取消”按钮用来关闭当前打开的数据表(结构描述文件)和表单“确认”按钮的主要功能是利用当前结构描述文件修改对应的工资数据表结构8.3系统功能的实现8.3.3浏览修改工资表数据

——浏览修改.prg系统提供了“浏览修改”、“选字段修改”、“统一替换”和“条件修改”四种方式,以适应不同需求。浏览修改方式与在VFP环境中使用BROWSE命令效果相仿。但为了在软件运行时对特定的工资数据的内容进行修改,开辟自己的浏览窗口,对字段进行控制。8.3系统功能的实现8.3.4选字段修改工资表数据

——选项修改.scx首先把组合框Combo1的显示值(也就是字段类别名)取出来放到变量zdlb中,用DOCASE语句根据字段类别建立相应的过滤条件表达式字符串,送给变量gltj。然后利用全局变量s_lbfj和宏代换打开当前结构描述文件,把满足gltj条件的记录过滤出来。再用循环语句把这些记录Field_name字段的值(也就是对应工资数据表中指定类别的字段名)添加到组合框Combo2中,作为其列表项,以此达到对工资数据表字段进行筛选的目的。这里用到了扩充的结构描述文件中“类别”字段的内容。8.3系统功能的实现8.3.5统一替换字段内容

——统一替换.scx

利用“通用查询”类,可以对任意数据表指定输出字段和限制条件进行查询输出。这里我们利用其指定输出字段功能来指定要替换内容的字段名,添加一个文本框来输入替换表达式,直接利用它本身的功能设置限制条件,再修改某个命令按钮的代码,就可以完成统一替换字段内容的操作。8.3系统功能的实现8.3.6条件修改工资表数据

——条件修改.scx这与利用“通用查询”模块进行查询,并把查询结果显示在屏幕上的效果相当。因此可以引用“通用查询”类,创建一个表单,再对表单进行必要的修改。设置表单的自定义属性tname的值为“&s_lbf”,作为入口参数,通过全局变量s_lbf和宏代换指定工资数据表。8.3系统功能的实现8.3.7数据计算

——数据计算.prg在工作区a和工作区b分别打开特定的工资数据表和对应的结构描述文件。用循环语句对结构描述文件的每条记录进行扫描。如果该记录定义了公式,则取出field_name和“公式”字段的值保存到变量zdm和gs中,选择工资数据表工作区,用“REPLACEALL&zdmWITH&gs”语句计算并填写工资数据表对应字段的值,再返回结构描述文件工作区。8.3系统功能的实现如果该记录“类别”字段的内容为“1”,说明对应的工资数据表的字段是收入项,则把该记录field_name字段的值(也就是对应的工资数据表的字段名)拼接到变量SRX中。如果该记录“类别”字段的内容为“2”,说明对应的工资数据表的字段是支出项,则把该记录field_name字段的值拼接到变量ZCX中。最后选择工资数据表工作区,用REPLACE语句和宏代换功能计算并填写“应发工资”、“扣款合计”和“实发工资”字段的内容,完成数据计算任务。8.3系统功能的实现8.3.8查询输出

——查询输出.scx

直接引用“通用查询”类,创建一个表单,进行必要的参数设置即可。8.4软件的使用类别设置结构定义浏览修改选项修改统一替换条件修改数据计算查询输出小区住户信息管理系统目标:建立一个小区住户信息管理系统,用于对小区的楼栋信息和住户信息进行存储和查询。能够显示小区布局图,自动生成楼栋视图。技术:图形中热区的定义,楼栋视图的自动生成。在表单上动态添加控件和设置属性,动态调整位置和大小。对象之间参数传递,标签控件Tag属性的应用,类的创建与应用,宏代换的应用等。9.1数据表设计建立一个自由表“楼栋信息.dbf”,按字段“编号”建立一个取名为“编号”的升序普通索引。在“楼栋信息”数据表中,每条记录保存一栋住宅楼的基本信息。字段“层数”和“单元数”表示对应的住宅楼有多少层,多少个单元(楼梯)。小区的所有住户信息用一个数据表“住户信息.dbf”保存,每条记录为一个住户的基本信息。按字段“编号”建立一个名为“编号”升序普通索引,。“编号”用8位数字符号,前两位代表楼栋编号,3~4位代表单元号,5~6位代表楼层。最后两位代表同层、同单元的户号,我们称之为梯户号。梯户号与数据表中的“门号”相对应。9.1数据表设计“楼栋信息.dbf”数据表结构“住户信息.dbf”数据表结构9.2菜单与主程序设计9.2.1菜单设计9.2菜单与主程序设计9.2.2主程序设计这段代码首先设置系统窗口的一些属性,然后设置系统的开关或状态,关闭所有文件,清所有变量,声明必要的全局变量。接下来用数组元素定义不同梯户数中每一梯户号对应的门号,设置1~10小写数字所对应的大写数字。最后执行主菜单并读取用户事件。9.3类的设计与类库管理9.3.1透明标签类的设计为了使鼠标移动到任意一栋住宅楼的图标时,改变指针形状,单击鼠标后打开该楼的视图,需要在每个住宅楼的图标上建立热区。创建一个透明标签类,设置适当的属性并编写代码后,把它放到每个住宅楼的图标上作为一个控件,实现热区和相应的操作。

9.3类的设计与类库管理9.3.2编辑框类和容器类的设计

每一栋楼的视图由表单上若干个单元格组成,每个单元格是一个编辑框控件或容器控件。楼栋视图样式图中左侧的楼层标注(一、二、三、四、五、六层)以及下边的单元标注(一单元、二单元、三单元、四单元)为容器控件,其余每个单元格都是一个编辑框控件。9.3.3类库管理9.4表单设计9.4.1楼栋信息维护表单楼栋信息维护功能由该表单实现,本表单用于实现以分页方式对楼栋信息进行录入、修改、添加和删除操作,在“分页增删改”类的基础上创建。9.4表单设计9.4.2住户信息维护表单本表单用于实现以浏览方式对住户信息进行维护管理,在“浏览增删改”类的基础上创建。9.4表单设计9.4.3住户信息查询表单

用于对“住户信息”数据表进行查询,设置查询条件,指定输出字段、排序字段进行查询,将结果输出到屏幕、文本文件或Excel工作簿,引用“通用查询”类,创建一个表单,进行必要的参数设置即可。9.4表单设计9.4.4小区布局表单在表单的快捷菜单中选择DataEnvironment项,打开数据环境对话框,将数据表“楼栋信息”添加到数据环境中。在表单上放置一个Image控件Image1,使其显示绘制的小区布局图。在表单中小区布局图的每栋住宅楼图标上边放置一个自定义类li_lb控件,根据图标调整位置和大小,使之尽可能覆盖楼栋的图标。9.4表单设计9.4.5楼栋视图表单该表单在设计时不需要放置任何控件,运行时由程序根据参数自动添加若干个编辑框控件和容器控件,自动调整大小和位置,形成特定楼栋的视图。表单的Init事件代码可实现在表单上动态添加控件形成楼栋视图,Resize事件代码可对表单上各控件重新定位并调整大小。9.4表单设计9.4.6单个住户表单本表单可实现在软件运行时,当用户在“楼栋视图”的任意一个住户标示控件上右击鼠标,将打开“单个住户”表单,来显示或修改对应的住户信息。数据表“住户信息”和数据表“楼栋信息”添加到数据环境中。

9.5软件的使用1.楼栋信息维护2.住户信息维护3.住户信息查询4.小区布局图、楼栋视图和单个住户信息操作通用学生成绩管理系统目标:建立一个通用学生成绩管理系统,作为一个教学管理软件,用于管理高校各级、各类学生的各门课程成绩、量化分数、综合分数。能方便地进行信息的输入、修改、统计、排序、查询和打印。技术:该系统在数据录入,数据表结构的创建与修改,课程类别标识,成绩的统计,特别是数据表的横向统计等方面都采用了比较特殊的技术,使软件具有很强的通用性。10.1数据表设计在设计数据表时,把高等学校同一院系(或专业)、同一年级、同一层次的学生作为一个学生群组(或称学生对象),每个学生群组分别建立三个数据表:成绩数据表、成绩数据表的结构描述文件、课程统计结果数据表。成绩数据表是主体,它与结构描述文件对应并通过结构描述文件建立,用来存放学生基本信息、各门课成绩、各学期量化分、综合分、总平均分、专业课平均分、名次等数据。不同学生群组所对应的成绩数据表结构不同。10.1数据表设计课程统计结果数据表用来存放成绩数据表中各门课程的优秀人数、良好人数、及格人数、及格率等统计信息。建立一个临时自由表tmp.dbf,随便定义一个字段后保存。执行命令COPYSTRUCTURETOjgextended,建立表tmp.dbf的一个结构描述文件jg.dbf。修改结构描述文件jg的结构,在后面添加三个字段“课程类别”、“学期”和“数据有效”,得到具有21个字段的扩充结构描述文件。10.1数据表设计扩充的结构描述文件jg.dbf结构

10.1数据表设计创建一个仅用于课程定义的结构描述文件jg_k.dbf。用这个结构描述文件的记录定义与课程相关的课程名称、课程类别、开课学期信息后,把它同名追加到结构描述文件jg.dbf中,并用程序自动填写field_type、field_len、field_dec等字段的内容,就可以生成对应的成绩数据表。建立两个数据表xibie.dbf和xslx.dbf,分别用来保存院系信息和学生类别信息建立一个课程统计结果数据表tj.dbf10.2

菜单、工具栏、主程序与退出程序10.2.1菜单设计10.2

菜单、工具栏、主程序与退出程序10.2.2工具栏设计新建类在NewClass对话框中选择基类为Toolbar,指定要保存到的类库为wizstyle,指定类名为cj_toolbar。

10.2

菜单、工具栏、主程序与退出程序创建工具栏对象在cj_toolbar类的基础上建立一个工具栏。设置工具栏按钮属性工具栏按钮编码10.2

菜单、工具栏、主程序与退出程序10.2.3主程序这段代码首先设置系统窗口的一些属性。然后设置系统的开关或状态,关闭所有文件,清所有变量。最后声明必要的全局变量和全局数组,恢复存于文件XSZ.MEM的内存变量,打开工具栏,执行主菜单,在状态栏中显示当前学生对象信息,读取用户事件。10.2.4退出程序恢复系统窗口状态,清事件,关闭所有文件,清所有变量,释放窗口和表单,恢复系统菜单,退出系统。10.3系统服务功能的实现10.3.1查看学生对象可以使用户随时了解系统当前存在哪些学生对象,以便有针对性地选择需要的学生群组进行数据处理,或者建立新的学生对象数据表。10.3系统服务功能的实现10.3.2指定学生对象

用来指定学生对象组10.3系统服务功能的实现10.3.3修改学生类型和院系信息

修改学生类型通过在“系统服务|修改学生类型”菜单项中建立一个过程来实现修改xslx.dbf数据表的内容。修改院系信息通过在“系统服务|修改院系信息”菜单项中建立一个过程来实现修改xibie.dbf数据表的内容。10.4创建和修改表结构功能

的实现10.4.1菜单项过程设计

1.“建新表结构”菜单项过程当前学生对象成绩数据表文件名保存到全局变量CJK_WJM中。可以用FILE(CJK_WJM)函数检测数据表是否已经建立。如果数据表已经建立,则只能查看或修改表结构如果该学生对象的数据表尚未建立,则调用“表结构创建”表单来创建数据表结构。

10.4创建和修改表结构功能

的实现10.4.1菜单项过程设计

2.“改原表结构”菜单项过程如果数据表已经存在,并且在确认对话框中选择了“是”,则通过全局变量CJK和宏代换打开指定的学生对象的数据表,将数据备份到临时数据表TMP中。然后打开用于课程定义的结构描述文件JG_K,清除原有记录,再把当前学生对象成绩数据表结构描述文件中课程定义相关的记录追加过来,达到提取原表结构的目的。最后,关闭所有数据表,调用“表结构创建”表单。10.4创建和修改表结构功能

的实现10.4.2“表结构创建”表单设计本表单要对课程定义结构描述文件JG_K的内容进行修改,然后通过代码将JG_K的记录追加到成绩数据表结构描述文件样板JG中,并利用JG创建当前学生对象的数据表。10.5显示表结构功能的实现显示表结构创建一个过程,编写相应的代码。通过代码检测数据表文件存在后,调用“表结构显示”表单来显示当前学生对象成绩数据表结构。10.6成绩数据表信息管理10.6.1“学生名册输入”表单这个表单用来输入或修改指定学生对象数据表中“学号”、“班级”、“姓名”三个字段的内容。10.6.2“成绩单科输入”表单

这个表单用来输入或修改指定的某一门课成绩、某一学期的量化分或补考课程门数。10.6成绩数据表信息管理10.6.3“成绩浏览修改”表单

对当前学生对象的成绩数据表进行浏览修改。10.6.4“成绩检测”表单

检测当前学生对象成绩数据表的异常数据,给出信息提示,同时设置成绩数据表结构描述文件的“数据有效”字段值。10.7数据统计功能的实现在“数据统计”菜单下,我们设计了“成绩统计”、“课程统计”和“排列名次”三个菜单项,每个菜单项对应一个过程。10.7.1“成绩统计”过程设计系统要能够自动求出每个学生的总平均分、专业必修课平均分,各学期的课程平均分、专业必修课平均分、综合分,并将结果保存到当前学生对象成绩数据表中。同时,要在对应的结构描述文件中填写“数据有效”字段的内容。10.7数据统计功能的实现10.7.2“课程统计”过程设计

能够自动求出每门课的实考人数、课程平均分,优秀、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论