版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Visual FoxPro 程序设计教程,机械工业出版社同名教材配套电子教案,2007 年 7月,4.1 条件表达式 关系运算符与关系表达式 逻辑运算符与逻辑表达式 运算符的优先顺序 4.2 条件选择语句 单条件选择语句IF 多分支条件选择语句DO CASE 4.3 提供简单选择的控件 命令按钮组,第 4 章,选择结构程序设计, 选项按钮组 复选框 4.4 计时器与微调器 计时器 微调器 4.4 键盘事件 KeyPress事件 响应键盘事件,4.1.1 关系运算符与关系表达式,4.1 条件表达式,教学进程,关系运算符有8种:、=、=、#、 !=、$、= =,逻辑运算符有3种:AND、OR、NO
2、T,4.1.1 逻辑运算符与逻辑表达式,运算符的优先顺序:算术运算符、字符串运算符、 关系运算符、逻辑运算符,4.1.1 运算符的优先顺序,4.2 条件选择语句,单条件选择语法结构:,IF条件 语句列1 ELSE 语句列2 ENDIF,教学进程,教学进程,【例4-2】设计一个验证口令的表单。输入口令时文本框中只显示相同个数的“*”号,如图4-2所示。,设计步骤如下: (1) 建立应用程序用户界面。 (2) 设置对象属性。,(3) 编写程序代码。图4-3 建立界面与设置属性,教学进程, 编写关闭按钮Command1的Click事件代码: THISFORM.Release,教学进程,编写Text1
3、的Valid事件代码: THISFORM.Command1.TabStop = .F. a = LOWER(THIS.Value) IF a= abcd THISFORM.Label1.Top = THIS.Parent.Top THISFORM.Label1.Caption=欢迎使用本程序! THISFORM.Command1.TabStop = .T. THIS.Parent.Visible = .F. ELSE MESSAGEBOX(对不起,口令错!请重新输入!,48,口令) THIS.SelStart=0 THIS.SelLength=LEN(RTRIM(THIS.Value) END
4、IF,教学进程,教学进程,【例4-3】求函数值。输入x,计算y的值,其中:,设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写程序代码。 根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为:,x = val(THISFORM.Text1.Value) IF x = 0 y = 4 * x ELSE y = 15 2 * x ENDIF THISFORM.Text1.SelStart = 0 THISFORM.Text1.SelLength= EN(THISFORM.Text1.Text) THISFORM.Text1.SetFocus THISF
5、ORM.Text2.Value = y,教学进程,教学进程,教学进程,使用IIF函数 IIf函数的语法结构为: IIf(条件,真部分,假部分),【例4-4】例4-3中命令按钮Command1的单击(Click)事件代码可以改为: x =val(THISFORM.Text1.Value) y = IIF(x = 0, 4 * x, 15 2 * x) THISFORM.Text2.Value = y THISFORM.Text1.SelStart = 0 THISFORM.Text1.SelLength=LEN(THISFORM.Text1.Text) THISFORM.Text1.SetFoc
6、us,教学进程, IF语句的嵌套 【例4-5】铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是:行李重量不超过50公斤时,每公斤0.25元,超过50公斤而不超过100公斤时,其超过部分每公斤0.35元,超过100公斤时,其超过部分每公斤0.45元。编写程序,输入行李重量,计算并输出托运的费用。,设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。,教学进程,(2) 编写程序代码。 根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为: w = THISFORM.Text1.Value IF w = 50 x = 0.25 * w ELSE IF w = 1
7、00 x = 0.25 * 50 + 0.35 * (w 50) ELSE x = 0.25 * 50 + 0.35 * 50 + 0.45 * (w 100) ENDIF ENDIF THISFORM.Text2.Value = x THISFORM.Text1.SelStart = 0 THISFORM.Text1.SelLength = LEN(THISFORM.Text1.Text) THISFORM.Text1.SetFocus,教学进程,【例4-6】5-5某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物 (1) 在1000元以上者,按九五折优惠。 (2) 在2000元
8、以上者,按九折优惠。 (3) 在3000元以上者,按八五折优惠。 (4) 在5000元以上者,按八折优惠。 编写程序,输入购物款数,计算并输出优惠价。,设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。,教学进程,x =val(THISFORM.Text1.Value) IF x 1000 y = x ELSE IF x 2000 y = 0.95 * x ELSE IF x 3000 y = 0.9 * x ELSE IF x 5000 y = 0.85 * x ELSE y = 0.08 * x ENDIF,ENDIF ENDIF ENDIF THISFORM.Text2.Val
9、ue = y THISFORM.Text1.SelStart = 0 THISFORM.Text1.SelLength= LEN(THISFORM.Text1.Text) THISFORM.Text1.SetFocus,(2) 编写程序代码。 根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为:,多分支条件选择语句DO CASE 语法结构,DO CASE CASE条件1 语句列1 CASE条件2 语句列2 . OTHERWISE 其他语句列 ENDCASE,教学进程,【例4-7】5-6在例4-6中使用DO CASE语句来计算优惠价, 只需将其中命令按钮Command1的
10、Click事件代码改为:,x = val(THISFORM.Text1.Value) DO CASE CASE x 1000 y = x CASE x 2000 y = 0.95 * x CASE x 3000 y = 0.9 * x CASE x 5000 y = 0.85 * x OTHERWISE y = 0.80 * x ENDCASE THISFORM.Text2.Value = y THISFORM.Text1.SelStart = 0 THISFORM.Text1.SelLength=LEN(THISFORM.Text1.Text) THISFORM.Text1.SetFocus
11、,教学进程,4.3 提供简单选择的控件,使用命令按钮组,【例4-8】5-7使用命令按钮组的程序。 设银行定期存款年利率为:1年期2.25%,2年期2.43%, 3年期2.70%,5年期2.88%(不计复利)。 今有本金x元,5年以后使用,共有以下6种存法: l存一次5年期。 l存一次3年期,一次2年期。 l存一次3年期,两次1年期。 l存两次2年期,一次1年期。 l存一次2年期,三次1年期。 l存五次1年期。 分别计算各种存法5年后到期时的本息合计,如图4-12所示。,教学进程,设计步骤如下: (1) 建立应用程序用户界面。 (2) 设置对象属性。 (3) 编写程序代码。 编写表单的Activ
12、ate事件代码: THIS.Text1.SetFocus, 编写命令按钮组Commandgroup1的Click事件代码: a =val( THISFORM.Text1.Value) x1 = 0.0225 x2 = 0.0243 x3 = 0.027 x5 = 0.0288 n = THIS.Value,教学进程,DO CASE CASE n = 1 mes = 存1次5年期 y = (1 + 5 * x5) * a CASE n = 2 mes = 存1次3年期,1次2年期 y = (1 + 3 * x3) * (1 + 2 * x2) * a CASE n = 3 mes = 存1次3年
13、期,2次1年期 y = (1 + 3 * x3) * (1 + x1)2 * a CASE n = 4 mes = 存2次2年期,1次1年期 y = (1 + 2 * x2)2 * (1 + x1) * a CASE n = 5mes = 存1次2年期,3次1年期 y = (1 + 2 * x2) * (1 + x2)3 * a CASE n = 6 mes = 存5次1年期,教学进程,y = (1 + x1)5 * a ENDCASE mes = ALLT(STR(a) + “元” + mes + CHR(13) + “到期时, 本息共计: + ALLT(STR(y,12,2) + 元 ME
14、SSAGEBOX(mes, 0 , 利息计算),教学进程,选项组与选项组生成器,【例4-9】利用选项组控制例4-8中存款利息的计算,如图4-16。 设计步骤如下: (1) 建立应用程序用户界面 (2) 设置对象属性。 (3) 编写程序代码。 编写表单的Activate事件代码: THIS.Text1.SetFocus 编写选项按钮组OptionGroup1的Click事件代码:,教学进程,a = val(THISFORM.Text1.Value) x1 = 0.0225 x2 = 0.0243 x3 = 0.027 x5 = 0.0288 n = THIS.Value DO CASE CASE
15、 n = 1 mes = 存1次5年期 y = (1 + 5 * x5) * a CASE n = 2 mes = 存1次3年期,1次2年期 y = (1 + 3 * x3) * (1 + 2 * x2) * a CASE n = 3,教学进程,mes = 存1次3年期,2次1年期 y = (1 + 3 * x3) * (1 + x1)2 * a CASE n = 4 mes = 存2次2年期,1次1年期 y = (1 + 2 * x2)2 * (1 + x1) * a CASE n = 5 mes = 存1次2年期,3次1年期 y = (1 + 2 * x2) * (1 + x2)3 * a
16、 CASE n = 6 mes = 存5次1年期 y = (1 + x1)5 * a ENDCASE mes = mes + ,本息共计:+ALLT(STR(y,12,2)+元 THISFORM.Label3.Caption = mes,教学进程,【例4-10】利用选项组控制文本的对齐方式与字体,如图4-18。 设计步骤如下: (1) 建立应用程序用户界面。 (2) 设置对象属性。 (3) 编写程序代码。 编写表单的Activate事件代码: THISFORM.Text1.SetFocus 编写OptionGroup1的Click事件代码:,n = THIS.Value DO CASE CAS
17、E n = 1 THISFORM.Text1.Alignment = 0 CASE n = 2 THISFORM.Text1.Alignment = 2 CASE n = 3 THISFORM.Text1.Alignment = 1 ENDCASE,教学进程,编写OptionGroup2的Click事件代码: n = THIS.Value DO CASE CASE n = 1 THISFORM.Text1.FontName = 宋体 CASE n = 2 THISFORM.Text1.FontName = 隶书 CASE n = 3 THISFORM.Text1.FontName = 黑体 C
18、ASE n = 4 THISFORM.Text1.FontName = 楷体_GB2312 ENDCASE,教学进程,选项组的图形方式,【例4-11】修改上例中的选项组成图形按钮的形式,如图4-21。 设计步骤同上例,只介绍选项组的修改方法。,与修改命令按钮组类似,可以在“选项组生成器”中对各个选项按钮进行修改。下面我们通过属性窗口对选项按钮进行修改。 用鼠标右键单击选项组OptionGroup1,在弹出菜单中选择“编辑”,OptionGroup1的四周出现浅色边界,开始对选项组(容器)中的按钮进行编辑。 依次选中三个按钮Option1Option3,将其标题(Cpation)属性改为:(空)
19、,自动大小(AutoSize)属性改为:.F. 假,图片(Picture)属性通过浏览按钮“”进行查找,并分别改为:,programfilesmicrosoftvisualstudiocommongraphicsbitmapstlbr_w95lft.bmp programfilesmicrosoftvisualstudiocommongraphicsbitmapstlbr_w95ctr.bmp program filesmicrosoftvisual studiocommongraphicsbitmaps tlbr_w95rt.bmp 最后适当调整按钮的大小与相互位置。与之相仿可以将选项组Op
20、tionGroup1改为图形方式,如图4-22所示。,教学进程,使用复选框,1、使用单个复选框,【例4-12】在上例中,增加复选框,控制选项组是否显示,如图4-23所示。,图4-23 利用复选框控制控件的显示,设计步骤同上例,只列出增加的部分。 (1) 增加一个复选框控件Check1。 (2) 修改Check1的属性: AutoSize 属性改为:.T. 真 标题(Caption)改为:修改 值(Value)改为:.T. (3) 编写Check1的Click事件代码: THISFORM.OptionGroup1.Visible = THIS.Value THISFORM.OptionGroup
21、2.Visible = THIS.Value,2、使用多个复选框,【例4-13】利用复选框来控制输入或输出文本的字体风格,如图4-24所示。,图4-24 控制字体风格,设计步骤如下: (1) 选择新建表单,进入表单设计器,增加一个形状控件 Shape1、一个文本框控件Text1、一个标签控件Label1以及三个复选框控件Check1、Check2和Check3。 (2) 设置对象属性。 (3) 编写事件代码。 编写表单的Activate事件代码: THIS.Text1.SetFocus 编写Check1的Click事件代码: THISFORM.Text1.FontBold = THIS.Val
22、ue 编写Check2的Click事件代码: THISFORM.Text1.FontItalic = THIS.Value 编写Check3的Click事件代码: THISFORM.Text1.FontUnderLine = THIS.Value,3、复选框的图形按钮方式,【例4-14】图形按钮形式的复选框,如图4-25。单击锁定按钮关闭其他复选框,单击修改按钮则开放其他复选框。,图4-25 使用图形按钮形式的复选框,设计步骤如下: (1) 选择新建表单,进入表单设计器,首先增加一个形状控件Shape1,然后在其上增加一个文本框控件Text1、一个标签控件Label1以及五个复选框控件Chec
23、k1、Check2、Check3、Check4和Check5(参见图4-26)。,图4-26 设计按钮形式的复选框 (2) 修改控件属性。,(3) 编写事件代码。 编写Check1的Click事件代码: THISFORM.Text1.FontBold = THIS.Value 编写Check2的Click事件代码: THISFORM.Text1.FontItalic = THIS.Value 编写Check3的Click事件代码: THISFORM.Text1.FontUnderLine = THIS.Value 编写Check4的Click事件代码: THISFORM.Text1.FontS
24、trikethru = THIS.Value 编写Check5的Click事件代码: THISFORM.SetAll(Enabeld,THIS.Value,CheckBox) THIS.Enabeld=.T. THIS.Caption=IIF(THIS.Value=1,R 锁定,R 修改),4.4 计时器与微调器 使用计时器 1、计时器的计时功能,【例4-15】在表单上设计一个数字时钟,如图4-28所示。,图4-28 数字时钟,设计步骤如下: (1) 建立应用程序用户界面。 (2) 设置属性。 (3) 编写程序代码。 编写表单的Activate事件代码: SET HOURS TO 12 编写O
25、ptionGroup1的InteractiveChange事件代码: IF THIS.Value=2 SET HOURS TO 12 THISFORM.Container1.Label1.Visible=.T. ELSE SET HOURS TO 24 THISFORM.Container1.Label1.Visible=.F. ENDIF, 编写Timer1的Timer事件代码: IF HOUR(DATETIME()=12 THIS.Parent.Label1.Caption=下午 ELSE THIS.Parent.Label1.Caption=上午 ENDIF THIS.Parent.Text1.Value=SUBSTR(TTOC(DATETIME(),10,8),2. 计时器的动感控制 【例4-16】设计一个电子游动标题板,标题“使用VFP设计动画”在表单的黄色区域(容器中)自右至左地反复移动。单击“暂停”按钮,标题停止移动,按钮变成“继续”。 单击“继续”按钮,标题继
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JNK-IN-25-生命科学试剂-MCE
- 2026年中草药识别测试题及答案
- 2026年美工操作测试题及答案
- 2026年网卡相关测试题及答案
- 2026年运营督导测试题及答案
- 2026年焦虑倾向测试题及答案
- 2026年强基计划古文字学笔试题及答案
- 2026年戴耳机听力测试题及答案
- 2026年消费安全知识测试题及答案
- 2026年国外常用英语测试题及答案
- 2026年湖南省政工专业职称考试(中国近现代史)练习试题及答案
- 2026年云南交投集团曲靖管理处分公司收费员等岗位招聘(招募)(140人)考试备考试题及答案解析
- 2026年天津市公安医院医护人员招聘笔试备考试题及答案解析
- 2026年中国兵器审计中心(西安中心)招聘(5人)笔试备考题库及答案解析
- 2026年中考生物会考全四册核心知识点梳理
- 青海中考:政治高频考点
- 2026年高校教师资格证题库综合试卷及参考答案详解【新】
- 幼儿园教职工防汛培训
- DB41∕T 3060-2025 生活垃圾焚烧电厂智能化技术导则
- 命理行业分析 投资报告
- 2025年东南大学强基计划招生数学试卷试题真题(含答案详解)
评论
0/150
提交评论