0

成績計算プログラムを作成しようとしていますが、次の 2 つの問題があります。

  1. 適切な出力を取得する(ばかげた数値を取得しているため)および
  2. カウンターを機能させる。

基本的なフォームは、基本的に 1 つは 7 つの入力グレードを入力します。

  • 3 つの試験 (それぞれ 15%、20%、20% の重み付け)
  • プロジェクト (重み付け 10%)、
  • 割り当て (20% 加重)、
  • ピアレビュー (重み付け 5%) 、
  • プログラミング言語のプレゼンテーション (重み付け 10%)

A's個人は、数字の等級、文字の等級、および何人が得たかをカウントする 2 つのカウンターの出力を取得することになっていますF's

たとえば、3 つの試験成績を入力する場合: 828791; Assignments: 94; Peer reviews: 100; programming language presentation: 90;final project: 92,

明らかに文字の等級と数値である必要があるときに、最終的な数値の等級253.90と文字の等級を取得します。FA89.90

カウンターも表示されていないため、正しく機能していませんがcount、適切な場所に配置したように感じます(出力を表示します)。ここで私は正確に何を間違っていますか?これが私のコードです

Option Strict On

Public Class frmGradeCalculator
    'declare Constants
    Const EXAM1GRADE_WEIGHT As Decimal = 0.15D
    Const EXAM2GRADE_WEIGHT As Decimal = 0.2D
    Const EXAM3GRADE_WEIGHT As Decimal = 0.2D
    Const HOMEWORKGRADE_WEIGHT As Decimal = 0.2D
    Const HOMEWORKPEERREVIEW_WEIGHT As Decimal = 0.05D
    Const LANGUAGEQUICKREFERENCE_WEIGHT As Decimal = 0.1D
    Const FINALPROJECT_WEIGHT As Decimal = 0.1D

    'Declare module variables
    Dim mdecFinalNumericGrade As Decimal
    Dim mstrFinalLetterGrade As String
    Dim mintStudentsWithAs As Integer
    Dim mintStudentsWithFs As Integer

    Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click

        'declare variables
        Dim decExam1Grade As Decimal
        Dim decExam2Grade As Decimal
        Dim decExam3Grade As Decimal
        Dim decHomeworkGrade As Decimal
        Dim decPeerReviewGrade As Decimal
        Dim decLanguageReferenceGrade As Decimal
        Dim decFinalProjectGrade As Decimal
        Dim decPercent As Decimal

        'check for blanks
        If (txtExam1Grade.Text) = "" Then
            MessageBox.Show("You Can't Leave Exam 1 Blank")
            Exit Sub
        End If

        'check for numeric
        If IsNumeric(txtExam1Grade.Text) = False Then 'value is not numeric
            MessageBox.Show("Please enter a numeric value for Exam 1!")
            Exit Sub
        End If

        'check for blanks
        If (txtExam2Grade.Text) = "" Then
            MessageBox.Show("Please enter Exam 2!")
            Exit Sub
        End If
        'check for everything else
        If IsNumeric(txtExam2Grade.Text) = False Then 'Value is not numeric
            MessageBox.Show("Please enter a numeric value for Exam 2!")
            Exit Sub
        End If

        'check for blanks
        If (txtExam3Grade.Text) = "" Then
            MessageBox.Show("Please enter Exam 3!")
            Exit Sub
        End If

        'check for numerics
        If IsNumeric(txtExam3Grade.Text) = False Then
            MessageBox.Show("Please enter a positive numeric value for Exam3!")
            Exit Sub
        End If

        'check for blanks
        If (txtHomeworkGrade.Text) = "" Then
            MessageBox.Show("Please enter Homework Grade!")
            Exit Sub
        End If

        'check for numerics
        If IsNumeric(txtHomeworkGrade.Text) = False Then
            MessageBox.Show("Please enter a numeric positive value for Homework Grade!")
            Exit Sub
        End If

        'check for blanks
        If (txtPeerReviewGrade.Text) = "" Then
            MessageBox.Show("Please enter a Peer Review Grade!")
            Exit Sub
        End If

        'check for numerics
        If IsNumeric(txtPeerReviewGrade.Text) = False Then
            MessageBox.Show("Please enter a numeric positive value for Peer Review Grade!")
            Exit Sub
        End If

        'check for blanks
        If (txtLanguageReferenceGrade.Text) = "" Then
            MessageBox.Show("Please enter a Language Reference Grade!")
            Exit Sub
        End If

        'check for numerics
        If IsNumeric(txtLanguageReferenceGrade.Text) = False Then
            MessageBox.Show("Please enter a numeric positive value for Language Reference Grade!")
            Exit Sub
        End If
        'check for blanks
        If (txtFinalProjectGrade.Text) = "" Then
            MessageBox.Show("Please enter a Final Project Grade!")
            Exit Sub
        End If

        'check for numerics
        If IsNumeric(txtFinalProjectGrade.Text) = False Then
            MessageBox.Show("Please enter a numeric positive value for Final Project Grade!")
            Exit Sub
        End If

        'convert data types
        decExam1Grade = Convert.ToDecimal(txtExam1Grade.Text)
        decExam2Grade = Convert.ToDecimal(txtExam2Grade.Text)
        decExam3Grade = Convert.ToDecimal(txtExam3Grade.Text)
        decHomeworkGrade = Convert.ToDecimal(txtHomeworkGrade.Text)
        decPeerReviewGrade = Convert.ToDecimal(txtPeerReviewGrade.Text)
        decLanguageReferenceGrade = Convert.ToDecimal(txtLanguageReferenceGrade.Text)
        decFinalProjectGrade = Convert.ToDecimal(txtFinalProjectGrade.Text)
        mdecFinalNumericGrade = (decExam1Grade * EXAM1GRADE_WEIGHT) + _
                                (decExam2Grade * EXAM2GRADE_WEIGHT) + _
                                (decExam3Grade * EXAM3GRADE_WEIGHT) + _
                                (decHomeworkGrade * HOMEWORKGRADE_WEIGHT) + _
                                (decPeerReviewGrade * HOMEWORKPEERREVIEW_WEIGHT) + _
                                (decLanguageReferenceGrade + LANGUAGEQUICKREFERENCE_WEIGHT) + _
                                (decFinalProjectGrade + FINALPROJECT_WEIGHT)

        'check for 0 or positive
        If decExam1Grade < 0 Then
            MessageBox.Show("Please enter a positive value or zero for Exam 1!")
            Exit Sub
        End If

        'check for 0 or positive
        If decExam2Grade < 0 Then
            MessageBox.Show("Please enter a positive value or zero for Exam 2!")
            Exit Sub
        End If

        'check for 0 or positive
        If decExam3Grade < 0 Then
            MessageBox.Show("Please enter a positive value or zero for Exam 3!")
            Exit Sub
        End If

        'check for 0 or positive
        If decHomeworkGrade < 0 Then
            MessageBox.Show("Please enter a positive value or zero for Homework Grade!")
            Exit Sub
        End If

        'check for 0 or positive
        If decPeerReviewGrade < 0 Then
            MessageBox.Show("Please enter a positive value or zero for Peer Review Grade!")
            Exit Sub
        End If

        'check for 0 or positive
        If decLanguageReferenceGrade < 0 Then
            MessageBox.Show("Please enter a positive value or zero for Language Reference!")
            Exit Sub
        End If

        'check for 0 or positive
        If decFinalProjectGrade < 0 Then
            MessageBox.Show("Please enter a positive value or zero for Final Project Grade!")
            Exit Sub
        End If

        'make sure values are less than 100
        If decExam1Grade > 100 Then
            MessageBox.Show("Please enter a value thats 100 or less!")
        End If

        If decExam2Grade > 100 Then
            MessageBox.Show("Please enter a value thats 100 or less!")
        End If

        If decExam3Grade > 100 Then
            MessageBox.Show("Please enter a value thats 100 or less!")
        End If

        If decHomeworkGrade > 100 Then
            MessageBox.Show("Please enter a value thats 100 or less!")
        End If

        If decPeerReviewGrade > 100 Then
            MessageBox.Show("Please enter a value thats 100 or less!")
        End If

        If decLanguageReferenceGrade > 100 Then
            MessageBox.Show("Please enter a value thats 100 or less!")
        End If

        If decFinalProjectGrade > 100 Then
            MessageBox.Show("Please enter a value thats 100 or less!")
        End If

        'Determine grade per letter
        Select Case decpercent
            Case Is >= 89.5D
                mstrFinalLetterGrade = "A"
                mintStudentsWithAs += 1
            Case Is >= 79.5D
                mstrFinalLetterGrade = "B"
            Case Is >= 69.5D
                mstrFinalLetterGrade = "C"
            Case Is >= 59.5D
                mstrFinalLetterGrade = "D"
            Case Else
                mstrFinalLetterGrade = "F"
                mintStudentsWithFs += 1
        End Select

        lblFinalLetterGrade.Text = mstrFinalLetterGrade

        'display outputs
        lblFinalNumericGrade.Text = mdecFinalNumericGrade.ToString("f2")
    End Sub

    Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
        'clear the texboxes and labels
        txtExam1Grade.Clear()
        txtExam2Grade.Clear()
        txtExam3Grade.Clear()
        txtHomeworkGrade.Clear()
        txtPeerReviewGrade.Clear()
        txtLanguageReferenceGrade.Clear()
        txtFinalProjectGrade.Clear()
        lblFinalLetterGrade.Text = ""
        lblFinalNumericGrade.Text = ""

        'setcursor back to top textbox
        txtExam1Grade.Focus()

    End Sub

    Private Sub btnReset_Click(ByVal sende As System.Object, ByVal e As System.EventArgs) Handles btnReset.Click

        'reset module level variables
        mdecFinalNumericGrade = 0
        mstrFinalLetterGrade = ""
        mintStudentsWithAs = 0
        mintStudentsWithFs = 0

    End Sub

    Private Sub btnExit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExit.Click
        'close the form
        End
    End Sub

    Private Sub frmGradeCalculator_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class
4

1 に答える 1

1

言語のプレゼンテーションと最終的なプロジェクトに重みを掛けるのではなく、スコアに重みを追加しているため、最終的な成績の合計は間違っています。

  • 試験 1 = 82 * .15 = 12.3
  • 試験 2 = 87 * .20 = 17.4
  • 試験 3 = 91 * .20 = 18.2
  • 割り当て = 94 * .20 = 18.8
  • ピアレビュー = 100 * .05 = 5
  • 言語のプレゼンテーション = 90 + .10 = 90.1
  • 最終プロジェクト = 92 + .10 = 92.1

最後の 2 つの値の加算 (乗算ではなく) に注意してください。合計は 253.9 です。

medcFinalNumericGrade の最後の 2 つの計算を次のように変更します。

(decLanguageReferenceGrade * LANGUAGEQUICKREFERENCE_WEIGHT) + _
(decFinalProjectGrade * FINALPROJECT_WEIGHT)

には値が割り当てられないため、常に "F"decpercentが返され、Else Case が実行されます。depercent 値を割り当てるか、mdecFinalNumericGrade を使用します。

例えば:

Select Case mdecFinalNumericGrade

それ以外の

Select Case decpercent

Select Case を修正すると、カウントが機能するはずです (フォームをリセットしない限り)。

于 2012-09-27T05:21:27.943 に答える