首页 VBNET程序设计实用教程3

VBNET程序设计实用教程3

举报
开通vip

VBNET程序设计实用教程3nullVisual Basic .NET程序设计实用教程Visual Basic .NET程序设计实用教程第3章 数 组本章任务:本章任务: 方阵转置 求一维数组的最小值及其位置 求矩阵的各行最小值及位置 求每个学生的平均成绩并按平均成绩排序 一维数组排序算法演示 本章任务 本章要点: 本章要点: 本章要点: 数组的概念 二维数组的定义、赋初值与数组元 素的引用与数组相关的语句、函数的使用 控件(对象)数组的定义与使用 本章要点一维数组的定...

VBNET程序设计实用教程3
nullVisual Basic .NET程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 实用教程Visual Basic .NET程序设计实用教程第3章 数 组本章任务:本章任务: 方阵转置 求一维数组的最小值及其位置 求矩阵的各行最小值及位置 求每个学生的平均成绩并按平均成绩排序 一维数组排序算法演示 本章任务 本章要点: 本章要点: 本章要点: 数组的概念 二维数组的定义、赋初值与数组元 素的引用与数组相关的语句、函数的使用 控件(对象)数组的定义与使用 本章要点一维数组的定义、赋初值与数组元素的引用3.1 ●数组的概念 3.1 ●数组的概念   在前面的章节中,程序中要存放或处理一个数据,首先应声明一个变量,这在只处理少量数据的程序中是可以的,但若程序需处理很多个数据,特别是同类数据,使用变量实现将显得比较麻烦,甚至不可能完成需要的功能。如某次期中考试后,需要用计算机处理学生的信息学课程成绩,假设全年级为200人,若用变量来 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 学生的成绩,不但需要200个变量,而且在编程过程中程序员还需要记住每个变量与学生的对应关系,显然是极不方便的。3.1 ●数组的概念 3.1 ●数组的概念 为了解决该问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,在VB.NET中提供了一种名叫“数组”的数据结构,利用它可以方便地处理像考试成绩这种具有多个相同类型的一批数据。可以把数组看成是很多个变量的集合,这些变量具有相同的类型,它们在内存中是连续存放的,这些变量均具有相同的名称,并且可以通过下标相互区分,每一个这样的变量我们把它称为数组元素。由于在程序中数组元素是通过下标相互区分的,而下标又可以用变量或 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式来表示,所以为程序员循环处理成批数据带来了方便。 3.1 ● 数组的概念 3.1 ● 数组的概念 如假设存放200个学生信息学成绩的数组名为InformationScore,要求出所有学生的信息学的平均分,可使用下列语句: Dim AvgInformationScore As Single Dim InformationScore(199) As Integer AvgInformationScore = 0 For i = 0 To 199 Step 1 AvgInformationScore = AvgInformationScore + InformationScore (i) Next I AvgInformationScore = AvgInformationScore / 300 读者不妨试着使用变量来求信息学课程的平均分,会发现程序编起来非常麻烦。可见与变量相比,使用数组来处理同类的多个数据,优势十分明显。 3.2 ●任务3-1:求一维数组的最小值及其位置—— 一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置—— 一维数组    任务3-1描述: 编写一个程序,用来从随机产生10个两位数找出其中的最小数及最小数的位置。程序的设计界面如图3-1所示,程序运行时,单击“产生数组”按钮,将产生10个两位数并显示在第一个文本框中,单击“求最小数及位置”按钮将从产生的10个两位数中找出最小数及其位置并显示在第二和第三个文本框中,如图3-2所示: 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 图3-2 null 可使用一个一维数组来存放一批随机产生的数,再设两个变量,一个用来记下数组中的最小数,一个用来记下最小数的下标。首先认为第一个数最小,记下它的值和下标;然后用记下的最小数和后面的数比较,如果后面的数小,则用记最小数的变量记下该数,用记最小数下标的变量记下该数的下标;用记下的最小数再与后面的数比较……直到所有的数都比较完毕,记最小数变量中的值就是最小数,记最小数下标的变量中的值就是最小数的下标,最小数下标(从0开始)加1就是最小数的位置。 任务分析:3.2 ●任务3-1:求一维数组的最小值及其位置—一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 任务实现:1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:\VBTASK\CH03”,项目名为“Task3_2”。2.把Form1窗体的Text属性值设置为“方阵转置”,把它的Name属性值设置为“frmTranspose”。单击“解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmTranspose.vb”。然后执行【项目】→【Task3_2属性】命令,在出现的“Task3_2属性页”对话框中把“启动对象”设置为“frmTranspose”。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.对照程序设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表3-2所示。 表3-2 任务3-2控件属性设置及其功能 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 4.在代码窗口中定义常量并定义模块级二维数组,如下。    Const N = 5 ‘方阵的阶数Dim Arr(N - 1, N - 1) As Integer '该数组用来存放方阵 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 说明: (1)语句“Dim Arr(N - 1, N - 1) As Integer”的作用是定义了一个名为Arr的N行N列的二维数组,用它来存放N×N的方阵。所谓二维数组,就是有两个下标的数组,适合处理如成绩报告表、矩阵等具有行列结构的数据。类似的可以定义三维数组(具有三个下标)和多维数组(具有多个下标)。本章只介绍二维数组。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 (2)使用二维数组之前也必须对二维数组进行声明(或称定义)。定义二维数组的语句格式及功能如下。 [格式]:Declare 数组名(下标1上限,下标2上限) As 数据类型符 [功能]:定义一个名为“数组名”的二维数组,数组元素的数据类型由“数据类型符”确定。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 “Declare”可以是Dim、Static、Public、Protected、Friend、Protected和Private等。数组的每维的下标下限均为0,且不可以改变,VB.NET不支持Option Base 语句。如果不指定“数据类型符”,则默认为Object型的数组。说明: 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 Dim a(9) As Integer; //定义了一个数组a,该数组的数据类型是integer,具有10个元素。第一个元素为a(0),最后一个元素为a(9)数组定义后,将占用连续的存储空间,其占用存储空间大小为“长度*数据类型所占用的字节数”。例如对于上面定义的a数组,在程序运行时,系统将为该数组分配一个连续的40字节的存储单元,用来存放该数组的每一个元素,该数组占用存储空间的情况如图3-3所示。例如,有下列语句: 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 图3-3 数组在内存中的存储情况示意 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 5.编写Button1按钮的Click事件过程代码,如下。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Randomize() '随机数初始化 TextBox1.Text = "" '清空显示数的文本框 For i = 0 To N '该循环产生10个数并显示在第一个文本框中 Arr(i) = Int(90 * Rnd() + 10) '产生一个两位随机数存放到数组元素Arr(i)中 TextBox1.Text = TextBox1.Text + CStr(Arr(i)) + "," '把产生的数显示出来 Next i TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 1) '去掉最后的逗号 End Sub 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 说明: (1)程序中的语句“Arr(i) = Int(90 * Rnd() + 10)”是把产生的两位随机数赋值给数组元素Arr(i),Arr(i)是对数组元素的引用。 (2)在VB.NET语言中通常并不把数组作为一个整体进行处理,参与运算和数据处理的一般都是数组元素。定义了一个数组后就可以引用它的数组元素了。引用一维数组元素的一般形式如下: 数组名(下标)VB.NET语言规定,数组元素的下标从0开始,因此下标上限为N的数组,具有N+1个元素,下标范围为0~N-1。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 例如,有定义语句: Dim A(5) As Integer那么a数组具有元素a(0)、a(1)、a(2)、a(3)、a(4)和a(5)。 值得注意的是,在VB.NET语言中不允许下标越界,也就是说VB.NET对下标越界进行检查,在上述的a数组定义后,a(6)和a(-1)均是不可用的。VB.NET在编译时并不检查数组元素是否越界,而是在运行时检查。 其实数组元素就是一种特殊的变量,在程序中也把它作为变量来使用。凡是能够使用变量的地方均可以使用与变量数据类型相同的数组元素。一个数组元素可以像同类型的普通变量一样参加赋值、运算、输入和输出等操作。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 6.运行程序,单击“产生数组”按钮,会发现第一个文本框中出现了10个用“,”分隔开的两位随机数。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer Dim Min, Min_i As Integer '分别用来存放最小值和最小值的下标 Min = Arr(0) : Min_i = 0 '首先认为第一个元素值最小 For i = 1 To N '该循环找最大值及其下标 If Min > Arr(i) Then '如果后面的元素值小 Min = Arr(i) '记下该元素 Min_i = i '记下该元素的下标 End If Next i TextBox2.Text = Str(Min) '显示最小值 TextBox3.Text = Str(Min_i + 1) '显示最小值的位置(下标加1) End Sub7.编写Button2的Click事件过程代码,如下。 null说明: 该程序段是求一维数组的最小值及其位置的算法实现,请读者参照语句的注释认真领会算法的思想。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 8.编写“退出”按钮的Click事件过程代码,如下: Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Application.Exit() '退出应用程序 End Sub 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 9.运行程序,单击“产生数组”按钮,产生10个随机数并显示出来。单击“求最小数及位置”按钮将找出其中的最小值及位置并在相应的文本框中显示出来。单击“退出”按钮,程序运行结束。 10.保存项目,至此本任务全部完成。 注意:在以后的任务中,“退出”按钮的功能说明及代码编写不再叙述。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 归纳说明: 本任务通过一个典型的算法——求一维数组的最小值及其位置,讲解了一维数组的声明与使用方法。与变量一样,在使用数组之前,必须声明数组。在VB.NET中,并不整体使用数组,而是使用数组的数组元素,需注意的是数组元素的下标是从0开始的。一个数组元素相当于一个同类型的变量,凡是能够使用变量的地方均可使用同类型的数组元素。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 拓展与提高: 其实在定义数组的时候,还可以通过给数组元素赋初值来给数组分配存储空间并确定数组元素个数及各元素的值。给数组元素赋初值的格式与功能如下。 [格式]:Declare 数组名() As 数据类型符 ={初值列表} [功能]:定义 一个名为“数组名”的数组,数组元素的数据类型由“数据类型符”确定。该数组的元素个数由“初值列表”中的值的个数指定,“初值列表”是由逗号分隔开来的若干个值,它们作为初值依次赋值给相应的数组元素。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 例如,有下列语句: Dim Class() As Integer = {1, 2, 3, 4} 该语句定义了具有4个元素的数组Class,并依次给Class (0)、Class (1)、Class (2)和Class (3)赋初值1、2、3和4。上述语句也可以写成: Dim Class() As Integer = New Integer(3) {1, 2, 3, 4} 注意:此处的“New Short(3)”中的3不是元素个数,而是下标上限。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 思考与实训: 1.为什么要使用数组? 2.如何定义一维数组?如何给一维数组赋初值?数组元素的下标从几开始? 3.编写一个程序,把从键盘上输入的10个数保存到一维数组中,然后再把该数组各元素的值在界面上显示出来。 4.编写一个程序,把从键盘上输入的10个数保存到一维数组中,把该数组的各元素值反序存放再在界面上显示出来。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 提示:反序存放数组元素可通过下列方法来实现:如图3-4所示,可用两个变量(P1和P2)分别存放第一个元素和最后一个元素的下标,然后交换它们作为下标的数组元素值,再把P1的值加1,P2的值减1,再交换以它们作为下标的数组元素的值……直到P1的值等于或大于P2的值时为止。 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 3.2 ●任务3-1:求一维数组的最小值及其位置——一维数组 5.编写一个程序,随机产生10个两位数并保存到一维数组中,然后求出这些数的平均值并在界面上显示出来。 3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 任务3-2描述: 随机产生一个5×5的方阵,然后把该方阵转置。所谓方阵的转置就是把方阵的行与列互换。程序的设计界面如图3-5所示。程序运行时单击“生成方阵”按钮将产生一个5×5的方阵并显示在Label1中,如图3-6所示。单击“转置方阵”按钮并把产生的方阵进行转置,并把转置后的方阵显示在Label2中,如图3-7所示。 3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 图3-5 程序设计界面 图图3-6 程序运行界面一图3-7 程序运行界面二 3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 任务分析: 方阵的转置就是以对角线为轴,把对角线之上的元素和对角线之下的元素进行交换,可通过二重循环来实现,二重循环的外层循环对应行(假设为i),内层循环对应列(假设为j),那么在二重循环的循环体内,只需将第i行第j列的数组元素值与第j行第i列的数组元素交换即可,注意由于只需把方阵上半部分和下半部分交换,因此循环变量j的取值范围只能是0到i-1。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 任务实现: 1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:\VBTASK\CH03”,项目名为“Task3_2”。 2.把Form1窗体的Text属性值设置为“方阵转置”,把它的Name属性值设置为“frmTranspose”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmTranspose.vb”。然后执行【项目】→【Task3_2属性】命令,在出现的“Task3_2属性页”对话框中把“启动对象”设置为“frmTranspose”。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 3.对照程序设计界面,为窗体添加控件并设置控件的属性。控件的属性设置如表3-2所示。 表3-2 任务3-2控件属性设置及其功能3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 4.在代码窗口中定义常量并定义模块级二维数组,如下。 Const N = 5 '方阵的阶数 Dim Arr(N - 1, N - 1) As Integer '该数组用来存放方阵3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 说明: (1)语句“Dim Arr(N - 1, N - 1) As Integer”的作用是定义了一个名为Arr的N行N列的二维数组,用它来存放N×N的方阵。所谓二维数组,就是有两个下标的数组,适合处理如成绩报告表、矩阵等具有行列结构的数据。类似的可以定义三维数组(具有三个下标)和多维数组(具有多个下标)。本章只介绍二维数组。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 (2)使用二维数组之前也必须对二维数组进行声明(或称定义)。定义二维数组的语句格式及功能如下。 [格式]:Declare 数组名(下标1上限,下标2上限) As 数据类型符 [功能]:定义一个名为“数组名”的二维数组,数组元素的数据类型由“数据类型符”确定。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 [说明]: ①数组的各维的下标下限从0开始,因此定义的二维数组的元素个数为:“(下标1上限+1)*(下标2上限+1)”。 ②“Declare”与变量定义完全相同。 例如,有下列语句: Dim a(2,3) As Integer '定义了一个二维数组a,该数组的数据类型是integer,具有12个元素。 从逻辑上看,二维数组是一种“行列”结构,由若干行和若干列组成,如上面定义的数组a有3行,每行有4列(4个元素),可以形象地用图3-8来描述。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 图3-8 二维数组的逻辑结构 二维数组定义好后就可以引用二维数组的每一个元素了。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 5.编写“生成方阵”按钮的Click事件过程代码,如下。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i, j As Integer Randomize() '随机数初始化 Label1.Text = "" For i = 0 To N - 1 '该循环给方阵中的每个元素赋值 For j = 0 To N - 1 Arr(i, j) = Int(90 * Rnd()) + 10 '产生随机数并赋值给数组元素 Label1.Text = Label1.Text + CStr(Arr(i, j)) + " " '显示该元素值 Next j Label1.Text = Label1.Text + Chr(10) + Chr(13) '换行 Next i End Sub3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 说明: (1)程序中的语句“Arr(i, j) = Int(90 * Rnd()) + 10”的作用是产生一个两位随机数并赋值给二维数组Arr的数组元素Arr(i,j),Arr(i,j)是对二维数组元素的引用。引用二维数组元素的一般格式如下: 数组名(下标1,下标2) 需注意的是:各维的下标都是从0开始的。二维数组元素也相当于同类型的一个变量,凡是能够使用变量的地方均可以使用同类型的数组元素。 (2)可以通过Label控件按行显示二维数组,换行是通过连接字符串“Chr(10) + Chr(13)”来实现的。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 6.编写“转置方阵”按钮的Click事件过程代码,如下。 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i, j, t As Integer For i = 0 To N – 1 '该循环用来把Arr数组表示的方阵进行转置 For j = 0 To i – 1 '注意下标j的范围 t = Arr(i, j) : Arr(i, j) = Arr(j, i) : Arr(j, i) = t Next j Next i Label2.Text = "" For i = 0 To N - 1 '该循环用来显示转置后的方阵 For j = 0 To N - 1 Label2.Text = Label2.Text + CStr(Arr(i, j)) + " " '显示一个元素值 Next j Label2.Text = Label2.Text + Chr(10) + Chr(13) '换行 Next i End Sub 7.运行程序,对程序的功能进行测试,测试无误后保存程序。至此本项目全部完成。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 归纳说明: 本任务通过方阵转置的实现过程,讲解了二维数组的定义方法与二维数组元素引用的方法。二维数组适合解决具有行列结构的问题,二维数组的输入与输出一般都要用到二重循环。与一维数组一样,二维数组元素的两个下标也是从0开始,二维数组元素相当于同类型的变量。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 拓展与提高: 除了可能在运行时给二维数组元素赋值外,还可以在定义二维数组时给二维数组元素赋初值。二维数组赋初值的语句格式及功能如下。 [格式]:Dim 数组名(,) As 数据类型符= {{初值列表1},{初值列表2},…,{初值列表n}} [功能]:定义名为“数组名”的二维数组,同时给它的各行赋初值。二维数组的行数由{}分组的个数确定。3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 例如,有下列语句: Dim Arr(,) As Short = New Short(2, 3) {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}} 该语句定义了具有12个元素的二维数组arr,并依次赋初值,初值情况为:Arr(0,0)=1、Arr(0,1)=2、Arr(0,2)=3、Arr(0,3)=4、Arr(1,0)=5、Arr(1,1)=6、Arr(1,2)=7、Arr(1,3)=8、Arr(2,0)=9、Arr(2,1)=10、Arr(2,2)=11、Arr(2,3)=12。 上述语句也可以写成: Dim Arr(,) As Short = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}3.3 任务3-2:方阵转置 ——二维数组 3.3 任务3-2:方阵转置 ——二维数组 思考与实训: 1.二维数组通常在什么场合下使用? 2.如何定义二维数组并给二维数组元素赋初值? 3.编写一个程序实现如下功能:随机产生25个两位随机数并把它们赋值给5行5列的二维数组,然后再按行显示在一个Label控件中。 4.在上题的基础上,把数组的第2行和第4行互换,然后把互换后的二维数组显示在一个Label控件中。 5.在上题的基础上,再把数组的第1列和第3列互换,然后把互换后的二维数组显示在一个Label控件中。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 任务3-3描述: 假设一个班有多个学生,每个学生都必须修多门课,请编写一个程序用来求出每个学生所学的各门课中的最高成绩及该门课的序号。程序初始运行情况如图3-9所示,某一次单击“模拟产生学生成绩”按钮后的程序运行情况如图3-10所示,此时单击“求每个学生最高成绩”按钮后的程序运行界面如图3-11所示。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 图3-9 程序初始运行界面图3-10 单击“模拟产生学生成绩”按钮后的程序运行界面图3-11 单击“求每个学生最高成绩”按钮后的程序运行界面 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 任务分析: 该任务的实现要点有两个:一是如何求二维数组的每行最大值及其下标,二是如何把二维数组和一维数组的各数组元素值显示在文本框中。 (1)要求出每个学生的最高成绩和课程序号,可定义一个二维数组用来存放学生的成绩,一行代表一个学生的成绩数据,一列代表一门课程的成绩数据,则该题其实就是求二维数组的每行最大值及其下标。由于对每行都要求出一个最高成绩及其课程序号,因此可定义两个长度与学生人数一致的一维数组分别用来存放每个学生的最高成绩及其课程序号。其实对于每一行而言也相当于求一维数组的最大值及其下标,该算法我们已经熟悉。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 (2)把学生成绩信息、最高成绩信息、最高成绩课程序号信息显示在界面上的文本框中,可以通过控件数组来实现。定义一个与存放学生成绩信息一样大小的二维文本框控件数组,产生学生成绩时只需把相应的成绩信息赋值给文本框控件数组的相应数组元素Text属性即可。同样也可分别定义两个与学生人数一致的一维文本框控件数组,分别用来显示每个学生的最高分及相应的课程序号,只需在求得最高成绩和课程序号时,把最高成绩和课程序号赋值给相应的文本框控件数组的数组元素的Text属性即可。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 任务实现: 1.启动VB.NET,新建一个项目,项目类型为“Windows应用程序”,项目的存放位置为“D:\VBTASK\CH03”,项目名为“Task3_3”。 2.把Form1窗体的Text属性值设置为“求每个学生的最高成绩和课程序号”,把它的Name属性值设置为“frmScoreProcess1”。单击“解决方案资源管理器”中的“Form1.VB”窗体,然后在属性窗口中把它文件名属性设置为“frmScoreProcess1.vb”。然后执行【项目】→【Task3_3属性】命令,在出现的“Task3_3属性页”对话框中把“启动对象”设置为“frmScoreProcess1”。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.对照图3-9程序运行界面,为窗体添加三个按钮控件(其它控件由程序自动产生)。控件的属性设置如表3-3所示。 任务3-3控件属性设置及其功能 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 4.定义模块级常量及数组,代码如下。 Const M As Integer = 5 '人数 Const N As Integer = 5 '课程 Dim Score(M - 1, N - 1) As Integer '存放学生的成绩 Dim Max(M - 1) As Integer '存放每个学生的最高成绩 Dim Max_i(M - 1) As Integer '存放每个学生最高成绩的课程序号 Dim txtScore(M - 1, N - 1) As TextBox '显示成绩数组中的数据,即显示学生成绩 Dim txtMax(M - 1) As TextBox '显示各学生最高成绩的文本框控件数组 Dim txtMax_i(M - 1) As TextBox '显示各学生最高成绩课程序号的文本框控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 (1)程序中的语句“Dim txtScore(M - 1, N - 1) As TextBox”定义的是一个二维控件数组,控件类型为文本框,用来显示学生成绩信息。控件数组与普通数组类似,下标也是从0开始,可以通过下标访问它的每一个元素。控件数组的每一个元素相当于同类型的控件,可以通过程序访问或设置它的属性,调用它的方法,响应发生的事件等。 (2)程序中的语句“Dim txtMax(M - 1) As TextBox”和“Dim txtMax_i(M - 1) As TextBox”分别定义了两个一维文本框控件数组,用来显示每个学生的最高分和课程序号。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 5.编写窗体的Load事件过程代码,如下。 Private Sub frmScoreProcess1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer, j As Integer Dim LeftLen As Integer '每行文本框控件数组的第一个元素离左边界的距离 Dim TopLen As Integer '控件数组第一行数组元素离上边界的距离 Dim lxs(M - 1) As Label '显示行号 Dim lblMax(M - 1) As Label '显示“最高分”提示 Dim lblMax_i(M - 1) As Label '显示“课程序号”提示 LeftLen = 120 : TopLen = 10 Randomize() '随机数初始化 For i = 0 To M - 1 '该二重循环的作用是产生二维文本框控件数组并在窗体上显示 lxs(i) = New Label '产生一个标签控件数组元素 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 lxs(i).Width = 110 : lxs(i).Height = 30 '设置标签控件数组元素的大小 lxs(i).Left = 10 : lxs(i).Top = TopLen + i * 32 '设置标签控件数组元素的位置 lxs(i).Parent = Me : lxs(i).Visible = True '设置标签控件数组元素的容量并使之可见 lxs(i).Text = "No." & i + 1 & "学生成绩:" For j = 0 To N - 1 '产生显示成绩的二维文本框控件数组各数组元素 txtScore(i, j) = New TextBox '产生一个文本框控件数组元素 '设置控件数组元素的宽度和高度 txtScore(i, j).Width = 30 : txtScore(i, j).Height = 30 '设置控件数组元素的位置 txtScore(i, j).Left = LeftLen + j * 40 : txtScore(i, j).Top = TopLen + i * 32 '设置控件的容器并使之可见 txtScore(i, j).Parent = Me : txtScore(i, j).Visible = True Next j Next i '在此接着输入程序代码 End Sub 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 说明: (1)程序中的语句“Dim lxs(M - 1) As Label”、“Dim lblMax(M - 1) As Label”和“Dim lblMax_i(M - 1) As Label”定义了三个一维标签数组,分别用来显示“No.x 学生成绩”、“最高成绩”、“课程序号”等提示信息。 (2)程序中动态创建控件的一般格式如下: [格式]:控件变量名=New 控件类型 [作用]:创建一个由控件类型指定类型的控件并赋值给控件变量名,然后就可以使用控件变量名访问该控件。 控件创建后可以在程序中使用控件变量名访问它的属性、调用它的方法等,若要把控件显示出来需要设置它的两个属性:Parent和Visible。Parent属性用来指定该控件的容器,即该控件显示在哪个控件中,Visible属性应设置为True,使该控件可以看到。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 6.运行程序,程序的运行界面如图3-12所示。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 7.在语句“'在此接着输入程序代码”后面接着添加如下程序代码,程序代码的功能与上述代码基本相同,请读者看注释。 For i = 0 To M - 1 '显示最高分提示标签 lblMax(i) = New Label '产生一个标签控件数组元素 lblMax(i).Width = 50 : lblMax(i).Height = 30 '设置标签控件数组元素的大小 lblMax(i).Left = 320 : lblMax(i).Top=TopLen+i * 32 '设置标签控件数组元素的位置 '设置标签控件数组元素的容量并使之可见 lblMax(i).Parent = Me : lblMax(i).Visible = True lblMax(i).Text = "最高分:" Next i 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 For i = 0 To M - 1 '产生显示最高分的文本框控件数组并显示出来 txtMax(i) = New TextBox '产生一个文本框控件数组元素 txtMax(i).Width = 30 : txtMax(i).Height = 30 '设置文本框控件数组元素的大小 '设置文本框控件数组元素的位置 txtMax(i).Left = 370 : txtMax(i).Top = TopLen + i * 32 '设置文本框控件数组元素的容量并使之可见 txtMax(i).Parent = Me : txtMax(i).Visible = True Next i For i = 0 To M - 1 '显示课程序号提示标签 lblMax_i(i) = New Label '产生一个标签控件数组元素 lblMax_i(i).Width = 70 : lblMax_i(i).Height = 30 '设置标签控件数组元素的大小 '设置标签控件数组元素的位置 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 lblMax_i(i).Left = 410 : lblMax_i(i).Top = TopLen + i * 32 '设置标签控件数组元素的容量并使之可见 lblMax_i(i).Parent = Me : lblMax_i(i).Visible = True lblMax_i(i).Text = "课程序号:" Next i For i = 0 To M - 1 '产生显示课程序号的文本框控件数组并显示出来 txtMax_i(i) = New TextBox '产生一个文本框控件数组元素 txtMax_i(i).Width = 30 : txtMax_i(i).Height = 30 '设置文本框控件数组元素的大小 '设置文本框控件数组元素的位置 txtMax_i(i).Left = 480 : txtMax_i(i).Top = TopLen + i * 32 '设置文本框控件数组元素的容量并使之可见 txtMax_i(i).Parent = Me : txtMax_i(i).Visible = True Next i 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 8.运行程序,程序的运行界面如图3-9所示。 9.编写“模拟产生学生成绩”按钮的Click事件过程代码,如下。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i, j As Integer '该二重循环的作用是产生0~100之间的随机数,作为模拟成绩赋值给存放成绩的数组 For i = 0 To M - 1 For j = 0 To N - 1 Score(i, j) = Int(101 * Rnd()) '产生模拟成绩并赋值给对应数据元素 txtScore(i, j).Text = CStr(Score(i, j)) '在界面上显示产生的成绩 Next j Next i End Sub 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 10.运行程序,单击“模拟产生学生成绩”按钮,程序的运行界面如图3-10所示。 11.编写“模拟产生学生成绩”按钮的Click事件过程代码,如下。 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i, j As Integer For i = 0 To M - 1 '外层循环对应学生 Max(i) = Score(i, 0) : Max_i(i) = 0 '首先认为该学生的第一门课程成绩最高,记下它 '用记下的最高分与后面的成绩比,若后面的成绩高,则记下高的成绩和下标 For j = 1 To N - 1 If Max(i) < Score(i, j) Then Max(i) = Score(i, j) : Max_i(i) = j End If Next j 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 12.运行程序,单击“模拟产生学生成绩”按钮后,再单击“求每个学生最高成绩”按钮,程序的运行界面如图3-11如示。 13.编写“退出”按钮的Click事件过程代码并进行测试,保存项目,本任务到此全部完成。 归纳说明: 本任务通过动态产生文本框显示多个学生的多门课成绩、每个学生的最高成绩和最高成绩的课程序号讲解了控件数组的定义方法、控件数组元素的引用方法等,利用控件数组可使用程序界面设计更加灵活。另外本任务还讲解了一个非常典型的二维数组算法——求每行的最大值及其下标,读者应掌握该算法的实现过程。 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 3.4 任务3-3:求每个学生的多门课的最高成绩及课程序号——控件数组 拓展与提高: 控件数组和动态数组是数组中两个较难的部分,通过本任务读者学会了控件数组的使用方法。下面将讲述与动态数组有关的知识,所谓动态数组就是其大小可以变化的数组。 在VB.NET中,所有数组都是动态数组。在声明一个数组时,可以指定它的长度,但这个长度只是初始长度,在程序中可以使用ReDim语句来改变这个长度。ReDim语句
本文档为【VBNET程序设计实用教程3】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_830362
暂无简介~
格式:ppt
大小:2MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-04-05
浏览量:50