版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.1数组的使用5.2控件数组5.3列表框与组合框5.4小结实例本章实例实例5.1实例5.2实例5.3实例5.4实例5.5实例5.6实例5.7实例5.8实例5.9实例5.10实例5.11【引例】计算20个数据的平均值。程序运行时随机产生20个两位整数显示在上面标签中;单击“平均值”按钮时,计算20个数据的平均值显示在下面的标签中。5.1数组的使用
操作步骤1、界面设计2、编写窗体的Load事件PrivateSubForm_Load()
EndSub生成20个10~99间的随机数累加20个随机数连接20个随机数,显示在标签中2、编写窗体的Load事件PrivateSubForm_Load()
EndSub生成20个10~99间的随机数累加20个随机数连接20个随机数,显示在标签中Fori=1To20
Nexti111Fori=1To20
Nexti2、编写窗体的Load事件PrivateSubForm_Load()
EndSub生成20个10~99间的随机数累加20个随机数连接20个随机数,显示在标签中111a=Int(Rnd*90)+10s=s+aL1.Caption=L1.Caption&str(a)RandomizePrivateSubcmdAve_Click()
EndSubL2.Caption=“平均值:”&s/203、编写“平均值”按钮的单击事件两个过程中都要用到,应定义成窗体级变量【修改引例】添加“大于平均值”按钮。单击“大于平均值”按钮时,将20个数据中大于平均值的数据显示在下面标签中。分析单击“平均值”按钮后才能使用“大于平均值”按钮为了找到大于平均分的各个数据,必须保存20个随机数据定义20个整型变量定义窗体级变量DimsAsInteger
Dima1AsIntegerDima2AsInteger
Dima20AsInteger编写窗体的Load事件PrivateSubForm_Load()
EndSuba1=Int(Rnd*90)+10a2=Int(Rnd*90)+10
a20=Int(Rnd*90)+10cmdLarge.Enabled=FalseRandomizes=a1+a2+…+a20L1.Caption=a1&a2&…&a20编写“平均值”按钮的单击事件PrivateSubcmdAve_Click()
EndSubcmdLarge.Enabled=TrueL2.Caption=“平均值:”&s/20编写“大于平均值”按钮的单击事件PrivateSubcmdLarge_Click()
EndSubave=s/20L2.Caption=""Ifa1>aveThenL2.Caption=L2.Caption&Str(a1)EndIfIfa20>aveThenL2.Caption=L2.Caption&Str(a20)EndIf烦!烦!烦!思考:改进20个变量的名字为a(1)、a(2)、……、a(20)对于第i个变量,可表示为a(i)随机生成20个数据Fori=1To20a(i)=Int(Rnd*90)+10NextiFori=1To20s=s+a(i)Nexti累加20个数据连接20个数据,显示在标签中Fori=1To20L1.Caption=L1.Caption&a(i)Nexti查找大于平均值的数据,显示在标签中Fori=1To20Ifa(i)>aveThenL2.Caption=L2.Caption&a(i)EndIfNexti改写窗体的Load事件PrivateSubForm_Load()cmdLarge.Enabled=FalseRandomize
Fori=1To20a(i)=Int(Rnd*90)+10s=s+a(i)L1.Caption=L1.Caption&Str(a(i))NextiEndSub改写“大于平均值”按钮的单击事件PrivateSubcmdLarge_Click()
EndSubL2.Caption=""ave=s/20Fori=1To20Ifa(i)>aveThenL2.Caption=L2.Caption&Str(a(i))EndIfNextiDima(1To20)AsInteger包括20个变量:a(1)、a(2)、a(3)、…、a(20)均是整型若有Dima(-1To10)AsSingle包括12个变量:a(-1)、a(0)、a(1)、a(2)、 a(3)、…、a(10)各变量的数据类型均是单精度型定义20个变量的方法【实例5.1】计算20个数据的总和与平均值。程序运行时随机产生20个两位整数显示在上面标签中;单击“求和”或“平均值”按钮时,计算20个数据的总和或平均值,显示在下面的标签中。操作步骤(1)设计用户界面(2)定义窗体级变量Dima(1To20)AsInteger(3)编写窗体的装载事件过程代码PrivateSubForm_Load()RandomizeFori=1To20a(i)=Int(Rnd*90)+10lblData.Caption=lblData.Caption&Str(a(i))NextiEndSub(4)编写“求和”命令按钮的单击事件代码PrivateSubcmdSum_Click()DimsumAsIntegerFori=1To20sum=sum+a(i) NextilblResult.Caption="总和是:"&sumEndSubsum=sum+a(1)sum=sum+a(2)sum=sum+a(3)……sum=sum+a(20)要处理1000个数据时,怎么办?(5)编写“平均值”命令按钮的单击事件代码PrivateSubcmdAve_Click()DimsumAsIntegerDimaveAsSingleFori=1To20sum=sum+a(i)NextilblResult.Caption="平均值是:"&sum/20EndSub技能要点数组的概念数据类型相同的多个变量所构成的集合所有的变量都使用相同的名字—数组名不同的变量通过下标来区别数组的定义Dim数组名(下界To上界)As类型
Dima(3To25)AsString
包含元素个数:上界–下界+1a(3)、a(4)…a(25)共23个元素缺省时默认为0a(0)、a(1)…a(25)共26个元素【实例5.2】数据的逆置。程序运行时随机产生10个两位整数显示在上面标签中;单击“逆置”按钮,将各数据按逆序重新放入原数组中并显示在下面标签中;单击“重置”按钮则重新产生10个两位整数显示在上面标签中,同时将下面标签清空。操作步骤(1)设计用户界面(2)定义窗体级数组Dima(9)AsIntegera(0)、a(2)、a(3)、…、a(9)省略数组下标下界(3)编写窗体的装载事件过程代码PrivateSubForm_Load()Fori=0To9a(i)=Int(Rnd*90)+10lblData.Caption=lblData.Caption&Str(a(i))NextiEndSub(4)编写“逆置”命令按钮的单击事件代码PrivateSubcmdBack_Click()DimtAsInteger
实现数组元素的逆置功能
Fori=0To9lblResult.Caption=lblResult.Caption&Str(a(i))NextiEndSub01234567899876543210(4)编写“逆置”命令按钮的单击事件代码PrivateSubcmdBack_Click()DimtAsInteger
实现数组元素的逆置功能
Fori=0To9lblResult.Caption=lblResult.Caption&Str(a(i))NextiEndSub012345678991234567809823456710987345621098764532109876543210(4)编写“逆置”命令按钮的单击事件代码t=a(0):a(0)=a(9):a(9)=tt=a(1):a(1)=a(8):a(8)=tt=a(2):a(2)=a(7):a(7)=tt=a(3):a(3)=a(6):a(6)=tt=a(4):a(4)=a(5):a(5)=tPrivateSubcmdBack_Click()DimtAsInteger
Fori=0To9lblResult.Caption=lblResult.Caption&Str(a(i))NextiEndSubFori=0To4t=a(i)a(i)=a(9-i)a(9-i)=tNexti(4)编写“逆置”命令按钮的单击事件代码PrivateSubcmdBack_Click()DimtAsInteger
Fori=0To9lblResult.Caption=lblResult.Caption&Str(a(i))NextiEndSubFori=0To4t=a(i)
a(i)=a(9-i)a(9-i)=tNexti(5)编写“重置”命令按钮的单击事件代码PrivateSubcmdReset_Click()lblData.Caption=""lblResult.Caption=""
Form_LoadEndSub相当于复制Form_Load中的所有代码PrivateSubForm_Load()
Fori=0To9a(i)=Int(Rnd*90)+10lblData.Caption=lblData.Caption&Str(a(i))NextiEndSub【实例5.3】找数据中的最大、最小值。程序运行时随机产生10个两位整数显示在上面标签中;单击“最大”或“最小”按钮时,找出10个数据中的最大或最小值显示在下面标签中。操作步骤(1)设计用户界面(2)定义窗体级数组Dima(9)AsInteger(3)编写窗体的装载事件过程代码PrivateSubForm_Load()Fori=0To9a(i)=Int(Rnd*90)+10lblData.Caption=lblData.Caption&Str(a(i))NextiEndSub(4)编写“最大”命令按钮的单击事件代码PrivateSubcmdMax_Click()DimkAsInteger
求最大元素下标值
lblResult.Caption="最大元素是:"&a(k)EndSub记住最大值元素的下标值73586236377911788373假设第0个元素值最大k=0a(k)<a(1)?k=0aa(k)<a(2)?假K不变k=00123456789下标找最大值的算法假K不变a(k)<a(3)?k=0a(k)<a(4)?k=0a(k)<a(5)?真k=5K变化a(k)<a(6)?a(k)<a(7)?a(k)<a(8)?a(k)<a(9)?k=5k=5k=8k=873586236377911788373a(k)<a(1)?k=0aa(k)<a(2)?k=00123456789下标找最大值的算法a(k)<a(3)?k=0a(k)<a(4)?k=0a(k)<a(5)?k=5a(k)<a(6)?a(k)<a(7)?a(k)<a(8)?a(k)<a(9)?k=5k=5k=8k=8Ifa(k)<a(1)Thenk=1Ifa(k)<a(2)Thenk=2Ifa(k)<a(9)Thenk=973586236377911788373a(k)<a(1)?k=0aa(k)<a(2)?k=00123456789下标找最大值的算法a(k)<a(3)?k=0a(k)<a(4)?k=0a(k)<a(5)?k=5a(k)<a(6)?a(k)<a(7)?a(k)<a(8)?a(k)<a(9)?k=5k=5k=8k=8概括:Ifa(k)<a(i)Thenk=ii=1~973586236377911788373a(k)<a[1]?k=0aa(k)<a(2)?k=00123456789下标找最大值的算法a(k)<a(3)?k=0a(k)<a(4)?k=0a(k)<a(5)?k=5a(k)<a(6)?a(k)<a(7)?a(k)<a(8)?a(k)<a(9)?k=5k=5k=8k=8概括:Ifa(k)<a(i)Thenk=ik=0Fori=1To9Ifa(k)<a(i)Then
k=iNexti(4)编写“最大”命令按钮的单击事件代码PrivateSubcmdMax_Click()DimkAsInteger
k=0Fori=1To9Ifa(k)<a(i)Then
k=iEndIfNextilblResult.Caption="最大元素是:"&a(k)EndSub(5)编写“最小”命令按钮的单击事件代码PrivateSubcmdMin_Click()DimkAsIntegerk=0 Fori=1To9Ifa(k)>a(i)Then
k=i EndIfNextilblResult.Caption="最小元素是:"&a(k)EndSub【实例5.4】数据排序。程序运行时,单击“产生数据”按钮,随机产生20个0~100之间的整数显示在窗体上部;单击“排序”按钮,将排序后的数据显示在窗体下部。操作步骤(1)设计用户界面(2)定义窗体级数组Dima(1To20)AsInteger(3)编写“产生数据”命令按钮的单击事件代码PrivateSubcmdData_Click() DimiAsIntegerCls Print Print“显示排序前的数据顺序”Randomize Fori=1To20a(i)=Int(Rnd*101)Printa(i);Tab((iMod10)*6); Nexti cmdSort.SetFocus EndSub输出一个空行每输出10个数据后换行(4)编写“排序”命令按钮的单击事件代码
PrivateSubcmdSort_Click()DimiAsInteger,jAsInteger,MinAsInteger,TempAsInteger
PrintPrint"显示排序后的数据"Fori=1To20Printa(i);Tab((iMod10)*6);NextiPrintcmdData.SetFocusEndSub对a数组各元素进行排序【实例5.5】在窗体上装载一幅图片,再加1个计时器控件。当程序运行时,计时器控件工作,窗体上不断飘落直径不等的白色圆,酷似下雪。操作步骤(1)设计用户界面Interval=1(2)定义窗体级数组DimSnow(1To500,2)AsInteger含有500行、3列元素Snow(1,0) Snow(1,1) Snow(1,2)Snow(2,0) Snow(2,1) Snow(2,2)…… …… ……Snow(500,0) Snow(500,1) Snow(500,2)等价于0To2雪花在窗体上的x坐标雪花在窗体上的y坐标y值增量一个雪花的信息PrivateSubForm_Load()
FillColor=vbWhite
FillStyle=0RandomizeFori=1To500Snow(i,0)=Int(Rnd*frmEx5_5.Width)Snow(i,1)=Int(Rnd*frmEx5_5.Height)Snow(i,2)=20+Rnd*50NextiEndSub(3)编写窗体的装载事件过程代码第i个雪花
(4)编写计时器的Timer事件代码PrivateSubtmrSnow_Timer()Fori=1To500Snow(i,1)=Snow(i,1)+Snow(i,2)IfSnow(i,1)>frmEx5_5.HeightThenSnow(i,1)=0Snow(i,0)=Int(Rnd*frmEx5_5.Width)EndIfCircle(Snow(i,0),Snow(i,1)),20*Rnd,vbWhiteNextifrmEx5_5.ClsEndSub改变i雪花的y坐标Y坐标越界时5.2控件数组
【实例5.6】窗体中有1个按钮、5个标签、1个包含10个单选按钮的控件数组。程序运行时,单击“测试”按钮,在标签中随机显示一个交通标识名,用户单击相应单选按钮后,程序提示结果。操作步骤(1)设计用户界面添加控件数组的方法先画出第1个控件,设置其属性通过复制的方法画第2控件,并设置相同的名称属性√对象属性属性值窗体(名称)IconMaxButtonMinButtonfrmEx5_6交通标识FalseFalse单选按钮控件数组(名称)IndexStylePictureoptPicture0~91-Graghics(装入相应图片)(2)定义窗体级字符型数组
Dimtname(9)AsString根据交通标识图的个数定义数组的大小控件数组的概念类型相同且名称属性相同的一组控件通过Index属性区分各控件optPicture(0)、optPicture(1)…optPicture(9)(3)编写窗体的装载事件过程代码PrivateSubForm_Load()DimiAsIntegerFori=0To9
optPicture(i).Value=FalseNextilblPrompt2.Visible=FalselblAnswer.Visible=FalselblEvaluate.Visible=False控件数组元素tname(0)="步行街"tname(1)="机动车道"tname(2)="交叉路口"tname(3)="注意危险"tname(4)="注意信号灯"tname(5)="限高3.5米"tname(6)="限重10吨"tname(7)="禁止掉头"tname(8)="禁止停留"tname(9)="禁止非机动车左转"EndSub(4)编写“测试”按钮的单击事件过程代码PrivateSubcmdTest_Click()DimiAsIntegerFori=0To9optPicture(i).Value=FalseNextilblPrompt2.Visible=FalselblAnswer.Visible=FalselblEvaluate.Visible=Falsei=Int(Rnd*10)lblTest.Caption=tname(i)EndSub(5)编写单击单选按钮控件数组元素的代码PrivateSuboptPicture_Click(Index
AsInteger)lblPrompt2.Visible=TruelblAnswer.Visible=TruelblEvaluate.Visible=TruelblAnswer.Caption=tname(Index)IflblAnswer.Caption=lblTest.CaptionThenlblEvaluate.ForeColor=vbRedlblEvaluate.Caption="恭喜你!回答正确!"ElselblEvaluate.ForeColor=vbBluelblEvaluate.Caption="很遗憾,回答错误。"EndIfEndSub单击任意一个单选按钮时触发根据其值判断所击的是哪一个
【实例5.7】窗体中有1个标签、1个包含10个单选按钮的控件数组。程序运行时,单击某一单选按钮,在标签中显示相应交通标识的名称。操作步骤(1)设计用户界面(2)编写单击控件数组元素的代码PrivateSuboptPicture_Click(IndexAsInteger)SelectCaseIndexCase0lblShow.Caption="步行街"Case1lblShow.Caption="机动车道"Case2lblShow.Caption="交叉路口"Case3lblShow.Caption="注意危险"常用Select-Case语句Case4lblShow.Caption="注意信号灯"Case5lblShow.Caption="限高3.5米"Case6lblShow.Caption="限重10吨"Case7lblShow.Caption="禁止掉头"Case8lblShow.Caption="禁止停留"Case9lblShow.Caption="禁止非机动车左转"EndSelectEndSub5.3.1列表框5.3.2组合框5.3列表框与组合框
【实例5.8】窗体中有1个标签,1个列表框和2个按钮。程序运行时列表框中显示“北京”、“上海”、“天津”和“重庆”;单击“添加”按钮,出现输入框,用户输入新城市名后随即将该城市名添加到列表框中;选中列表框中某项并单击“删除”按钮,从列表框中删除该城市名。5.3.1列表框
操作步骤(1)在窗体中添加所需控件,列表框控件在工具 箱中的图标是。(2)编写窗体的装载事件过程代码
PrivateSubForm_Load()
lstCity.AddItem"北京"lstCity.AddItem"上海"lstCity.AddItem"天津"lstCity.AddItem"重庆"EndSub向列表框中添加项目列表框的AddItem方法调用格式列表框名.AddItem字符串[,索引号]列表框中项的索引号从0开始出现在第n个位置上的项索引号为n-1省略索引号时新项被添加到列表框的尾部(3)编写“添加”命令按钮的单击事件过程代码
PrivateSubcmdAdd_Click()DimcityAsStringcity=InputBox("请输入城市名","输入框")lstCity.AddItemcityEndSub(4)编写“删除”命令按钮的单击事件过程代码
PrivateSubcmdDelede_Click()lstCity.RemoveItemlstCity.ListIndexEndSub删除指定的项目所选项的索引号
当没选中任何项时,ListIndex属性值为-1RemoveItem方法调用格式列表框名.RemoveItem索引号删除第1项:lstCity.RemoveItem0
删除用户所选项:lstCity.RemoveItemlstCity.ListIndex
IflstCity.ListIndex<>-1ThenlstCity.RemoveItemlstCity.ListIndexElse MsgBox"请先选择!"EndIf【实例5.9】程序运行时随机产生100个两位整数添加在左列表框中;单击左列表框中某项,该列表项移到右列表框中;单击“>>”按钮则将左列表框中所有项移到右列表框中;单击“还原”按钮,左列表框中显示原有100个整数,右列表框清空。操作步骤(1)设计用户界面(2)定义窗体级变量
Dima(99)AsInteger(3)编写窗体装载事件过程代码PrivateSubForm_Load()Fori=0To99a(i)=Int(Rnd*90)+10Nexti
addEndSubPrivateSubadd()Fori=0To99lstLeft.AddItema(i)NextiEndSub同一个数组(4)编写左边列表框的单击事件过程代码PrivateSublstLeft_Click()
在左边列表框所选项添加到右边列表框删除左边列表框中所选项EndSublstRight.AddItemlstLeft.TextlstLeft.RemoveItemlstLeft.ListIndex(5)编写“>>”按钮的单击事件过程代码PrivateSubcmdMove_Click()
左边所有项添加到右边列表框
删除左边所有项EndSub(5)编写“>>”按钮的单击事件过程代码PrivateSubcmdMove_Click()
左边所有项添加到右边列表框
删除左边所有项EndSublstRight.AddItemlstLeft.List(0)lstRight.AddItemlstLeft.List(1)……lstRight.AddItemlstLeft.List(k)最后一项索引号(5)编写“>>”按钮的单击事件过程代码PrivateSubcmdMove_Click()
左边所有项添加到右边列表框
删除左边所有项EndSublstRight.AddItemlstLeft.List(0)lstRight.AddItemlstLeft.List(1)……lstRight.AddItemlstLeft.List(k)Fori=0TolstLeft.ListCount-1lstRight.AddItemlstLeft.List(i)Nexti列表项的总数目lstLeft.Clear(6)编写“还原”按钮的单击事件过程代码PrivateSubcmdReturn_Click()lstLeft.ClearlstRight.Clear
addEndSub不必重复写【实例5.10】程序运行时随机产生100个两位整数添加在左列表框中;选中左列表框中若干项后,单击“复制”按钮,将选中的项复制到右列表框中;单击“移动”按钮,将所选项目移动到右列表框中。操作步骤(1)设计用户界面列表框1(名称)MultiSelectlstLeft2-Extended(2)编写窗体装载事件过程代码
PrivateSubForm_Load()Fori=1To100lstLeft.AddItemInt(Rnd*90)+10NextiEndSub(3)编写“复制”按钮的单击事件过程代码PrivateSubcmdCopy_Click()Fori=0TolstLeft.ListCount-1IflstLeft.Selected(i)=TrueThenlstRight.AddItemlstLeft.List(i)EndIfNextiEndSub第i个列表项被选中(4)编写“移动”按钮的单击事件过程代码PrivateSubcmdMove_Click()DoWhilei<=lstLeft.ListCount-1IflstLeft.Selected(i)=TrueThenlstRight.AddItemlstLeft.Li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年三年了说课稿
- 2026年网络攻击防范专项训练题库
- 2025-2026学年《青蛙卖泥塘》说课稿
- 2025-2026学年儿歌表演说课稿模板
- 2025-2026学年1 5分成说课稿
- 2025-2026学年丰收的秋天中班说课稿
- 2025-2026学年《生命的起源》说课稿
- 2026下半年医疗卫生岗笔试全真模拟题库及解析
- 湖北文秘岗笔试历年真题题库及答案
- 2025-2026学年创意画元宝说课稿
- 2026秋统编版语文六年级上册第二单元综合素养测评卷(含答案)
- (2026年版)糖尿病患者合并心血管疾病诊治专家共识
- 工程挂靠协议书
- 无产权车位使用权转让协议书2026年模板
- 关于新生儿科输液泵故障的应急预案演练脚本
- 吉兰-巴雷综合征合并吞咽困难管理专家共识(2026版)
- 探索HIV-1感染者Vpr基因多态性及其临床关联:从分子特征到医学启示
- 网吧卫生管理制度及流程
- 卫浴装修公司合作协议7篇
- 韦氏-儿童智力测验量表
- 《千字文》硬笔楷书字帖
评论
0/150
提交评论