•进一步研究项目设计方案•设计程序•制作界面主要内容•各公司对项目设计方案再一次仔细研究,学生相互探讨,相互学习,设计出系统所需界面的版面进一步研究项目设计方案返回•在前面各讲中,我们主要用菜单和命令方式操作数据库,但是要开发有实用价值的系统,必须采用程序设计方法。VisualFoxPro的程序设计包括结构化程序设计和面向对象程序设计。前者是传统的程序设计方法,主要用于过程和函数的编写,后者借助系统提供的辅助工具实现界面设计。在面向对象程序设计中,需要为对象编写事件代码,也要用到结构化程序设计的方法。就此而言,结构化程序设计是面向对象程序设计的基础。设计程序什么是程序?程序是能够完成一定任务的命令的有序集合。这组命令被存放在称为程序文件或命令文件的文本文件中。当运行程序时,系统会按照一定的次序自动执行包含在程序文件的命令。程序方式的特点是什么?可以利用编辑器,方便地输入、修改和保护程序;可以用多种方式、多次运行程序;可以在一个程序中调用另一个程序。程序与交互操作的区别是什么?交互操作一次只能执行一条命令,而程序一次能运行多条命令;程序文件一旦编成,即可长期保存并且可多次运行,而再次执行交互操作需重新输入命令;程序方式可以完成一些复杂的任务,而交互操作的功能是有限的。程序中常用的几条命令1、清除屏幕命令命令格式:CLEAR功能:清除屏幕上显示的信息2、注释命令命令格式:NOTE注释内容*注释内容可执行语句&&注释内容功能:程序的说明性语句,不执行3、允许或不允许系统自动显示提示信息命令命令格式:Settalkon|off4、返回语句命令格式:return功能:返回系统调用本程序的位置程序中常用的几条命令5、INPUT命令命令格式:INPUT[字符表达式]TO内存变量功能:该命令等待用户从键盘输入数据,用户可以输入任意合法的表达式。当用户以回车键结束输入时,系统将表达式的值存入指定的内存变量,程序继续运行。例1、编写一个能计算任意半径的圆的周长和面积的程序,程序文件名为LS2.prg。INPUT请输入圆的半径:TORL=2*3.14*RS=3.14*R^2?半径为:+ALLTRIM(STR(R))+的圆的周长和面积如下:程序中常用的几条命令6、ACCEPT命令命令格式:ACCEPT[字符表达式]TO内存变量功能:该命令等待用户从键盘输入字符串。当用户以回车键结束输入时,系统将该字符串存人指定的内容变量,程序继续运行。例2、输入姓名,在XSQK.DBF表中查询该姓名对应的学号,程序文件名为cxxh.prg。USExsqk.dbfaccept请输入姓名:toxmlocatefor姓名=xm?姓名,学号Use程序中常用的几条命令7、WAIT命令命令格式:WAIT[字符表达式][TO内存变量]功能:该命令显示字符表达式之值作为提示信息,暂停程序的执行,直到用户按任意键或单击鼠标时继续程序的执行。例3、分屏显示男、女学生的情况,程序文件名为waitcx.prg。usexsqk.dbflistfor性别=男wait按任意键显示女学生的情况windowtimeout15listfor性别=女use程序文件的建立与执行以命令方式建立、编辑程序文件命令格式:MODIFYCOMMAND[程序文件名|?]MODIFYFILE[文件名|?]ctrl+w存盘ctrl+q放弃存盘esc放弃存盘例1:编写一个计算半径为10米的圆的周长和面积的程序,程序文件名为LS1.prg。R=10L=2*3.14*RS=3.14*R^2?L,S运行程序文件方法1:菜单方式:程序运行,打开“运行”对话框从文件列表框中选择要运行的程序文件,并单击“运行”命令按钮方法2:命令方式命令格式:DO文件名[WITH参数表]注意:DO命令默认运行.PRG程序,DO命令中的文件名只需输入主文件名。要运行其它程序,文件名中须包括扩展名程序的基本结构--顺序结构执行过程:按照语句排列的先后顺序依次执行,即从第一条执行到最后一条。例5、两数之和、之差、积ClearInput请输入第一个数toainput请输入第二个数tobS=0S=a+b?”两个数之和为”,s分支结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问题。分支结构1.IF条件语句IF条件命令序列1[ELSE命令序列2]ENDIF原理:首先判断条件表达式的逻辑值,若条件为“真”时,执行A系列命令。然后,再执行Endif后面的D系列命令。若条件为“假”时,执行Else后面的B系列命令。然后,再执行Endif后面的D系列命令。分支语句的嵌套对于二分支以上的问题,需要使用分支语句的嵌套或多重分支选择结构。要求各个层次的IF语句之间不能交叉,每一层的If、Else以及EndIf必须一一对应。多分支语句多分支语句实现一种扩展的选择结构,它可以根据条件从多组命令中选择一组执行。DOCASECASE条件1命令序列1CASE条件2命令序列2……CASE条件n命令序列n[ORTHERWISE命令序列Q]ENDCASE例8、编写一个简单的菜单程序,提供“添加”、“修改”和“打印”三种功能选择并转入相应处理,程序文件名为MCASE.prg。CASEOP=2BROWCASEOP=3WAIT“请准备好打印机,按任意键开始LISTTOPRINTOTHERWISE?选择错!ENDCASEUSEuseXSQKCLEARText1.添加2.修改3.打印Endtextinput请选择:toopDOCASECASEOP=1APPEND循环结构循环结构也称为重复结构,是指程序在执行的过程中,其中的某段代码被重复执行若干次。被重复执行的代码段,通常称之为循环体。循环结构1、条件循环DOWHILE条件命令序列1[LOOP]命令序列2[EXIT]命令序列3ENDDO说明1:在循环体中如遇到Loop短路语句,就不执行Loop与Enddo之间的所有语句,直接返回DoWhile循环起始语句,继续进行循环判断,如图所示:说明2:在循环体中如遇到Exit命令,就强行退出循环,即不执行Exit与EndDo之间的所有语句,直接转向执行EndDo语句后面的命令,结束循环。如图所示:例9:计算s=1+2+3+…+10000的和,名为sumdo.prg。settalkoffClearsum=0i=1Dowhilei=10000sum=sum+ii=i+1Enddo?“s=,sumsettalkon注意:随机次数的循环DoWhile.T.随机次数的循环也称“永真”循环是用于进行随机次数的循环场合。它适合在数据表中,进行任意次数的查询、修改、增加、删除记录的操作。“永真”循环通常由操作者在需要时,用Exit命令来强制退出循环。有限循环doWhileK=N用于已知循环次数的场合,常用于数值计算和图形显示。库扫描循环DoWhileNot.Eof()用于未知循环次数的场合,适合在数据表中进行统计。通常用SKIP(CONTINUE)命令来移动记录指针,用文件尾函数控制循环。当函数Eof()的值为.F.时,执行循环体。当EOF()的值为.T.时,终止循环ClearAllUseF:\密码验证表Count=1Pwd=Space(9)DoWhileCount=3?请输入准考证号:SetConsoleOffAcceptToPwdSetConsoleOnLocateFor准考证号=PwdIfFound()Messagebox(欢迎使用学生成绩查询系统!,48)ExitElseIfCount=3Messagebox(准考证号错!重输入,48)ElseMessagebox(对不起,你不是合法用户!,48)ExitEndifEndifCount=Count+1EnddoReturn例10:编程设计一个口令验证程序,只给三次机会2.步长循环FOR循环变量=初值TO终值[STEP步长]循环体ENDFOR|NEXT说明:1、步长的值可正可负,默认值为1。2、初值、终值和步长都可以是数值表达式。但这些表达式仅在循环语句执行开始时被计算一次。在循环语句的执行过程中,初值、终值和步长是不会改变的。可以在循环体内改变循环变量的值,但这会影响循环体的执行次数。例11、用步长循环编写计算s=1+2+…+10000的程序Clears=0i=1fori=1to10000s=s+iendfor?s=:,s&&编写s=1+3+5+…+99993.表文件扫描循环SCAN[范围][FOR条件1][WHILE条件2]循环体ENDSCAN执行过程说明:1、Scan循环是内含Eof()和Skip的一种循环处理。Scan为循环入口,EndScan为循环出口,必须配套使用。两者之间的内容即为循环体。2、Scan循环是针对某个数据表的操作,可以在语句中说明数据表的作用范围和For〈条件表达式〉,其意义是仅对指定范围满足For〈条件表达式〉的记录执行循环体语句操作。3、执行循环体内容后,若遇到Loop语句,记录指针移到下一条记录,返回Scan循环入口。若遇到Exit语句,强行结束扫描循环,执行EndScan后面的语句。4、当For〈条件表达式〉为多个条件或进行多分支处理时,应在Scan循环内嵌套DoCase或If分支选择语句。例13、在学生档案表中,显示高考成绩大于520分的学生学号、姓名、籍贯和高考成绩并统计其个数。CloseallClearUseF:\学生档案表Store0ToSScanFor高考成绩520?学号:+学号+Space(2)+姓名:+姓名+Space(2)+籍贯:+籍贯+Space(2)+高考成绩:+Str(高考成绩,5,1)S=S+1EndScan?高考成绩大于520分学生人数有:+Str(S,3)+人Return多重循环一个循环的循环体中又有另外一个循环时,称为多重循环,VFP程序可以使用多重循环。返回表单的基本操作表单(Form)是VisuaFoxPro提供的用于建立应用程序界面的最主要的工具之一创建表单方式:1.使用表单向导创建表单:文件新建命令,“工具”菜单的“向导”子菜单中选择“表单”在项目管理器调用表单向导2.使用表单设计器可以使用下面三种方法中的任何一种调用表单设计器:a、在项目管理器环境下调用b、菜单方式调用c、命令方式调用3.在命令窗口输入命令:CREATEFORM[表单名]4.在表单设计器环境下,可以调用表单生成器方便、快速地产生表单利用表单设计器创建表单分为四步骤:1.打开表单设计器方法1:在命令窗口中输入CreateForm表单名命令或在命令窗口中输入MODIFYFORM[表单名],进入表单设计器,建立或修改已存在的表单。方法2:执行文件新建,从“新建”对话框中选定“表单”、单击“新建表单”,进入表单设计器方法3:执行文件打开,在“打开”对话框中,选择要打开的项目文件,在“项目管理器”窗口中,“新建表单”对话框中,单击“新建文件”按钮,进入表单设计器。2.设置数据表表单的数据环境“数据环境设计器”打开后,会弹出“添加表或视图”的窗口。要求用户将表单中要用到的表、视图添加到数据环境设计器中。如果已经在数据库中设计了联系,则相应的联系也会自动添加到数据环境设计器并且在运行表单时会自动打开、自动发挥作用。按钮锁定与生成器按钮锁定与生成器3.设计表单4、保存表单文件单击“文件”、“保存”,在“另存为”窗口中,选择盘符、目录、文件名、文件类型(表单文件的类型是.Scx),单击“保存”按钮。特别注意:表单文件在保存时,将同时建立.Scx主表单文件和.Sct表单备注文件。属性名属性的意义AlwaysOnTop控制表单是否总是处于其他的窗口之上。AutoCenter控制表单在初始化时是否自动居中。BackColor定义表单的背景色。BorderStyle决定表单是否有边