清华大学出版社answeroperate上机实训和答案_第1页
清华大学出版社answeroperate上机实训和答案_第2页
清华大学出版社answeroperate上机实训和答案_第3页
清华大学出版社answeroperate上机实训和答案_第4页
已阅读5页,还剩233页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章VisualBasic编程基础上机实训实验目的掌握选择结构程序设计方法,灵活使用有关语句;掌握循环结构程序设计方法,灵活使用各种循环语句;掌握数组的定义方法,正确理解和使用数组元素的下标,熟练掌握数组元素的引用、赋值、输入与输出等操作:学会用数组来解决一些实际问题;掌握通用过程的定义和调用方法;了解参数传递的方式;掌握用Dim和Static定义变量的区别实验内容.输入一个年份,判断该年是否为闰年。程序运行效果如图2.1所示。图2.1【实训1】程序运行效果实验分析:(1)判断条件为:•年份(y)能被4整除,但不能被100整除;•年份(y)能被400整除。只要满足其中一个条件,该年份即为闰年。(2)表示这个条件的逻辑表达式为:(yMod4=0AndyMod10000)Or(yMod400=0)也可写成:(Int(y/4)=y/4AndInt(y/100)<>y/100)OrInt(y/400)=y/400)实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE”)(2)在窗体Forml上按图2.1所示添加控件,程序中各对象属性设置见表2-1。表2-1【实训1】对象属性设置对象属性属性值FormCaptionif语句使用•判断闰年Label1Caption空TextBoxlText空CommandButton1Caption判断(3)双击窗体中的按钮,为Commandl_Click()事件过程添加如卜代码:PrivateSubCommand1_Click()y=Val(Textl.Text)If(yMod400)=0Or((yMod400)<>0And(yMod100)o0And(yMod4)=0)ThenLabel1.Caption=”是闰年”ElseLabel1.Caption="不是闰年”EndIfEndSub(4)调试运行。.求一元二次方程+版+c=0的根。程序运行效果如图2.2所示。要求:当用户在“a="、“b=”和“c=”对应的文本框中输入a,b,c的值后,单击【计算】按钮,则从“xl=”和“x2=”对应的文本框中输出计算结果。图2.2【实训2】程序运行效果实验分析:方程的解有以下几种可能:当a=0,不是二次方程当1/-4ac=0时,有两个相等实根当b?-4ac>0时,有两个不等实根当1/-4ac<0时,有两个共辄复根实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE”)(2)在窗体Forml上按图2.2所示添加控件,程序中各对象属性设置见表2・2。表2-2【实训2】对象属性设置对象属性属性值FormCaption求•元二次方程的根Label1Captiona=Labcl2Captionb=Label3Captionc=Label4Captionxl=Label5Captionx2=TextBoxlText空TextBox2Text空TextBox3Text空CommandButtonCaption计算(3)双击窗体中的尸按钮,为Commandl_Click()事件过程添加如下代码:PrivateSubcommand1_click()DimaAsSingle,bAsSingle,cAsSingleDimDAsSingle,XIAsSingle,X2AsSingleDimPAsSingle,QAsSinglea=Val(Textl.Text) '获取数据ab=Val(Text2.Text) '获取数据bc=Val(Text3.Text) '获取数据cIfa=0Then '当a=0Text4.Text="不是二次方程"Text5.Text="不是二次方程"Else '当a<>0D=b*b-4*a*cP=-b/(2*a)IfD=0Then 'D=0Text4.Text=PText5.Text=PElselfD>0Then 'D>0XI=(-b+Sqr(D))/(2*a)X2=(-b-Sqr(D))/(2*a)Text4.Text=X1Text5.Text=X2Else 'D<0Q=Sqr(-D)/(2*a)Text4.Text=P&&Q&"i"Text5.Text=P&&Q&EndIfEndIfEndSub(4)调试运行。.运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:S<250km 没有折扣250^S<500 2% 折扣500^S<1000 5% 折扣1000^S<2000 8%折扣:2000WS<3000 10% 折扣S23000 15% 折扣设每公里每吨货物的基本运费为P,货物重为W,距离为S,折扣为d,则总运费F的计算公式为:F=P*W*S*(1-d).请编写程序,已知运费(P)、货物重(W)、距离(S),求运费。程序运行效果如图2.3所示。要求:(1)由用户输入运费(P)、货物重(W)、距离(S)的值;(2)单击【计算】按钮,进行运费的计算;(3)显示运费。图2.3【实训3】程序运行效果实验分析:(1)使用文本框实现运费(P)、货物重(W)、距离(S)的输入;(2)关于运费的计算:使用SelectCase语句分析确定折扣d,然后根据公式进行计算。计算功能通过点击命令按钮实现。(3)使用文本框输出运费。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)在窗体Forml上按图2.3所示添加控件,程序中各对象属性设置见表2-3。

表2・3【实训3】对象属性设置对象属性属性值FormCaptionSelectCase语句■求运费Label1Caption请输入运费单价p(元/吨):Labcl2Caption请输入货物重量W(吨):Label3Caption请输入路程S(公里):Label4Caption运费F(元):TextBoxlText,V'TextBox2Text空TextBox3Text空TextBox4Text空.CommandButtonCaption计算(3)双击窗体上的计算PrivateSubCommandDimP,FAsCurrencDimWAsSingleDimSAsIntegerP=Val(Textl.Text)W=VaI(Text2.Text;S=Val(Text3.Text)IfS<=0ThenEndSelectCaseSCaseIs<250d=0按钮,为Command1l_Click()y_Click()事件过程添加如下代码:CaseIs<500d=2CaseIs<1000d=5CaseIs<2000d=8CaseIs<3000d=10CaseElsed=15EndSelectF=P*W*S*(l-d/100#)Text4.Text=FEndSub(4)调试运行。4.求1-100之间自然数的平方和。程序运行效果如图2.4所示。要求:分别用前测型DoWhile•••Loop语句和后测型Do…LoopWhile语句实现。।Do -Loop语句使用二|叵冈i-ioa向自然数的平方和

|s=338350~图2.4【实训4】程序运行效果实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)在窗体Forml上按图2.4所示添加控件,程序中各对象属性设置见表2-4;。表2W【实训4】对象属性设置对象属性属性值FormCaptionDowhile…语句使用LabelCaptionl・100间自然数的平方和TextBoxtext空(3)用前测型DoWhile…Loop语句实现:双击窗体Forml,为Form_Load()事件过程添加如下代码:PrivateSubForm_Load()DimnAsInteger,sAsLongShown=1:s=0DoWhilen<=100s=s+n*nn=n+1LoopTextl.Text=Ms=M&sEndSub用后测型Do…LoopWhile语句实现:PrivateSubForm_Load()DimnAsInteger,sAsLongShown=1:s=0Dos=s+n*nn=n+1LoopWhilen<=100Textl.Text=Ms=H&sEndSub(4)调试运行。5.用工=1一!+,-工+……级数求n的近似值。程序运行效果如图2.5所示。4 357要求:(1)级数中的项数由用户输入:(2)在文本框中显示n的近似值。图2.5【实训5】程序运行效果实验分析:(1)将变量定义成单精度型数据类型,否则计算会出错;(2)级数中的项数使用文本框(Textl)获取;(3)单击命令按钮(CommandButtonl)进行计算;(4)在文本框(Text2)中显示元的近似值。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE”)(2)在窗体Forml上按图2.5所示添加控件,程序中各对象属性设置见表2・5。表2・5【实训5】对象属性设置对象属性属性值FormCaption求n的近似值LabelCaption请输入项数:CommandButtonCaption计算TextBox1text空TextBox2text空(3)双击窗体中的计鲤|按钮,为Commandl_Click()事件过程添加如下代码:PrivateSubCommandl_Click()DimPIAsSingle,iAsInteger,sAsInteger,tAsSingle,nAsIntegern=Val(Textl.Text),获取项数值ShowPI=0s=1 飞表示加或减运算t=1 *t表示每一项Fori=1TonPI=Pl+s/t交替改变加、减号NextiText2.Text="7t="&PI*4EndSub(4)调试运行。6.打印ASCII表。程序运行效果如图2.6所示。要求:用For语句实现。当单击图片框时,将ASCII表显示在图片框中。图2.6【实训6】程序运行效果实验分析:(1)ASCII码值32〜126是可打印字符;(2)用For语句控制ASCII码值从32-126变化;(3)用Chr函数将ASCII码值转换为对应的字符并输出。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)将窗体Forml的"Caption”属性设置为"ASCH表”,在窗体Form1上添加一个图片框(PictureBox)控件;(3)双击图片框(PictureBox)控件,为Picturel_Click()事件过程添加如下代码:PrivateSubPicturel_Click()DimintASCAsInteger,iAsIntegerPicture1.CisPicture1.PrintPicture1.FontSize=10Picturel.FontBold=TruePicture1.PrintTab(18);"ASCII码对照表”PictureI.FontSize=9Picture1.Print"String$(79,M-M)'String函数返回指定数H的重复字符Picture1.FontBold=False'ASCII码32-126是可打印字符,Chr函数将ASCII码转换为对应字符ForintASC=32To126'intASC为循环变量Picture1.PrintTab(10*i+3);Chr(intASC);"=";intASC;i=i+1Ifi=6Then'每行显示6个ASCII码=0Picture1.PrintEndIfNextintASCPicturel.PrintvbCr;"String$(79, 'vbCr代表回车EndSub(4)调试运行。.百钱买百鸡问题:用100元买100只鸡,母鸡3元1只,小鸡1元3只,问应各买多少只?程序运行效果如图2.7所示\百钱百鸡问患01回区f图2.7【实训7】程序运行效果实验分析:(1)采用“穷举法”来解此题。从所有可能解中,逐个进行试验,若满足条件,就得到•个解,否则不是。直到条件满足或判别出无解为止。(2)算法:令母鸡为x只,小鸡为y只,根据题意可知:y=100-x开始先让x初值为1,以后逐次加1,求x为何值时,条件3x+y/3=100成立。如果当x达到30时还不能使条件成立,则可以断定此题无解。实验步骤:(1)单击【文件】|【新建工程】命令,建立•个新工程("标准EXE"):(2)双击窗体,为窗体的Form_Load()事件过程添加如下代码:PrivateSubForm_Load()DimxAsInteger,yAsIntegerShowForx=1To30y=100-xIf3*x+y/3=100ThenPrintvbCrPrintTab(8);"母鸡只数为:";xPrintvbCrPrintTab(8);”小鸡只数为:”;yEndIfNextxEndSub(3)调试运行。.打印钻石图形。单击窗体显示钻石图形,程序运行效果如图2.8所示。.For语句使用-打卬图形目回因***

*****

*******

*:Mc****4c*

*******

*****图2.8【实训8】程序运行效果实验分析:(1)打印此图形的关键是找到图形变化规律,而且上、下两部分变化规律不同;(2)上半部分规律为:每行打印“2X行数-1”个图案;(3)下半部分规律为:每行打印“9-2X行数”个图案;(4)用For语句分别实现上、下两部分的图形打印。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)将窗体Forml的uCaption"属性设置为“For语句使用-打印图形”;(3)双击窗体Forml,为Commandl_Click()事件过程添加如下代码:PrivateSubForm_Click()ShowPrintFori=1To5 1打印前5行PrintTab(20-i); 1控制打印位置Forj=lTo2*i-lPrint"*”;NextjNextiFori=1To4 *打印后4行PrintTab(15+i); 1控制打印位置Forj=1To9-2*iPrint”*”;NextjPrintNextiEndSub(4)调试运行。.将一个数组中的值按逆序重新存放。例如:原来8、6、5、4、1,要求改为1、4、5、6、8。程序运行效果如图2.9所示。要求:(1)数组中的元素由用户输入;(2)当单击窗体时,弹出【输入】对话框,输入结束后,在窗体中显示交换前后的数组元素;图2.9【实训9】程序运行效果实验分析:(1)用InputBoxO函数实现输入;(2)交换次数为数组元素个数的•半;(3)用两个For循环实现交换前后数组元素的输出。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)单击【视图】|【代码窗口】命令,打开【代码窗口】,选择窗体的Click事件,为窗体的Form_Click()事件过程添加如下代码:PrivateSubForm_Click()CisConstLength=10DimD(Length)AsIntegerDim1%,Temp%ForI=1ToLength '给数组赋值D(I)=InputBox(”请输入第“&I&”个元素的值“,”数组初始化”)NextIPrint”交换前数组为:”ForI=1ToLengthPrintD(I);NextIPrintvbCrForI=1ToLength/2 '通过5次循环完成元素值交换Temp=D(I)D(I)=D(Length-1+1)D(Length-1+1)=TempNextIPrint”交换后数组为:”ForI=1ToLengthFonnl.PrintD(I);NextIEndSub(3)调试运行。.有一个已排好序的数组,向该数组中插入一个数,要求按原来排序的规律将它插入到数组中。程序运行效果如图2.10所示。要求:(1)按有序方式对数组进行初始化;(2)插入的数据由用户输入;(3)在窗体中显示插入数据前后的数组元素。图2.10【实训10】程序运行效果实验分析:(1)用InputBoxO函数实现数据的插入;(2)将插入的数据与原数组中的数据一一比较,当大于某个数时,记录数据要插入的位置;(3)从插入位置开始,所有元素向后移动一个位置;(4)插入新数据;(5)用两个For循环实现插入前后数组元素的输出。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)单击【视图】|【代码窗口】命令,打开【代码窗口】,选择窗体的Click事件,为窗体的Form_Click()事件过程添加如下代码:PrivateSubForm_Click()CisConstLength=10DimD(Length+1)AsIntegerDimX%,1%,J%ForI=1ToLength 1数组初始化,依次为10、20、30、…、100D(I)=10*I

NextIX=InputBox("插入数据的值”,“请输入一个正整数”,0)Print”原数组为:” 1输出原数组ForI=1ToLengthPrintD(I);NextIPrintForI=LengthTo1Step-1IfX>=D(I)Then=1+1ExitForEndIfNextIForJ=LengthToIStep-1D(J+1)=D(J)NextJD(I)=XPrint”插入数据后的数组为:ForI=1ToLength+1Fonnl.PrintD(I);NextI,新数据与原数组中的数据比较,新数据与原数组中的数据比较,新数据的插入位置1从插入位置开始,所有元素挪一个位置'插入新数据输出插入后所有数组元素(3)调试运行。.用“起泡法”对10个数排序(由小到大)。程序运行效果如图2.11所示。要求:(1)对于原数组初始化,采用动态方式或定义时直接赋值方式都可以:(2)在窗体中显示原数组、排序中、排序后数组。1234567898gngnIIBM-3.3565507525377295趟迨迨趟跨趟趟趟趟1234567898gngnIIBM-3.3565507525377295趟迨迨趟跨趟趟趟趟序序序序序序后后后后后后8072372525252525107520050553275S313H275777505732'3'33312,257550653510373737Q55O555555631666665055000007563155551065351072727272727218888818818

ISO5555555959595959595959S95显示排序后的数犯10253537506572758095图2.11【实训11】程序运行效果实验分析:(1)“起泡法”的思路是:将相邻两个数比较,将小的调到前头;最终是大数“沉底",小数“浮起”。(2)若有5个数。8888r-i;9h5555目J加4444:_4H2222邑J9第1次第2次第3次第4次结果第一趟比较:5个数比较4次,最大数“沉底”TOC\o"1-5"\h\z;8n ,5. 5 5;5j :8+ 4 44蛾叫22 2 ;2y 89第1次第2次第3次结果第二趟比较:4个数比较3次,次大的数“沉底”% 4 4।।A r-i:4H :5h 2।ir2 :2p 589第1次第2次结果第三趟比较:3个数比较2次,第三大的数“沉底”24589第1次结果

第四趟比较:2个数比较1次,最小的数“浮起”从以上分析,可以推知:如果有n个数,则要进行n-l趟比较:在第1趟比较中要进行n-l次两两比较,在第j趟比较中要进行n-j次两两比较。(3)用双重For循环控制比较几趟和每趟比较的次数;(4)用两个For循环实现排序前后数组元素的输出。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)单击【视图】|【代码窗口工打开【代码窗口】,选择【通用】对象声明,添加如下代码:OptionExplicit 1显示声明变量OptionBase1 ,指定数组下标从1开始(3)选择【窗体】对象的Click事件,为窗体的Form_Click()事件过程添加如下代码:PrivateSubForm_Click()Dima,iAsInteger,jAsInteger,tAsInteger,j1AsInteger,nAsIntegera=Array(80,95,72,37,25,75,50,65,35,10),用Array。函数对数组进行初始化n=UBound(a) 1求数组上界Print”显示原数组:"'输出排序前数组Fori=1ToUBound(a)Printa(i);Nexti:Print1排序Forj=1Ton-1 '外循环控制比较趟数Fori=1Ton-j '内循环控制两两元素比较的次数Ifa(i)>a(i+l)Thent=a(i):a(i)=a(i+1):a(i+l)=tEndIfNextiPrint:Print"第j;”趟排序后“;Fori=1TonPrinta(i);NextiNextjPrint:PrintPrint”显示排序后的数组”'输出排序后数组Fori=1TonPrinta(i);NextEndSub(4)调试运行。12.用“选择法”对10个数排序(由大到小)。程序运行效果如图2.12所示。要求:(1)对于原数组初始化,采用动态方式或定义时直接赋值方式都可以;(2)当单击窗体时,显示原数组和排序后数组。・数组应用-选掾法排序 图回区96 31 28 28 2S 4084 91 79 80棒序结果:96 91 84 80 79 4031 28 28 25图2.12【实训12】程序运行效果实验分析:“选择法”的思路是:设有10个元素a⑴〜a(10),将a⑴与a⑵〜a(10)比较,若a(l)比a⑵〜a(10)都大,则不进行交换,即无任何操作。若a(2)〜a(10)中有一个以上比a(l)大,则将其中最大的一个数(假设为a(i))与a(l)交换,此时a(l)中存放的是10个数中最大的数。第二轮将a⑵与a(3)~a(10)比较,将剩下9个数中的最大数(假设为a(i))与a(2)交换,此时a(2)中存放的是10个数中第二大的数。依此类推,共进行9轮比较,a(1)〜a(10)就已按由大到小的顺序存放。(2)在每轮的比较过程中,只记录每一次比较中较大数的位置(即数组下标),当每轮比较结束时,再将每轮比较的最大数与数组相应位置元素交换。这样能够提高程序运行效率。(3)用双重For循环控制比较几轮和每轮比较的次数;(4)用两个For循环实现排序前后数组元素的输出。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)单击【视图】|【代码窗口】命令,打开【代码窗口工选择窗体的Click事件,为窗体的Form_Click()事件过程添加如下代码:PrivateSubForm_Click()CisShowRandomizeDima(lTo10)AsIntegerPrint”Dima(lTo10)AsIntegerPrint”原始数据:”Forj=1To10a(j)=Int(91*Rnd+10)Printa(j);NextjPrint:PrintFori=1To9k=iForj=i+1To10Ifa(k)<a(j)Thenk=jEndIfNextjt=a(k):a(k)=a(i):a(i)=tNextiPrint”排序结果:"Forj=1To10Printa(j);NextjEndSub1产生10个随机数并输出,外循环控制几轮比较'假定第一个位置的元素最大,内循环控制每轮比较的次数,一轮比较结束交换位置,输出排序后数组(3)调试运行。.求一个数组中的最小数及其位置。程序运行效果如图2.13所示。要求:(1)对于原数组初始化,采用动态方式或定义时直接赋值方式都可以:(2)当单击窗体时,弹出输入数据对话框,对数组进行初始化,输入结束后,在窗体中显示原数组、最小数及其位置。♦数组使用-求最小数及其位置图2.13【实训13】程序运行效果实验分析:(1)定义三个变量Min、row、col分别用来存放当前数组中最小数及其位置(行下标、列下标)。(2)假定数组中第一个元素a(l,1)为最小数Min,并用row、col两个变量记录位置。(3)将Min与数组中各个元素进行比较,只要Min大于某一个数组元素,就将该数组元素赋给Min,并用row、col记录下该数组元素的位置。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)单击【视图】|【代码窗口工打开【代码窗口】,选择【窗体】对象的Click事件,为窗体的Form_Click()事件过程添加如下代码:PrivateSubForm_Click()CisPrint“数组内容是:“Dima(3,4)AsIntegerFori=1To3Forj=1To4a(i,j)=InputBox(“请输入一个数!”,“输入”,0)Printa(i,j);NextjPrintNextiMin=a(J,1) '假定数组中第一个元素为最小数row=1 ,记录当前位置col=1Fori=1To3 '将当前最小数与数组元素一一比较Forj=1To4IfMin>a(i,j)ThenMin=a(i,j)row=icol=jEndIfNextjNextiPrint"最小值是:,,&MinPrint”在第n&row&H行第"&col&H歹1EndSub(3)调试运行。.求一个数组中的最大数和最小数。程序运行效果如图2.14所示。要求:(1)由用户输入数组元素个数;(2)当单击窗体时,弹出输入数组个数对话框,确定后弹出输入数据时话框,对数组进行初始化,输入结束后,在窗体中显示原数组、最大数和最小数。«求最大致和最小数口叵1恨1图2.14【实训14】程序运行效果实验分析:(1)定义两个变量Min和Max分别用来存放数组中最小数和最大数。(2)假定数组中第一个元素a(l,1)为最小数Min和最大数Max,将Min和Max与数组中其他各元素进行比较,只要Min(Max)大于(小于)某一个数组元素,就将该数组元素赋给Min(Max)。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)单击【视图】|【代码窗口】,打开【代码窗口工选择【窗体】对象的Click事件,为窗体的Form_Click()事件过程添加如下代码:PrivateSubForm_Click()CisDimnAsInteger,iAsInteger,a()AsIntegern=InputBox(”请输入正整数的个数“,“输入”,5)ReDima(n)AsIntegerFori=1Tona(i)=InputBox(”请输入第“&i&”个正整数“,“输入数据”,0)NextiMax=a(l)Min=a(l)Fori=2Ton '将Min和Max与数组中其他各元素进行比较IfMax<a(i)ThenMax=a(i)IfMin>a(i)ThenMin=a(i)NextiPrint"最大正整数是:"&MaxPrint"最小正整数是:”&MinExitSubEndSub(3)调试运行。.打印下列形式的杨辉三角形。程序运行效果如图2.15所示。111121133114641

15101051要求:打印10仃。一打印杨辉三角形 。回区I16k16255153570126oP5E4405186611223816k16255153570126oP5E4405186611223884£2图2.15【实训15】程序运行效果实验分析:(1)杨辉三角形是(a+»展开后各项的系数。例如:系数为1系数为1系数为1系数为1、1系数为1、2、1系数为1、3、3、1系数为1、4、6、4,1(a+b)1展开后为a+b(a+b)2展开后为a"+2ab+b-(a+b)3展开后为a3+3a2b+3ab2+b3(a+b),展开后为a4+4a3b+6a2b2+4ab3+b4以上是杨辉三角形的前5行。(2)杨辉三角形各行的系数有以下规律:各行第一个数都是1各行最后一个数都是1从第3行起,除上面指出的第一个数和最后一个数外,其余各数是上一行同列和前一列两个数之和。可以这样表示:a(ij尸a(i-lj)+a(i-lj-l),其中i为数组的行数,j为数组的列数。(3)当单击窗体时打印杨辉三角形。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)单击【视图】|【代码窗口】,打开【代码窗口】,选择【窗体】对象的Click事件,为窗体的Form_Click()事件过程添加如下代码:PrivateSubFormClick()Dima(10,10)Fori=lTo10 '对值为1的数组元素赋值a(i,1)=1a(i,i)=1NextiFori=3TolO'对除值为1外的其他数组元素赋值Forj=2Toi-1

a(i,j)=a(i-l,j-l)+a(i-l,j)NextjNextiPrintFori=lTo10 '按杨辉三角形格式输出数组元素PrintTab(2);Forj=1lbiPrinta(i,j);NextjNextiEndSub(3)调试运行。16.设计一个程序,当鼠标左键单击程序中的色块时,改变文字颜色,当鼠标右键单击程序中的色块时,改变文字背景颜色。程序运行效果如图2.16所示。要求:使用控件数组建立色块。・控件数组,sua]Basic程序设计―单击鼠标左键改变字体颜色,单击鼠标右键改变背景色■«■■■■■ l・・II图2.16【实训16】程序运行效果实验分析:(1)使用文本框显示文字;(2)使用运行时建立控件数组的方法,载入颜色块;(3)通过处理鼠标事件改变文字颜色和背景颜色。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)在窗体上按图2.17添加控件,程序中各对象属性设置见表2-6。图2.17【实训16】程序设计界面表2-6[实训16]对象属性设置Form Caption控件数组Form Caption控件数组对象属性属性值对象属性属性值FrameCaption单击鼠标左键改变字体颜色,单击右键改变背景色OptionButtonCaption不BackColor&H00000000&Style1-GraphicalIndex0TextBoxCaption空(3)双击窗体,为Form_Load()事件过程添加如下代码:PrivateSubForm_Load()DimiAsIntegerFori=lTol5LoadOptionl(i),加载下标为i的控件数组元素WithOptionl(i),设置控件数组元素属性.Left=Optionl(i-l).Left+.Width,从左向右依次排列.BackColor=QBColor(i)'QBColor函数返回16种颜色之一.Visible=TrueEndWithNextEndSub在【代码窗口】中选择Optionl对象的MouseDown事件,为Optionl_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)事件过程添加如下代码:f单选钮的鼠标按下事件,判别按下的是左键还是右键PrivateSubOption1_MouseDown(IndexAsInteger,ButtonAsInteger,_ShiftAsInteger,XAsSingle,YAsSingle)1Button参数传送的是引起该事件的鼠标键IfButton=vbLeftButtonThen'若按下左键,设置文本框前景色Text1.ForeColor=Option1(Index).BackColorTndex=被选中的单选钮下标Else,若非左键,设置文本框背景色Text1.BackColor=Option1(Index).BackColorEndIfEndSub(4)调试运行。17.判断一个数m是否为素数。程序运行效果如图2.18所示。要求:(1)用Sub过程实现判断;(2)用户输入任意一个正整数:(3)显示判断结果。

・判断素数BEE谙输入一个正整数该数是素数・判断素数BEE谙输入一个正整数该数是素数图2.18【实训17】程序运行效果实验分析:(1)判断一个数m是否为素数的方法:①如果m不能被2〜mT之间的任何•个整数整除,则该数是素数;②如果m不能被2〜而之间的任何一个整数整除,则该数是素数(本题采用此种方法);(2)用文本框输入任意•个正整数;(3)用For语句遍历2〜而之间的所有整数,当m能被其中任何一个整数整除,则提前结束循环,此时循环变量i必然小于或等于向(k);如果m不能被其中任何一个整数整除,则在完成最后一次循环后,i还要加1,因此i=k+l,然后终止循环。在循环之后判别i的值是否大于或等于k+1,若是,则输出“是素数”。(4)用标签显示该数是否为素数。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)在窗体Forml上按图2.19所示添加控件,程序中各对象属性设置见表2-7。图2.19【实训17】程序设计界面表2-7[实训17]上对象属性设置对象属性属性值FormCaption判断素数Label1Caption请输入一个正整数Labcl2CaptionLabcl2TextBoxText空CommandButtonCaption判断(3)单击【视图】|【代码窗口】命令,打开【代码窗口】,在【代码窗口】中选择【通用】,在文本编辑区添加如下代码:PrivateSubS(xAsInteger)k=Sqr(x)Fori=2TokIfxModi=0ThenExitForEndIfNextiIfi>=kThenLabel2.Caption="该数是素数”ElseLabel2.Caption="该数不是素数”EndIfEndSub(4)双击窗体,为Form_Load()事件过程添加如下代码:PrivateSubForm_Load()Label2.Caption”EndSub(5)双击窗体中的上则按钮,为Commandl_Click()事件过程添加如卜.代码:PrivateSubCommand1_Click()DimmAsIntegerm=Val(Textl.Text)CallS(m)EndSub(6)调试运行。18.输入一个温度,要求用两种方式转换温度:(1)华氏温度一摄氏温度,公式为5 9-(F-32);(2)摄氏温度一华氏温度,公式为二尸+32。程序运行效果如图2.20所示。9 5要求:(1)温度转换用Function过程实现;(2)显不输入温度和转换温度。图2.20(1)华氏一摄氏・温标转换输入温度| 151c转换温度|~59: 下|「襄氏*氏1 华氏f摄氏|图2.20(2)摄氏一华氏实验分析:(1)自定义Function过程带有两个参数,一个是需要传递的输入温度参数(单精度型),另个是代表温度转换方式的参数(布尔型)。通过判别温度转换方式参数,执行不同的温度转换计算;(2)用两个文本框显示输入的温度和转换温度;(3)通过两个命令按钮Click事件,进行转换计算。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)在窗体Forml上按图2.21所示添加控件,程序中各对象属性设置见表2-8;图2.21【实训18】程序设计界面表2-8[实训18]Forml上对象属性设置对象属性属性值FormCaption温标转换Label1Caption输入温度Label2Caption转换温度Label3CaptionLabel3Labcl4CaptionLabcl4TextBoxltext空TcxtBox2text空CommandButton1(名称)cmdCtoFCaption摄氏一华氏CommandButton2(名称)cmdFtoCCaption华氏f摄氏(3)编写Function过程:在【代码窗口】的对象中选择【通用】,添加如下代码:,自定义函数PrivateFunctionTransTh(FAsSingle,blnCtoFAsBoolean)AsStringIfblnCtoF=TrueThenTransTh=Format(F*9/5+32,M0.#H) *摄氏一华氏ElseTransTh=Format((F-32)*5/9, ,华氏f摄氏EndIfEndFunction(4)双击窗体中的一摄氏『J命令按钮,为cmdCtoF_Click()事件过程添加代码:PrivateSubcmdCtoF_Click()*摄氏f华氏IfTrimS(Textl)=,H,ThenTextl="0”'调用自定义函数Text2.Text=TransTh(Val(Textl.Text),True)Label3=,,℃nLabel4=EndSub(5)双击窗体中的华氏T氏隘今按钿.为Form_Load()事件过程添加如下代码:PrivateSubcmdFtoC_Click()'华氏一摄氏IfTrimS(Textl)=,,nThenTextl="0"'调用自定义函数Text2.Text=TransTh(Val(Textl.Text),False)Label3="下”Label4=“℃”EndSub(6)双击窗体,为Form_Load()事件过程添加如下代码:PrivateSubForm_Load()Label3.Caption=Label4.Caption=EndSub(7)在【代码窗口】的对象中选择【Textl】,选择KeyPress事件,为Textl_KeyPress(KeyAsciiAsInteger)事件过程添力□如卜.代码:PrivateSubText1KeyPress(KeyAsciiAsInteger)1文本框键盘事件过程,若按键非数手键或回删键,取消按键IfNotIsNumeric(Chr(KeyAscii))AndKeyAscii<>8ThenKeyAscii=0EndIfEndSub(8)调试运行。.用不同的参数传递方式(“传值”和“传址”)调用“交换两个数”的过程。程序运行效果如图2.22所示。要求:(1)用Sub子过程实现交换两个数的功能;(2)分别显示“传值”和“传址”两种方式传递参数时,参数传递前、调用过程中和调用过程结束后两个变量存储情况。«.参数传递 KJ回区If1目吨•交换两个数的过程调用前:"100B=900调用过程中两个数交换蕾:X=100T=900调用过程中两个数交换后:X=9001=100交换两个数的过程调用后:A=100B=900传地址调园:交我两个数的过程调用前:A=100B=900调用过程中两个数交换前:X=1001=900调用过遵中甫个攀幻8后:X=900Y=100交换两个数的过理通用后:Q900B=100传值I [:传堪生济屏I图2.22[实训19]程序运行效果实验分析:(1)交换两个数的算法:借助于第三个变量t实现两个数的交换;(2)定义两个Sub子过程,一个用来实现“传值”,另一个用来实现“传址”;(3)单击两个命令按钮分别显示“传值”和“传址”两种方式传递参数时,参数传递前、调用过程中和调用过程结束后两个变量存储情况。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)在窗体Forml上按图2.22所示添加三个命令按钮控件,各对象属性设置见表2-9;表2-9【实训19】对象属性设置对象属性属性值FormCaption参数传递CommandButton1Caption传值CommandButton2Caption传地址CommandButton3Caption清屏(3)单击【视图】|【代码窗口】命令,打开【代码窗口】,选择对象中的【通用】,在文本编辑区添加如下代码:'传值Sub过程SubSwap1(ByVaiX%,ByVaiY%)DimT% '中间变量PrintTab(5);"调用过程中两个数交换前:X=";X;"Y=";YT=X:X=Y:Y=T '交换X、Y的值PrintTab(5);"调用过程中两个数交换后:X=";X;"Y=";YEndSub,传地址Sub过程SubSwap2(X%,Y%)DimT% '中间变量PrintTab(5);"调用过程中两个数交换前:X=";X;"Y=";YT=X:X=Y:Y=T ,交换X、Y的值PrintTab(5);"调用过程中两个数交换后:X=";X;"Y=";YEndSub(4)双击窗体中的传值|按钮,为Commandl_Click()事件过程添加如下代码:,传值调用SubCommand1_Click()DimA%,B%A=100:B=900Print"传值调用:"PrintTab(5);"交换两个数的过程调用前:A=";A;"B=";BCallSwap1(A,B)PrintTab(5);"交换两个数的过程调用后:A=";A;"B=";BEndSub(5)双击窗体中的传埴址|按钮,为Command2_Click()事件过程添加如下代码:'传地址调用PrivateSubCommand2_Click()DimA%,B%A=100:B=900PrintChr(13)Print"传地址调用:"PrintTab(5);"交换两个数的过程调用前:A=";A;"B=";BCallSwap2(A,B)PrintTab(5);“交换两个数的过程调用后:A=”;A;nB=";BEndSub(6)双击窗体中的清屏胺钮,为Command3_Click()事件过程添加如下代码:PrivateSubCommand3_Click()CisEndSub(7)调试运行。.编写一个求1〜5累加和的过程,试验在过程内使用Dim和Static定义变量的区别。程序运行效果如图2.24所示。要求:(1)用Function过程实现累加和;(2)显示使用Dim和Static定义变量执行的结果:■Di.与Static的区别 目叵,因DibStaticiSu»=1iSub=2iSun=3iSun=4iSuu=5iSu>=1iSub=3iSu»=6iSua=10iSu>=15用Di'定义i|图2.23【实训20】程序运行效果实验分析:(1)编写两个Function过程,一个过程中的局部变量用Dim定义,另一个过程中的局部变量用Static定义,但两者其他部分语句相同。(2)单击两个命令按钮分别显示使用Dim和Static定义变量执行的结果。实验步骤:(1)单击【文件】|【新建工程】命令,建立一个新工程("标准EXE");(2)在窗体Forml上按图2.23所示添加控件,程序中各对象属性设置见表2-10;表2-10【实训20】上对象属性设置对象属性属性值FormCaptionDim与Static的区别Label1CaptionDimLabel2CaptionStaticPictureBoxlFont五号PictureBox2Font/l.')CommandButton1Caption用Dim定义CommandButton2Caption用Static定义(3)单击【视图】|【代码窗口】命令,打开【代码窗口】,选择对象中的【通用】,在文本编辑区添加如下代码:,用Dim定义局部变量的过程PrivateFunctionsumDim(nAsInteger)DimjAsIntegerj=j+nsumDim=jEndFunctionf用Static定义局部变量的过程PrivateFunctionsumStatic(nAsInteger)StaticjAsIntegerj=j+nsumStatic=jEndFunction(4)双击窗体中的用口端定义胺钮,为Commandl_Click()事件过程添加如下代码:,调用Dim定义局部变量的过程PrivateSubCommand1_Click()Picture1.CisDimiAsInteger,iSumAsIntegerFori=1To5iSum=sumDim(i)Picture1.PrintHiSum=";iSumNextiEndSub(5)双击窗体中的用s。“淀义|按钮,为Command2_Click()事件过程添加如下代码:'调用Static定义局部变量的过程PrivateSubCommand2_Click()Picture2.ClsDimiAsInteger,iSumAsIntegerFori=1To5iSum=sumStatic(i)Picture2.PrintHiSum=";iSumNextiEndSub(6)调试运行。实验总结通过了本章的上机实验,学员应该能够掌握VisualBasic常量、变量的概念、定义方法,用Dim与Static定义变量的区别;掌握选择结构、循环结构程序设计方法;掌握数组的定义方法,正确理解和使用数组元素的下标,熟练掌握数组元素的引用、赋值、输入与输出等操作。了解通用过程、参数传递的方式。第3章VisualBasic的基本控件上机实训实驱目的掌握窗体的使用,树立可视化的编程思想及VisualBasic程序设计的事件驱动方法掌握常用标准控件的常用属性、重要事件和基本方法了解控件数组的作用,灵活运用控件数组,掌握控件数组的使用、属性的设置及其事件的执行掌握使用MsgBox函数建立消息框的基本方法灵活地利用输入对话框输入各种信息掌握通用对话框的使用方法了解菜单编辑器的作用,掌握使用【菜单编辑器】设计菜单的步骤、方法和技巧掌握窗口菜单、弹出式菜单和动态菜单的设计方法实验过程.在图3.1所示的窗体中,指定窗体的高和宽为屏幕高度和宽度的一半,程序运行后,在指定窗体上装入一幅图片,并且窗体位于屏幕的中间。当单击窗体,将在窗口内显示“欢迎你!”,当双击窗体,程序退出;当按下了键盘上的某个键,将在窗体内显示按下键所对应的ASCII应的ASCII码数值:当改变窗体的尺寸时,图3.2所示。使窗体始终保持在屏幕的中央。其运行结果如图3.2【实训1】图3.2【实训1】程序运行时的界面图3.1【实训1】程序的设计界面实验分析:只要启动应用程序,窗体被装入内存,就会触发Load事件,在窗体的Load事件中,设置窗体的属性,完成图片的装载、窗体的定位与高、宽的设置。当鼠标单击窗体,会触发窗体的Click事件。在该事件中,使用窗体的Print方法显示文本。当鼠标双击窗体,会触发窗体的DbClick事件。在该事件中,使用End结束语句退出程序。当用户从键盘上敲入一个字母,就会触发KeyPress事件,在窗体的KeyPress事件中,KeyAscii返回按下键的ASCII值。当改变窗体的尺寸时,会触发Resize事件,在该事件中,使窗体始终位于屏幕的中央。实验步骤:选择窗体Forml,在【属性窗口】中进行各属性的设置,具体属性设置值见表3・10表3・1【实训1】对象属性设置对象属性属性值Form(名称)FormlCaption窗体的使用双击窗体Forml,进入【代码窗口】,然后编写如下的事件过程代码:PrivateSubForm_Load()Withfbrml.Width=screen.width/2,设置窗体的宽度为屏幕宽度的一半.Height=screen.height/21设置窗体的高度为屏幕高度的一半.Top=(screen.height-Height)/2,设置窗体的顶边的坐标值.Left=(screen.width-width)/2,设置窗体的左边的坐标值.Picture=LoadPicture(App.Path+”\"+"OOl.jpg")*在窗体中装载一幅图片EndwithEndSubPrivateSubForm_Click()FormLPrint"欢迎你!"EndSubPrivateSubForm_DblClick()EndEndSubPrivateSubForm_Resize()'使窗体始终后于屏幕的中央Top=(Screen.Height-Height)/2Left=(Screen.Width-Width)/2EndSubPrivateSubForm_KeyPress(KeyAsciiAsInteger)Print”你按下键的ASCII值是:"&KeyAscii,KeyAsci为按下键的ASCII值EndSub.如图3.3所示的窗体中,程序运行后,窗体上装入一幅图片,如果按下鼠标左键,则窗体变小,如果按卜.鼠标右键,则窗体变大。图3.3【实训2】程序的设计界面实验分析:在窗体的Load事件中,使用LoadPicture()函数完成图片的装载。在窗体的MouseUp事件中,根据Button的值的不同,判断按下的是鼠标的哪个键。如果Button=l,按下的是鼠标左键,如果Button=2,按下的是鼠标右键。实验步骤:选择窗体Forml,在【属性窗口】中进行各属性的设置,具体属性设置值见表3-2。表3-2【实训2】对象属性设置对象属性属性值Form(名称)FormlCaption窗体的鼠标事件双击窗体Forml,进入【代码窗口]然后编写如下的事件过程代码:PrivateSubForm_Load()Forml.Picture=LoadPicture(App.Path+"\"+"001Jpg")'装载图片EndSubPrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SelectCaseButton'按下左键Form1.Height=Form1.Height-500Form1.Width=Form1.Width-500'按下右键Form1.Height=Form1.Height+500Form1.Width=Form1.Width+500EndSelectEndSub

.界面设计如图3.4所示。界面上有一个标签、一个文本框和两个命令按钮。程序运行时可以在文本框内输入英文字母,如果输入的非英文字母,则会无法输入,同时会弹出一个如图3.5所示的消息框,单击转我就按钮,文本框内的英文字母会转换成大写字母,单击转换胡、写|按钮,文本框内的英文字母会转换成小写字母。图3.4【实训3图3.4【实训3】程序的设计界面图3.5消息框实验分析:当用户从键盘上敲入一个字母,就会触发KeyPress事件,可以通过该事件过程进行数据检验。为了判断用户输入的是否英文字母,可以利用这些英文字母所对应的ASCH值,英文字母的ASCH值在65与112之间,如果用户输入的英文字母的ASCII值在此范围内,说明输入了正确的字母,否则不正确。使用UCase()函数可以将英文字母转换成大写字母,使用LCase()函数可以将英文字母转换成小写字母。设置按钮的Visual属性值,可以使按钮显示或隐藏起来。实验步骤:在窗体上画一个标签框、一个文本框和两个命令按钮。在【属性窗口】中进行对象属性的设置,具体属性设置值见表3-3。表3-3【实训3】对象属性设置对象属性属性值Form(名称)FormlCaption文本框的应用1Label(名称)Label1Caption请在下面的文本框输入英文字母TextBox(名称)txtDisplaytext空MultilineTrueCommandButton1(名称)CmdUpperCaption转换成大写CommandButton2(名称)CmdLowerCaption转换成小写编写代码如下所示:

PrivateSubCmdLower_Click()txtDisplay.Text=LCase(txtDisplay.Text),将文本框内的字母转换成小写字母EndSubPrivateSubCmdUpper_Click()txtDisplay.Text=UCase(txtDisplay.Text),将文本框内的字母转换成大写字母EndSubPrivateSubtxtDisplay_KeyDown(KeyCodeAsInteger,ShiftAsInteger),将文本框的Locked属性设置为False,允许用户输入txtDisplay.Locked=FalsetxtDisplay.FontSize=18EndSubPrivateSubtxtDisplay_KeyPress(KeyAsciiAsInteger)'判断用户输入的是否英文字母,如不是则禁止输入,弹出消息框提示。IfKeyAscii<=63OrKeyAscii>=122ThentxtDisplay.Locked=TrueMsgBox”请输入英文字母!”EndIfEndSub.窗体界面设计如图3.6所示。程序运行时,在对应的前景色和背景色的文本框内输入数值(0〜255),文本框中显示的文字会发生相应的颜色变化,在字号大小的文本框内输入数值(1〜72),文本框中显示的文字会发生相应的字号大小的变化。如果输入的数值不在指定的范围内,会分别弹出如图3.7和图3.8所示的消息框提示输入的范围。图3.6【实训4图3.6【实训4】程序的设计界面图3.7消息框1图图3.7消息框1实验分析:使用文本框来完成颜色值和字号大小的输入,当文本框的内容改变时,会触发文本框的Change事件,在该事件过程中,对显示文本框中的文本进行相应的颜色和字号大小的设置。使用条件语句来判断所输入的数值是否在指定范围内,如果不在,则弹出消息框提示输入数据的范围。实验步骤:如图3.6所示设计窗体,在【属性窗口】中进行各对象属性的设置,具体属性设置值见表3-4。表3-4【实训4】对象属性设置对象属性属性值Form(名称)FormlCaption文本框的应用2Frame1Caption前景色Frame2Caption背景色Label1CaptionRLabel2CaptionRLabel3CaptionGLabel4CaptionGLabel5CaptionBLabel6CaptionBLabel7Caption字号大小TextBoxl(名称)Textltext空MaxLength3Index0TcxtBox2(名称)Textltext空MaxLength3Index1TextBox3(名称)Textltext空MaxLength3Index2TextBox4(名称)Textltext空对象属性属性值MaxLength3Index3TextBox5(名称)Textltext空MaxLength3Index4TextBox6(名称)Textltext空MaxLength3Index5TextBox7(名称)Text2text空MaxLength2TextBox8(名称)TxtDisplaytextHello程序代码编写如下所示:PrivateSubForm_Load(),设置前景色和背景色的初始值Textl(O).Text=0Textl(l).Text=OTextl(2).Text=0Textl(3).Text=255Textl(4).Text=255Textl(5).Text=255Text2.Text=20EndSubPrivateSubText1_Change(IndexAsInteger)c=Textl(Index).Text,判断所输入的颜色数值是否在0〜255之间Ifc<OOrc>255ThenMsgBox”所输入数值应在0〜255之间”SelectCaseIndexCaseO,1,2 '前景色Textl(Index).Text=0Case3,4,5 1背景色Textl(Index).Text=255EndSelectEndIfrl=Val(Textl(O).Text)gl=Val(Textl(l).Text)bl=Val(Textl(2).Text)r2=Val(Textl(3).Text)g2=Val(Textl(4).Text)b2=Val(Textl(5).Text),设置前景色txtDisplay.ForeColor=RGB(rl,gl,bl),设置背景色txtDisplay.BackColor=RGB(r2,g2,b2)EndSubPrivateSubText2_Change()b=Text2.Text,判断字号是否在1〜72之间Ifb<=OOrb>72ThenMsgBox”所输入数值应在1〜72之间”Text2.Text=20EndIf1设置字号txtDisplay.FontSize=Text2.TextEndSub.设计界面如图3.9所示,界面上有一个文本框、一个标签和三个命令按钮。程序运行时,EJEI按钮不可见,在文本框内输入密码,共有三次机会,单击晒胺钮,则会清除文本框中的内容。单击提交胺钮,程序将核对用户输入的密码与事先设定的密码是否一致。如果一致,则显示如图3.10所示的欢迎界面。若不一致则弹出消息框提示输入错误,在标签上显示剩下的次数,若三次都输入错误,则显示如图3.11所示的退出界面,如果单击按钮,退出程序。图3.9【实训图3.9【实训5】设计界面图3.10【实训5】欢迎界面图3.11[实训5]退出界面实验分析:将文本框的PasswordChar属性值设为星号“*",这样用户不论从键盘上输入什么字符,文本框都显示出星号。提交|按钮是用来通知程序,校验用户输入的密码是否正确,球|按钮是用来通知程序清除文本框的信息。里口按钮是用来结束程序的运行。设置按钮的Visible属性可以令按钮显示或隐藏起来。实验步骤:在窗体上画一个标签框、一个文本框和三个命令按钮。具体属性设置值见表3-5。表3-5[实训5]对象属性设置对象属性属性值Form(名称)FormlCaption登录(密码:123456)Label(名称)LblDisplayCaption请输入密码,你一共有三次机会!TextBox(名称)txtPWtext空passwordChar*CommandButton1(名称)CmdOkCaption提交CommandButton2(名称)CmdClearCaption清除CommandButton3(名称)CmdExitCaption退出程序代码编写如下所示:DimnAsIntegerPrivateSubcmdclear_Click()TxtPW.Text=TxtPW.SetFocusEndSubPrivateSubcmdExit_Click()EndEndSubPrivateSubCmdOk_Click()pw$=123456n=n-1,如果密码正确,则弹出消息框,进入欢迎界面,如果三次密码输入错误,进入退出界面IfTxtPW.Text=pw$ThenMsgBox”密码正确,欢迎进入本系统!”Form1.Caption="欢迎光临!”LblDispIay.Visible=FalseTxtPW.Visible=FalseCmdOk.Visible=Falsecmdclear.Visible=FalsecmdExit.Visible=TrueElseIfno0ThenMsgBoxM密码错误,请重新输入!”TxtPW.Text=TxtPW.SetFocusElseMsgBox"你已经没有机会了!*'Fonnl.Caption="退出系统”LblDispIay.Visible=FalseTxtPW.Visible=FalseCmdOk.Visible=Falsecmdclear.Visible=FalsecmdExit.Visible=TrueEndIfLblDisplay.Captkm=”请输入密码,你还有“&n&”次机会!”EndIfEndSubPrivateSubForm_Load()n=3 1共有三次机会cmdExit.Visible=False*退出按钮不可见EndSubPrivateSubTxtPW_Change()TxtPW.FontSize=18EndSub.设计一个如图3.12所示的界面,界面上部有一个标签,中间有一个框架和四个单选钮,下部有一个标签。程序运行后,当单击单选钮后,会在下面的标签内显示“正确”

或“错误”的信息。图3.12【实训6】程序的设计界面实验分析:建立一个单选钮的控件数组,当单击其中任一单选钮时,都会触发控件数组的Click事件,在该事件中,根据索引值来判断单击哪个单选钮,然后会在下面的标签上显示相应的对与错的信息。实验步骤:设计窗体如图3.12所示,具体属性设置值见表3-6o表3-6【实训6】对象属性设置对象属性属性值Form

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论