资源描述
第一次作业
Private Sub Command1_Click()
Text1.Text = "欢迎你学习VB程序设计"
Text1.ForeColor = vbGreen
Text1.Font = "宋体"
Text1.FontSize = 25
Text1.FontItalic = True
Text1.FontBold = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Click()
Text1.ForeColor = vbRed
Text1.Font = "隶书"
Text1.Text = "佛山大学理学院"
End Sub
第二次作业(服务员密码)
1、请建立一个工程( zy02.vbp),含有1个窗体(zy02.frm),该窗体有两个标签,两个命令按钮(设置成不同的背景色),一个文本框。要求如下:1)当程序启动运行时,命令按钮不可用(变灰色),当在文本框中输入正确密码时,显示出来的是星号,(2)…
3)点击结帐按钮后,窗体所有控件消失,仅显示出标签“谢谢你,再见!”这样的服务用语。
Private Sub Command1_Click()
Text1.Visible = False
Label2.Visible = True
Label2.Caption = "你好,你需要什么"
Command2.Enabled = True
End Sub
Private Sub Command2_Click()
Command1.Visible = False
Command2.Visible = False
Label1.Visible = False
Label2.Caption = "谢谢你,再见!"
End Sub
Private Sub Form_Load()
Label2.Visible = False
Command1.Enabled = False
Command2.Enabled = False
End Sub
Private Sub Text1_Change()
If Text1.Text = "12345" Then Command1.Enabled = True
Text1.PasswordChar = "*"
End Sub
第三次
建立一个工程(zy03.vbp),含有一个窗体(zy03.frm)。请在该窗体上设计两个文本框,三个命令按钮,标题分别是减运算和除运算,退出,如图。请编写适当的程序,根据两个文本框中输入的数据(整型数据)分别进行减运算和除运算,并将运算结果(注意:除运算结果采用浮点数)用标签控件显示出来。特别要求:总是用两个文本框中输入的大数据做被减数或被除数。工程文件和窗体文件上传到你的操作题子目录下。
Private Sub Cd1_Click()
Dim X%, Y%, Z%
Dim P$
X = Int(Tt1.Text)
Y = Int(Tt2.Text)
If X > Y Then Z = X - Y Else Z = Y - X
P = Str(Z)
Ll2.Caption = P
End Sub
Private Sub Cd2_Click()
Dim X%, Y%, Z#
Dim P$
X = Int(Tt1.Text)
Y = Int(Tt2.Text)
If X > Y Then Z = X / Y Else Z = Y / X
P = Str(Z)
Ll2.Caption = P
End Sub
Private Sub Cd3_Click()
Visible = False
End Sub
第四次
1、建立一个工程(zy041.vbp),含有一个窗体(zy041.frm)。请在该窗体上设计三个文本框,两个命令按钮,标题分别是计算和与清除,如图。请编写两个命令按钮适当的程序,点击命令按钮计算,利用inputbox函数输入任意两个正整数,将这两个数显示在前两个文本框中,然后根据两个数的和进行判断,如果是奇数,将其放在第3个文本框中,如果是偶数,将其打印在窗体上,点击清除按钮后,清除文本框中的数和窗体上的数据。
Private Sub C1_Click()
Dim x As Integer, y As Integer, z As Integer, m As Integer
x = InputBox("请输入第一个正整数:", "数据输入")
y = InputBox("请输入第二个正整数:", "数据输入")
If x > 0 And y > 0 Then
T1.Text = x
T2.Text = y
z = x + y
m = z Mod 2
If m = 0 Then
Print z
Else
T3.Text = z
End If
Else
Print "输入的数据无效!请再次输入~"
End If
End Sub
Private Sub C2_Click()
T1.Text = ""
T2.Text = ""
T3.Text = ""
Cls
End Sub
Private Sub Form_Load()
T1.Enabled = False
T2.Enabled = False
T3.Enabled = False
End Sub
2建立一个工程(zy042.vbp),含有一个窗体(zy042.frm)。请在该窗体上设计两个文本框,。编写窗体的单击事件过程,使得在文本框中输入任意两个正整数后点击窗体,弹出一个消息框,如图。如果选择“是”,则求出两个数的商,选择“否”,则求出两个数的余数,然后将结果(商或余数)用标签方式显示在文本框下面,形式为 您求得的结果是:(数字)
Private Sub Form_Click()
Dim x As Integer, y As Integer, z As Integer
x = Val(T1.Text)
y = Val(T2.Text)
msg1 = "你选择做除法吗?"
message = MsgBox(msg1, 16 + 4, "请选择")
If x > 0 And y > 0 Then
If message = 6 Then
z = x \ y
L2.Caption = "求得的结果是:" & z
Else
z = x Mod y
L2.Caption = "求得的结果是:" & z
End If
Else
Print "您输入的数据有误,请再输入!"
End If
End Sub
第五次
1、建立一个工程(zy051.vbp),含有一个窗体(zy051.frm)。请在该窗体上设计两个标签,两个文本框,一个命令按钮,如左下图。请编一帐号和密码检验程序,
要求:帐号不超过6位数字,有错,清除原内容再输入。
密码输入时(假如是ww199)在屏幕上以 “*”代替; 若密码输入错,显示一个消息框,如右下图。选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。
特别提示:
标签的borderstyle属性设置成1;帐号6位,只要将文本框的MaxLength设为6 ;
在文本框的LostFocus事件中,利用数字IsNumeric函数判断是否输入的是数字;如果密码输入不对,用MsgBox函数设置密码错对话框,根据返回值处理;
清除原内容再输入的处理技巧是:文本框内容清空,并用setfocus方法使光标回到文本框里。
文本框的 密码PassWordChar设为“*”
Private Sub Command1_Click()
Dim I%
If Text2.Text <> "sfxia" Then
I = MsgBox("密码错误", 53, "输入密码")
If I <> 4 Then
End
Else
Text2.Text = ""
Text2.SetFocus
End If
End If
Print "谢谢!"
End Sub
Private Sub Form_Load()
Text2.PasswordChar = "*"
Text2.Text = ""
Text1 = ""
End Sub
Private Sub Text1_Change()
If Not IsNumeric(Text1) Then
MsgBox "帐号有非数字字符错误"
Text1.Text = ""
Text1.SetFocus
End If
End Sub
2、建立一个工程(zy051.vbp),含有一个窗体(zy052.frm)。请在该窗体上设计三个横排的文本框,编写窗体的单击事件过程,使得在每个文本框中输入任意1个整数后点击窗体时,最大数在左边的文本框里。最小数在右边的文本框里,另一数在中间的文本框中。
Private Sub Form_Click()
Dim a, b, c, t As Single
a = Val(T1.Text)
b = Val(T2.Text)
c = Val(T3.Text)
If a < b Then
t = a
a = b
b = t
End If
If a < c Then
t = c
c = b
b = a
a = t
ElseIf b < c Then
t = c
c = b
b = t
End If
T1.Text = a
T2.Text = b
T3.Text = c
End Sub
3、在窗体上设置一个文本框,编写一个窗体单击事件过程,根据文本框中输入的学生成绩利用Print函数在窗体上打印一个文字评价,规则是:90~100分,优秀,80~90分,良好,70~80分,中等;60~70分,及格;20~60分,及格;其他情况,异常。文件名分别保存为zy053.vbp,和zy053.frm
Private Sub C1_Click()
T1.Text = ""
Cls
End Sub
Private Sub Form_Click()
Dim s, i As Integer
s = T1.Text
Select Case s
Case 90 To 100
Print "优秀"
Case 80 To 90
Print "良好"
Case 70 To 80
Print "中等"
Case 60 To 70
Print "合格"
Case 20 To 60
Print "不合格"
Case Else
Print "异常"
End Select
End Sub
第六次
1、建立一个工程(zy061.vbp),含有一个窗体(zy061.frm)。请在该窗体上设计一个图片框(其中放置一个小的图片),一个文本框。请编写程序来实现:当在文本框中输入任意字符(数字,字母或其他符号)后点击窗体,图片框中将显示输入字符的性质,如下图(要求:用case语句)。
Private Sub Form_Click()
Dim aw As String
P1.Cls
aw = T1.Text
Select Case aw
Case "0" To "9"
P1.Print aw + "是数字字符"
Case "a" To "z", "A" To "Z"
P1.Print aw + "是字母字符"
Case Else
P1.Print aw + "是其它字符"
End Select
End Sub
100到999之间的水仙花数
Private Sub C1_Click()
Dim i, i2, i3, j, a As Integer
Print "100到999之间的水仙花数"
For i = 100 To 999
j = i \ 100
a = i \ 10
i2 = a - j * 10
i3 = i - a * 10
If i = j ^ 3 + i2 ^ 3 + i3 ^ 3 Then Print i
Next i
End Sub
Private Sub C2_Click()
Dim i, j, a As Integer
Print "100到999之间的水仙花数"
For i = 1 To 9
For j = 0 To 9
For a = 0 To 9
s = i * 100 + j * 10 + a
If s = i ^ 3 + j ^ 3 + a ^ 3 Then Print s
Next a
Next j
Next i
End Sub
最大公约数和最小公倍数
Private Sub Form_Click()
Dim x, y, a, s As Integer
x = InputBox("请输入一个整数")
y = InputBox("请输入第二个整数")
a = x
Do
If x Mod a = 0 Then s = a
If y Mod s = 0 Then
Print "x和y的最大公约数是 "; s
Print "x和y的最大公倍数是 "; x * y / s
Exit Do
End If
a = a - 1
Loop While a > 0
End Sub
求出2!+3!+4!+5!的和
Private Sub Command1_Click()
Sum = 0
For i = 2 To 5
s = 1
For j = 1 To i
s = s * j
Next j
Sum = Sum + s
Next i
Print Sum
End Sub
Private Sub Form_Click()
Dim i%, s%, a%
Print
s = 1
a = 0
For i = 2 To 5
s = s * i
a = a + s
Next i
Print "2!+3!+4!+5!="; a
End Sub
九九乘法口决表
Private Sub Form_Click()
Dim i%, j%, d%
For i = 1 To 9
d = -10
For j = 1 To 9
d = d + 10
Print Tab(d); i & "×" & j & "=" & i * j;
Next j
Next i
End Sub
求解出100以内的所有素数
Private Sub Form_Click()
Dim i%, j%, a%, p As Boolean
Print "100以内的所有素数:"
For i = 2 To 100
p = True
a = Int(Sqr(i))
For j = 2 To a
If i Mod j = 0 Then
p = False
Exit For
End If
Next j
If p = True Then Print i
Next i
End Sub
第七次
1、定义一个一维数组X,将下面的10 个数字赋值到它的10个元素中,33,12,0,12,14,90,14,45,23,44。然后通过一个循环将最大元素值(即90)以及最大元素的下标值打印出来工程文件名保存为zy081.vbp
Private Sub Form_Click()
Dim x()
Dim a As Integer
x = Array(33, 12, 0, 12, 14, 90, 14, 45, 23, 44)
a = x(0)
y = 1
For i = 1 To 9
If a < x(i) Then a = x(i): y = i + 1
Next i
Print "最大值为"; a; "其下标为"; y
End Sub
2、建立含有四个命令按钮的控件数组,当单击某个命令按钮,分别显示不同的图形或结束操作。要求:命令按钮名称为CMD,标题分别为:直线,方框,椭圆,结束,工程文件名保存为zy082.vbp
界面和下图相似
Private Sub CMD_Click(Index As Integer)
Select Case Index
Case 0
P1.Cls
P1.Line (2, 2)-(7, 7)
Case 1
P1.Cls
P1.Line (2, 2)-(7, 7), , BF
Case 2
P1.Cls
P1.Circle (5, 5), 3.5, , , , 1.4
Case Else
End
End Select
End Sub
Private Sub Form_Load()
P1.Scale (0, 0)-(10, 10)
End Sub
3、定义一个一维数组X,将下面的10 个数字赋值到它的10个元素中,33,12,0,12,14,90,14,45,23,44。并在窗体上打印该数组,然后采用选择排序方法按递减顺序排序该数组元素,最后再在窗体上打印该数组,工程文件名保存为zy083.vbp Private Sub Form_Click()
Dim x()
x = Array(33, 12, 0, 12, 14, 90, 14, 45, 23, 44)
Print "原数据为:"
For j = 1 To 10
Print x(j);
Next j
Print
For s = 1 To 9
For i = s + 1 To 10
If x(s) < x(i) Then
c = x(i)
x(i) = x(s)
x(s) = c
End If
Next i
Next s
Print "排序后为:"
For j = 1 To 10
Print x(j);
Next j
Print
End Sub
第八次
1、编写一个打印由指定符号构成的直角三角形图案的子过程DY,该过程有2个形式参数:参数S用于指定三角形的字符,参数N指定构成直角三角形图案的行数。然后编写窗体的单击事件过程,用INPUTBOX函数输入2个实参,调用子过程DY打印出图案来。工程文件名保存为zy81.vbp
界面与下图相似,(实参n=6,s=”*”)
Private Sub Form_Click()
Dim n As Integer
Dim s As String
s = InputBox("输入组成三角形的字符")
n = InputBox("输入三角形图案的行数")
For i = 1 To n
For j = 1 To i
Print s;
Next j
Print
Next i
End Sub
2、编写一个求阶乘的函数JC,然后编写窗体的单击事件过程,在其中调用函数JC,求出2!+4!+6!+8!+10!的和。工程文件名保存为zy82.vbp
Private Sub Form_Click()
Dim i%
Sum = 0
For i = 2 To 10 Step 2
Sum = Sum + jc(i)
Next i
Print "阶乘 4!+6!+8!+10!= "; Sum
End Sub
Private Function jc(n%)
s = 1
For i = 1 To n
s = s * i
Next i
jc = s
End Function
3、在窗体上建立两个命令按钮,标题分别为“传址调用实例”和“传值调用实例”;然后编写两个子过程F1和F2,这两个过程都有2个参数A、B,不同的是:F1中参数采用传址调用,F2采用传值调用,两过程功能相似,都是将两个参数相加和相乘,即 A=A+B,B=A*B,并打印A、B值;请编写两个命令按钮的事件过程,用INPUTBOX函数输入两个实参,然后分别调用F1和F2,并打印两个实参的值,注意观察其不同。工程文件名保存为zy83.vbp
界面与下图相似,(实参X=1,Y=2)
Private Sub C1_Click()
Dim x!, y!
x = InputBox("请输入X的值")
y = InputBox("请输入Y的值")
Call f1(x!, y!)
Print "x="; x, "y="; y
End Sub
Private Sub f1(a!, b!)
a = a + b
b = a * b
Print "a="; a, "b="; b
End Sub
Private Sub f2(ByVal a!, ByVal b!)
a = a + b
b = a * b
Print "a="; a, "b="; b
End Sub
Private Sub C2_Click()
Dim x!, y!
x = InputBox("请输入X的值")
y = InputBox("请输入Y的值")
Call f2(x!, y!)
Print "x="; x, "y="; y
End Sub
Private Sub Form_Load()
End Sub
第九次
1、如果求t1=∑ai 请编写一个函数FF,要求ai利用数组参数传递的方式与主程序交换数据,注意利用数组的上下界函数lbound(),ubound(),主程序是form-click事件,利用自然数0到9来产生一个数组,然后调用函数FF,求出并打印t1的值,工程文件名保存为zy091.vbp
Private Sub Form_Click()
Randomize
Dim a(9) As Integer
Print "数组为:"
For i = LBound(a) To UBound(a)
a(i) = Int(Rnd * 10)
Print a(i);
Next i
Print
Print "t1="; ff(a(), LBound(a), UBound(a))
End Sub
Public Function ff(a() As Integer, d As Integer, f As Integer)
Dim x As Integer
x = 0
For i = LBound(a) To UBound(a)
x = x + a(i)
Next i
ff = x
End Function
2、在菜单工程中选“添加模块”产生标准模块,在其中添加一个全局过程GG,该过程有三个整型参数,其中第三个是可选参数,该过程的功能是求这些参数中的最大值,并在窗体上打印最大值(注意要用form1.print方法)。在窗体上建立两个命令按钮C1,C2,标题分别是传两个参数、传三个参数,然后在通用段定义三个模块级整型变量A%,B%,C%,再编写两个命令按钮的事件过程,在C1事件中 a=2,b=5调用GG,在C2事件中c=6调用GG,运行该程序,注意模块级变量的作用。工程文件名保存为zy092.vbp,标准模块名保存为zy092.bas
Dim a%, b%, c%
Private Sub C1_Click()
a = 2
b = 5
Call GG(a%, b%)
Print "最大值为:"; a
End Sub
Private Sub C2_Click()
c = 6
Call GG(a%, b%, c%)
Print "最大值为:"; a
End Sub
Private Sub Form_Load()
F1.FontSize = 15
End Sub
Public Sub GG(a%, b%, Optional c%)
a = IIf(a > b, a, b)
If Not IsMissing(c) Then a = IIf(a > c, a, c)
End Sub
3、如果求t2=∏ai (连乘的意思)请编写一个过程PP,要求ai利用可变参数传递的方式与主程序交换数据,注意利用ParamArrar数组名,主程序是form-click事件,调用过程PP,传递参数2,4,6,8,9求出并打印t2的值,工程文件名保存为zy093.vbp
Private Sub Form_Click()
F1.FontSize = 20
Print "数组为:";
pp 2, 4, 6, 8, 9
End Sub
Private Sub pp(ParamArray a())
N = 1
For Each x In a
N = N * x
Print x;
Next x
Print
Print "t2="; N
End Sub
4、Fibonacci数列的第一项和第二项为1,以后各项均是前两项的和,请用递归算法编写一程序,求出该数列的前N项,工程文件名保存为zy094.vbp
Private Sub Form_Click()
Dim n%
n = InputBox("请输入N的值")
For i = 1 To n
Print fib(i);
If i Mod 5 = 0 Then Print
Next i
End Sub
Private Function fib(ByVal n%)
If n <= 2 Then
fib = 1
Exit Function
Else
fib = fib(n - 1) + fib(n - 2)
End If
End Function
第十次
1、 参照教材P278例11.1,设计一个具有算术运算及清除功能的菜单,并考虑以下四点要求。工程文件名保存为zy101.vbp
⑴ 子菜单项设置快捷键。
2)子菜单项有效控制,只有当除数不为0(即第2个文本框有值)时 “除”子菜单才有效。
3)设置子菜单项标记,即在刚完成的子菜单项前面自动打勾。
4)为“乘”和“清除”子菜单设置访问键,乘采用英文字母&mul,清除采用中文 清除(&q)。
要用common dialog 控件
Private Sub add_Click()
L4.Caption = Val(T1) + Val(T2)
mul.Checked = False
sub1.Checked = False
div.Checked = False
add.Checked = True
clea.Checked = False
End Sub
Private Sub clea_Click()
T1.Text = ""
T2.Text = ""
L4.Caption = ""
mul.Checked = False
sub1.Checked = False
div.Checked = False
add.Checked = False
clea.Checked = True
End Sub
Private Sub div_Click()
L4.Caption = Val(T1) / Val(T2)
mul.Checked = False
sub1.Checked = False
div.Checked = True
add.Checked = False
clea.Checked = False
End Sub
Private Sub exit_Click()
End
End Sub
Private Sub Form_Load()
Show
T1.SetFocus
End Sub
Private Sub mul_Click()
L4.Caption = Val(T1) * Val(T2)
mul.Checked = True
sub1.Checked = False
div.Checked = False
add.Checked = False
clea.Checked = False
End Sub
Private Sub oper_Click()
If Val(T2) = 0 Then
div.Enabled = False
Else
div.Enabled = True
End If
End Sub
Private Sub sub1_Click()
L4.Caption = Val(T1) - Val(T2)
mul.Checked = False
sub1.Checked = True
div.Checked = False
add.Checked = False
clea.Checked = False
End Sub
2、参考教材p303的例12.1,完成对话框程序设计,建立和保存数据文件。工程名以zy102.vbp保存。
Private Sub C1_Click()
Cd1.FileName = ""
Cd1.Flags = 2048
Cd1.Filter = "All files|*.*|(*.exe)|*.exe|(*.txt)|*.txt|"
Cd1.FilterIndex = 2
Cd1.DialogTitle = "打开文件(*.exe)"
Cd1.Action = 1
If Cd1.FileName = "" Then
MsgBox "No file selected", 37, "checking"
Else
Open Cd1.FileName For Input As #1
Do While Not EOF(1)
Input #1, a$
Print a$
Loop
End If
End Sub
Private Sub C2_Click()
Cd1.CancelError = True
Cd1.DefaultExt = "txt"
Cd1.FileName = "1bw,txt"
Cd1.Filter = "txt files(*.txt)|*.txt|all files(*.*)|*.*|"
Cd1.FilterIndex = 1
Cd1.DialogTitle = "save file as(*.,txt)"
Cd1.Flags = 2050
Cd1.Action = 2
End Sub
3、在窗体上设置如下图的界面,当点击命令按钮调用字体通用对话框后,选择字体名称、大小、粗斜体以及颜色等,然后将颜色应用到标签“请输入数据”的前景色,其他选择应用到文本框中的文字(注意flag 参数的设置)。工程文件名保存为zy103.vbp。
Private Sub C1_Click()
Cd1.Flags = 259
Cd1.ShowFont
L1.ForeColor = Cd1.Color
T1.FontSize = Cd1.FontSize
T1.Font = Cd1.FontName
T1.FontBold = Cd1.FontBold
End Sub
Private Sub Form_Load()
End Sub
第十一次
2、 参考教材P292的例题11.4,编写一个复杂的弹出式菜单,当在窗体上(非文本框位置)用鼠标右击时,弹出如下图1的菜单(粗体、斜体、隶书),当鼠标滑过文本框时,弹出如下图2的菜单(该菜单带有子菜单),点击这些菜单都可以改变文本框里的文字格式(提示:在菜单编辑器中设置两个一级菜单gs1,gs2。他们都设置成不可见。其中gs1下属粗体、斜体、隶书,gs2下属字号20,颜色、退出,在窗体和文本框的鼠标事件中分别弹出gs1或gs2即可)。工程文件名保存为zy111.vbp
Private Sub bjs_Click()
Text1.BackColor = vbGreen
End Sub
Private Sub ls_Click()
Text1.FontName = "隶书"
End Sub
Private Sub qjs_Click()
Text1.ForeColor = vbRed
End Sub
Private Sub tc_Click()
End
End Sub
Private Sub xt_Click()
Text1.FontItalic = True
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu gs1
End If
End Sub
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
PopupMenu gs2
End Sub
Private Sub ct_Click()
Text1.FontBold = True
End Sub
Private Sub zh_Click()
Text1.FontSize = 20
End Sub
2、设计一个最简单的画图程序。程序运行时,按住鼠标右键移动画红线,按住鼠标左键移动画蓝线。松开鼠标移动不画线,双击窗体清除图形 ,工程文件名保存为zy112.vbp
Dim paint As Boolean
Private Sub Form_DblClick()
Cls
End Sub
Private Sub Form_Load()
DrawWidth = 10
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
paint = True
If Button = 1 Then
ForeColor = RGB(0, 0, 256)
ElseIf Button = 2 Then
ForeColor = RGB(256, 0, 0)
End If
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If paint = True Then
PSet (X, Y)
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
paint = False
End Sub
3、设计一个简单的动画程序。材料有:
展开阅读全文