【问题标题】:Array as structure members Assignment Student Test Scores数组作为结构成员分配学生考试成绩
【发布时间】:2017-03-07 23:56:16
【问题描述】:

分配 一位老师有六个学生,希望您创建一个应用程序,将他们的成绩数据存储在文件中并打印成绩报告。应用程序应该有一个存储以下学生数据的结构:姓名(一个字符串)、测试分数(一个包含五个 Doubles 的数组)和 Average(一个 Double)。因为老师有六个学生,所以应用程序应该使用一个包含六个结构变量的数组。 应用程序应允许用户输入每个学生的数据,并计算平均考试成绩。 用户应该能够将数据保存到文件中,从文件中读取数据,并打印显示每个学生的考试成绩和平均成绩的报告。该表格显示了一个多系统。如果您愿意,您可以使用按钮来代替。 输入验证:不接受小于零或大于 100 的测试分数。

]

我对它的结构的理解

目前我不明白在 FOR EACH 循环中我不能累计它说我不允许使用 + 。我正在尝试从 txtScore1Std1 获取分数(例如)将其分配给 dblTestScoreArray 并使用每个循环来查找这 ​​5 个分数的总和,然后找到平均值并将其输出到学生号 1 的 lbl 平均值。

代码模块:

 Module StudentTestScoresModule

    Const intMAX_SUBSCRIPT_STUDENT As Integer = 6
    Const intMAX_SUBSCRIPT_STUDENT_SCORES As Integer = 5
   'create structure
    Public Structure StudentData
       Dim strName As String
       Dim dblTestScoresArray() As Double
       Dim dblAverage As Double
    End Structure

Dim dblTotalStd1 As Double
Dim dblScore As Double

Dim StudentsArray(intMAX_SUBSCRIPT_STUDENT) As StudentData

Sub StudentNameDataInput()
    StudentsArray(0).strName = MainForm.txtStdName1.Text
    StudentsArray(1).strName = MainForm.txtStdName2.Text
    StudentsArray(2).strName = MainForm.txtStdName3.Text
    StudentsArray(3).strName = MainForm.txtStdName4.Text
    StudentsArray(4).strName = MainForm.txtStdName5.Text
    StudentsArray(5).strName = MainForm.txtStdName6.Text
End Sub

Sub StudentScoreDataInput()
    For intIndex = 0 To intMAX_SUBSCRIPT_STUDENT
        ReDim StudentsArray(intIndex).dblTestScoresArray(4)
    Next
    'test scores for first student
    StudentsArray(0).dblTestScoresArray(0) = CDbl(MainForm.txtScore1Std1.Text)
    StudentsArray(1).dblTestScoresArray(1) = CDbl(MainForm.txtScore2Std1.Text)
    StudentsArray(2).dblTestScoresArray(2) = CDbl(MainForm.txtScore3Std1.Text)
    StudentsArray(3).dblTestScoresArray(3) = CDbl(MainForm.txtScore4Std1.Text)
    StudentsArray(4).dblTestScoresArray(4) = CDbl(MainForm.txtScore5Std1.Text)

    For Each i As StudentData In StudentsArray
        dblTotalStd1 += i
    Next
    dblAverage = dblTotalStd1 / intMAX_SUBSCRIPT_STUDENT_SCORES
    MainForm.lblAvgStd1.Text = (dblAverage.ToString)
End Sub

Sub CalculateAverage()
End Sub

End Module

代码主窗体:

 Public Class MainForm

Private Sub mnuHelpAbout_Click(sender As Object, e As EventArgs) Handles mnuHelpAbout.Click
    'about program
    MessageBox.Show("Student test score calculator version 0.1")
End Sub

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
    ' Close(program)
    Me.Close()
End Sub

Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
    StudentScoreDataInput()
End Sub
End Class

【问题讨论】:

  • 告诉你的老师可变(数据可以更改)结构是不好的。
  • 现在不能在列表中这样做,但感谢您的建议。

标签: vb.net


【解决方案1】:

只需查看,无需测试,您需要做的是;

'untested code
For Each i As StudentData In StudentsArray
    For Each S as Double in i.dblTestScoresArray
        dblTotalStd1 += s
    Next
Next

你不能在结构上做 +=,你需要在成员上做,因为它是一个数组,你需要循环遍历它

【讨论】:

    猜你喜欢
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多