VS2008——VB编程实例(入门教程)
1. VB(Visual Basic)的发展
微软公司在1991年推出了建立在Window开发平台基础上的开发工具——Visual Basic 1.0。随着Window操作平台的不断完善,微软公司也相继推出了Visual Basic2.0 、Visual Basic3.0和Visaul Basic4.0,这些版本主要用于在Window3.x环境中的16位计算机上开发应用程序。1997年微软公司推出了Visual Basic5.0可以在Window9x或者Window NT环境中32位计算机上开发应用程序。1998年又推出Visual Basic6.0,它的功能更加完善。
2.VB语言的基础
1.关键字:关键字是指系统使用的具有特定含义的字符。
常用的关键字有:Dim、Private , Sub , Public , End , If , Else , Form , Me , Single , As , Integer , Unload , Do , While , MessageBox , For , Next等。
2.标识符:标识符是指编写代码时定义的名称。在VB中所有的常量、变量、模块、函数、类、对象及其属性都有各自的名称,这些名称就是标识符。
例如:
工程1:一个工程的标识符。
Form1:一个窗体的标识符。
Class1:一个类模块的标识符。
Module1:一个模块的标识符。
4.常用数据类型:
4.1字符型(String)
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strA As String
strA = "Hello world"
Label1.Text = strA
End Sub
End Class
上面代码是在VS2008-VB类里建立了Window窗体应用程序,并在窗体上添加一个标签控件(Label1),用关键字Dim 声名一个字符型变量 strA 并赋值“Hello world”,再把它赋给标签(Label1)。
图1、执行结果
4.2数值型
数值型可分为5种,Integer , Long , Single , Double , Byte 。
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim It As Integer, lt As Long, st As Single, dt As Double, bt As Byte
It = 123
lt = 12345678
st = 3.14
dt = 3.1415926
bt = 9
TextBox1.Text = It
TextBox2.Text = lt
TextBox3.Text = st
TextBox4.Text = dt
TextBox5.Text = bt
End Sub
End Class
上面代码是对5种数值型数据声名和赋值并在窗体里显示出来(在窗体里添加5个文本框[TextBox]控件)。
4.3布尔型:又称逻辑类型。变量值只是True/False , Yes/No , On/Off等。
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = "欢迎参加到VB学习队伍中来!"
Label2.Visible = False
Button1.Text = "Yes"
Button2.Text = "No"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Enabled = True
Label2.Visible = True
Label2.Text = "我很喜欢VB语言编程"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Label1.Enabled = False
Label2.Visible = True
Label2.Text = "我对它不感兴趣"
End Sub
End Class
上面代码是在VS2008-VB类中建立Window窗体应用程序项目,并在窗体中添加2个标签控件(Label1 ,Label2)和2个按钮控件(Button1 , Button2)并添加了2个按钮的单击事件。在窗体触发连接事件中把Label2的可视属性设置为假(False[布尔型])………
图3、执行结果图4、按Yes键结果
图5、按No键结果
4.4日期型
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mydate As Date
mydate = #1/1/2015#
Me.Visible = False
MsgBox(mydate)
Me.Close()
End Sub
End Class
上面代码是声明日期型变量,并赋值和用信息框显示它。
图6、显示日期
5.记录类型:用户自定义类型也称记录类型。
Public Structure My_data
Dim name As String
Dim xh As String
Dim xb As String
Dim score As String
End Structure
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mt As My_data
https://www.doczj.com/doc/6e18970723.html, = "张大山"
mt.xb = "男"
mt.xh = "201403001"
mt.score = "优"
Me.Visible = False
MsgBox("姓名:" & https://www.doczj.com/doc/6e18970723.html, & Chr(10) & "性别:" & mt.xb & Chr(10) & _
"学号:" & mt.xh & Chr(10) & "成绩:" & mt.score)
Me.Close()
End Sub
End Class
上面代码显示了记录类型的定义和显示过程。
图7、显示记录类型
上面用的是结构体记录类型,下面的代码用类(方法)实现记录类型。
Public Class Form1
Class My_class
Dim lx As Integer
Dim ly As Integer
Dim rx As Integer
Dim ry As Integer
Sub setlx(ByVal val As Integer)
lx = val
End Sub
Sub setly(ByVal val As Integer)
ly = val
End Sub
Sub setrx(ByVal val As Integer)
rx = val
End Sub
Sub setry(ByVal val As Integer)
ry = val
End Sub
Function getdata()
getdata = (rx - lx) * (ry - ly)
End Function
End Class
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mt As My_class
mt = New My_class
mt.setlx(10)
mt.setly(10)
mt.setrx(150)
mt.setry(200)
Label1.Text = mt.getdata
End Sub
End Class
在窗体中添加标签控件(Label1)用来显示类(方法)计算结果。
图8、显示类(方法)记录类型
6.枚举类型
Public Class Form1
Enum my_color
m_rod = 190
m_green = 90
m_blue = 165
End Enum
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = "My_color"
Label2.Text = "m_rod " & my_color.m_rod
Label3.Text = "m_green " & my_color.m_green
Label4.Text = "m_blue " & my_color.m_blue
End Sub
End Class
图9、显示枚举类型数据
7.变量和变量命名
变量相当于一个容器,它对应着计算机内存的存储单元,因此它可以保存数据。
7.1.变量命名规则:
(1)变量只能由英文、汉字、数字及下划线组成。
(2)变量名必须由英文字母或汉字开头,最后一个符号可以是数据类型声明符,如Dim a%。(3)变量名长度可达255个字符,有效字符为40个。
(4)VB中的关键字不能作为变量名。
(5)不能在变量名中出现标点符号、空格或者嵌入!、@、#、$、%、&等字符。
(6)在变量有效的范围内不能用同名命名变量。
(7)变量名不区分大小写。
7.2.变量声明的方式
(1)显式声明变量:使用声明语句声明变量。
Dim mydata As Integer
Private m_p As String
Public m_color As Byte
Static itLenght As Integer
(2)隐式声明变量:不声明直接使用变量。
a=153
itWidth=35
7.3.变量的作用域
一个变量被声明后,只在声明它的区域内有效。例如在一个过程内声明的变量,只在该过程内有效;一个在模块的通用声明声明的变量,只在该模块内的所有过程中有效;用Public语句声明的变量,不仅对于同一模块内的所有过程有效,甚至对于整个应用程序的所有过程也都有效。
8、常量的声明
当程序中需要重复使用一个其值始终不发生改变的量时,可用#Const语句来声明常量。
#Const PI = 3.1415926
9、运算符
在VB中有4种运算符:算术运算符、关系运算符、连接运算符和逻辑运算符。
Dim a As Integer, b As Integer
a = 100
b = a Mod 3
MsgBox(b)
图10、求余运算
9.2关系运算符:用于比较运算符左、右两边表达式之间的大小关系。其运算结果为布尔型数据(True\False)。
VB中的关系运算符有:等于(=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)和不等于(<>)
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mt As Integer, mk As Integer
Label1.Text = "关系运算"
Label2.Text = "大数红色小数蓝色"
Randomize()
mt = Int(Rnd() * 6 + 1)
mk = 4
If mt > mk Then
Label2.ForeColor = Color.Red
End If
If mt < mk Then
Label2.ForeColor = Color.Blue
End If
End Sub
End Class
图11、关系运算结果图12、关系运算结果
上面程序演示了关系运算的过程,不同的时间运行程序结果会不一样。
9.3连接运算符
连接运算符有两个:“+”和“&”。“&”连接符用于强制把两个表达式作为字符串连接。“+”运算符是两个表达式都为同一类型,如果是字符串将两个字符串连接,如果是数字,则结果为两个数字相加的和。
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strA As String, strB As String, intA As Integer
strA = "连接"
strB = "运算"
intA = 55
Label1.Text = strA & strB
Label3.Text = 10 + intAa
End Sub
End Class
图13、连接运算
9.4逻辑运算符
逻辑非(Not)、逻辑与(And)、逻辑或(Or)、逻辑异或(Xor)、逻辑等于(Eqv)和逻辑蕴含(Imp)。
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Visible = False
Label2.Visible = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = TextBox2.Text And Val(TextBox1.Text) > 10 Then
Label2.Visible = False
Button1.Visible = False
GroupBox1.Visible = False
Label1.Enabled = True
Label1.Visible = True
Label1.Text = "欢迎登录本网站"
End If
If TextBox1.Text <> TextBox2.Text Or Val(TextBox1.Text) = 0 Or Val(TextBox2.Text) = 0 Then
Label1.Enabled = False
Label2.Visible = True
Label2.Text = "密码错误"
End If
End Sub
End Class
上面代码描述了简单密码登录过程,程序要求输入数据(两个文本框)。如果两边文本框的数值相等并且大于10成功登录网站,如果两边文本框的数值不相等或是其中有一个文本框的值为0将显示“密码错误”信息。
图14、登录界面图15、显示[密码错误]信息
图16、成功登录网站
第三章算法和程序控制结构
1.算法:是解决某个问题或处理某件事的方法和步骤。
Public Class Form1
Public xueli(0 To 4) As String
Public addfen As Integer
Public fenst(0 To 4) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "人才招聘"
Label1.Text = "姓名"
Label2.Text = "年龄"
Label3.Text = "身高"
Label4.Text = "学历"
Button1.Text = "提交"
GroupBox1.Text = "个人信息"
GroupBox2.Text = "性别"
GroupBox3.Text = "政治面貌"
RadioButton1.Text = "男"
RadioButton2.Text = "女"
RadioButton3.Text = "党员"
RadioButton4.Text = "群众"
GroupBox4.Text = "信息反馈"
TextBox5.Multiline = True
TextBox5.Height = 80
addfen = 100
xueli(0) = "研究生"
xueli(1) = "本科"
xueli(2) = "大专"
xueli(3) = "中专"
xueli(4) = "高中"
fenst(0) = 10
fenst(1) = 5
fenst(2) = 3
fenst(3) = 1
fenst(4) = 1
GroupBox4.Visible = False
End Sub
Sub处理信息()
Dim i As Integer
If RadioButton1.ContainsFocus = True Then
addfen = addfen + 1
End If
If RadioButton3.ContainsFocus = True Then
addfen = addfen + 1
End If
If Val(TextBox2.Text) > 35 Then
addfen = addfen - 1
End If
If Val(TextBox2.Text) < 35 Then
addfen = addfen + 1
End If
If Val(TextBox3.Text) >= 170 Then
addfen = addfen + 1
End If
If Val(TextBox3.Text) < 160 Then
addfen = addfen - 1
End If
For i = 0 To 4
If TextBox4.Text = xueli(i) Then
addfen = addfen + fenst(i)
End If
Next i
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
处理信息()
GroupBox4.Visible = True
If addfen > 110 Then
TextBox5.Text = TextBox1.Text & "同志:你好,你的个人条件很符合我们公司目前发展的需求。在此诚恳的邀请你到我们公司来工作!希望你看到信息后3天内到我们公司人事部报到。"
End If
If addfen >= 105 And addfen < 110 Then
TextBox5.Text = TextBox1.Text & "同志:你好,你的个人条件符合我们公司目前发展的需求。在此诚恳的邀请你到我们公司来工作!希望你看到信息后3天内到我们公司人事部报到。"
End If
If addfen >= 100 And addfen < 105 Then
TextBox5.Text = TextBox1.Text & "同志:你好,你的个人条件基本符合我们公司目前发展的需求。希望你看到信息后3天内到我们公司人事部报到面试和协商工作事宜。"
End If
If addfen < 100 Then
TextBox5.Text = TextBox1.Text & "同志:你好,你的个人条件不符合我们公司目前发展的需求。非常抱谦!希望你尽快找到适合的工作。"
End If
End Sub
End Class
上面代码模仿了一个简单的人才招聘过程,其中有一个加减分的算法和反馈信息算法。
图17、窗体设计页面和控件添加注:生成窗体设计页面和控件添加的步骤:
1.打开VS2008选择“文件”、“新建”、“项目”
2.建立窗体项目
3.打开主窗口上的“工具箱”按钮,向窗体上添加控件。
4.点击添加的控件,打开主窗口上的
“属性”按钮窗口,为控件添加它的属性。
以上是为窗体添加控件的过程,重复3、4步就可以添加自己想要的所有控件。关于一些控件的初始化设置,你可以在控件属性页面里完成。如:控件的“Text”(名称属性)等。也可以在窗体触发连接事件里用代码设置,这要看个人习惯;我比较喜欢自己用代码设置,因为在这过程中你可以了解到很多关于控件属性的知识,有助于提高自己编程的水平。
图18、控件初始化显示窗体(要求提交个人信息页面)
图19、提交个人信息并自动反馈信息处理
2.算法的特性:
(1)有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。
(2)确定性:算法中的每一步都有确切含义。
(3)可行性:算法中的操作能够用已经实现的基本运算执行有限次来实现。
(4)输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。(5)输出:一个算法有一个或多个输出,以反映出数据加工的结果,没有输出的算法是没有意义的。
3.算法的描述方法:为了让算法清晰易懂,要选择一种好的描述方法。
(1)自然语言:就是用人们日常使用的语言描述解决问题的方法和步骤。缺点是语法和语义上存在多义性、繁琐,对程序流向描述不明了、不直观。
(2)伪代码:介于自然语言和计算机语言之间的文字和符号。
(3)传统流程图:使用不同的几何图形来表示不同性质的操作,使用流程线来表示算法的执行方向。
(4)N-S结构化流程图:是1973年美国学者I·Nassi 和 B·Shneiderman 提出的一种符合结构化程序设计原则的描述算法的图形方法,又叫盒图。
4.算法的基本控制结构:在程序设计中,构成算法的基本控制结构有3种,顺序结构、选择结构、循环结构。合理使用这些控制结构可以使程序结构清晰、易读性强,并且易于查错和排错。
(1)顺序结构:是最简单、最基本的结构方式,各流程框依次按顺序执行(程序从开始到结束按顺序执行,没有分支)。
(2)选择(分支)结构:就是结给定条件进行判断,条件为True 时执行一个分支,条件为False 时执行另一个分支。
(3)循环结构:可以根据需要多次重复执行一行或多行代码。
(a )当型循环:先判断后执行,当条为真时反复执行,当条件为假时结束循环。 (b )直到型循环:先执行后判断(循环体至少执行一次)。
5.数据的输入和输出
(1)在程序中,通常用文本框(TextBox 控件)、输入对话框函数InpuBox 来输入数据。
(2)数据的输出可以用Label 控件、MsgBox 信息对话框、TextBox 控件等。
6.选择结构
(1)单分支语句:If ….. Then
If Val(TextBox1.Text) > 10 Then TextBox1.Text = "大数" End If
(2)双分支语句:If … Else … Then If Val(TextBox1.Text) > 10 Then TextBox1.Text = "大数" Else
TextBox1.Text = "小数"
End If
(3)If 语句的嵌套
If TextBox1.Enabled = True Then If Val(TextBox1.Text) <> 123 Then TextBox1.Text = "密码错误"
Else
TextBox1.Text = ""
TextBox1.Text = "登录成功"
End If
Else
If TextBox2.Enabled = False Then TextBox2.Enabled = True
TextBox2.Text = "请输入密码"
Else
TextBox1.Text = ""
End If
End If
7.循环结构
(1)F or …. Next 循环语句