VB第6章
VB6.0理论第三版 第5章

2. 数组参数的传递 在VB中允许参数是数组,数组只能通过传址方式进行传递。 在传递数组时要注意以下事情: ☆ 在实参列表和形参列表中放入数组名,忽略维数的定义 ,但圆括号不能省略。 ☆ 如果被调过程不知道实参数组的上下界,可使用Lbound 和Ubound函数确定实参数组的上下界。 例li6-6:编一函数,求任意一维数组中各元素之积,再分 别调用该函数。求
计算机软件技术基础 Visual Basic 程序设计
例如,在下面一个标准模块文件中进行不同级的变量声明。 Public Pa As integer ' 全局变量 Private Mb As String*10 '窗体/模块级变量 Sub F1() Dim Fa As integer '局部变量 …… End Sub Sub F1() Dim Fb As Single '局部变量 …… End Sub 计算机软件技术基础 Visual Basic 程序设计
2. 函数过程的调用 函数过程的调用和标准函数的调用相同,形式如下: 变量 = 函数过程名([参数列表]) 注意:☆ 由于函数过程名返回一个值,故函数过程不能作为单 独的语句加以调用,必须作为表达式或表达式中的一部分,再 配以其他的语法成分构成语句。 ☆ “参数列表”称为实参或实元,它必须与形参保持 个数、类型与位置一一对应。实参可以是同类型的常数、变量 、数组元素或表达式。 ☆ 调用时把实参的值传递给形参,称为参数传递。其 中,值传递(形参前面有ByVal)时实参的值不随形参的值变 化而改变,而引用传递(又称地址传递)的实参的值随形参的 值一起变化。 ☆ 当参数是数组时,形参与实参在参数声明时应省略 其维数,但必须保留括号。 计算机软件技术基础 Visual Basic 程序设计
VB60程序设计实践教程习题及答案

VB60程序设计实践教程习题及答案Vb6.0第一章一、判断题1.属性是ViualBaic对象性质的描述,对象的数据就保存在属性中。
2.控件的属性值不可以在程序运行时动态地修改。
3.许多属性可以直接在属性表上设置、修改,并立即在屏幕上看到效果。
4.所谓保存工程,是指保存正在编辑的工程的窗体。
5.面向对象的程序设计是一种以对象为基础,由事件驱动对象执行的设计方法。
6.为了使一个控件在运行时不可见,应该将该控件的Enabled属性设置为Fale。
7.保存ViualBaic文件时,若一个工程包含多个窗体或模块,则系统先保存工程文件,再分别保存各窗体或模块文件。
8.事件是由ViualBaic预先定义的对象能够识别的动作。
9.方法是ViualBaic对象可以相应的用户操作。
10.窗体中的控件,是使用工具箱中的工具在窗体上画出的各图形对象。
11.由ViualBaic语言编写的应用程序有解释和编译两种执行方式。
12.在打开一个ViualBaic工程进行修改后,要另存为一个版本,只需单击“工程另存为…”就行,因为系统将同时保存其他文件。
13.当用Load命令将窗体装入内存时,一定触发窗体的load事件和Activate事件.二、选择题1.要使某个控件不可操作,要对属性进行设置。
A、EnabledB、ViibaleC、CaptionD、Name2.下列不属于对象的基本特征的是A、属性B、方法C、事件D、函数3.当运行程序时,系统自动执行启动窗体的事件过程。
A、ClickB、LoadC、DblClickD、Unload4.ViualBaic中“程序运行”允许使用的快捷键是A、F2B、F5C、Alt+F3D、F85.改变控件在窗体中的左右位置应修改该控件的属性。
A、TopB、LeftC、WidthD、Right6.工程文件的扩展名为A、.vbpB、.baC、.fr某D、.frm7.在ViualBaic中,称对象的数据为A、属性B、方法C、事件D、封装8.下列选项中不属于属性的是10.下列关于属性设置的叙述错误的是A.一个控件具有什么属性是VB预先设计好的,用户不能改变它B.一个控件具有什么属性值是VB预先设计好的,用户不能改变它C.一个控件的大多数属性既可以在属性窗口中设置,也可以用程序代码设置D.一个控件的属性在属性窗口中设置后,还可以再利用程序代码为其设置新值第1页共75页三、填空题1.ViualBaic中可作为其它控件的容器除了窗体外,还有和2.在ViualBaic中,窗体和控件被称为3.窗体是用来存放的容器,窗体的left和top属性是相对对象的。
VB6.0教程

2、工程的组成
应用程序建立在工程的基础之上,一个工程是各种类型文件的集合,它包括工程文件 (Vbp)、窗体文件(Frm)、标准模块文件(Bas)、类模块文件(Cls)、资源文 件(Res)和ActiveX的文件(Ocx)。 1.工程文件 存储了与该工程有关的所有文件和对象的清单,这些文件和对象自动链接到工程文件 上,每次保存工程时,其相关文件信息也随之更新。当然,某个工程下的对象和文件 也可供其他工程共享使用。在工程的所有对象和文件被汇聚在一起并完成编码后,就 可以编译工程,生成可执行文件。 2.窗体文件 存储了窗体上使用的所有控件对象、对象的属性、对象相应的事件工程和程序代码。 一个应用程序至少包含一个窗体文件。 3.标准模块文件 存储了所有模块级变量和用户自定义的通用过程。通用过程是指可以被应用程序各处 调用的过程。 4.类模块文件 用来建立用户自己的对象。类模块包含用户对象的属性及方法,但不包含事件代码。
二、面向过程的语言
用计算机能够理解的逻辑来描述需要解决的问题和解决问题的具体方法、步骤。 面向过程的程序设计的核心是数据结构和算法,其中数据结构用来量化描述需要解决 的问题,算法则研究如何用更快捷、高效的方法来组织解决问题的具体过程。面向过 程的程序设计语言主要有BASIC、FORTRAN、PASCAL、C等。
下面简单介绍如何安装Visual Basic 6.0企业版。 1.将Visual Basic 6.0安装盘放入光躯中,浏览安装盘,双击 “SETUP.EXE” 文件,进入安装向导。 2.直接点击“下一步” 按钮,在“最终用户协议”对话框中仔细阅读 其协议,若确实无疑义,选中“接受协议”,再点击“下一步” 按钮。 3.输入产品的ID号。 4.选中“安装Visual Basic 6.0中文企业版” ,再点击“下一步” 按钮。 在弹出的菜单中点击“继续” 按钮,再点击“确定” 按钮,等待片 刻。 5.一般情况下使用默认安装文件夹即可,当然也可以点击“浏览”按钮 自由更改安装文件夹。 6.点击“典型安装”左边的图标按钮,等待拷贝文件。 7.点击“重新启动Windows” ,重新启动计算机后,在出现的窗体中把 “安装 MSDN”项去掉,再点击“下一步” 按钮,再点击“是”。 8.直接点击“下一步” 按钮 ,把弹出的窗体中的“现在注册”项去掉, 再点击“完成”按钮,即完成了VB的安装。
VB第2版习题与解答

If a < b Then sMin = a Else sMin = b
If c < sMin Then sMin = c
Label1.Caption = "最大数为:" & sMax & ",最小数为:" & sMin
4. 编制程序,通过文本框输入年份和月份,显示该月的天数。注意判断年份是否为闰年:年号能被4整除,但不能被100整除,或者年号能被400整除的年份为闰年。
⑽Month(#5/4/2007#)
⑾Year(#05-08-07#)
解答:
⑴12;⑵"765";⑶"6982";⑷"GGG";⑸5;⑹"L";⑺15;⑻"3721efda";⑼"23.45678";⑽5;⑾2007
5.对于没有赋初值的变量,系统默认的值是什么?
解答:
对于没有赋初值的变量,数值型变量默认值为0;变长字符串型变量默认值为零长度的字符串("");定长字符串型变量中的每个字符均被填充为ASCII码值为0的字符(即Chr(0),等价于vbNullChar);逻辑型变量默认值为False;变体型变量默认值为Empty;对象型变量默认值为Nothing。
解答:
在窗体上放置两个文本框、三个标签和一个命令按钮,均采用默认名称。标签Label1和Label2的标题分别为【年份:】和【月份:】,Label3标题为空。按钮标题为【显示】,为其单击事件编写如下代码:
Dim y As Integer, m As Integer, d As Integer, blnY As Boolean
VB6.0基础入门教程

VB最简单入门教程目录〔提示:按ctrl,并单击鼠标,可以跳到相应页〕1.1 1 我们需要什么 (3)1.2 2 第二章:事件、属性及数据类型 (3)1.3 3 第三章:VB语言 (6)1.4 4-1第四章按钮〔一〕 (12)1.5 4- 第四章按钮〔二〕 (199)1.6 5 第五章菜单 (27)1.7 6-1第六章输入〔一〕 (34)1.8 6-2第六章输入〔二〕 (42)1.9 6-3第六章输入〔三〕 (52)1.10 7第七章输出 (59)附录 (63)2.1 VB教程 (63)1.1 1我们需要什么我们需要什么?当我们在一个精彩的游戏世界中游历了一番之后,或是惊叹于某一工具软件的小巧精致之余,多少总会产生些许编程的冲动。
编程吗,在以前如果你对电脑还是一个门外汉,那实在是一件可望而不可及的事情。
如果运用基于DOS下的编程语言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。
编程是需要天赋的,你必须在大脑中对整个程序有一个清晰的轮廓,一个高效的流程,这并不是每个人都能做到的,你必须思之慎之,这也使编程变成一件最枯燥无味的事情。
但在第四代计算机语言〔可视化编程〕出现后,可以确切的说它开发了人们的更多天赋,并不局限于那些头脑异常清晰的人,每一个人都可以发现自己也可以编出一些从前不敢问津的程序,想象力的充分发挥才是第四代语言的精粹。
Visual Basic〔以下简称VB〕可以说是可视化语言的先驱了,而且它也是可视化程度最高的一个,从几年前VB诞生之日起到现在,它已经经历了五个版本,而且现在微软正在紧张的进行着VB6.0的研制、测试,这么高的更新率,不外乎说明两个问题:用户对VB的热衷,微软对VB的重视。
不可否认微软对市场的预测能力是极为高明的,而它强大的技术、财力支持也使它在许多以前未进入的领域,在不长的时间内有成为最有力的竞争对手,如IE之于浏览器领域,?帝国时代?之于游戏都是最好的例证。
VB教案5-6章3

2. 列表框的特有属性 Selected:P
逻辑数组。 Selected(i)的值为True表示第i+1项被选中。
MultiSelect
0-None:禁止多项选择。 1-Simple:简单多项选择。 2-Extended:扩展多项选择。
3. 组合框的特有属性
Style
类型 下拉式组合框 简单组合框 下拉式列表框 Style 0 1 2 能 能 不能 输入
For i =1 To 10\2 t=iA(i) iA(i)=iA(10-i+1) iA(10-i+1)=t Next i
5.3 列表框和组合框
列表框各主要属性的值: List1
List1.ListIndex = 3 (下标从0开始的) List1. ListCount = 5 List1. Selected(3) = True,其余为False。 List1. Sorted = False,没有排序。 List1. Text 为 “cox” , 与List1. List(List1. ListIndex)相等
Private Sub Form_Click() ' 单击命令按钮运行该事件函数 Dim mark() As Integer, i%, n%, aver n = InputBox("输入学生的人数") ReDim mark(1 To n) '声明存放n个学生成绩的数组 aver = 0 For i = 1 To n mark(i) = Int(Rnd * 101) '通过随机数产生0~100的成绩 aver = aver + mark(i) Next i ReDim Preserve mark(1 To n + 2) '增加两个元素,存放平均分和高于平均分 的人数,原来的学生成绩仍保留 mark(n + 1) = aver / n mark(n + 2) = 0 For i = 1 To n If mark(i) > mark(n + 1) Then mark(n + 2) = mark(n + 2) + 1 Next i For i = 1 To n Print "mark("; i; ")="; mark(i) Next i Print "平均分="; mark(n + 1), "高于平均分人数="; mark(n + 2) End Sub
人类历史上最全VB6.0入门教程
1.3.4 文件类型
• • • • • 1.工程组和工程文件 2.窗体文件 3.程序模块文件 4.类模块文件 5.资源文件
1.3.5 编译可执行文件
• 应用程序创建后,必须生成可执行文件才 能发布给最终用户。Visual Basic中生成可 执行文件操作非常简单。选择“文 件”|“生成xxx.exe”命令(xxx为工程名 称),弹出“生成工程”对话框 .
• 本节将创建第一个程序Hello-World。 创建一个应用程序之前,必须明确以 下几个重要步骤: • (1)制定计划。 • (2)创建界面。 • (3)编写代码。 • (4)测试和调试程序。 • (5)生成可执行文件。
1.3.3 第一个程序——Hello,World
1.3.3 第一个程序——Hello,World
2.2.1 变量作用域
• 声明变量可以使用Dim、Private、Public、 Static作为关键字。以上关键字分别作用于不 同的作用域。
变量 过程变量 模块变量 全局变量 语句 Dim或 Static Private Public 声明位置 存在于过程,子过程或函数过程中声明段 存在于窗体或代码模块声明段 Main模块中声明段 范围 声明变量的过程、子过程或函 数 窗体或代码模块中过程 全部应用程序
2.2.3 变量类型
• 变量类型包含2.1小节中所有的数据类型。 除此之外,根据应用程序需要还可以创建 用户自定义的类型。自定义类型声明使用 Type语句。
2.2.4 静态变量
• 程序运行时变量保存临时数据。一旦 程序终止,变量将自动被Visual Basic 删除。下一次程序运行时该变量将重 新被初始化。但是,应用程序在运行 时也有可能需要保留变量数据。Visual Static [varName] as [type] Basic可以通过声明静态变量来保存记 忆变量数值。
VB知识点总结
第1章Visual basic概述一、VB是在Windows平台下,用于开发和创建具有图形用户界面的应用程序的工具。
二、VB是面向对象的程序设计语言;工作方式为事件驱动/消息驱动。
1.对象对象是动作体的逻辑模型,是人们可控制的某种东西,应用程序的每个窗体和窗体上的种种控件都是VB的对象2.属性属性指对象的特性。
3.方法方法指对象可以进行的动作或行为。
4.事件事件是指能被对象所识别的动作。
5.事件驱动只有在事件发生时程序才会运行。
6.工程工程是应用程序文件的集合,一个工程一般会包含下列文件,如表1—l所示。
表1—1 应用程序文件类型第2章创建用户界面1.用户界面用户界面是应用程序中最重要的部分,是程序与用户进行交互的桥梁,标准的Windows 应用程序界面都是由窗口、菜单条、各种按钮、文本框、列表框等对象构成的。
2.窗体窗体是包容用户界面或对话框所需的各种控件对象的容器。
在创建一个新的工程时,默认的第一个窗体即为启动窗体。
3.控件控件是与用户进行交互的可视化部件,向窗体上添加控件应在窗体编辑器中进行。
4.命令菜单命令菜单是应用程序窗口的基本组成元素之一,它由菜单条、菜单、菜单项、子菜单、弹出式菜单组成,可以通过VB提供的菜单编辑器创建程序菜单。
(1)连字符(—)(2)&书P325.设计用户界面的步骤(1)确定窗体的大小和位置。
(2)根据程序的功能和要求,添加所需的控件。
(3)合理地分布控件的位置与大小。
(4)设置各个对象的属性。
6.窗体及常用控件的常用属性、事件、方法熟悉各对象的常用属性、事件和方法,对于创建应用程序有着举足轻重的作用,表2—1给出了窗体及常用控件的常用属性、事件以及方法使用说明。
注:加*号的属性为只能通过代码设置的属性(即在属性窗口中没有显示7、Print 方法第3章语言基础3.1知识点概括一个应用程序就是一个工程,在一个工程中可以包含若干个文件,应用程序的基本组成如图3—1所示。
第6章 宏
引航教育
(3)窗口操作命令
命令 功能
MaximizeWindow
MinimizeWindow MoveAndSizeWindo w RestoreWindow
最大化激活窗口
最小化激活窗口 移动活动窗口或调整其大小 将最大、最小窗口恢复原始大小
引航教育
(4)宏操作
命令 CancelEvent ClearMacroError OnError StopAllMacros StopMacros 功能 取消导致该宏运行的 ACCESS 事件 清除 MacroError 中的上一错误 定义宏出现错误时如何处理 中止当前所有宏的运行,包括自身宏 停止当前正在运行的宏
对按钮属性进行设置,选择单击事件的代码生成器
引航教育
宏的调试 利用“单步” 一次执行宏的一个操作)执行宏调试工具,可观 察宏中的执行顺序及每一操作结果,从中发现及排除问题 用单步执行宏运行“独立宏”:首先打开独立宏,把“单步”按 钮按下,点运行
引航教育
单步执行对话框按钮功能
1、单步执行:指定执行操作时,采用“单步执行” 模式。即执行操作前,弹出“单步执行宏”对话框。 2、停止:停止宏的执行。及后续的所有操作都不再 执行。 3、继续:指定执行操作时,不再采用单步模式。即 执行操作前,不再弹出“单步执行宏”对话框,而是 依次执行宏中的所有操作
引航教育
子宏 1、定义:将多个宏组织在一个宏组中。其中每个宏又可以包 含多个操作。 2、子宏作用:是对众多的宏进行有效的管理。 3、子宏组成:组成:一个宏名+多个子宏名。 利用教学管理数据库创建一个“子宏示例”,该宏中包含两个 宏:宏1包含两个Msgbox操作,宏2包含一个Msgbox操作
引航教育
引航教育
VB教材习题_参考答案1-6章
Visual Basic程序设计教程(李杰主编清华大学出版社 2011.2)习题答案习题2参考答案2.2 单选题1、B2、C3、A4、D5、A6、B7、D8、C9、B 10、D2.3 填空题1、事件驱动2、Cancel3、Name4、Private Sub Form1_Click()5、运行程序6、代码窗口7、Text1.Text = "我是一个学生"8、LostFocus()事件9、Label1.Caption = "请输入用户名"Label1.ForeColor = vbGreen10、(Text1.Text)*22.4 事件练习题1、①该事件的对象是标签Label1,单击标签触发该事件。
②缺省Label1对象的代码是针对窗体,其余有Label1对象的代码是针对标签的。
③Label1.AutoSize = True语句使标签的大小自动随文字的多少而改变。
2、程序运行后,单击命令按钮,在Text1文本框显示"知音海外版",在Text2文本框显示"计算机世界"。
3、单击“显示文本框”命令按钮触发的事件过程Private Sub Command1_Click()Text1.Visible = TrueText1.ForeColor = vbRedText1.Text = "VB程序设计"End Sub单击“隐藏文本框”命令按钮触发的事件过程Private Sub Command2_Click()Text1.Visible = FalseEnd Sub习题3参考答案3.2 单选题1 C2 C3 D4 B5 B6 B7 B8 C9 D3.3填空题1.REM(或‘) _ :2 双引号(“”)#3 $ %4 UCASE()5.(log(1+d*d)-exp(2))^(5/2) [ 还有一种理解方式:(log(1+d*d)-e*e)^(5/2)]6. &O113 &H4B习题4参考答案4.2 单选题BDCBD4.3 填空题1.MsgBox("是否删除? ", vbOkCancel + vbQuestion, "删除")2.The Length of 12345=53. 变量或表达式4. 15. loop4.4 程序设计题1.Private Sub Command1_Click()If Text1.Text = "asdf" ThenMsgBox "密码正确!"ElseMsgBox "密码错误", vbRetryCancel, "错误"End IfEnd Sub2. < 题目中的“连续产生n*n个字母”应该改为“连续产生n个字母”> Private Sub Command1_Click()Dim n%, y%, i%n = Val(Text1.Text)If n > 10 Or n<=0 ThenMsgBox "数据超界!"Text1.Text=””Text1.SetFocusElsey = Int((90 - 65 + 1) * Rnd) + 65For i = 1 To nPrint Chr(y + i)Next iEnd IfEnd Sub3.Private Sub Form_Click()Dim a!, b!, c!, x1!, x21, d!a = Val(Text1.Text)b = Val(Text2.Text)c = Val(Text3.Text)d = b * b - 4 * a * cIf d >= 0 Thenx1 = (-b + Sqr(d)) / (2 * a)X2 = (-b - Sqr(d)) / (2 * a)Print x1; X2ElsePrint "没有实根"End IfEnd Sub4.Private Sub Form_Click()Dim i%, j%, s%, n%,q%n = InputBox("enter n:")q = 0For i = 1 To ns = 0For j = 1 To is = s + jNext jq = q + sNext iPrint qEnd Sub5.Private Sub Form_Click()Dim i%, j%, n%, k%n = 0For i = 1 To 3For j = 1 To 3For k = 1 To 3Print i & j & k,n = n + 1If n Mod 5 = 0 Then PrintNext kNext jNext iPrintPrint "n="; nEnd Sub6.Private Sub Form_Click()Dim i%, j%, n%, k%For i = 1 To 9For j = 0 To 9For k = 0 To 9n = i * 100 + j * 10 + kIf n = i ^ 3 + j ^ 3 + k ^ 3 Then Print n,Next kNext jNext iEnd Sub习题5参考答案5.2 单选题1 A2 B3 C4 C5 D6 D7 A8 C9 D 10 A 11 A 12 B 5.3 填空题1.False2.Caption3.0 ListCount-14.Print List1.List(3)5.Combo1.ReMoveItem 36.LargeChange7.Timer8.5009.Shape10.Borderstyle5.4 程序设计题1.Dim op1, op2, result As SingleDim operator As IntegerPrivate Sub Command1_Click(Index As Integer)If Index >= 0 And Index <= 10 ThenIf txt1.Text = "" Thentxt1.Text = CStr(Index + 1)Elsetxt1.Text = txt1.Text + CStr(Index + 1) End IfEnd IfIf Index >= 12 And Index <= 15 Thenop1 = CDbl(txt1.Text)operator = Indextxt1.Text = ""End IfIf Index = 11 Thenop2 = CDbl(txt1.Text)Select Case operatorCase 12result = op1 + op2Case 13result = op1 - op2Case 14result = op1 * op2Case 15result = op1 / op2End Selecttxt1.Text = CStr(result)End IfEnd SubPrivate Sub Command2_Click()op1 = 0op2 = 0result = 0txt1.Text = ""End SubPrivate Sub Command3_Click()EndEnd Sub2.Private Sub chkBold_Click()If chkBold.Value = vbChecked ThenTxt1.FontBold = TrueElseTxt1.FontBold = FalseEnd IfEnd SubPrivate Sub chkUnderline_Click()If chkUnderline.Value = vbChecked Then Txt1.FontUnderline = TrueElseTxt1.FontUnderline = FalseEnd IfEnd SubPrivate Sub Opt18_Click()Txt1.FontSize = 18End SubPrivate Sub Opt22_Click()Txt1.FontSize = 22End Sub3.Private Sub Form_Load()List1.AddItem "上海"List1.AddItem "北京"List1.AddItem "天津"List1.AddItem "广东"List1.AddItem "辽宁"List1.AddItem "陕西"List1.AddItem "河南"List1.AddItem "深圳"List1.AddItem "四川"List1.AddItem "重庆"End SubPrivate Sub List1_DblClick()For i = 0 To 9If List1.ListIndex = i ThenList2.AddItem List1.List(i)List1.RemoveItem iEnd IfNext iEnd Sub4.Private Sub Command1_Click()Timer1.Enabled=TrueTimer1.Tag=Text1.Text*60Frame1.Caption=“现在开始倒计时”End SubPrivate Sub Timer1_ Timer()Timer1.Tag=Timer1.Tag-1If m<0 ThenTimer1.Enabler=FalseMsgBox“预定的时间到了!”,0,“倒计时”Frame1.Caption=“请输入计时的分钟数:”Text1.Text=0Exit SubEnd Ifn1=Format(m Mod 60,“00”)n2=Format(m \ 60)Mod 60,“00:”)n3=Format(m \ 3600),“00:”)Text1.Text=n3&n2&n1End Sub习题6参考答案6.1单选题1.C2.C3.B4.B5.B6.D7.B8.B9.A 10.A6.2 填空题1.Option Base 12.变体类型3.preserve (注意:教材上面写成perserve, 教材错误)4.Variant变体类型5.96.相同,索引号7.1).通过复制粘贴的方式创建控件数组2).在设计时候添加多个同类型的类型控件,然后通过“属性”窗口将这些控件的名称改为相同,并把Index属性设为不同的下标值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例6-1】随机产生25个任意的正整数(10~100),求最大值、最小值、平均值,并显示整个数组的值和结果。
分析:随机产生10~100之间的正整数可以使用Rnd函数,公式为:CInt(Rnd*90+10)。
随机产生25个这样的数,可以利用循环将25个数保存在数组中。
步骤:(1)界面设计如图6-2所示。
图6-2界面设计(2)属性设置如表6-1所示。
代码设计如下:Dim a(26) As Integer′定义存放数据的数组Private Sub btn1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Clicktxt1.Text=""Dim i As IntegerRandomize()For i=1 To 25a(i)=CInt(Rnd() * 90+10)If i Mod 5 = 1 Thentxt1.Text &= Chr(13) & Chr(10)End Iftxt1.Text &= "" &a(i)NextEnd SubPrivate Sub Form1_Load (ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase2.Loadtxt1.Text = ""txt2.Text = ""End Sub′计算最大值、最小值、平均值Private Sub btn2_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handlesbtn2.ClickDim max As IntegerDim min As IntegerDim avg As IntegerDim i As Integermax = a(1)min = a(1)avg = a(1)For i = 2 To 25If max < a(i) Thenmax = a(i)End IfIf min > a(i)Thenmin = a(i)End Ifavg += a(i)Nextavg/=25txt2.Text = "数组中最大值为:" & max & Chr(13) & Chr(10)txt2.Text & = "数组中最小值为:" & min & Chr(13) & Chr(10)txt2.Text & = "数组中所有元素的平均值为:" & avgEnd Sub(4)程序运行结果如图6-3所示。
图6-3程序运行结果【例6-2】设有7位学生的高等数学、大学英语、大学语文3门课程的成绩如表6-2所示,求各科的平均成绩,每人的平均成绩和总成绩,各科的不及格的学生姓名和人数。
表6-2学生成绩表要求:程序运行时显示如图6-4所示的界面,当用户单击“各科成绩统计”栏中某个按钮时显示如图6-5所示的信息框。
图6-4显示学生成绩图6-5课程统计信息分析:可以将学生的姓名存储在一个一维数组StudentName(7)中,成绩存储在一个二维数组Result(7,3)中,然后调用列表框的Add方法,将学生的姓名显示在一个列表框中。
当鼠标选中列表框的某一项时,调用列表框的SelectedIndexChanged事件,将相应的学生成绩显示在一系列的文本框中。
再设置3个命令按钮,用来处理学生成绩。
注意:本例为了使学生序号与数组下标对应,不使用0下标。
例如,第一个学生的姓名存放在Name(1)中,而不是Name(0)中;第一个学生的第一科成绩存放在Result(1,1)中,而不是Result(0,0)中。
步骤:(1)设计程序界面:新建一个项目,向窗体上添加1个标签控件Label1,1个列表框ListBox1,2个分组框控件Group1和Group2。
向Group1中添加5个标签Label2~Label6和5个文本框,向Group2中添加3个按钮控件Button1~Button3。
适当调整各对象的大小及位置。
(2)设置对象属性:设置窗体Form1的Text属性为“学生成绩管理”;设置Label1~Label6的AutoSize属性为True,Text属性分别为“学生姓名”、“大学英语“、“高等数学”、“大学语文”、“平均成绩”和“总成绩”;设置Group1和Group2的Text属性分别为“学生成绩”和“各科成绩统计”。
设置列表框ListBox1的Name属性为lstName;设置TextBox1~TextBox5的Read Only属性均为True,Text属性均为空,Name属性分别为txtEnglish、txtMath、txtChinese、txtAvg、txtTotal;设置Button1~Button3的Text属性分别为“大学英语”、“高等数学”和“大学语文”,Name 属性分别为btnEnglish、btnMath、btnChinese。
(3)编写事件代码,在所有事件之外声明窗体级变量。
Dim Name(7)As String′定义一维数组用于存放姓名Dim Result(7,3)As Integer′定义二维数组用于存放各科成绩窗体Form1装入时执行的事件代码如下:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As system.EventArgs) Handles MyBase.Load′向数组中添加学生信息,由于数据类型不同,这里使用了两个不同的数组Name(1) =“张三”:Result(1,1) = 80: Result(1,2) = 55: Result(1,3) = 90Name(2) =“李四”:Result(2,1) = 85: Result(2,2) = 80: Result(2,3) = 86Name(3) =“王五”:Result(3,1) = 70: Result(3,2) = 65: Result(3,3) = 73Name(4) =“赵六”:Result(4,1) = 55: Result(4,2) = 70: Result(4,3) = 69Name(5) =“陈七”:Result(5,1) = 79: Result(5,2) = 46: Result(5,3) = 90Name(6) =“赵八”:Result(6,1) = 78: Result(6,2) = 89: Result(6,3) = 52Name(7) =“何九”:Result(7,1) = 88:Result(7,2)= 89: Result(7, 3)= 90Dim i As IntegerFor i = 1 To 7lstName.Items.Add(Name(i))NextEnd Sub【学生姓名】列表框中的选项被改变时执行的事件代码如下:Private Sub lstName _ selectedIndexChanged(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles lstName.selectedIndexChangedDim i As IntegerDim sam,avg As SingleFor i = 1 To lstName.Items.CountIf lstName.GetSelected(i-1) = True Then′如果学生姓名被选中txtEnglish.Text = Result(i,1) ′将数学成绩显示到文本框txtEnglish.Text = Result(i,1) ′将数学成绩显示到文本框txtMath.Text = Result(i,2)txtChinese.Text = Result(i,3)sum = Result(i,1)+Result(i,2)+Result(i,3)′计算总分avg = sum/3 ′计算平均分txtAvg.Text = Math.Round(avg,1)′计算平均值使用Math.Round方法保留1位小数txtTotal.Text = sum′列表框中只能有一个学生被选中,处理完一个被选中的记录后不必继续查找Exit ForEnd IfNextEnd Sub【大学英语】按钮被单击时执行的事件代码如下:Private Sub btnEnglish_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles btnEnglish.ClickDim i,sumEnglish,avgEnglish As SingleDim nameStr As StringFor i = 1 To 7sumEnglish = sumEnglish+Result(i,1) ′累加英语总分If Result(i,1)<60 Then′统计不及格学生姓名nameStr = nameStr & Name(i) & Space(2) & Result(i,1) & Space(2)End IfNextavgE = Math.Round(sumEnglish/7,1)′计算英语平均分MsgBox("不及格学生:"& nameStr,64,"大学英语平均成绩:"& avgEnglish)End Sub【高等数学】按钮被单击时执行的事件代码如下:Private Sub btnMath_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles btnMath.ClickDim i,sumMath,avgMath As SingleDim nameStr As StringFor i = 1 To 7sumMath = sumMath+Result(i, 2)If Result(i, 2) < 60 ThennameStr = nameStr & Name(i) & Space(2) & Result(i, 2) & Space(2)End IfNextavgM = Math.Round(sumMath / 7, 1)MsgBox("不及格学生:" & nameStr, 64, "高等数学平均成绩:" & avgMath)End Sub【大学语文】按钮被单击时执行的事件代码如下:Private Sub btnChinese _ Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChinese.ClickDim i, sumChinese, avgChinese As SingleDim nameStr As StringFor i = 1 To 7sumChinese = sumChinese+Result(i, 3)If Result(i, 3) < 60 ThennameStr = nameStr & Name(i) & Space(2) & Result(i, 3) & Space(2)End IfNextavgChinese = Math.Round(sumChinese / 7, 1)MsgBox("不及格学生:" & nameStr, 64, "大学语文平均成绩:" & avgChinese)End SubavgChinese = Math.Round(sumChinese / 7, 1)MsgBox("不及格学生:" & nameStr, 64, "大学语文平均成绩:" & avgChinese)End Sub【例6-3】要求输入若干个学生的成绩,计算的平均分和高于平均分的人数放在该数组的最后。