我有一个任务来构建一个学生测验分数应用程序。
我有一个结构来保存一个学生的名字,一个数组来保存5个测试成绩和一个平均分数。我为6名学生创建了一系列结构。用户输入通过文本框设置。我需要计算每个学生的平均值。 作业要求: 应用程序应该具有存储:Name(字符串),Test Scores(5个双精度数组)和Average(双精度)的结构。它应该有6个结构变量的数组来匹配6名学生。它应该允许用户输入每个学生的数据,并计算每个学生的平均测试分数。用户需要能够将打印数据保存,读取和/来自文件等学生考试分数错误地计算平均分
它不应该接受低于0或以上分数100
我已经阅读了这个几个职位,但一直没能与现有的职位解决,并花了最后2天试图解决。现在我没有得到正确的平均值。
我还需要能够打印和检索信息,但我首先要解决这个问题。我已经尝试了5和6的最大计数为学生和4和5的最大计数为测试。我相信我的数字是正确的,但许多帖子有不同的数字,但是当我使用这些数字时,我在调试模式下运行时学生数为7,所以我不是100%确定,但相信这是正确的。它看起来总和没有正确添加,我尝试了很多方法来修复,甚至尝试初始化回到0之前移动到下一个数字,但我迄今尝试过的东西似乎工作。因此,对于每组成绩而言,Try Catch声明的原因是不同的。我现在离开,以防万一我可能需要分开。
这是我的代码。任何帮助表示赞赏。
fyi-由于某些原因,代码不会在Imports System.IO上启动,因此在“输入代码位于此处”下的初始代码不会显示为vb。请让我知道如何解决以后的帖子。
谢谢!
Imports System.IO
Public Class Form1
'Class level variables
Const intMAX_STUDENTS As Integer = 5 'Number of Students
Const intMAX_TESTS As Integer = 4 'Number of Tests
Private strFilename As String = "StudentReport.txt" 'Document File name
Private student(intMAX_STUDENTS) As StudentRecord 'Array for student names
Structure StudentRecord
Dim strStudent As String
Dim dblTestScores() As Double
Dim dblAverage As Double
End Structure
Sub CalcAverage()
ImportNames()
'Variable to hold the total of the grades.
Dim dblGradesTotal0 As Double = 0
Dim dblGradesTotal1 As Double = 0
Dim dblGradesTotal2 As Double = 0
Dim dblGradesTotal3 As Double = 0
Dim dblGradesTotal4 As Double = 0
Dim dblGradesTotal5 As Double = 0
'Add scores to the array
For intIndex = 0 To intMAX_STUDENTS
ReDim student(intIndex).dblTestScores(4) 'Scores per student
Next
Try
'Get grades for first student
student(0).dblTestScores(0) = ValidInput(CDbl(txtGrade00.Text))
student(0).dblTestScores(1) = ValidInput(CDbl(txtGrade01.Text))
student(0).dblTestScores(2) = ValidInput(CDbl(txtGrade02.Text))
student(0).dblTestScores(3) = ValidInput(CDbl(txtGrade03.Text))
student(0).dblTestScores(4) = ValidInput(CDbl(txtGrade04.Text))
For Each i As StudentRecord In student
For Each a As Double In i.dblTestScores
dblGradesTotal0 += a
Next
Next
lblAvg0.Text = CStr(dblGradesTotal0/intMAX_TESTS)
Catch ex As Exception
MessageBox.Show("Be sure to enter a valid numeric score")
End Try
Try
'Get grades for second student
student(1).dblTestScores(0) = ValidInput(CDbl(txtGrade10.Text))
student(1).dblTestScores(1) = ValidInput(CDbl(txtGrade11.Text))
student(1).dblTestScores(2) = ValidInput(CDbl(txtGrade12.Text))
student(1).dblTestScores(3) = ValidInput(CDbl(txtGrade13.Text))
student(1).dblTestScores(4) = ValidInput(CDbl(txtGrade14.Text))
For Each i As StudentRecord In student
For Each b As Double In i.dblTestScores
dblGradesTotal1 += b
Next
Next
lblAvg1.Text = CStr(dblGradesTotal1/intMAX_TESTS)
Catch ex As Exception
MessageBox.Show("Be sure to enter a valid numeric score")
End Try
Try
'Get grades for third student
student(2).dblTestScores(0) = ValidInput(CDbl(txtGrade20.Text))
student(2).dblTestScores(1) = ValidInput(CDbl(txtGrade21.Text))
student(2).dblTestScores(2) = ValidInput(CDbl(txtGrade22.Text))
student(2).dblTestScores(3) = ValidInput(CDbl(txtGrade23.Text))
student(2).dblTestScores(4) = ValidInput(CDbl(txtGrade24.Text))
For Each i As StudentRecord In student
For Each c As Double In i.dblTestScores
dblGradesTotal2 += c
Next
Next
lblAvg2.Text = CStr(dblGradesTotal2/intMAX_TESTS)
Catch ex As Exception
MessageBox.Show("Be sure to enter a valid numeric score")
End Try
Try
'Get grades for fourth student
student(3).dblTestScores(0) = ValidInput(CDbl(txtGrade30.Text))
student(3).dblTestScores(1) = ValidInput(CDbl(txtGrade31.Text))
student(3).dblTestScores(2) = ValidInput(CDbl(txtGrade32.Text))
student(3).dblTestScores(3) = ValidInput(CDbl(txtGrade33.Text))
student(3).dblTestScores(4) = ValidInput(CDbl(txtGrade34.Text))
For Each i As StudentRecord In student
For Each d As Double In i.dblTestScores
dblGradesTotal3 += d
Next
Next
lblAvg3.Text = CStr(dblGradesTotal3/intMAX_TESTS)
Catch ex As Exception
MessageBox.Show("Be sure to enter a valid numeric score")
End Try
Try
'Get grades for fifth student
student(4).dblTestScores(0) = ValidInput(CDbl(txtGrade40.Text))
student(4).dblTestScores(1) = ValidInput(CDbl(txtGrade41.Text))
student(4).dblTestScores(2) = ValidInput(CDbl(txtGrade42.Text))
student(4).dblTestScores(3) = ValidInput(CDbl(txtGrade43.Text))
student(4).dblTestScores(4) = ValidInput(CDbl(txtGrade44.Text))
For Each i As StudentRecord In student
For Each e As Double In i.dblTestScores
dblGradesTotal4 += e
Next
Next
lblAvg4.Text = CStr(dblGradesTotal4/intMAX_TESTS)
Catch ex As Exception
MessageBox.Show("Be sure to enter a valid numeric score")
End Try
Try
'Get grades for sixth student
student(5).dblTestScores(0) = ValidInput(CDbl(txtGrade50.Text))
student(5).dblTestScores(1) = ValidInput(CDbl(txtGrade51.Text))
student(5).dblTestScores(2) = ValidInput(CDbl(txtGrade52.Text))
student(5).dblTestScores(3) = ValidInput(CDbl(txtGrade53.Text))
student(5).dblTestScores(4) = ValidInput(CDbl(txtGrade54.Text))
For Each i As StudentRecord In student
For Each f As Double In i.dblTestScores
dblGradesTotal5 += f
Next
Next
lblAvg5.Text = CStr(dblGradesTotal5/intMAX_TESTS)
Catch ex As Exception
MessageBox.Show("Be sure to enter a valid numeric score")
End Try
End Sub
Private Sub mnuFileOpen_Click(sender As Object, e As EventArgs) Handles mnuFileOpen.Click
End Sub
Private Sub mnuFileSave_Click(sender As Object, e As EventArgs) Handles mnuFileSave.Click
End Sub
Private Sub mnuFilePrint_Click(sender As Object, e As EventArgs) Handles mnuFilePrint.Click
End Sub
Private Sub mnuFileExit_Click(sender As Object, e As EventArgs) Handles mnuFileExit.Click
Me.Close()
End Sub
Private Sub mnuReportClear_Click(sender As Object, e As EventArgs) Handles mnuReportClear.Click
End Sub
Private Sub mnuHelpAbout_Click(sender As Object, e As EventArgs) Handles mnuHelpAbout.Click
MessageBox.Show("This contains information regarding the Student Test Scores Application")
End Sub
Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
CalcAverage()
End Sub
Public Function ValidInput(ByVal score As Double) As Double
If score >= 0 And score <= 100 Then
Return (score)
Else
Return MessageBox.Show("Please enter a valid test score between 0 and 100")
End If
End Function
Sub ImportNames()
student(0).strStudent = txtStudent0.Text
student(1).strStudent = txtStudent1.Text
student(2).strStudent = txtStudent2.Text
student(3).strStudent = txtStudent3.Text
student(4).strStudent = txtStudent4.Text
student(5).strStudent = txtStudent5.Text
End Sub
End Class
为了更好地得到社区的回应,我建议您更具体地了解什么是工作和什么不是,包括任何错误消息,并将代码修剪到相关部分。 http://stackoverflow.com/help/how-to-ask – 2014-11-03 05:49:45