二、代码设计
程序用到5个变量,分别存放3边边长、夹角、面积。首先计算第三边边长,然后才能计算面积,因此程序运行后计算面积的按钮显示为灰色不可用,即在窗体的Load事件过程中设置该按钮的Enabled属性值为False,计算完边长后将其改为True。计算边长和面积要使用数学函数,因此在代码窗口的第1行输入Imports System.Math,导入数学函数所在的System.Math类,否则每次使用数学函数都要在函数名前加上前缀“Math.”。
因为所用的变量在两个事件过程中都要使用,因此在事件过程之外声明变量,使得变量在几个事件过程中都可以使用。输入的数据应为数字,若输入的为非数字字符,则文本框不显示出来,可以在文本框的KeyPress事件中进行处理。
完整代码如下:
Imports System.Math Public Class Form1 Dim a,b,c,delta,S,Area As Single '定义模块级变量delta为角度值
提示:在通用声明段声明的变量可以被窗体中任何过程调用。
'程序首先自动执行Load事件过程 Private Sub三角形_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load Button1.Enabled = True Button2.Enabled = False '使“面积”按钮不可用 TextBox1.Focus() '将光标定位在第1个文本框中 End Sub '控制文本框只能输入数字(包括0~9和小数点)。其余两个文本框同样处理 Private Sub TextBox1_KeyPress(ByVal sender As Object,ByVal e As System.Windows.Forms.KeyPressEventArgs)Handles TextBox1.KeyPress If Not(Asc(e.KeyChar)>= Asc("0")And Asc(e.KeyChar)<= Asc("9") Or e.KeyChar = ".")Then e.Handled = True '表示按下的键盘值将不会起作用 End If End Sub '使用余弦定理求第三边 Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click a = Val(TextBox1.Text)'将文本框输入的数字字符串转换为数值数据 b = Val(TextBox2.Text) delta = Val(TextBox3.Text) c = Sqrt(a * a + b * b -2 * a * b * Cos(delta * PI / 180)) Label4.Text &= Format(c,"#.##") '使得输出保留两位小数 Button2.Enabled = True End Sub '使用海伦公式求面积 Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button2.Click S = 1.0 / 2 *(a + b + c) Area = Sqrt(S *(S - a)*(S - b)*(S - c)) Label5.Text &= Format(Area,"#.##") End Sub '退出程序 Private Sub Button3_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button3.Click End End Sub
注意
(1)在Public Class Form1的上面添加一行语句:
Imports System.Math
(2)控制文本框的输入,可以在文本框的KeyPress事件过程中判断键盘值e.KeyChar的值。e.KeyChar是按键符,Asc为求字符的ASCII码值,e.Handled表示当前按键的处理情况,若为True,则表示已处理过,则不再在文本框中显示出来。
(3)PI为圆周率,是在Math类中定义的公有字段。也可以用Math.PI表示。
试一试
1.编写一个程序,输入x和y的值,求表达式 的值。
2.编写一个程序,实现以下功能:随机产生一个[10,20]之间的十进制偶数,并转换成八进制和十六进制数,显示这三个数值。
提示:要产生的是两位的偶数,用公式Int(Rnd * 11)+ 10产生随机数,用If语句判断是否为偶数。若不是随机数,则重新单击命令按钮再次产生新的随机数,并用转换函数进行转换。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button1.Click Dim x As Integer x = Int(Rnd()* 11)+ 10 If x Mod 2 = 1 Then MsgBox("Please Click") TextBox1.Text = "" Else TextBox1.Text = x End If …… '其他代码 End Sub
3.以我国1992年工业产值为100为基础,如果以9%的年增长率增长,计算到2012年时的工业产值。
提示:使用公式100 *(1+0.09)2012-1992计算。
4.编写一个程序,计算风寒指数,界面自行设计。风寒指数表示在室外身体感觉到的温度,它可以用公式计算出来:
风寒指数(°C)= 13.12+0.6215 T +(0.3965T-11.37)V0.16
其中T是空气温度(°C),V是风速(km/s)。例如,如果温度是-18°C,风速是24km/h(和风),风寒指数就是-29°C。这种情况下,没有衣服遮盖的皮肤会在约30分钟内结冰。
5.梯形的面积 =(上底边长+下底边长)×高度÷2,即S =(a+b)h ÷ 2。编写一个程序,计算梯形面积,界面自行设计。