Visual Basic平均温度计算器

时间:2014-06-16 01:34:43

标签: vb.net

好的,所以我是视觉基础的新手,并且不打算把它作为一个班级,直到他们要求我在我的社区大学获得技术员证书。从字面上理解我到目前为止读到的章节到T,然后第一个家庭作业出现了,在过去的几天里,我一直在摸不着为什么它在地球上不起作用。这就是教授所要求的。

  

编写一个计算平均每日温度和汇总统计数据的程序。系统将提示用户输入华氏温度作为带小数点后一位的值,并选择输入温度的技术人员姓名。用户可以选择查看输入的华氏温度的摄氏度等效值。程序将显示所有输入温度的平均温度。当用户按ENTER键,使用访问键或单击“计算”按钮时,将显示结果。当用户点击ESC(清除是取消按钮),使用访问键或单击清除按钮时,用户将有机会输入另一个温度。用户将通过单击“退出”按钮或使用其访问键退出程序。 “退出”按钮还将显示摘要统计数据:1)每位技术人员输入的温度数量和2)所有输入温度的平均温度。只有输入温度在32.0和80.0(含)度之间的数值并且已选择技术人员时,才应进行计算。

图形方面是轻而易举的拖放,然后命名标签,单选按钮等......但现在我已经组装了我的代码。什么都行不通。我感到沮丧,困惑,失望。我不知道这堂课会这么难。这是我到目前为止提出的代码方式。没有任何错误消息,只是没有得到任何输出。

Option Strict On
Option Strict On    

Public Class Form1


Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click

    'Clear App
    txtTemp.Clear()
    lblAverageTemp.Text = String.Empty
    lblCelsius.Text = String.Empty
    radDave.Checked = False
    radJoe.Checked = False
    chkCelsiusTemp.Checked = False
    'New Temp Focus
    txtTemp.Focus()

End Sub

Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click

    'End app with display
    MessageBox.Show("Dave entered intEntriesDave entries." & ControlChars.CrLf & "Joe    entered intEntriesJoe entries." & _
    ControlChars.CrLf & "The average temperature is _.", "Status")
    Me.Close()

End Sub

Public Sub chkCelsiusTemp_CheckedChanged(sender As Object, e As EventArgs) Handles chkCelsiusTemp.CheckedChanged

    'Convert entered Fahrenheit temp to Celsius
    Dim dblCelsius As Double
    dblCelsius = (CDbl(txtTemp.Text) - 32) * 5 / 9
    lblCelsius.Text = CStr(dblCelsius)

End Sub

Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
    Dim intEntriesDave As Integer = 0
    Dim intEntriesJoe As Integer = 0
    If radDave.Checked = True Then
        intEntriesDave = +1
    End If
    If radJoe.Checked = True Then
        intEntriesJoe = +1
    End If

    Dim dblAvg As Double
    dblAvg = CDbl(txtTemp.Text) / intEntriesDave + intEntriesJoe
    lblAverageTemp.Text = CStr(dblAvg)

End Sub
End Class

希望我能搞清楚这一点,否则我可以得到一些帮助。我当然拖延了,就像我这个白痴一样,它将在11个小时内到期:\

提前致谢!

1 个答案:

答案 0 :(得分:0)

我会用字典来存储名字和温度。 在表单上放置一个数字注册控件,用于温度输入(numTemp)和一个名称为tbName的文本框和一个标签lblCelsius,用于输出:

Public Class Form1
Dim temps As New Dictionary(Of String, List(Of Double))
Private Sub btnEnter_Click(sender As Object, e As EventArgs) Handles btnEnter.Click
    If numTemp.Value < 32 OrElse numTemp.Value > 80 OrElse tbName.Text = "" Then Exit Sub      'Invalid input
    If temps.ContainsKey(tbName.Text) = False Then 'Name is new, create a new list entry
        temps.Add(tbName.Text, New List(Of Double))
    End If
    temps(tbName.Text).Add(numTemp.Value) 'Append the entered temperature
    lblCelsius.Text = "In celsius: " & CStr(numTemp.Value - 32) * 5 / 9 'Output the Celsius value
End Sub

Private Sub btnStats_Click(sender As Object, e As EventArgs) Handles btnStats.Click
    Dim sb As New System.Text.StringBuilder 'Create the output
    For Each k As String In temps.Keys
        sb.AppendLine(k & ": " & temps(k).Average)
    Next
    lblCelsius.Text = sb.ToString
End Sub

Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
    temps.Clear() 'Clear the database
End Sub
End Class

基本上每次点击btnEnter时,如果名称已输入值,则检查字典。如果不是,则使用新列表创建新条目,并且新温度仅添加到列表中。 然后使用列表的.Average方法直接创建输出。