Visual Basic实验-答案(3)

更新时间:2024-06-25 03:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学院 专业 (班级) 姓名 学号 任课教师

1

目录

实验一 Visual Basic编程环境和控件 ...................... 1 实验二 窗体及基本控件使用 ............................... 6 实验三 顺序结构程序设计 ................................ 13 实验四 选择结构程序设计 ................................ 19 实验五 选择结构程序设计(续) ........................... 24 实验六 循环结构程序设计 ................................ 32 实验七 循环结构程序设计(续) ........................... 36 实验八 常用控件 ....................................... 40 实验九 常用控件(续) .................................. 49 实验十 数组 .......................................... 54 实验十一 数组(续) .................................... 62 实验十二 顺序文件 ...................................... 66 实验十三 过程 ......................................... 72 实验十四 过程(续) .................................... 78 实验十五 菜单及通用对话框 ............................... 83 实验十六 随机文件(选作) ............................... 86 附录:VB统考编程题(精选) ............................... 89 期末自测题(A卷) ...................................... 99 期末自测题(B卷) ..................................... 104

2

实验报告的整理与编写

上机实验结束后,编写实验报告是软件工程的要求,也是培养科学作风的重要途径,实验报告的主要内容包括:

(1)实验目的

实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。因此,当我们着手做一个实验的时候,必须明确实验的目的,以保证达到课程所指定的基本要求。在写实验报告时,要进一步确认是否达到了预期的目的。

(2)实验内容

实验的目的是要通过解决一些具体问题来达到的。在书中,每一部分都安排了多个实验题目,根据教学安排、进度、实验条件、可提供的机时、学生的基础等因素,可以选择其中的几个或全部。因此,在实验报告中,实验内容是指本次实验中实际完成的内容。在每一个实验题目中,一般都提出一些具体要求,其中有些具体要求是为了达到实验目的而提出的,不仅有具体的实验题目,还应包括具体要求。

(3)程序设计说明

包括算法设计思路,必要的流程图,界面设计说明、使用模块及变量的说明等。 (4)源程序代码

Visual Basic的源程序包括界面设计和代码。程序设计的产品是程序,它应与算法或流程图相一致,要与用户界面设计一致。程序要有具有易读性,符合结构化原则。

(5)程序的运行结果(包括对不同测试数据的运行结果)

程序运行结果一般是输出语句所输出的结果。对于不同的输入,其输出的结果是不同的。因此,在输出结果之前一般还应注明输入的数据,以便对输出结果进行分析和比较。在程序的运行中,还必须用各种不同情况的数据进行调试,以检查程序能否正常运行。因为,有时程序对某些情况是可以正常运行的,而对某些特殊情况的数据可能会出现运行出错或死机,通过各种数据的调试,尽量做到程序不会出问题。

(6) 实验体会

分析和体会实验中碰到的问题及解决方法,这是实验报告中最重要的一项,也是最容易忽视的一项。实验过程中大量的工作是程序调试,在调试过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高自己的编程能力。因此,对实验的总结,最主要的是程序调试经验的总结。调试分析也包括对结果的分析。体会主要是指通过本次实验是否达到了实验目的,有哪些基本概念得到了澄清,碰到了那些以前没有见到的问题,最后采用什么方法得到解决等。

3

实验日期 年 月 日

实验一 Visual Basic编程环境和控件

一、实验目的

1、掌握启动与退出Visual Basic的方法。 2、掌握Visual Basic语言程序的开发环境. 3、掌握Visual Basic语言程序设计的方法与特点

4、掌握建立、编辑、运行和保存一个简单的Visual Basic应用程序的全过程。

二、实验内容

申请一个免费邮箱(如果已经有邮箱,请跳过),以便以后将每星期编制的程序压缩并存放在邮箱中(或者保存在U盘中),以便复习时用。

1. 创建第一个应用程序。编写一个简单程序,实现单击命令按钮时在文本框显示“单击命令按钮”,单击窗体空白处时在文本框显示“单击窗体”。 保存窗体文件名:SY1_1.frm,保存工程名:SY1_1.vbp。程序界面如图1 1.

所示。 图1.1 实验1的运行界面

【步骤】

① 启动Visual Basic6.0,在弹出的“新建工程”对话框中选择“标准EXE”。 ② 在窗体上建立一个文本框和一个命令按钮。

建立方法:在左边工具箱上,单击要绘制的控件的按钮,再把鼠标移到窗体,

按住鼠标左键画出所需大小的框体。或者是双击工具箱的要绘制的控件的按钮。 ③ 分别选中命令按钮和文本框,在属性窗口中对各属性进行设置,属性设置参照表:

1

表1.1 实验1属性设置

对象名称 窗体 文本框 命令按钮 属性 Caption Text Caption 属性值 我的第一个程序 (空) 命令按钮 ④ 双击命令按钮,进入代码窗口中命令按钮的默认事件,编写代码如下:

Private Sub Command1_Click()

Text1.Text = \单击命令按钮\ End Sub

⑤ 双击窗体的空白处,进入代码窗口中窗体的默认事件(Form_Load()),在右边的过程列表框中选择Click,,编写代码如下:

Private Sub Form_Click()

Text1.Text = \单击窗体\ End Sub

⑥ 单击工具栏上的

按钮,运行程序,分别单击命令按钮以及窗体空白处,观察

文本框上显示的内容有何变化。如果程序代码有错误,则进入代码窗口中调试程序。 ⑦ 单击工具栏上的⑧ 单击工具栏上的

盘上。

2. 建立一个应用程序, 界面如图1.2所示,窗体包含有一个文本框和三个按钮,要求文本框中的字体为14号黑体加粗,颜色为红色,且文本内容居中显示。编写代码实现:

按钮,结束程序运行。

按钮,将窗体、工程分别以SY1_1.frm、SY1_1.vbp保存在磁

图1.2 实验2 的运行界面

1)按“显示内容”按钮时,文本框显示“Hello,Visual Basic!; ”2)按“清屏”按钮时,文本框中文字消失;

3)按“结束”按钮后,程序结束。(提示:代码中输入End,则可结束应用程序运行)

2

2)单击命令按钮C1,则把按钮上的标题复制到文本框,并使按钮不可见; 3)单击窗体空白处,按钮可见但不可用。

? 必要属性设置

表2.2 实验2属性设置

对象名称 属性 mousepointer caption 属性值 2-cross Text1 C1

? 代码编写

复制 代码

Private Sub Form_Load()

Form1.caption= “修改文本框内容” End Sub

Private Sub C1_Click() Text1 = C1.Caption C1.Visible = False End Sub

Private Sub Form_Click() C1.Visible = True C1.Enabled = False End Sub

遇到的主要问题及分析:

3、窗体上有四个文本框,两个标题分别为“显示选中信息”“选中文本”的命令按钮。要求程序运行时,光标焦点在Text1上,按下Tab键后,光标焦点跳到在Text3上。在文本框Text1

8

中输入一些字符;要求编程实现: 图2.2 实验2.3文本信息选定窗体

1)在文本框Text1中输入一行文字并按回车(Enter)后,把Text1的内容设置为窗体的标题。

2)在Text1中选中其中一部分内容后,单击“显示选中信息”命令按钮,则把在Text1中被选中文本的第一个字符的顺序号,被选中文本的字符个数,被选中的文本内容分别显示在文本框Text2,Text3,Text4中。

3)分别在文本框Text2,Text3中输入你所希望文本框Tex1中选中文本信息的顺序号以及长度,单击“选中文本”命令按钮,则根据文本框Text2,Text3输入的内容,在Text1中选中对应的内容,同时在Text4中显示出来。

【提示】部分相关属性和事件:SelStart、SelLength、SelText、KeyPress

? 必要的属性设置

表2.3 实验3属性设置

对象名称 Text1 Text2 Text3 Text4 Command1 Command2 Text1 Text3 或者Text2

? 代码编写

属性 text text text text caption caption tabindex tabindex tabstop 属性值 “” “” “” “” 显示选中信息 选中文本 0 1 false 代码

Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Form1.Caption = Text1 End Sub

Private Sub Command1_Click() Text2 = Text1.SelStart Text3 = Text1.SelLength Text4 = Text1.SelText End Sub

遇到的主要问题及分析:

9

Private Sub Command2_Click() Text1.SelStart = Text2 Text1.SelLength = Text3 Text4 = Text1.SelText End Sub

或者 Private Sub Text1_LostFocus()

Text3.SetFocus End Sub

【提高题1】创建VB工程,运行时可将文本框中的文字缩小以及还原。

窗体中包括下列控件:标签、文本框和两个命令

按钮,窗体标题为“字符缩小”,文本框字号为30磅。 图2.3 实验提高1窗体

在文本框输入一串字符;按下“缩小”按钮时字号缩小为原来的一半(每按一下都会缩小为一半),界面如右图。

请完善以下代码:

Private Sub Form_Load()

Text1.FontSize = 30 ' 设置文本框原始字号 End Sub

Private Sub Command1_Click()

Text1.FontSize = __ Text1.FontSize / 2_' 将文本框字体每次缩小一半 End Sub

Private Sub Command2_Click()

__ Text1.FontSize = 30_____ ' 文本框的字体恢复为30 End Sub

【提高题2】 P260 实验A 。二、5. 命令按钮、

字号、内容和格式的复制练习!效果如右图。

要求:

10

1)Command1:使得Text1中的字体和字号根据 图2.4实验实验提高1窗体 命令按钮上显示的要求改变。

2)Command2:要求将Text1选中的内容及其字体格式复制到Text2文本框中。

? 代码编写

代码

Private Sub Command1_Click() Text1.FontName = \隶书\Text1.FontSize = 25 End Sub

Private Sub Command2_Click() Text2 = Text1.SelText

Text2.FontName = Text1.FontName Text2.FontSize = Text1.FontSize End Sub

遇到的主要问题及分析:

【选作题】参考P35,建立一个允许剪切、复制和粘贴的简单便笺板程序。可增加内容:利用MouseMove事件决定命令按钮的有效性, 即当选中内容,“剪切”、“复制”按钮有效,否则无效。

图2.5 窗体原始界面 按下运行按钮时的界面 选中文本框部分内容的界面 ? 代码编写

代码

Private Sub Form_Load() Command1.Enabled = False Command2.Enabled = False End Sub

Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Text1.SelText <> \

遇到的主要问题及分析:

11

Command1.Enabled =true Command2.Enabled =true End If End Sub

其他代码见p36

实验心得体会

成绩:教师签名:

12

实验日期 年 月 日

实验三 顺序结构程序设计

实验目的:

1.熟练掌握VB的基本数据类型。 2.熟练掌握基本的输入输出函数和语句。 3.掌握顺序结构程序设计的方法。

实验内容

1、定义两个变量a和b,它们的值分别由键盘输入。编程计算并输出a与b的和、差、积、商、a除以b的余数、a b的值。(要求自己设计窗体及输入、输出,必须有明确的示意提示)。

? 代码编写:

代码

Private Sub Form_Click() Dim a as integer,b as integer

a = Val(InputBox(\输入a的值\b = Val(InputBox(\输入b的值\Print \Print \Print \Print \

Print \End Sub

遇到的主要问题及分析:

2、定义一个变量a,由键盘输入其值为任意四位整数,编程实现分别输出个、十、百、千位四个数字,并各个数字的平方和。

【提示】利用mod和\\运算符将每一位分离。

13

? 代码编写:

代码

Private Sub Form_Click() Dim a As Integer Dim b%, c%, d%, e%

a = Val(InputBox(\输入a的值,要求4位整数\b = a Mod 10 '个位 c = a \\ 1000 '千位

d = (a - c * 1000) \\ 100 '百位 e = (a - c * 1000 - d * 100) \\ 10 Print \个位:\Print \十位:\Print \百位:\Print \千位:\

Print \平方和:\End Sub

遇到的主要问题及分析:

3、P262 实验B 二、1。 ? 代码编写:

代码

Private Sub Command2_Click()

Text1 = Format(9 / 5 * Val(Text2) + 32, \End Sub

遇到的主要问题及分析:

4、设计窗体并实现:

1)单击“连接”,将Text1和Text2的内容连接起来显示在Text3; 2)单击“求和”,求出Text1和Text2之和显示在Text3 ;

3)要求:在单击“连接”之前Text3不可见,点“连接”之后“连接”按钮不可用;

(a) 设计状态 (b) 运行状态

14

图3.1 实验3.4窗体

? 代码编写:

代码

Private Sub Command1_Click() Text3.Visible = True Text3 = Text1 & Text2

Command1.Enabled = False End Sub

Private Sub Command2_Click() Text3 = Val(Text1) + Val(Text2) End Sub

Private Sub Form_Load() Text3.Visible = False End Sub

遇到的主要问题及分析:

5、创建VB工程,界面如右所示,编程实现运行时可将标签中的文字字号随机放大(1~5整数倍)和(任意比例)缩小以及还原(原来字号)。界面如右图所示。

【提示】 图3.2 实验3.5窗体

1)将标签的AotuSize属性设置为False及True,看看有什么区别?

2)用一个变量在程序开始运行时记住标签中原始字体的大小(想想放在什么事件过程中?);这个变量还会在“还原”按键中使用,其说明语句要放在通用-声明中;

3)每次按放大或缩小按键都会在当前的基础上放大或缩小; 4)字体放大到一定程度会出现“溢出”的错误提示,可以先不管。

? 代码编写:

代码

Dim t

Private Sub Form_Load()

遇到的主要问题及分析:

15

t = Label1.FontSize End Sub

Private Sub Command1_Click()

Label1.FontSize = Label1.FontSize * Int(Rnd * 5 + 1) End Sub

Private Sub Command2_Click()

Label1.FontSize = Label1.FontSize * Rnd End Sub

Private Sub Command3_Click() Label1.FontSize = t End Sub

6、编程实现随机产生一个“F”~“S”范围内的大写字母,并输出该字母及其对应的ASCII码值,同时输出其小写字母及其对应的ASCII码的值。

? 代码编写:

代码

Private Sub Form_Click()

a = Int(Rnd * (83 - 70 + 1) + 70) Print Chr(a); \的ASCII值=\

Print LCase(Chr(a)); \的ASCII值=\End Sub

遇到的主要问题及分析:

【选作题1】编程解决古代数学问题“鸡兔同笼”。即已知在同一个笼子里有总数为m只鸡和兔,鸡和兔的总脚数为n只,求鸡和兔各有多少只?

【提示】鸡和兔的总数m、鸡和兔的总脚数n需要预先输入(文本框或输入框输入)。再设鸡和兔子的个数分别为x和y,通过已知输入的m和n;列出方程求解,分别用m,n两个已知量来表示x和y。

? 代码编写:

代码

Private Sub Form_Click() m = Val(Text1) n = Val(Text2) y = 1 / 2 * n - m x = 2 * m - 1 / 2 * n

Print \鸡有\兔子有\End Sub

遇到的主要问题及分析:

16

【选作题2】编程实现电话号码自动升位。要求将原来任意一个带区号的7位电话号码升到8位,在电话号码最前面加8。程序运行结果如图所示。(要求必须适用于3位或4位区号的电话号码)

【提示】无论区号或电话号码是多少位,只要找到“-”的位置,就可以将“-”之前(包括“-”)的左子串、“8”、以及“-”后面剩下的字符串 “串”起来。

? 代码编写:

代码

Private Sub Form_Click() a = InStr(Text1, \

Text2 = Left(Text1, a) + \End Sub

遇到的主要问题及分析:

【提高题】参考教材P33的例2.5及P65的例4.2,完成P263实验B 二、2。 ? 代码编写:

代码

Const PI = 3.14

Private Sub Command1_Click() r = Val(Text1)

Text2 = Format(PI * r ^ 2, \End Sub

Private Sub Command2_Click() r = Val(Text1)

Text3 = Format(2 * PI * r, \End Sub

Private Sub Text1_LostFocus() If Not IsNumeric(Text1) Then

MsgBox \输入有非数字字符,请重新输入\ Text1 = \

Text1.SetFocus End If End Sub

遇到的主要问题及分析:

17

Text1.SetFocus End If

If Len(Text1) <> 6 Then

MsgBox \密码是6位数字\警告\ Text1.Text = \ Text1.SetFocus End If End Sub

Private Sub Command1_Click()

If Text2.Text = \ MsgBox (\祝贺你,成功登录!\ Else

MsgBox (\对不起,密码错误,无法登录!\ I = I + 1

If I >= 3 Then End End If End Sub

6、在上周实验【提高题】的基础上完成,输入三角形的三条边,根据边长判断是否能构成三角形的程序,若能构成,则进一步判断三角形类型(等边、等腰、直角、一般)。

【提示】该题用分支嵌套来完成。

注:请在上周程序代码的适当位置用红笔来添加代码实现。

Private Sub Command1_Click() Dim a!, b!, c!

a = Val(InputBox(\输入第1条边长\b = Val(InputBox(\输入第2条边长\c = Val(InputBox(\输入第3条边长\

If a + b > c And b + c > a And a + c > b Then

If a = b And b = c Then MsgBox \等边\

ElseIf a = b Or b = c Or a = c Then MsgBox \等腰\

ElseIf a ^ 2 = b ^ 2 + c ^ 2 Or b ^ 2 = a ^ 2 + c ^ 2 Or c ^ 2 = a ^ 2 + b ^ 2 Then MsgBox \直角三角形\ Else

MsgBox \一般三角形\ End If Else

MsgBox \此三边不可构成三角形\End If End Sub

28

【选做题】开始运行如左下图所示,单击“出题”按钮后计算机自动出题,窗口如右下图所示,此时由用户输入加法运算答案,然后单击“判定”按钮。如果用户运算正确则提示“答对了,你真聪明!”,否则显示“错了,努力啊!”。再次按下“出题”就会再出一道题。

【提示】①计算机自动出题,显示的题目应该是随机的,所以这里必须使用随机函数Rnd,其值为 [0,1)间的随机数,如果要得到区间 [L,U] 中的随机整数,应使用表达式 Int((U-L+1)*Rnd+L) 。

②命令按钮Command1每次按下时其Caption属性会发生变化,从“出题”变成“判定”,又从“判定”变成“出题”。当它是“出题”时,按下就会随机出题;当它是“判定”时,按下就会对用户输入的答案判断对错。

【思考】多次执行这个程序,是否发现每次出的题目是一样的?如何解决?

【进一步修改程序】使得该工程只可执行10次,每执行一次,判断用户输入的答案是否正确,正确则得10分,错误则不给分。执行10次后,可给出总得分,然后关闭该窗体。

? 代码编写:

代码

Dim i As Boolean

Private Sub Command1_Click() If i = True Then

Text1 = Int(100 * Rnd + 1) '产生[1,100]之间的随机整数 Text2 = Int(100 * Rnd + 1) '产生[1,100]之间的随机整数 Command1.Caption = \判定\ i = False Else

If Text3 = Val(Text1) + Val(Text2) Then MsgBox \答对了,你真聪明!\ Else

MsgBox \错了,努力啊!\ End If i = True

Command1.Caption = \出题\

遇到的主要问题及分析:

29

End If End Sub

Private Sub Command2_Click() End End Sub

Private Sub Form_Load() i = True

Command1.Caption = \出题\

Randomize ?多次执行这个程序,每次出的题目不一样 End Sub

【进一步修改程序】

Dim i As Boolean Dim a%, b%

Private Sub Command1_Click() If a < 10 Then If i = True Then

Text1 = Int(100 * Rnd + 1) '产生[1,100]之间的随机整数 Text2 = Int(100 * Rnd + 1) '产生[1,100]之间的随机整数 Command1.Caption = \判定\ i = False Else

If Text3 = Val(Text1) + Val(Text2) Then MsgBox \答对了,你真聪明!\ b = b + 1 '统计答对的题数 Else

MsgBox \错了,努力啊!\ End If a = a + 1 i = True

Command1.Caption = \出题\End If End If

If a = 10 Then

MsgBox \答对了\End End If End Sub

Private Sub Command2_Click()

30

End End Sub

Private Sub Form_Load() i = True

Command1.Caption = \出题\

Randomize '多次执行这个程序,每次出的题目不一样 a = 0 b = 0 End Sub

实验心得体会

成绩: 教师签名:

31

实验日期 年 月 日

实验六 循环结构程序设计

实验目的:

1.掌握For语句和Do..Loop循环语句的使用。 2.掌握循环的规则及其执行过程。

3.掌握如何控制循环条件,防止死循环或不循环。

实验内容

1. 编写程序,输出7的倍数中十位数为2的所有3位数,并统计个数。

【进一步要求】求满足条件的数的平方和。 ? 代码编写:

代码

Private Sub Command1_Click() t = 0 s = 0

For i = 100 To 999

If i Mod 7 = 0 And Mid(i, 2, 1) = 2 Then Print i t = t + 1 s = s + i ^ 2 End If Next i

Print \满足条件的有\个\Print \End Sub

遇到的主要问题及分析:

2. 编写程序用Print语句输出2000年至2500年间的所有闰年,要求每行输出8个。

【提示】:

1)用任意一种循环语句来完成,在循环体内使用选择结构来判断条件。

2)设置一个计数器。每找到一个闰年,则输出年份(控制Print的输出格式,输出后不换行),并使计数器的值加1,当计数器的值正好是8的倍数时,则换行。

32

本文来源:https://www.bwwdw.com/article/cjx3.html

Top