您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第6章 项目与程序设计
第6章项目与程序设计6.1项目管理6.2程序初步知识6.3结构化程序设计6.4模块化思想与实现6.5程序调试6.6程序的连编学习目标了解项目管理的基本概念,掌握VFP“项目管理器”的使用方法;理解程序的概念,掌握程序的建立、编辑和运行的方法;理解并掌握算法的表示方法,尤其是流程图方法;理解并掌握结构化程序的三种基本结构;了解模块化程序设计的思想;理解并掌握用户自定义函数的定义、调用和返回值和参数传递的概念;掌握程序调试的基本方法。重点与难点重点在于结构化程序设计与调试、函数设计与使用;难点在于灵活掌握三种基本结构的嵌套、正确地传递函数的参数。6.1项目管理进行VFP数据库应用系统的项目开发时,常常要与各种文件、数据和对象打交道,如:数据库、数据表、视图、查询、菜单、表单、程序文件和其他文件。项目就是有关文件、数据和对象的集合。项目管理是按照一定的顺序和逻辑关系,对数据库应用系统涉及到的各种类型文件、数据和对象进行有效组织,并将它们编译成.app或exe文件。VFP提供了管理功能强大的项目管理器来创建和管理项目。VFP的项目管理器6.2程序初步知识如果完成一项任务不是一两个命令就能完成,而需要一组命令来完成,并且这组命令出现的先后顺序不能颠倒,这样的要求对一般的数据库系统的操作人员来说是十分困难的。本章介绍的程序方式,系统设计人员将完成某一项任务的一组操作命令保存在程序文件中,操作人员只需调用该程序文件就可以完成该项任务,可明显地降低了操作的难度。6.2.1程序的概念程序(Program)是指完成特定任务的一组命令的有序集合。在VFP中,程序是以文本的形式保存在程序文件(.prg)中,当该程序被调用时,系统会从前往后地、按次序地和自动地执行包含在程序文件中的命令直至结束。程序方式同交互方式和菜单方式相比具有非常明显的优点:(1)程序以文本文件的形式保存,方便创建、修改;(2)程序一旦编好,就可以被无限次调用,具有“一劳永逸”的特点;(3)具有通用性的程序,还可以被其他程序调用,或调用其他程序,提高了编写程序的效率。6.2.2程序的建立与编辑在VFP中,程序可以通过菜单方式和命令方式来建立与编辑。命令方式:modifycommand[文件名|?]其中,(1)命令动词:Modify(修改)。(2)文件名或“?”是可选项:文件名包括主文件名和类型名,主文件名由用户自定义,而类型名为“.prg”,用户不指定时,系统会自动添加上“.prg”注意事项在建立和编辑程序文件时,需要注意以下几点:(1)命令的书写要符合命令书写的规则。(2)为了增加程序的可读性,可以在程序中加上注释。(3)为了增加程序的可读性,常常在编写程序时采用缩进方式,本书采用缩进方式编写程序。(4)在程序的编写过程中,合理使用“剪贴板”可以提高程序编写效率。(5)程序编写过程中要注意及时保存。可以在“文件”菜单中选择“保存”或“另存为”命令,也可以使用Ctrl+W组合键。放弃本次修改可以直接按Esc键。其他编辑器编写程序文件除了使用VFP自带的编辑器外,也可以使用任何其他的文本编辑系统,譬如:记事本、EDIT,但不能使用具有格式编排的系统,譬如:Word。可以从Word中复制程序到记事本,但需要从“选择性粘帖”中选择“无格式文本”。记事本默认的文件类型名为“.txt”,所以,在保存对话框中,请用双引号界定,譬如:test.prg,否则会自动添加“.txt”,像这个样子“test.prg.txt”。6.2.3程序的执行程序的执行同程序的建立和编辑一样也有两种方式:菜单方式和命令方式。从“程序”菜单中选择“运行”菜单项在命令窗口中输入如下命令:do程序文件名[with参数表]其中,程序文件名无需带上类型名;“with参数表”是可选项:通过参数表向程序传递数据,参数表如果有多个参数,则需要用逗号隔开,在编写带参数的程序时,必须把如下命令:parameters参数表放在程序的开头。6.2.4程序的注释为了增加程序的可读性,通常需要在程序中添加上注释。有两种形式的注释:(1)整行为注释:以*或Note开头。*注释文本或note注释文本(2)在命令尾部注释:以&&引出注释文本。注意:程序的注释不影响程序的执行效率,因为在编译时,系统并不会将注释编译到编译后的文件(.fxp)中去。【例6.1】编写一个简单的程序,通过参数传递两个数,在屏幕上显示两个数的和、两个数的积(Eg6_1.prg)。*第一个简单的程序note在实际的程序中,并不需要每行都注释的parametersm,n&&m,n是形式参数settalkoff&&状态的设置,关闭交互模式clear&&清除显示屏幕?m+n=,m+n&&m+n=是提示,m+n是表达式?m*n=,m*n&&m*n=是提示,m*n是表达式return&&结束本程序返回VFP系统程序执行命令格式如下:DoEg6_1with6,9↙程序运行的结果:m+n=15m*n=546.2.6输入输出命令程序的运行离开不了输入、输出命令。输入命令完成从键盘上接收数据。输出命令完成将运行的结果显示在屏幕上。1.输入命令(1)单字符输入命令wait[提示信息][to内存变量][window[nowait]][timeout数值表达式](2)字符型数据输入命令Accept[提示信息][To内存变量](3)任意类型数据输入命令Input[提示信息][To内存变量](4)格式化输入@行,列[say表达式][get变量]read[save][cycle][timeout等待时间]举例(在命令窗口测试)wait按Y键退出系统tochaccept你的姓名:toXMinput姓名toxm&&字符型input出生日期tocsrq&&日期型input身高tosg&&数值型input是否党员tosfdy&&逻辑型name=space(8)@5,10say姓名getnameread2.输出命令前面已经讲述了“?”和“??”的用法。(1)文本输出命令\|\\文本行或text文本内容endtext(2)格式输出命令@行,列Say表达式picture格式控制字符举例(在命令窗口测试)\程序测试行1\\程序测试行2Text========Menu==========1.输入2.修改3.删除4.打印0.退出=======================Endtext@3,6say姓名@4,6say工资picture99999.99&&有两位小数6.3结构化程序设计6.3.1算法的表示数据结构+算法=程序一个好的程序离不开好的算法,设计程序的实质就是设计算法。算法:广义地说,为了解决一个问题而采取的方法和步骤。为了表示一个算法,可以用不同的方法。常用的有自然语言、传统的流程图、N-S流程图、伪代码、PAD图等。1.传统的流程图符号起止框处理框输出框判断框注释框连接点流程线或2.三种基本结构及其流程图表示1966年,Bohra和Jacopini提出了以下三种基本结构ppABABppA(a)顺序结构(b)选择结构(c)循环结构3.“结构化”的算法三种基本结构有以下共同特点:①只有一个入口;②只有一个出口;③结构内的每一部分都有机会被执行到;④结构内不存在“死循环”(无终止的循环)。已经证明,以上三种结构及其嵌套而顺序组成的算法结构,可以解决任何复杂的问题。由基本结构所构成的算法属于“结构化”的算法,它不存在无规律的转向,只在基本结构内才允许存在分支和向前或向后的跳转。其他结构都可以由三种基本结构及其嵌套派生出来。6.3.2顺序结构在单个处理器的计算机中,程序是按顺序串行方式执行,即上一条命令执行完毕才能执行下一条命令,自上而下地一条一条地执行命令直至程序执行完毕。这里的命令可以是单条命令,也可以是包括多条命令且具有内部结构的复合命令、函数或过程。【例6.2】编写一个程序,输入a和b的值,计算a除以b并显示结果(Eg6_2.prg)。clear*inputinputa=toainputb=tob*processc=a/b*output?creturn6.3.3选择结构选择结构也叫分支结构,它能够根据指定关系表达式或逻辑表达式(或称条件表达式)的值在两条或多条程序执行路径中选择其中一条执行。在VFP中,选择结构分为if~endif、if~else~endif和docase~endcase。1.if~else~endif结构if表达式命令组1else命令组2endifpp命令组1命令组2表达式.T..F.【例6.3】编写一个程序,判断输入的一个年份是否为闰年,如果是闰年,显示“闰年”,否则显示“不是闰年”。判断闰年的条件:年份能被4整除但不能被100整除;或者能被400整除(Eg6_3.prg)。clearinputyear=toyif(mod(y,4)=0.and.mod(y,100)0.or.mod(y,400)=0)?闰年else?不是闰年endif整除是通过判断余数是否为0,若为0,表示整除,否则不能被整除。整除可以用函数mod()或求余运算符“%”来完成。2.if~endif结构if表达式命令组1endifpp命令组1表达式.T..F.【例6.4】编程实现:输入一个口令,如果口令符合,显示“口令验证通过!”。,否则直接结束程序(Eg6_4.prg)。clearaccept口令:topsdifupper(psd)=HELLO?口令验证通过!endifreturn*说明:upper函数是为了统一各种输入的情况。3.docase~endcase结构docasecase条件1命令组1case条件2命令组2……[otherwise命令组n+1]endcase命令组1命令组2命令组n命令组n+1….F..F..F..T..T..T.【例6.5】编程实现:输入一个百分制成绩,输出它对应的等级,优秀:90~100、良好:80~89、中等:70~79、及格:60~69和不及格:60分以下(Eg6_5.prg)。*变量cj存放百分制成绩;dj存放对应的等级描述。clearinput百分制成绩:tocjdocasecasecj=90.and.cj=100dj=优秀casecj=80.and.cj90dj=良好casecj=70.and.cj80dj=中等casecj=60.and.cj70dj=及格casecj=0.and.cj60dj=不及格otherwisedj=输入的成绩不在[0,100]endcase?对应的等级:,djreturn【例6.5】程序也可以由if~else~endif来实现(Eg6_5a.prg)clearinput百分制成绩:tocjif(cj=90.and.cj=100)dj=优秀elseif(cj=80)dj=良好elseif(cj=70)dj=中等elseif(cj=60)dj=及格elseif(cj=0)dj=不及格elsedj=输入的成绩不在[0,100]endifendifendifendifendif?对应的等级:,djreturn6.3.4循环结构环结构是结构化程序设计的三种基本结构之一,它是在给定条件成立(即表达式的值为.T.)时,反复执行语句组(称为循环体)。VFP中的循环结构:dowhile~enddo、for~endfor和scan~endscan结构。1.dowhile~enddo结构dowhile表达式命令组1[loop][exit]命令组2enddo表达式循环体命令组.T..F.【例6.6】编程,计算,并显示结果(eg6_6.prg)。clearn=1s=0dowhile(n=100)s=s+nn=n+1enddo?1+2+...+100=,sreturnn现值(初始:1)s(初始:0)n增值后(n=n+1)10+1=11+1=221+2=32+1=333+3=63+1=4………………1004950+100=5050100+1=101
本文标题:第6章 项目与程序设计
链接地址:https://www.777doc.com/doc-782571 .html