<%@ page contentType="text/html; charset=gb2312" session="true" %> VB高级语言程序
 
您现在的位置: VB高级语言程序设计 >> VB习题
VB高级语言程序设计在线教程


例2.1 编写一个显示问候的程序。应用程序窗口的标题栏中显示“显示问候”,窗口中有一个文本框和两个命令按钮,单击第一个命令按钮时,在文本框中显示文本:“Hello Visual Basic!”。单击第二个命令按钮时程序退出。 (1)界面设计
(2)设置属性
设置属性后的用户界面如图所示 - 对象属性设置
(3)编写代码
打开代码窗口,在【对象列表框】中选CmdOK,在【过程列表框】中选Click,则代码窗口中出现CmdOK的Click事件过程模板。
在其中编写代码:
TxtHello.Text = "Hello Visual Basic!"
再编写CmdExit的Click事件过程如下:
Private Sub CMdExit_Click()
Unload Me
End
End Sub
(4)保存工程
(5)运行工程
(6)生成EXE
(7)打包创建发行介质


例2.2 了解Caption属性。使用对象:一个窗体上放一个标签和两个命令按钮。功能:程序装入时,窗体和标签的标题为“例题 2.1”,两个按钮的标题分别为Start和Exit;单击Start按钮,窗体和标签的标题改为“这里是Caption属性值!”,同时该按钮的标题改为OK;单击OK按钮,窗体和标签的标题改为“我已了解Caption属性”;单击Exit钮,则退出系统。
◆ 界面设计:如图所示 - 设置属性
◆ 编写代码
例2.2 FrmCaption中的代码:
Private Sub CmdExit_Click()
Unload Me
End
End Sub
Private Sub CmdStart_Click()
If CmdStart.Caption = "&Start" Then
FrmCaption.Caption = "这里是Caption属性值!"
LblCaption.Caption = "这里是Caption属性值!"
CmdStart.Caption = "&OK"
Else
FrmCaption.Caption = "我已了解Caption属性!"
LblCaption.Caption = "我已了解Caption属性!"
End If
End Sub



例2.3 在例2.1中,在窗体FrmHello中添加5个按钮,单击按钮,改变字型及大小。
新添加如下事件过程:
Private Sub CmdBold_Click()
TxtHello.Font.Bold = Not TxtHello.Font.Bold
End Sub
Private Sub CmdItalic_Click()
TxtHello.Font.Italic = Not TxtHello.Font.Italic
End Sub
Private Sub CmdSize_Click()
TxtHello.Font.Size = InputBox("请输入新的字号:", "字号输入", 18)
End Sub
Private Sub CmdStrikeThrouth_Click()
TxtHello.Font.Strikethrough = Not TxtHello.Font.Strikethrough
End Sub
Private Sub CmdUnderLine_Click()
TxtHello.Font.Underline = Not TxtHello.Font.Underline
End Sub



例2.4 颜色控制。界面:窗体上放5个按钮;功能:单击前三个按钮改变窗体的背景颜色为三种基色;单击第四个按钮,自动显示一种颜色;单击第五个按钮,屏幕背景由红逐渐变为蓝。


例2.4中FrmColor中的代码:
Private Sub Cmdred_Click()
FrmColor.BackColor = RGB(255, 0, 0)
End Sub
Private Sub Cmdgreen_Click()
FrmColor.BackColor = RGB(0, 255, 0)
End Sub
Private Sub Cmdbluen_Click()
FrmColor.BackColor = RGB(0, 0, 255)
End Sub
Private Sub Cmdauto_Click()
x = Rnd: y = Rnd: z = Rnd
i = Int(x * 255): j = Int(y * 255): k = Int(z * 255)
FrmColor.BackColor = RGB(i, j, k)
End Sub
Private Sub CmdTranslate_Click()
For i = 0 To 255
FrmColor.BackColor = RGB(255 - i, 0, i)
For j = 0 To 10000
For k = 0 To 5
Next k, j, i
End Sub


例2.5 绘图器。界面:空窗体作为绘图窗口,标签用于显示按键方式。功能:按下鼠标左键画红线,按下右键画蓝线,按下中间键画绿线;按下Shift/Ctrl/Alt改变线宽;双击窗体退出;按下或释放按键时均在标签中显示按键信息。

例2.5 Draw中的代码:
Dim oldx, oldy As Single
Private Sub Form_DblClick()
Unload Me
End
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
oldx = X: oldy = Y '记下当时坐标,作为画线的起点
FrmDraw.DrawWidth = Shift Or 1 '预设线宽为1
Select Case Button
Case 1
LblInfo.Caption = "按下了左键"
Case 2
LblInfo.Caption = "按下了右键"
Case 4
LblInfo.Caption = "按下了中间键"
End Select
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = False Then
Exit Sub
End If
r = (Button And 1) * 255
b = (Button And 2) / 2 * 255
g = (Button And 4) / 4 * 255
Line (oldx, oldy)-(X, Y), RGB(r, g, b)
oldx = X: oldy = Y
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
LblInfo.Caption = "释放了按键"
End Sub


例3.2 替换文本框中的字符串。文本框中显示一些字符,单击【替换字符】按钮,显示替换窗口,输入被替换字符和替换字符,单击【确定】按钮即可替换。

例3.2 Form2中的代码:
Private Sub Command1_Click()
Dim sold As String, snew As String :
Dim stext As String, s As String
Dim c As Integer, lsold As Integer
sold = Text1.Text: snew = Text2.Text
s = Form1.Text1.Text : c = InStr(s, sold) : lsold = Len(sold)
If c = 0 Then MsgBox sold & "找不到": Exit Sub
stext = Left(s, c - 1) & snew & Mid(s, c + lsold) : Form1.Text1.Text = stext
Form1.Show : Form2.Hide
End Sub


例3.3 编写一个程序进行加、减、乘、除四则运算。随机产生两个100以内的整数,单击【+】、【-】、【*】、【/】四个按钮之一,便显示出相应的计算结果。单击【Next】按钮,继续下一题。

例3.3 的代码:
Option Explicit
Dim a As Integer, b As Integer
Private Sub Form_Load()
Randomize : a = Int(Rnd * 100) : b = Int(Rnd * 100)
Lbldata1.Caption = Str(a) : lbldata2.Caption = Str(b)
lblEql = "="
End Sub
Private Sub cmdplus_Click()
lblop.Caption = "+" : lblResult.Caption = Str(a + b)
End Sub
Private Sub cmdminus_Click()
lblop.Caption = "-" : lblResult.Caption = Str(a - b)
End Sub
Private Sub cmdmulti_Click()
lblop.Caption = "*" : lblResult.Caption = Str(a * b)
End Sub
Private Sub cmddiv_Click()
lblop.Caption = "/" : lblResult.Caption = Str(Int(a / b * 100) / 100)号 '保留两位小数
End Sub
Private Sub cmdexit_Click()
End
End Sub
Private Sub cmdnext_Click()
Form_Load
End Sub



例3.4 命令按钮数组示例。在窗体中创建一个命令按钮数组(只一个元素),单击该命令按钮,增加一个新的命令按钮元素,单击另一个命令按钮,则删除新增加的元素。


Dim i As Integer
Private Sub Command1_Click(Index As Integer)
i = i + 1 : Load Command 1(i) : Command1(i).Visible = True
Command1(i).Caption = "Command(" & i & ")"
Command1(i).Top = Command1(i-1).Top+Command1(0).Height
End Sub
Private Sub Command2_Click()
If i <> 0 Then Unload Command1(i) : i = i - 1
End Sub


例4.5 算术教师。程序自动出一系列[1,100]以内整数的加、减、乘、除算式,输入答案后判断是否正确,结束时给出成绩。

例4.5的代码:
Dim Swrong, Sright, Result, Sexp
Private Sub Form_Load()
Dim Sdata1, Sdata2, Op, Nop
Sdata1 = Int(100 * Rnd) + 1 :Sdata2 = Int(100 * Rnd) + 1
Nop = Int(4 * Rnd) + 1
Select Case Nop
Case 1
Op = "+" : Result = Sdata1 + Sdata2
Case 2
Op = "-" : Result = Sdata1 - Sdata2
Case 3
Op = "×" : Result = Sdata1 * Sdata2
Case 4
Op = "÷" : Result = Sdata1 / Sdata2
End Select
Sexp = Sdata1 & Op & Sdata2 & "=" : Label1.Caption = Sexp
End Sub
Private Sub Command1_Click()
If Val(Text1) = Result Then
Picture1.Print Sexp; Text1; Tab(15); "√" : Sright = Sright + 1
Else
Picture1.Print Sexp; Text1; Tab(15); "×" : Swrong = Swrong + 1
End If
Text1 = "" : Form_Load : Text1.SetFocus
End Sub
Private Sub Command2_Click()
Picture1.Print "------------------"
Picture1.Print "一共计算" & Sright + Swrong & "道题"; "得分为" & Int(Sright / (Swrong + Sright) * 100)
End Sub



例4.6 排序。输入x,y,z三个数,按从大到小的次序显示。要求对输入的数应有测试手段,当输入有非数字字符时,显示“不能转换成数值”,并提示重新输入。
界面设计:界面上设计四个标签、三个文本框、一个按钮和一个图形框。
属性设置:

Option Explicit
Private Sub cmdpx_Click()
Dim a, b, c
a = Val(txtx) : b = Val(txty) : c = Val(txtz)
If a > b Then
If b > c Then

Pic1.Print a; ","; b; ","; c : ElseIf a > c Then : Pic1.Print a; ","; c; ","; b Else
Pic1.Print c; ","; a; ","; b End If

ElseIf b > c Then
If a > c Then
Pic1.Print b; ","; a; ","; c
Else
Pic1.Print b; ","; "; a"
End If
Else
Pic1.Print c; ","; b; ","; a
End If
End Sub
Private Sub txtx_LostFocus()
If Not IsNumeric(txtx) Then
MsgBox "非数字字符,不能转换成数值,请重新输入!", vbCritical
End If
End Sub
Private Sub txty_LostFocus()
If Not IsNumeric(txty) Then
MsgBox "非数字字符,不能转换成数值,请重新输入!", vbCritical
End If
End Sub
Private Sub txtz_LostFocus()
If Not IsNumeric(txtz) Then
MsgBox "非数字字符,不能转换成数值,请重新输入!", vbCritical
End If
End Sub


例4.7 ASCII对照表。将可打印的ASCII码(32~126)及其对应的字符制成表格输出,使每个字符与它的编码值对应起来,每行打印7个字符。


Option Explicit
Private Sub Picture1_Click()
Dim asc, i As Integer
Picture1.Print Tab(25); "ASCII码对照表"
For asc = 32 To 126
Picture1.Print Tab(7 * i + 2); Chr(asc); "="; asc;
i = i + 1
If i = 7 Then i = 0: Picture1.Print
Next asc
End Sub


例5.4 用定义法求正整数 m 以内的所有素数。要求:从键盘上输入 m 的值并回车,显示出 m 以内的所有素数。
根据素数的定义,要判断一个数x是否是素数,需要判断x是否能被2至x-1内的每一个自然数整除。若都不能整除,则x是素数。
界面设计 - 属性设置


Private Sub Txtm_KeyPress(KeyAscii As Integer)
Dim m As Integer, i As Integer, j As Integer
Dim k As Integer
If KeyAscii = 13 Then
m = Val(Txtm.Text)
For i = 2 To m
For j = 2 To i - 1
If i Mod j = 0 Then GoTo re
Next j
PicResult.Print i; "";: k = k + 1
If k = 5 Then PicResult.Print: k = 0
re: Next i
End If
End Sub





例5.6 编写一个函数,将一个十进制数 m 转换成 R(2-16)进制数。
用短除法将一个十进制数m转换成R(2-16)进制数的方法是:用 m 除以R得商和余数,若商不为0,再用商除以R得商和余数,直到商为0,以每次所得余数的反序组成的数(最后得到的余数是最高位),就是所求结果。如将十进制数10转换成二进制数。


Private Sub cmdtran_Click()
Dim idec0, ibase0 As Integer
idec0 = Val(txtdec.Text) : ibase0 = Val(txtr.Text)
If ibase0 < 2 Or ibase0 > 16 Then
i = MsgBox("输入的r进制数超出范围", vbRetryCancel)
If i = vbRetry Then
txtr.Text = "" : txtr.SetFocus
Else
End
End If
End If
st$ = "转换成" + txtr.Text + "进制数" : lbltran.Caption = st$
txtdecr.Text = trandec(idec0, ibase0)
End Sub
Private Function trandec(ByVal idec As Integer, ByVal ibase As Integer) As String
Dim idecr(60) As Integer : Dim ib, i As Integer
Dim strdecr As String * 60 : Dim strbase As String * 16
strbase = "0123456789ABCDEF"
i = 0
Do While idec <> 0
idecr(i) = idec Mod ibase : idec = idec\ibase : i = i + 1
Loop
strdecr = "" : i = i - 1 ' 将每次的余数按反序组合起来
Do While i >= 0
ib = idecr(i) : strdecr = RTrim$(strdecr) + Mid$(strbase, ib + 1, 1) : i = i - 1
Loop
Txtdect.Text = strdecr ' 将结果显示在文本框Txtdect中
End Function




版权所有 信息科学与技术学院
Copyright©2006-2008 All Rights Reserved.