好的,所以我是视觉基础的新手,并且不打算把它作为一个班级,直到他们要求我在我的社区大学获得技术员证书。从字面上理解我到目前为止读到的章节到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个小时内到期:\
提前致谢!
答案 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
方法直接创建输出。