二、代码设计

程序用到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+bh ÷ 2。编写一个程序,计算梯形面积,界面自行设计。