首页 学习情境二:功能模块设计

学习情境二:功能模块设计

举报
开通vip

学习情境二:功能模块设计null学习目标 学习目标 1.理解变量的概念和变量的三要素; 2.掌握过程级和模块级变量的声明和使用; 3.了解数据类型的概念,掌握主要基本数据类型; 4.了解内部函数的概念和常用内部函数的使用; 5.掌握常用算术运算符和字符运算符,构造正确表达式; 6.了解符号常量的概念及使用; 学习情境二:功能模块设计任务2-1:数据录入目 录目 录4.1 任务描述与任务分析 4.2 变量的概念 4.3 数据类型 4.4 变量类型选择 4.5 变量赋值 4.6 在“员工工资管理系统”中应用变...

学习情境二:功能模块设计
null学习目标 学习目标 1.理解变量的概念和变量的三要素; 2.掌握过程级和模块级变量的声明和使用; 3.了解数据类型的概念,掌握主要基本数据类型; 4.了解内部函数的概念和常用内部函数的使用; 5.掌握常用算术运算符和字符运算符,构造正确 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式; 6.了解符号常量的概念及使用; 学习情境二:功能模块设计任务2-1:数据录入目 录目 录4.1 任务描述与任务分析 4.2 变量的概念 4.3 数据类型 4.4 变量类型选择 4.5 变量赋值 4.6 在“员工工资管理系统”中应用变量 4.7 关于变量声明 4.8 认识VB的内部函数 4.9 VB中的运算符 4.10 本章容易出错的地方4.1 任务描述与任务分析4.1 任务描述与任务分析1. 问题引入 在第2章案例“显示个人信息”的代码中,象个人所得税、养老保险、应发总计等数值都与 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 工资有关,而每个员工的标准工资都是在各个按钮的Click事件下直接赋给文本框,如果标准工资发生改变,就要修改很多地方,带来很多麻烦,如何使程序更加易于维护?在本章,通过在程序中引入变量来解决上面的问题。 1. 任务描述在程序中自已定义20个变量。在Form_Load事件中,将5个人的20个原始数据(常量)分别保存即赋值到这20个变量中。当在不同的按钮事件中要用到这些数据时,就用自定义变量名来代替,再赋给文本框的text属性,显示在文本框中。 2. 任务分析4.2 变量的概念4.2 变量的概念变量是内存中的存储空间,相当于宾馆的房间。房间的名称就是变量的名字(下图中一个房间的名称为X),房间的东西就是变量的值(房间里放了数字4)。 因为计算机中的存储空间非常非常多,为了使存储的数据容易找到, 所以在对某一个存储空间存放数据的时候,就要对该空间起一个名字,这个名字就是变量的名字.4.2 变量应用举例4.2 变量应用举例 Private Sub Command1_Click() Dim a As Integer, b As Integer, intTemp As Integer '声明变量 '变量赋值 a = 10 b = 20 Form1.Print “a变量和b变量内容交换前:”; a; b '输出变量 intTemp = a a = b b = intTemp Print “a变量和b变量内容交换后:”; a; b ‘输出交换后的变量 End Sub 定义变量语句,a、b、c是变量的名字,Integer是变量类型,在过程体内部定义,所以是过程变量!单击窗体上的“交换”按钮,可交换两个文本框的值。引例1: 4.3 变量有哪些类型?--数据类型的概念4.3 变量有哪些类型?--数据类型的概念不带小数点的数据,2个字节,范围从-32768~+32767。象现实生活中的价格、年龄、数量等可能要参与一些数学运算的数据就可认为是数值型。 基本整型(Integer) VB中规定了很多种数据类型,其中本章用到的基本数据类型主要有字符串型、数值型和日期时间型。不带小数点,4个字节,范围从-2147483648~2147483647。 长整型(Long ) 带小数点数据,4个字节,范围从-1038~+1038,用E表示指数;有效数字可达7位。单精度实型(Single)1.数值型  带小数点数据,8个字节,范围从-10308~+10308,用E表示指数;有效数字可达15位。 双精度实型(Double)4.3 变量有哪些类型?——数据类型的概念4.3 变量有哪些类型?——数据类型的概念象现实生活中的姓名、课程名称、邮编等数据就可认为是字符串型,这些数据是由若干个汉字、字母、数字等ASCII字符构成,即字符串是一个字符序列。 Visual Basic中规定字符串常量数据必须用一对西文双引号将字符序列括起来,如“张三”、“Visual Basic高级语言程序设计”、“518055”。2.字符串型(String)象出生日期、开始时间等表示年月日或时分秒的数据就是日期时间型。Visual Basic中规定日期时间型常量数据必须用一对西文#号将数据括起来,如#1949/10/1#.3.日期时间型(Date)4.4 怎样定义变量?——变量的声明及作用域4.4 怎样定义变量?——变量的声明及作用域变量名:用来区别标识和访问内存中的不同单元位置,特可以说“变量名是为申请的计算机内存空间起的别名。 数据类型名:变量的数据类型决定了变量能存储什么类型 的数据,计算机会根据此类型决定分配多少内存空间;1. 声明语句的格式指变量有不同的有效使用范围,它决定了可以在程序的什么地方访问某变量,什么地方不能访问。 过程级:在过程内部定义,也只能在过程内使用。 模块级:在一个模块的通用声明段,可用于该模块中的所有过程。 工程级:在标准模块的声明段中用Public声明,在整个工程的所有模块的所有过程中都可以使用。2. 变量作用域 Dim/Private/Public 变量名 As 数据类型名4.4 怎样给变量命名——变量命名规则 4.4 怎样给变量命名——变量命名规则 1. 变量名只能由西文字母、汉字、数字及下划线组成, 2. 变量名必须以西文字母或汉字开头,最后一个符号可以是类型声明符, 3. 变量名长度可达255个字符,有效字符为40个, 4. 变量名不能为VB中的保留字。(所谓的保留字就是VB中使用的固定词汇,如Print)例如:Name,a1,a2等 本教材命名全部采用匈牙利标记法则,即: 范围前缀_+数据类型前缀+标识名称 例如: intWage m_strNum1M_:代表该变量是模块变量 Str表示该变量是字符型 Num1是该变量的名字4.4 如何选择变量的数据类型4.4 如何选择变量的数据类型变量是用来存放常量的, 不同的常量存储时所需要的内存空间大小不同。就好比我们外出旅游时预定宾馆一样,不同级别的客人所定的房间大小不同。如果要存储的数据是一些数值,而且可能要参加数学运算, 就应该定义为数值型,如果这些数据是没有小数的,就应该定义为整形. 例如: Dim a As Integer 或 Dim a As Long 如果是有小数的,就应该定义为单精度类型或双精度类型。 例如: Dim a As Single 或 Dim a As Double如果要存储的数据是由若干个汉字、字母、数字等ASCII字符构成,像“姓名”、“单位”、“家庭住址”、“手机号码”等,就应该定义为字符型。 例如: Dim a As String4.5 变量赋值 4.5 变量赋值 TestDate = #1/1/2002# ‘日期型数的赋值 A = “Visual Basic” ‘字符型数的赋值 intWage = 2500 ‘整型数的赋值 (1) 先计算赋值符号“=”右边表达式的值; (2) 将该值存入到左边的属性变量或自定义变量中。2.赋值语句作用定义变量的目的是用变量存储常量,而存储常量的就要通过赋值语句实现。变量名=表达式1.赋值语句格式4.5 变量应用举例4.5 变量应用举例编写程序实现图片的放大/缩小、位置移动及恢复引例1: 1. 运行效果2. 变量定义与引用部分的代码4.6 在“员工工资管理系统”中应用变量4.6 在“员工工资管理系统”中应用变量在前面章节的“员工工资管理系统”中,员工的编号、姓名等信息是在命令按钮的Click事件下直接赋值给文本框的Text属性,从本章开始,将在程序中引入变量,将原始数据信息赋给变量,在其它事件中用到时直接引用变量即可。1.在主窗体的通用声明段定义变量4.6 在“员工工资管理系统”中应用变量4.6 在“员工工资管理系统”中应用变量Private Sub Form_Load() '给第1个员工的相关变量赋值 m_strNum1 = "001" m_strName1 = "张圳" m_intWage1 = 1100 m_intPrize1 = 500 m_intSubsidy1 = 500 '给第2个员工的相关变量赋值 m_strNum2 = "002" m_strName2 = "梁雨" m_intWage2 = 1600 m_intPrize2 = 900 m_intSubsidy2 = 700 …… End Sub2. 在窗体的加载事件下编写代码实现给变量赋值4.6 在“员工工资管理系统”中应用变量4.6 在“员工工资管理系统”中应用变量Private Sub cmd_First_Click() txt_Num.Text = m_strNum1 txt_Name.Text = m_strName1 txt_Wage.Text = m_intWage1 txt_Prize.Text = m_intPrize1 txt_Subsidy.Text = m_intSubsidy1 txt_Total1.Text = m_intWage1 + m_intPrize1 + m_intSubsidy1 txt_Tax.Text = m_intWage1 * 0.1 txt_Insure.Text = m_intWage1 * 0.05 txt_Total2.Text = Val(txt_Tax.Text) + Val(txt_Insure.Text) txt_Acce.Text = Val(txt_Total1.Text) - Val(txt_Total2.Text) img_Pict.Picture = LoadPicture(App.Path + "\01.wmf") End Sub 将赋了值的变量赋值给文本框VB中的内部函数算术表达式3. 修改员工信息浏览代码4.7 关于变量声明的说明 4.7 关于变量声明的说明 “工具/选项”菜单下打开“选项”对话框,选定“要求变量声明选项”一般来说,变量先声明再使用,也可以不声明而直接使用变量。建议养成“显式声明变量”的习惯。一般建议把VB的工作环境设置成“要求变量声明”的状态,就不允许不声明而直接使用变量。设置为这种状态后,如果编程者不小心输错了变量名,程序运行时会自动报错,这样,很容易找到错误。1. 设置方法4.7 关于变量声明的说明4.7 关于变量声明的说明 定义的变量:intTemp。编程时误写为intTmp运行时就会出现如图所示的错误2. 示例4.8 认识VB的内部函数4.8 认识VB的内部函数 例如: txt_Total2.Text = Val(txt_Tax.Text) + Val(txt_Insure.Text)函数名:val函数参数:一个参数系统中预先编好的常用函数程序,供用户直接调用。1.概念:(1)函数名:系统规定好的,用户要根据预实现的运算功能,选择合适的函数; (2)函数参数:必须放在一对小括号内紧跟在函数名后,不同函数的参数个数、数据类型不同,调用时要保证和要求的匹配; (3)函数值:函数是数据,每一个函数调用后都应有确切的值,属于某一数据类型。2. 调用内部函数要注意的三要素:4.8 认识VB的内部函数4.8 认识VB的内部函数 输入函数名字,例如输入inputbox在列表框选择要查找的内容所查找的函数说明消息框函数—— Inputbox() 取整函数—— int 随机函数—— rnd 截取子串函数——left mid right 日期时间函数——now date year month day weekday weekdayname 3. 本章用到的内部函数:(详细使用请查找MSDN)4.9 VB中的算术运算符和字符运算符 4.9 VB中的算术运算符和字符运算符 优先顺序从高到低排列为:指数(^)、负数(-)、乘除(*/)、整除(\)、求余(Mod)、加减(+-) 例如:13 Mod 4=1 1. 算术运算符例如:“奥运” + “北京” 结果为:“奥运北京” “奥运” & “北京” 结果为:“奥运北京” 2. 字符运算符 “&” 和 “+”4.10 本章容易出错的地方4.10 本章容易出错的地方 变量是用来存放常量的(数据)。如果把数据比做商品,因为商品有不同的种类,所以数据也有不同的类型。变量相当于存放商品的包装合。1. 对数据类型没有理解,导致变量类型定义错误如果一个变量在一个窗体中的多个过程中都有用,或者说一个过程执行结束后,该变量的值在其它过程中还需要用到,那么这个变量就应该定义为窗体变量。2.对变量的作用域没理解,把窗体变量定义为过程变量学习情境二:功能模块设计学习目标1.掌握数组的基本概念和数组的应用方式 2.掌握一维数组的定义与调用 3.掌握二维数组的定义与调用 4.掌握控件数组的创建方法学习情境二:功能模块设计任务2-1:数据录入目 录目 录5.1 任务描述与任务分析 5.2 数组的概念 5.3 一维数组的声明 5.4 给一维数组赋值的函数—Array函数 5.5 数组的应用 5.6 用一维数组存放员工工资信息 5.7 控件数组 5.8 控件数组的应用 5.9 在VB案例中使用控件数组 5.10 控件数组的应用 5.11 二维数组 5.12用二维数组存放员工信息 5.13 本章容易出错的地方5.1 任务描述与任务分析5.1 任务描述与任务分析 在前面创建的“员工工资管理系统”中,只浏览了四组信息,但变量的定义与赋值已经很繁琐。在实际问题中,往往要浏览更多的信息,如果仍然用单变量存放数据,那么变量的定义与赋值将会更加繁。 为了使程序中变量的定义语句得以简化,可通过在程序中定义数组来实现。5.2 数组的概念5.2 数组的概念 数组由多个元素组成,各元素在内存中的位置是相互关联的,它们有一个共同的名称,各元素由数字编号标识,标识数组元素的数字称为数组的下标,且下标可用变量来表示。 数组元素的下标的个数决定数组的维数,有一个下标的数组称为一维数组。5.3 一维数组的声明5.3 一维数组的声明Dim[/Private/Public] 数组名([下标下界 To ]下标上界) [As 类型] 如:Dim a(1 to 5) As Integer 声明数组a,有5个数组元素,分别为:a(1),a(2),a(3),a(4),a(5)语句格式:5.3 一维数组的声明5.3 一维数组的声明 数组的命名:数组名的选取遵循变量的命名规则。本书约定,以Arr作为标识数组的前缀。 数组的作用域:与变量相同,分为过程数组,模块数组和全局数组。3. 所有的数组必须声明后才可作用。 4. 下标: 必须为正负整数,且满足:上界>=下界。 [下界 To]可缺省,缺省时默认为0。 可由Option Base n指定缺省值(n的值只可为0或1). 如果在通用声明区中加入Option Base 1语句后,则所有数组缺省的下标下界时默认值均为1。 5. 数组元素的个数:数组元素的个数取决于数组的下标下界与下标上界,对于一维数组,数组元素的个数可用公式表示为:下标上界 - 下标下界 + 1 语句规则:5.3 一维数组的使用5.3 一维数组的使用1.数组元素可以和简单变量一样使用,凡是能用简单变量的地方都可以用数组元素,如:赋值符的左边、函数的参数以及各种表达式中都可以使用数组元素。 2.调用数组元素时其下标可用变量表示 数组的调用:使用数组常见的错误 使用没有定义的数组数组下标越界5.4 给一维数组赋值的函数——Array函数5.4 给一维数组赋值的函数——Array函数(1) 定义变体变量 如:Dim Vartest As Variant或:Dim Vartest (2) 用Array函数对变量赋值 如:Vartest = Array(10,23,43,21,34)使用步骤:Aarray函数是专用于为一维数组元素赋值的函数 5.5 数组的应用-引例25.5 数组的应用-引例21. 定义一个模块级数组m_strArrWeek(1 to 7) 存放字符“星期一”至“星期日” 2.一个模块变量I,首先通过函数Weekday(Date, vbMonday)对i赋初值,将系统的日期对应的星期值赋给变量i,显示数组中下标为i的元素值,即可实现首先显示系统当天的星期。 3.在计时器控件的Timer()事件中,由i=i + 1使变量i的值自动增加,最后显示数组中下标为i的元素值,即可模拟星期的自动变化。 设计如图所示的自动显示星期的电子日历分析:数组的应用-引例2数组的应用-引例2Private Sub Form_Load() m_strArrWeek(1) = "星期一" m_strArrWeek(2) = "星期二" … i = Weekday(Date, vbMonday) lbl_Week.Caption = m_strArrWeek(i) End Sub Private Sub Timer1_Timer() i = i + 1 If i > 6 Then i = 0 lbl_Week.Caption = m_strArrWeek(i) End Sub 代码编写:5.6 用一维数组存放员工工资信息5.6 用一维数组存放员工工资信息定义通用数组在Form_load()中编写如下代码: m_strArrNum(1) = "001" m_strArrName(1) = "张圳" m_intArrWage(1) = 1100 m_intArrPrz(1) = 500 m_intArrSud(1) = 500 …对数组赋值1.将员工工资的每一组同类的数存入一个数组中,则需要5个一组数组,分别用于存放编号,姓名,标准工资,奖金,补贴等 2.定义5个通用数组,在窗体加载事件中为数组赋值.定义数组5.6 用一维数组存放员工工资信息5.6 用一维数组存放员工工资信息说明 本案例中使用数组后,好处在于: 1. 变量的定义得以简化 2. 在各浏览按钮中的主要代码完全一样,为以后的内容奠定了基础.修改各浏览按钮的代码“第一个”按钮 i = 1 txt_Num.Text = m_strArrNum(i) txt_Name.Text = m_strArrName(i) txt_Wage.Text = m_intArrWage(i) txt_Prize.Text = m_intArrPrz(i) txt_Subsidy.Text = m_intArrSud(i) 其他按钮只需将i的赋值改成对应的序号,其他语句完全相同,可直接复制5.7 控件数组 5.7 控件数组 具有相同名称的多个同类控件的集合。控件数组:控件Index属性控件数组的标识1、对窗体上已经画好的一个控件进行先复制再粘贴; 2、将窗体已经画好的多个名称不同的控件改名为同一名称 3、不管用何种方法,创建控件数组时都将弹出如图所示的提示框,当选“是”时则创建了控件数组。控件数组的创建:5.8 控件数组的应用 (引例)5.8 控件数组的应用 (引例)为某商场设计一个号码摇奖器。如图所示,当单击“开始”按钮时,每隔0.3秒产生5个一位随机数显示于5个标签中, 组中,要求产生的组数为20-30之间的随机数。试题描述:界面上的5个标签为一组控件数组,3个按钮为一组控件数组。要连续产生随机数,需要时钟控件,且时钟控件的Interval值为300。要求:5.8 控件数组的应用 (引例)5.8 控件数组的应用 (引例)(1) 用通用变量t和 k分别用来存放摇奖总次数和计数已摇次数 (2) 初始时时钟控件不可用, 单击“开始”按钮,产生一个20-30之间的随机数赋给t,k=0, 激活时钟控件 (3) 在时钟的timer事件中,产生5个一位的随机数显示在控件数组中, k=k+1 ,如果k>t ,则时钟变为不可用。最后显示的5个数即为中奖号码。解题思路:5.8 控件数组的应用 (引例)5.8 控件数组的应用 (引例)Private Sub cmd_Fun_Click(Index As Integer) If Index = 0 Then ‘单击“开始”按钮 Timer1.Enabled = True t = Int(Rnd() * 11) + 20 ElseIf Index = 1 Then ‘单击“清除”按钮 lbl_Num(0).Caption = "" lbl_Num(1).Caption = "“ lbl_Num(2).Caption = "" lbl_Num(3).Caption = "" lbl_Num(4).Caption = "" Else ‘单击”结束”按钮 End End If End Sub 说明:由一个选择结构实现了在一个事件过程代码块中包含三个按钮的单击事件. 代码编写(1)控件数组编写代码 由于控件数组中的各控件具有同一个名称,所以各控件具有相同的事件名称,若3个按钮的名称为cmd_fun,则3个按钮的单击事件代码块均为: Private Sub _ cmd_Fun_Click(Index As Integer) End Sub 由Index值来区分事件发生在哪一个按钮上.代码如下:5.8 控件数组的应用 (引例)5.8 控件数组的应用 (引例)Private Sub Timer1_Timer() lbl_Num(0).Caption = Int(Rnd *10) lbl_Num(1).Caption = Int(Rnd *10) lbl_Num(2).Caption = Int(Rnd *10) lbl_Num(3).Caption = Int(Rnd *10) lbl_Num(4).Caption = Int(Rnd *10) k = k + 1 If k > t Then k = 0 Timer1.Enabled = False End If End Sub说明:lbl_Num为标簦控件数组的名称.每过0.3秒执行一次,产生5个随机数显示在控件数组中,计数变量k=k+1,再判断k>t是否成立,若成立,时钟控件变为不可用 代码编写(2)时钟控件的Timer事件代码5.9 在VB案例中使用控件数组5.9 在VB案例中使用控件数组 在VB案例中主界面上创建控件数组1.将各文本框的名称依次改为:txt_Wageinfo,则所有文本框组成为控件数组. 2.将四个按钮的名称依次改为:cmd_Brs 编写浏览按钮代码Private Sub cmd_Brs_Click(Index As ) i = index +1 txt_WageInfo(0).Text = m_strArrNum(i) txt_WageInfo(1).Text = m_strArrName(i) txt_WageInfo(2).Text = m_intArrWage(i) txt_WageInfo(3).Text = m_intArrPrz(i) txt_WageInfo(4).Text = m_intArrSud(i) End sub说明:程序中的语句i = index + 1 表示当前所浏览的员工序号与按钮控件数组的下标的关系,如”第一个”按钮的Index值为0,浏览的为第1 组数据.这样一来,这一组代码即可代码前面章节中的四段代码,程序得到了极大的简化.5.10 控件数组的应用(课堂实训1) 5.10 控件数组的应用(课堂实训1) 如图所示的界面,界面上有四个标签框,组成控件数组,两个按钮分别为“输入”,“抽奖”组成控件数组,单击“输入”按钮时依次弹出四个对话框,用户分别输入四个姓名 ,单击”抽奖”按钮时,显示获奖结果1. 任务描述:定义通用一维数组m_name(0 to 3)存放输入的数据,单击”抽奖”按钮时,将数组各元素的值与字符串”,谢谢参予”连接后显示在标签控件数组中,再产生一个0~3的随机数i,在控件数组中下标为i的元素中显示”恭喜xxx,你中奖了”2. 任务分析:5.10 数组的应用(课堂实训1)5.10 数组的应用(课堂实训1)dim m_name(0 to 3) Private cmd_fun(index as Integer) select case index case 0 m_name(0)= inputbox(“请输入第1 个姓名”) m_name(1)= inputbox(“请输入第2 个姓名”) m_name(2)= inputbox(“请输入第3 个姓名”) m_name(3)= inputbox(“请输入第4个姓名”) Case 1 lbl_name(0) =m_name(0) & “谢谢参予” lbl_name(1) = m_name(1) & “谢谢参予” lbl_name(2) = m_name(2) & “谢谢参予” lbl_name(3) = m_name(3) & “谢谢参予” j = int(3*rnd) lbl_name(j) = “恭喜你” & m_name(i) & “,你中奖了” End Select End Sub 3.实现代码5.10 数组的应用(课堂实训2)5.10 数组的应用(课堂实训2)解题分析:赌运气, 界面设计如图所示,单击”开始”按钮时,产生3一位随机数显示在标签中.当三个数中没有7时,在文本框中显示:“You are UnLucky”,当三个数中有一个或一个以上的7时,在文本框中显示”You are Lucky”1. 任务描述:三个随机数存放在一维数组中,三个标签为控件数组,由选择结构实现文本框中的显示内容.2. 任务分析:5.10 数组的应用(课堂实训2)5.10 数组的应用(课堂实训2)Private cmd_start() dim a(2)% a(0)=int(10*rnd) a(1)=int(10*rnd) a(3)=int(10*rnd) lbl_num(0)=a(0) lbl_num(0)=a(0) lbl_num(0)=a(0) if a(0) = 7 or a(1) = 7 or a(2) = 7 then txt_ts.Text = “You are Lucky” Else txt_ts.Text = “You are UnLucky” End if End sub 3.实现代码5.11 二维数组 5.11 二维数组 其中:下界1与上界1,下界2与上界2分别满足一维数组中与下标的有关的规定。 语句:Dim a(1 to 2, 0 to 2) 表示定义了二维数组a,数组元素分别为a(1,0),a(1,1),a(1,2),a(2,0),a(2,1),a(2,2)。 二维数组元素个数的计算:(上界1 - 下界1 + 1) *(上界2 - 下界2 + 1) ,如:Dim Num(-1 to 2,0 to 4)所定义的数组中共有数组元素的个数为:(2-(-1)+1)*(4-0+1)=20,即数组Num中有20个元素。Dim[/Private/Public] 数组名称([下界1 To ]上界1,[下界2 to] 上界2)语法格式:有关概念引用二维数组时,必须有两个下标,下标之间用”,”隔开.每个下标必须在定义规定的范围内.数组元素的引用:5.12 二维数组存储员工信息 5.12 二维数组存储员工信息 定义数组数组元素的含义: m_Arrmsg(1,1) — 第一个人的编号 m_Arrmsg(1,2) -- 第一个人的姓名 m_Arrmsg(1,3) – 第一个人的工资 m_Arrmsg(1,4) – 第一个人的奖金 m_Arrmsg(1,5) – 第一个人的补贴 … 依此类推:数组m_Arrmsg(10,5)可存放11个人每人5个数据项的数据. 利用这种对应关系可修改各浏览按钮的代码.(略)打开主窗体的代码窗口将上一节的数组声明改为如图所示的声明 5.13 本章容易出错的地方5.13 本章容易出错的地方定义数组时必须指明下标下界与上界,引用数组时,下标不能超过下标下界与上界所限定的范围。 2. 下标越界;数组与变量一样,都是内存中的存储单位,用来存放数据,但不同的是,在没有强制要求变量声明的前提下,过程变量不定义可直接使用,但数组则不行,所有的数组必须先定义再使用.1. 数组没有定义直接使用;学习情境二:功能模块设计学习情境二:功能模块设计任务2-2:数据处理学习目标1.掌握单行IF语句结构应用 2.掌握使用嵌套选择结构处理程序的方法 3.掌握 Select Case 语句的应用 4.掌握用户自定义Function过程的定义与调用目 录目 录6.1 任务描述与任务分析 6.2 个人所得税的计算方法 6.3 单行IF语句结构应用举例 6.4 多个条件的块IF语句应用 6.5 Select Case 语句 6.6 初步认识Function自定义过程 6.7 自定义Function过程的创建 6.8 Function函数的应用6.1 任务描述与任务分析6.1 任务描述与任务分析在前面创建的“员工工资管理系统”中,所有浏览信息中的个人所得税都是按照基本工资的10%扣除的。在实际问题中,个人所得税的比率应随着员工工资的不同而不同。6.2 个人所得税的计算方法6.2 个人所得税的计算方法 根据上面表格可知,要自动计算每个员工的工资,必须对各员工的基本工资进行判断,然后选择每个员工的税率。要实现上面的功能,就要用到多个分支的选择结构。 6.3 单 行IF语句结构应用举例6.3 单 行IF语句结构应用举例 应用举例如果要判断一个员工是否需要交纳个人所得税(用m_intWage表示员工的基本工资),用单行IF语句可以表示为:If m_intWage <=800 Then m_intTax = 0 Else _ m_intTax = 表达式 说明:当一条语句太长,在一行内写不下时,可以通过续行符“ _”连接。6.4 多个条件的块IF语句应用6.4 多个条件的块IF语句应用Dim m_intWage As Integer Dim intTax1 As Integer, intTax2 As Integer, intTax3 As Integer intTax1 = 500 * 0.05 intTax2 = 1500 * 0.1 intTax3 = 3000 * 0.15 m_intWage = Val(txt_Wage.Text) txt_Insure.Text = m_intWage * 0.05 If m_intWage - 800 <= 0 Then txt_Tax.Text = 0 ElseIf m_intWage - 800 <= 500 Then txt_Tax.Text = (m_intWage - 800) * 0.05 ElseIf m_intWage - 800 <= 2000 Then txt_Tax.Text = (m_intWage - 1300) * 0.1 + intTax1 ElseIf m_intWage - 800 <= 5000 Then txt_Tax.Text = (m_intWage - 2800) * 0.15 + intTax2 + intTax1 Else txt_Tax.Text = (m_intWage - 5800) * 0.2 + intTax3 + _ intTax2 + intTax1 End If说明:为了简化程序,该段代码假定工资额不超过20000元.1. 编写实现自动计算“员工工资管理系统”中的个人所得税6.5 Select Case 语句 6.5 Select Case 语句 1. 语句格式Select Case <测试表达式>  Case <表达式1> 语句1  Case <表达式2> 语句2 ……  Case <表达式n> 语句n [ Case Else 语句n+1] End Select说明: (1)测试表达式除了常规形式的表达式以外,还可以是限定范围的a To b或 is 关系表达式。例如: Case 1,2,3 Case “a” To “b” Case 2, Is<300 (2)Case Else部分可省去。如:计算指定月份中的天数问题。 (3)使用IS指定条件时,只能是简单条件,不能使用逻辑运算符,例如表达式Case Is>0 AND IS<1300不能使用。6.5 Select Case语句应用6.5 Select Case语句应用Select Case m_intWage Case Is <= 800 txt_Tax.Text = 0 Case Is <= 1300 txt_Tax.Text = (m_intWage - 800) * 0.05 Case Is <= 2800 txt_Tax.Text = (m_intWage - 1300) * 0.1 + intTax1 Case Is <= 5800 txt_Tax.Text = (m_intWage - 2800) * 0.15 + intTax2 + intTax1 Case Is < =20800 txt_Tax.Text = (m_intWage - 5800) * 0.2 + intTax3 + _ intTax2 + intTax1 End Select 2. 使用Select Case语句实现自动计算员工个人所得税6.6 初步认识Function自定义过程 6.6 初步认识Function自定义过程 使用通用Function过程: Dim sx !, sy!, sz! Dim x!, y !, z! Dim s ! x =Val( InputBox("请输入x的值")) y =Val( InputBox("请输入y的值")) z =Val( InputBox("请输入z的值")) sx = f_Sum(x) sy = f_Sum(y) sz = f_sum(z))Private Function f_Sum (a!) As _ Single f_Sum = 0 For i = 1 To a f_Sum = f_Sum + 1 / i Next End Function除了Sub过程外,另一种自定义过程是Function过程,也称为函数过程。如将上一节中的引例改用Function过程来完成,程序可写为:自定义Function过程6.7 自定义Function过程的创建6.7 自定义Function过程的创建说明:如果需要参数,则只能在代码窗口中在过程名后的括号内加上.在VB环境中,打开代码窗口; 单击“工具”菜单下“添加过程”命令,打开 “添加过程”窗口; 在“添加过程”窗口中,在“名称”框中输入过程名称,“类型”选择为“函数”,“范围”根据需要选择“公有的”或“私有的”,单击“确定”按钮,则在代码窗口中将自动出现如下代码块。 Private Function s_sum() End Function方法一: 用菜单命令 自定义Function过程的创建自定义Function过程的创建说明: 编写函数体语句时,必须包含一次对函数名赋值的语句 参数与Sub过程相同,只能是变量名或数组名 输入Function语句时只能在代码窗口的空白处输入,不能在其他的Sub 与End Sub之间输入 函数可以指明类型,表示函数反回值的类型。在代码窗口的空白处输入[Private|Public]Sub <自定义过程名>[(参数表)] 后按回车键,则自动形成如下的代码块: [Public] Function 函数名(参数表) As 类型 End Function 方法二:编写代码创建自定义过程用Function过程计算VB案例中的个人所得税 用Function过程计算VB案例中的个人所得税 个人所得税的计算也是相对独立且较长的一段代码,直接写在事件过程中不利于体现事件过程的功能,将其定义为一个独立的通用过程.在需要的事件过程中直接调用.编写代码如下:必须性Public Function f_CalTax(wage As Integer) Dim intTax1!, intTax2!, intTax3!r, intTax4! intTax1 = 500 * 0.05 intTax2 = 1500 * 0.1 intTax3 = 3000 * 0.15 If wage >= 0 And wage <= 20000 Then If wage - 800 <= 0 Then f_CalTax = 0 ElseIf wage - 800 <= 500 Then f_CalTax = (wage - 800) * 0.05 ElseIf wage - 800 <= 2000 Then f_CalTax = (wage - 1300) * 0.1 + intTax1 ElseIf wage - 800 <= 5000 Then f_CalTax = (wage - 2800) * 0.15 + intTax2 + intTax1 Else f_CalTax = (wage - 5800) * 0.2 + intTax3 + intTax2 + intTax1 End If Else MsgBox "数据超出范围" End If End Function在事件过程中调用Function在事件过程中调用Function这样处理后,使得文本框的Change事件的功能更加突出,即计算所有的计算数据.txt_WageInfo_Change(Index As Integer) txt_ WageInfo(5).Text = m_intArrWage(i) + m_intArrPrz(i) + _ m_intArrSud(i) txt_WageInfo(6).Text =m_ intArrWage(i) * 0.05 txt_WageInfo(7).Text = f_Caltax(m_intArrWage(i)) txt_WageInfo(8).Text = m_intArrWage(i) * 0.05 + _ f_Caltax(m_intArrWage(i)) txt_ WageInfo(9).Text = Val(txt_ WageInfo(5).Text) – _ Val(txt_ WageInfo(8).Text) End Sub在文本框控件数组的Change事件中调用函数6.8 Function函数的应用:课堂实训6.8 Function函数的应用:课堂实训将成绩转换为等级 要求: 1."输入成绩":弹出5个输入框,依次输入5个学生的成绩,并显示在对应的文本框中. 2."转换成绩":分别将5个成绩转换成对应的等级,显示在文本框中. 3.成绩到等级的转换由Function函数来实现.代码编写如下:任务描述:Function函数的应用:课堂实训1代码Function函数的应用:课堂实训1代码Dim cj%(5),dj$(5) Private Sub cmd_1_Click() ‘Cmd_1为数据输入按钮: for i = 1 to 5 cj(i) = val(Inputbox("请输入第" & i & "个成绩")) txt_cj.text = txt_cj.text & cj(i) next End Sub 'cmd_2为数据转换: Private Sub cmd_2_Click() for i = 1 to 5 dj(i) = f_chg(cj(i)) txt_dj.text = _ txt_cj.text & dj(i) next End SubFunction函数:将cj转换为dj Private Function f_chg(a%) as String select case a case Is >=85 f_chg="A" Case Is >=75 f_chg="B" Case Is >=60 f_chg ="C: Case Else f_chg ="D" End Select End Function 学习情境二:功能模块设计学习目标1.掌握For…Next循环结构的使用 2.掌握Do While…Loop循环结构的使用 3.掌握InputBox函数的使用 4.掌握列表框与组合框控件的常用属性、方法和事件学习情境二:功能模块设计任务2-3:数据显示目 录目 录7.1 任务描述与任务分析 7.2 For循环结构语法格式 7.3 For循环结构的应用 7.4 相关知识:Exit For语句 7.5 相关知识:Inputbox函数的复杂应用 7.6 For循环结构在VB案例中的应用 7.7 For循环结构的应用 7.8 Do While 循环结构 7.9 Do While 循环结构语法格式 7.10 相关知识:Do Until 7.11 Do While循环的应用7.1 任务描述与任务分析7.1 任务描述与任务分析在上一章中,引入了数组后,使变量的声明得以简化,但对变量的赋值仍然很繁琐。将一章中的赋值语句中的下标用变量i,并将赋值语句都改为用InputBox()函数给变量赋值,则不难发现,所有的赋值语句中其实是同一组语句的重复,如果要输入更多的员工信息,则该语句组将要重复更多次。对于这种重复的语句的处理,Visual Basic6.0 中提供了一种专门的语句结构——循环结构,使用循环结构可使程序中的重复语句“折叠”起来。null修改主界面对前面章节中设计的主界面修改如下,即增加一个“数据输入”按钮,并将各浏览按钮的标题改”第一个”、”下一个”、”上一个”和”最后一个”.通过单击“数据输入”按钮依次弹出输入框,由用户输入员工的工资信息。nullFor循环引例1不用循环结构: Print 1 Print 2 Print 3 Print 4 Print 5 如果要显示更多的数,则需要更多的语句在屏幕上显示5个数用循环结构: For i = 1 to 5 Print i Next I 如果要显示更多的数,只需将循环终值5改为所需要的数即可,不需要增加更多的语句7.2 For循环结构语法格式7.2 For循环结构语法格式流程图如图所示For 循环变量 = 初值 To 终值 [Step 步长] <循环体> Next [循环变量] For循环结构执行过程 For循环结构执行过程 1. 循环变量赋初值;2. 判断循环变量是否在初值与终值的范围内;3. 若第2步成立,则执行循环体,循环变量自动增加一个步长,然后再返回到第2步;4. 若第2步不成立,则结束循环,跳转到循环结构下面的语句.7.3 For循环结构的应用7.3 For循环结构的应用 求1+2+3+…+100的和分析 通过分解不难发现:每一步的结果总是等于上一步的结果加上该步的序号,如果用变量表示,引入两个变量:s存放每一步的求和结果,i存放每一步的序号,则每一步的运算均可表示为: i= i+1 s= s+i将i作为循环变量,则循环结构可写为:For i = 1 to 100 s = s + i Next inull引例3:设计一个摸拟考生登录的界面分析 将四个考生的数据预先存入变量中,当考生输入准考证号时,自动在所有数据中搜索该准考证所对应的姓名与机器号,并显示一张对应的图片(假设图片文件分别为1.jpg、2.jpg、3.jpg、4.jpg)。 首先声明3个数组zkz(4),xm(4),jqh(4) 在Form_load()中对数组赋值(假设赋固定的值)nullPrivate Sub txt_Num_Change() For i = 1 To 4 If txt_Num.Text = m_ArrNum(i) Then lbl_Name.Caption = m_ArrName(i) lbl_Mnum.Caption = m_ArrMnum(i) Image1.Picture = LoadPicture(App.Path + “\” & i _ & ".jpg") Exit For Else lbl_Name.Caption = "" lbl_Mnum.Caption = "" Image1.Picture = LoadPicture("") End If Next i End Sub此循环的作用是将用户在文框中输入的内容与四个准考证变量逐个比较,一旦发现相同的就退出循环在准考证文本框的Change事件中编写如下代码:7.4 相关知识: Exit For 7.4 相关知识: Exit For 用法:功能:可在For循环的循环体中的任何地方强行退出循环结构,而不管循环变量的值是否超出循环范
本文档为【学习情境二:功能模块设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_591852
暂无简介~
格式:ppt
大小:2MB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2011-03-21
浏览量:65