학생 시험 점수 신청서를 작성해야합니다.
학생 이름을 저장하는 구조, 5 개의 테스트 점수를 보유 할 배열 및 평균 점수가 있습니다. 저는 6 명의 학생들을위한 구조의 배열을 만들었습니다. 사용자 입력은 텍스트 상자를 통해 설정됩니다. 각 학생의 평균을 계산해야합니다. 할당 요구 사항 : 응용 프로그램에는 Name (문자열), Test Scores (5 개의 double 형식의 배열) 및 Average (double 형식)을 저장하는 구조가 있어야합니다. 6 명의 학생과 일치하는 6 개의 구조 변수가 있어야합니다. 사용자가 각 학생의 데이터를 입력하고 각 학생의 평균 시험 점수를 계산할 수 있어야합니다. 사용자는 등의 파일에/인쇄 데이터를 저장 읽을 수 있어야합니다학생 시험 점수 평균 계산 잘못 함
은 0 아래 이상 점수를 받아 들일해야
기존 게시물로 해결하고 지난 2 일 동안 해결하려고 노력했습니다. 지금 나는 정확한 평균을 얻지 못하고있다.
정보를 인쇄하고 검색 할 수 있어야하지만이 문제를 해결할 것입니다. 저는 학생을위한 최대 카운트에서 5와 6을 시험했으며 테스트의 최대 카운트는 4와 5를 시도했습니다. 내가 가진 숫자는 정확하다고 생각하지만 게시물 중 많은 수가 다른 숫자를 사용합니다. 그러나이 숫자를 사용할 때 디버그 모드로 실행했을 때 학생 수는 7이되어 100 % 확실하지는 않지만 이것이 정확하다고 생각합니까? . 그것은 합계가 올바르게 추가되지 않는 것으로 보입니다. 나는 여러 가지 방법을 시도해 보았고 심지어 다음 숫자로 넘어 가기 전에 0으로 다시 초기화하려고 시도했지만 지금까지 시도한 것은 아무것도 없습니다. 따라서 각 성적 그룹에 대해 다른 Try Catch 문을 사용해야하는 이유입니다. 내가 따로 보관해야 할 수도 있기 때문에 지금 당장 떠났다.
여기 내 코드입니다. 어떤 도움을 주셔서 감사합니다.
fyi - Imports System.IO에서 코드가 시작되지 않습니다. 따라서 'Enter code here'아래의 초기 코드가 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 –