Visual Basic实验.docx
《Visual Basic实验.docx》由会员分享,可在线阅读,更多相关《Visual Basic实验.docx(35页珍藏版)》请在冰豆网上搜索。
VisualBasic实验
VisualBasic环境和程序设计初步
一、实验目的
1.了解VisualBasic系统对计算机软、硬件的要求。
2.掌握启动与退出VisualBasic的方法。
3.掌握建立、编辑和运行一个简单的VisualBasic应用程序的全过程。
4.掌握常用控件(文本框、标签、命令按钮)的应用。
二、实验内容
1.启动VisualBasic6.0,创建一个"标准EXE"类型的应用程序,要求:
在屏幕上显示"欢迎您使用VisualBasic",并"请输入您的姓名";屏幕设计的界面如图2.1.1,以Sy1-1.frm和Sy1-1.vbp文件名保存在您的软盘上。
提示:
(1)程序中用到2个标签和1个文本框,标签显示所需的文字,文本框用于输入您的姓名,最多输入4个字符,对于2个标签内的字号大小可在标签的属性窗口中选择Font属性改变。
(2)"欢迎您使用VisualBasic"要在两行显示,只要将Label1控件的宽度缩小一些。
图2.1.1:
实验1.1运行界面
2.模仿教材例题,练习对窗体三个事件过程(Load、Click、DblClick)的编程,三个事件中装入不同的图片,可以是你自己喜欢的任何图片;练习对鼠标指针的改变,改变为Key04.ico图标文件;练习对窗体图标、边框线类型、最大化按钮和最小化按钮的改变。
3.字号、按钮、随机函数练习。
在文本框输入一字符串,对字符格式进行设置,包括字体(FontName)、字号(FontSize);文本框有垂直滚动条,效果见图2.1.3。
图2.1.3:
实验1.3运行界面
提示:
对字体设置必须将字体在双引号内括住,例如Text1.FontName="宋体"。
4.Move方法练习,移动具有浮雕效果的文字。
在窗体插入图片,文件名为So02963_.wmf(读者也可插入你所喜欢的图片),窗体上以浮雕效果显示的字符串"新年快乐",还有两个命令按钮,文件Point02.ico表示左指向、文件Point04.ico表示右指向,如图2.1.4所示。
要求当单击左指向按钮,字符串"新年快乐"向左移动50;单击右指向按钮,向右移动50。
提示:
(1)浮雕效果的实现见教学篇例2.5,也就是建立两个相同属性(大小、文字)的标签,通过设置BackStyle为0(透明)、ForeColor字颜色、Left和Top位置等属性。
(2)移动利用Move方法,因为浮雕效果的实现通过2个标签来实现,所以移动时也同时进行。
例如,对Label1向左移动语句为:
'…………………………………………………………
Label1.MoveLabel1.Left-50
Label2.MoveLabel2.Left-50
'…………………………………………………………
上述用Move方法实现移动,也可利用对属性的改变实现移动,语句为:
'…………………………………………………………
Label1.Left=Label1.Left-50
'…………………………………………………………
(3)Point02.ico等的图标文件在VisualBasic的..graphics\Icons\Arrows目录下,读者也可以通过Windows的"查找"功能来找到。
图2.1.4:
实验1.4运行界面
顺序程序设计
一、实验目的
1.掌握表达式、赋值语句的正确书写规则。
2.掌握常用函数的使用。
3.掌握InputBox与MsgBox的使用。
二、实验内容
1.编一个华氏温度与摄氏温度之间转换的程序,运行界面如图2.2.1所示。
图2.2.1:
实验2.1运行界面
华氏温度与摄氏温度之间转换的公式是:
'摄氏温度转化为华氏温度,F为华氏
'华氏温度转化为摄氏温度,C为摄氏
要求用按钮实现转换。
即单击"华氏转"按钮,则将摄氏温度转换为华氏温度;同样,单击"摄氏转"按钮,则将华氏温度转换为摄氏温度。
提示:
(1)Text文本框存放的String类型,为了程序正常运行,应通过Val()函数将字符串转换为数值类型。
(2)上述公式中右边的变量F、C应该是有值的,该值可通过Text1、Text2分别赋值获得。
例对文本框1(Text1)输入的华氏温度,要在文本框2显示转换后的摄氏温度,事件过程如下:
是即:
'…………………………………………………………
PrivateSubCommand1_Click()
Dimf!
c!
'使用变量
f=Val(Text1)'f变量有了值
c=5/9*(f-32)
Text2=c
EndSub
'…………………………………………………………
也可以不用f\c变量,直接利用文本框实现,即:
'…………………………………………………………
PrivateSubCommand1_Click()
Text2=5/9*(Val(Text1)-32) '不使用变量,直接使用文本框
EndSub
'…………………………………………………………
两者效果相同。
对于摄氏温度转化为华氏温度,请读者自行完成。
.
2.输入半径,计算圆周长和圆面积,见图2.2.2。
进一步要求,为了保证程序运行的正确,对输入的半径要进行合法性检查,若发现输入的数中有非法数字(调用IsNumeic函数),参阅教材例2.7,利用MsgBox显示出错信息,通过SetFocus方法定位于出错的文本框处,重新输入;计算结果保留2位小数。
图2.2.2:
实验2.2运行界面
3.我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。
提示:
已知年增长率r=0.8%,求人数超过26亿的年数n公式为:
其中:
Log(x)为对数函数.
4.利用计算机解决古代数学问题"鸡兔同笼问题"。
即已知在同一笼子里有总数为m只鸡和兔,鸡和兔的总脚数为n只,求鸡和兔各有多少只?
提示:
m,n通过InputBox函数获得;鸡、兔的只数通过已知m,n列出方程可解,但不要求出荒唐的解(例3.5只鸡、4.5只兔,或者求得的只数为负数,也就是对输入的总脚数必须是偶数,并且脚数应是头数的倍数),若出现荒唐的解,要求显示有关信息,并重新输入。
5.窗体上有2个命令按钮,第一个按钮显示"文字处理"、第二个按钮显示"VB6.0",要求单击命令按钮,利用Shell函数执行对应的应用程序。
提示:
(1)"文字处理"即Word软件的可执行文件名为"WinWord.exe",可通过"开始"菜单的"查找"命令,找到该文件,单击鼠标右键在快捷菜单的"属性"选项中可显示文件的路径,通过复制、粘贴可将文件路径和文件名取到Shell函数中。
(2)"VB6.0"即VisualBasic6.0软件的可执行文件可通过"开始"菜单的"程序"子菜单项,然后指向对应的菜单项,单击鼠标右键在快捷菜单的"属性"选项中可显示文件标识符,通过复制、粘贴可将文件标识符取到Shell函数中。
图2.2.3:
实验2.5运行界面
顺序程序设计
一、实验目的
1.掌握表达式、赋值语句的正确书写规则。
2.掌握常用函数的使用。
3.掌握InputBox与MsgBox的使用。
二、实验内容
1.编一个华氏温度与摄氏温度之间转换的程序,运行界面如图2.2.1所示。
图2.2.1:
实验2.1运行界面
华氏温度与摄氏温度之间转换的公式是:
'摄氏温度转化为华氏温度,F为华氏
'华氏温度转化为摄氏温度,C为摄氏
要求用按钮实现转换。
即单击"华氏转"按钮,则将摄氏温度转换为华氏温度;同样,单击"摄氏转"按钮,则将华氏温度转换为摄氏温度。
提示:
(1)Text文本框存放的String类型,为了程序正常运行,应通过Val()函数将字符串转换为数值类型。
(2)上述公式中右边的变量F、C应该是有值的,该值可通过Text1、Text2分别赋值获得。
例对文本框1(Text1)输入的华氏温度,要在文本框2显示转换后的摄氏温度,事件过程如下:
是即:
'…………………………………………………………
PrivateSubCommand1_Click()
Dimf!
c!
'使用变量
f=Val(Text1)'f变量有了值
c=5/9*(f-32)
Text2=c
EndSub
'…………………………………………………………
也可以不用f\c变量,直接利用文本框实现,即:
'…………………………………………………………
PrivateSubCommand1_Click()
Text2=5/9*(Val(Text1)-32) '不使用变量,直接使用文本框
EndSub
'…………………………………………………………
两者效果相同。
对于摄氏温度转化为华氏温度,请读者自行完成。
.
2.输入半径,计算圆周长和圆面积,见图2.2.2。
进一步要求,为了保证程序运行的正确,对输入的半径要进行合法性检查,若发现输入的数中有非法数字(调用IsNumeic函数),参阅教材例2.7,利用MsgBox显示出错信息,通过SetFocus方法定位于出错的文本框处,重新输入;计算结果保留2位小数。
图2.2.2:
实验2.2运行界面
3.我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。
提示:
已知年增长率r=0.8%,求人数超过26亿的年数n公式为:
其中:
Log(x)为对数函数.
4.利用计算机解决古代数学问题"鸡兔同笼问题"。
即已知在同一笼子里有总数为m只鸡和兔,鸡和兔的总脚数为n只,求鸡和兔各有多少只?
提示:
m,n通过InputBox函数获得;鸡、兔的只数通过已知m,n列出方程可解,但不要求出荒唐的解(例3.5只鸡、4.5只兔,或者求得的只数为负数,也就是对输入的总脚数必须是偶数,并且脚数应是头数的倍数),若出现荒唐的解,要求显示有关信息,并重新输入。
5.窗体上有2个命令按钮,第一个按钮显示"文字处理"、第二个按钮显示"VB6.0",要求单击命令按钮,利用Shell函数执行对应的应用程序。
提示:
(1)"文字处理"即Word软件的可执行文件名为"WinWord.exe",可通过"开始"菜单的"查找"命令,找到该文件,单击鼠标右键在快捷菜单的"属性"选项中可显示文件的路径,通过复制、粘贴可将文件路径和文件名取到Shell函数中。
(2)"VB6.0"即VisualBasic6.0软件的可执行文件可通过"开始"菜单的"程序"子菜单项,然后指向对应的菜单项,单击鼠标右键在快捷菜单的"属性"选项中可显示文件标识符,通过复制、粘贴可将文件标识符取到Shell函数中。
图2.2.3:
实验2.5运行界面
循环结构程序设计
一、实验目的
1.掌握For语句的使用。
2.掌握Do语句的各种形式的使用。
3.掌握如何控制循环条件,防止死循环或不循环。
二、实验内容
1.用单循环显示有规律图形,如图2.4.1。
提示:
(1)对于特殊字符"★"、"☆"通过汉字标准输入的软键盘
菜单中的"特殊符号"命令来实现。
(2)循环体内显示n个字符用String函数来实现,例如函数:
String(5,"★")将产生"★★★★★";本例要找出循环控制变量i与String函数内个数的关系,即:
String(2*i,"★")。
(3)每个"★"的列宽约为2,要显示如图的图形,必须定好每行的起始位,本例为:
Tab(20-2*i)。
图2.4.1:
实验4.1运行界面
图2.4.2:
实验4.2运行界面
2.用单循环实现如图2.4.2。
提示:
(2)与实验4.1类似,找出每一行的输出语句的通项表示,形式为:
PrintTab(x);"★";String(y,"☆");"★"
其中x,y是要与循环变量与关的表达式,请你自己解决。
3.编一程序,计算100以内的所有7或5的倍数和,并将这些数在文本框每一个为一行显示,如图2.4.3所示。
图2.4.3:
实验4.3运行界面
提示:
要在文本框每行显示一个,首先设置文本框的"MultiLine"属性为True和"ScrollBars"为非0;然后通过每产生的一个数x执行如下语句在文本框显示:
'…………………………………………………………
Text1=Text1&x&vbCrLf
'…………………………………………………………
其中:
vbCrLf为回车换行的VB符号常数
4.计算
当第i项的值<10-4时结束。
提示:
找出规律,第i项的分母是前一项的分母加上表示有分母项开始计数。
5.计算的近似值,的计算公式为:
提示:
要防止大数相乘时溢出问题,将变量类型和常数2改为双精度型(即2#)。
6.编一程序,显示出所有的水仙花数。
所谓水仙花数,是指一个3位数,其各位数字立方和等于该数字本身。
例如,153是水仙花数,因为
。
提示:
解该题的方法有两种:
(1)利用三重循环,将三个个位数连接成一个3位数进行判断。
例如,将i,j,k三个个位数连成一个三位数的表达式为:
i*100+j*10+k
将1~9连接成一个123456789的9位数,程序段如下:
'…………………………………………………………
s=0
Fori=1To9
s=s*10+i
NextI
'…………………………………………………………
(2)利用单循环将一个3位数逐位分离后进行判断。
例如,将123456789的一个9位数,从右边开始逐位分离,程序段如下:
'…………………………………………………………
s=123456789
DoWhiles>0
s1=sMod10
s=s\10
Prints1;'从右边开始显示分离出每一位
Loop
'…………………………………………………………
7.求Sn=a+aa+aaa+aaa+…aa…aaa(n个a),其中a是一个由随机数产生的1~9(包括1,9)中的一个正整数,n是一个由随机数产生的5~10(包括5,10)中的一个数。
例如:
当a=2,n=5时,Sn=2+22+222+2222+22222。
提示:
为了得到不断重复a的n位的数Temp,可用如下程序段实现:
'…………………………………………………………
Temp=0
Fori=1Ton
Temp=Temp*10+a
Nexti
'…………………………………………………………
8.参阅教材例4.18,用迭代法求
,求立方根的迭代公式为:
假定x的初值为a,迭代到
为止。
迭代的流程图见图2.4.4。
显示a=3、27的值,并通过求a^(1/3)的表达式加以验证。
图2.4.4:
迭代法求根流程图
数组
一、实验目的
1.掌握数组的声明、数组元素的引用。
2.掌握静态数组和动态数组的使用差别。
3.应用数组解决与数组有关的常用算法。
二、实验内容
1.随机产生10个30~100(包括30,100)的正整数,求最大值、最小值、平均值,并显示整个数组的值和结果,如图2.5.1所示。
图2.5.1:
实验5.1运行界面
2.随机产生20个学生的计算机课程的成绩,统计各分数段人数。
即0~59、60~69、70~79、80~89、90~100,并显示结果。
产生的数据在窗体显示,统计结果在图形框显示,见图2.5.2。
图2.5.2:
实验5.2运行界面
提示:
声明一个数组mark(1to20),存放20个学生的成绩;声明一个数组s(5to9),分别存放分数段的人数,并且确定分数与s数组的下标关系,即:
'…………………………………………………………
k=mark(i)\10'i=1To20
SelectCasek
Case0To5'不及格的人数
s(5)=s(5)+1
Case9To10'>=90分的人数
s(9)=s(9)+1
Case6To8'其他三个分数段的人数
s(k)=s(k)+1
EndSelect
'…………………………………………………………
3.随机产生15个不重复的A~Z包括A,Z的大写字母,存放在字符数组中。
提示:
(1)要产生A~Z的字母,可通过调用函数Chr、Int、Rnd及找出字母对应的AscII码值的关系获得,即c=chr(int(rnd*26+65))。
(2)要产生不重复的字母,每产生一个,在数组中查找已产生的字母。
若找到,刚产生的字母作废,重新产生;找不到,则产生的字母放入数组中,下标加1。
假定刚产生的字母存放在c字符变量中,已产生的n个不重复的字母存放在s字符数组中,则产生不重复的有关程序段如下:
'…………………………………………………………
Dims(1to15)AsString*1,cAsString*1,FoundAsBoolean
……
s
(1)=Chr(int(rnd*26+65))
n=2
dowhilen<=15
c=Chr(int(rnd*26+65))
Found=False
Forj=1Ton-1
Ifs(j)=cThenFound=True
Nextj
IfNotfountThen
'没有找到,产生的字母非重复,存放到数组中
s(n)=c
n=n+1
EndIf
Loop
'…………………………………………………………
4.实行学分制,学生的平均绩点是衡量学生学习的重要依据。
成绩等级与绩点的关系见表2.5.1所示。
表2.5.1:
成绩等级与绩点的关系
等级
100~90
89~80
79~70
69~60
60以下
绩点
4
3
2
1
0
编一程序利用两个一维数组分别输入某学生的5门课程的学分、对应成绩,计算其平均绩点。
例如,某学生的5门课程的学分、成绩分别如表2.5.2,求该学生的平均绩点,程序运行结果见图2.5.3。
表2.5.2:
各课程学分与成绩
学分
3
2
3
4
1
成绩
78
98
83
68
90
图2.5.3:
实验5.4运行界面
5.随机产生10个数2位数,按从递增的次序排列,并将排序结果存放在文本框的控件数组中。
提示:
(1)本程序有两个事件过程,都要用到存放10个数据的数组,因此在通用声明段声明一个数组,例:
Dima%(0to9)。
(2)在"产生"命令按钮的Command1事件过程中随机产生10个数,存放在数组a,并在窗体显示。
(3)在"排序"命令按钮的Command2事件过程中,对a数组排序,并将排序的结果存放在文本框Text1()控件数组中,见图2.5.5。
(4)对Text1控件数组的建立,首先在设计时建立一个Text1控件,其"Index"属性为0,表示是控件数组,见图图2.5.4;在排序后通过如下语句建立其余控件数组元素,并显示:
'…………………………………………………………
Text1(0)=a(0)
Fori=1To9
LoadText1(i)'产生一个控件数组元素
Text1(i)=a(i)'将排好序的对应数组元素放入控件数组元素
Text1(i).Left=Text1(i-1).Left+Text1(i).Width+10'控件数组元素定位
Text1(i).Visible=True'控件数组元素显示
Nexti
'…………………………………………………………
图2.5.4:
实验5.5设计界面
图2.5.5:
实验5.5运行界面
6.完成本使用所配套的教材的第五章第3题,上机验证,见图2.5.6。
本题由6个命令按钮的事件过程构成,在4个图形框显示;为了多个事件过程访问A、B矩阵,这两个矩阵应在通用声明段声明。
要求:
(1)利用随机数生成两个矩阵(前者30~70范围、后者101~135)。
(2)将两个矩阵相加结果放入C矩阵中。
(3)将A矩阵转置,即行、列交换。
(4)统计A矩阵中最大值和下标。
(5)以下三角形式显示A矩阵、上三角形式显示B矩阵。
(6)求A矩阵两条对角线元素之和。
(a)产生A、B矩阵
(a)A+B矩阵相加
(c)A矩阵转置
(d)A矩阵中最大值和下标
(e)A下三角形式、B上三角形式
(f)A矩阵两条对角线元素之和
图2.5.6:
实验5.6运行界面
7.输入整数n,显示出具有n行的杨辉三角形。
一个具有8行的杨辉三角形运行结果如图2.5.7(a)所示。
若要显示如图2.5.7(b)所示的效果,原程序要作如何微小的改动?
提示:
解决此题的方法有以下要点:
(1)定义一个二维数组如图2.5.7(a),其中上三角各元素均为0,对下三角各元素进行设置:
第一列及对角线上均为1,其余每一个元素正好等于它上面一行的同一列和前一列的两个元素之和,即a(i,j)=a(i-1,j-1)+a(i-1,j)。
(2)利用TAB函数定每行显示的起始位,利用两重循环显示上三角各元素。
(3)为了便于控制,显示的内容在图形框(PictureBox)。
(a)
(b)
图2.5.7:
实验5.7杨辉三角形运行界面
8.自定义一个职工类型,包含职工号、姓名、工资。
在通用声明段声明一个职工类型的静态数组,可存放5个职工;窗体中设计3个文本框、2个命令按钮和1个图形框控件,文本框分别输入职工号、姓名、工资;当单击"添加"命令按钮,将文本框输入的内容添加到数组