您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第十章 程序设计基础
第十章程序设计基础10.1VisualFoxpro的工作方式VisualFoxpro系统提供了三种工作方式:即命令方式、菜单方式和程序文件方式。10.1.1命令方式命令方式:输入一条命令,完成一个操作的工作方式。VisualFoxpro命令方式是利用Command窗口来实现的。用户通过Command窗口输入命令并执行操作。窗口输入命令的方式:1)单个的操作命令和系统命令;2)建立及运行命令文件。Command窗口即是执行命令的窗口,同时也是命令文件的编辑窗口。例1:显示“rcda”表中的全部数据,并逻辑删除第7条记录。命令如下USEc:\讲义\vfp6示例\rcda.dbfEXCLUSIVEBROWSELASTDELETERECORD7例2:显示“student”表中所有女生的记录。CLOSEALLUSEc:\vfp6\student.dbfEXCLUSIVELISTforxb=‘女’10.1.2菜单方式菜单方式:通过打开不同的菜单选择并完成不同的操作。例:用菜单方式显示“rcda”表中的全部数据,并逻辑删除第7条记录。教师演示分析。10.1.3程序文件方式程序方式:通过程序文件中的命令完成不同的操作。例:用命令方式显示“rcda”表中的全部数据,并逻辑删除第7条记录。操作方法:1、利用程序编辑工具建立一个程序文件“program1.prg”。内容如下:USEc:\讲义\vfp6示例\rcda.dbfEXCLUSIVEBROWSELASTDELETERECORD72、利用菜单选项或命令运行程序文件“program1.prg”。程序将逐个地执行每一个操作命令,完成显示“rcda”表中的全部数据,并逻辑删除第7条记录的操作。10.1.4程序设计常用语句1、SELECT命令格式:SELECT工作区号|表别名功能:选择指定工作区。2、USE命令格式:USE[表名][IN工作区号|别名][EXCLUSIVE][SHARED][NOUPDATE]功能:在指定工作区打开表。例:USEstudentEXCLUSIVE3、REPLACE命令格式:REPLACE字段1WITH表达式1[范围][FOR逻辑表达式1]功能:替换记录。4、@……SAY命令格式:@行,列SAY表达式功能:在指定行、列位置显示信息。5、@……GET命令格式:@行,列GET内存变量|字段功能:在指定位置按指定格式输入read@行,列SAY……GET内存变量|字段6、INPUT命令格式:INPUT提示信息TO内存变量功能:暂停程序的执行,等待接受用户从键盘输入的信息并存入指定的内存变量。(数据可以是字符型,数值型)例:(P184)设计一个程序,能够查找表‘rcda’中给定‘出生日期’的记录。程序代码如下:clearusercda.dbfexclusiveinput‘请输入出生日期:’tocsrqdisplayallfor出生日期=csrq7、ACCEPT命令格式:ACCEPT提示信息TO内存变量功能:暂停程序的执行,准备接受用户从键盘输入的信息并存入指定的内存变量。(只能是字符型数据)例:设计一个程序,能够分别浏览表‘zytc’中指定职称的记录集。程序代码如下:clearusezytc.dbfexclusiveaccept‘请输入职称:’tozclistallfor职称=zc8、WAIT命令格式:WAIT[提示信息][TO内存变量][Window[At行,列]][Timeout数值表达式]功能:暂停程序的执行,等待接受用户从键盘输入的信息并存入指定的内存变量。(只能是一个字符型数据)或在给定的时间、或在给定的位置显示提示信息。例:设计一个程序,能够分别浏览表‘zytc’中不同职称的记录集,当完成一组记录集的显示后,在屏幕的右上角提示用户操作结束,提示信息要在屏幕停留5秒钟。程序代码如下:clearusezytc.dbfexclusiveaccept‘请输入职称:’tozclistallfor职称=zcwait‘职称为’+zc+‘记录已显示’windowtimeout59、RETURN命令格式:RETURN功能:结束本程序的运行,返回调用处。10、CLOSE命令格式:CLOSE[DATEBASE][ALL][TABLE]功能:关闭数据库等。11、?命令格式:?表达式|内存变量功能:输出表达式或内存变量的值。10.2程序文件的建立与编辑VisualFoxpro程序文件是一个以“.PRG”为扩展名的文本文件。任何可以建立、编辑文本文件的工具,都可以创建和编辑VisualFoxpro程序文件。10.2.1以命令方式建立、编辑程序文件在Command窗口中使用命令MODIFYCOMMAND建立及编辑程序文件。命令格式:MODIFYCOMMAND程序文件名功能:建立一个程序文件。例:建立和编辑一个以“program2.prg”为名的程序文件。程序功能:先显示专业特长“zytc”表中的全部数据,再显示职称是教授的部分记录。程序文件的内容如下:USEc:\讲义\vfp6示例\zytc.dbfEXCLUSIVEBROWSELASTLISTALLFOR职称=‘教授’操作方法:1、在“命令”窗口中输入MODIFYCOMMANDprogram2.prg;2、在“程序文件”编辑窗口逐条输入程序命令行,然后按“退出”按钮,保存程序。10.2.2以菜单方式建立、编辑程序文件“文件”——“新建”——“程序”——“新建文件”——输入程序文件并保存。教师演示分析讲解。10.2.3利用设计工具建立程序代码借助于“表单设计器”、“类设计器”、“菜单设计器”、“报表设计器”和“项目管理器”等代码设计工具完成程序代码的建立与编辑。10.3程序文件的调用调用程序文件,就是运行程序文件。调用方法很多,常用的两种。10.3.1以命令方式调用程序文件在命令窗口输入运行命令即可。命令格式:DO程序文件名功能:运行程序文件。例:DOcx1.prg10.3.2以菜单方式调用程序文件“程序”——“运行”——输入或选择被调用的程度文件名即可。教师演示操作。10.4程序的基本结构1、VisualFoxpro系统的程序有两个特点:1)程序控制流模式,由顺序、分支、循环三种基本结构构成。每一个基本结构可以包含一个或多个语句;2)面向对象可视化的结构程序模块,在每个模块的内部也是由程序控制流组成。2、控制结构1)顺序结构顺序结构是程序在执行时,根据语句的书写顺序依次执行的命令序列。2)分支结构程序执行时,根据不同的条件,选择执行不同的程序语句,解决有选择、有转移的问题。3)循环结构使某些语句或程序段重复执行若干次。4)过程具有独立的功能,并且可被其他程序调用的程序序列。调用过程的程序称为主程序。例1:有如下程序段,请分析其功能。SELECT1USESTUDENTSELECT2USESCORESELECT1LISTSTRUSELECTSCORELISTDISPLAY例2:有如下程序段,请分析其功能。USESTUDENTLISTFOR年龄18SKIP-1DISPLAYGOTOP?BOF()GOBOTTOM?EOF()?RECNO()10.5分支结构10.5.1单向分支单向分支语句,即根据用户设置的条件表达式的值,决定某一操作是否执行。1、语句格式:IF条件表达式命令行序列ENDIF2、功能:首先计算条件表达式的值,当条件表达式的值为“真”时,执行命令行序列;否则,则执行ENDIF后面的语句。3、实例例1:在表“rcda”的记录中查找名叫“李鹏程”的人,若查到显示出该记录的全部内容。SETTALKOFFCLOSEALLCLEARUSEc:\讲义\vfp6示例\rcda.dbfEXCLUSIVELOCATEFOR姓名=“李鹏程”IFFOUND()?“记录找到了!”DISPLAYENDIFUSESETTALKONRETURN例2:修改“zytc”表中的数据,把编号为“gz05002”和职称由“副教授”改为“教授”。SETTALKOFFCLEARCLOSEALLUSEc:\讲义\vfp6示例\zytc.dbfSHAREDBROWSELASTLOCATEFOR编号=“gz05002”IF职称=“副教授”REPLACE职称WITH“教授”ENDIFBROWSELASTSETTALKONUSERETURN10.5.2双向分支双向分支语句,即根据用户设置的条件表达式的值,选择两个操作中的一个来执行。1、语句格式:IF条件表达式命令行序列1ELSE命令行序列2ENDIF2、功能:首先计算条件表达式的值,当条件表达式的值为“真”时,执行命令行序列1中的命令;否则,执行命令行序列2中的命令;执行完命令行序列1或命令行序列2后都将执行ENDIF后面的语句。3、实例例1:在表“rcda”的记录中查找名叫“李远程”的人,若查到显示出该记录的全部内容,若没有找到,则显示“对不起,查无此人!”。SETTALKOFFCLOSEALLCLEARUSEc:\讲义\vfp6示例\rcda.dbfEXCLUSIVELOCATEFOR姓名=“李远程”IFFOUND()?“记录找到了!”DISPLAYELSE?“对不起,查无此人?”ENDIFUSESETTALKONRETURN例2:在表“rcda”的记录中查找王国民同志,若查到将该记录加上删除标记,若没有找到,则显示“对不起,查无此人!”。SETTALKOFFCLOSEALLCLEARUSEc:\讲义\vfp6示例\rcda.dbfEXCLUSIVELOCATEFOR姓名=“王国民”IF.NOT.EOF()DELETEELSE@2,30SAY“对不起,查无此人?”ENDIFLISTUSESETTALKONRETURN例3:在表“student”中按姓名(XM)查询某一学生,若查到则定位显示该记录,否则将该学生记录加入到student中(班级字段名——CLASS,专业字段名——ZY)。请选择合适的命令使该程序完成其功能。SETTALKOFFCLEARUSEstudentXSXM=SPACE(8)@2,15SAY“请输入查询的学生名字:”GETXSXMREADLOCATEALLFORXM=XSXMIFEOF()APPENDBLANKREPLACEXMWITHXSXM@5,10SAY“姓名”+XM@6,10SAY“班级”+CLASS@7,10SAY“专业”+ZYELSE@5,10SAY“姓名”+XM@6,10SAY“班级”+CLASS@7,10SAY“专业”+ZYENDIFUSESETTALKONRETURN例4:根据x值的不同,对s做不同的计算。(IF命令嵌套)……IFx100THENs=s*2ELSEIFx60THENs=s*1.5ELSEIFx45THENs=s*1.25ENDIFENDIFENDIF……例5:根据学生的性别输出学生的姓名和性别。年龄大于或等于25时输出“大”,年龄在小于25且大于等于20时输出为“中”,年龄小于20时输出“小”。……sname=“”ssex=‘’slod=0@10,10SAY“输入学生姓名:”GETsname@11,10SAY“输入该生性别:”GETssex@12,10SAY“输入该生年龄:”GETsoldREADIFsold=25@14,10SAYsname+ssex+“大”ELSEIFsold25ANDsold=20@14,10SAYsname+ssex+“中”ELSE@14,10SAYsname+ssex+“小”ENDIFENDIF……10.5.3多向分支多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行。1、语句格式:DOCASECASE条件表达式1命令行序列1[CASE条件表达式2命令行序列2……CASE条件表达式N命令行序列NOTHERWISE命令行序
本文标题:第十章 程序设计基础
链接地址:https://www.777doc.com/doc-3577197 .html