Noten ausrechnen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Dancger.

    Noten ausrechnen

    Hallo Leute,

    Folgendes: Ich versuche mir gerade eine Software zu erstellen wo ich Noten eintragen kann und er mir dann den Schnitt anzeigt...
    Soweit so gut,klingt zwar einfach ist es aber nicht. Ich habe dass mit den einfachen Stegreifaufgaben schon hinbekommen, ist ja auch nicht so schwer,man muss ja nur alle Noten zusammenrechnen und dann geteilt durch die Anzahl. Wie funktioniert das jetzt mit 0,5 und 0,3 er Noten?

    Ich möchte mich jetzt schon für eure Mithilfe bedanken...

    Mfg

    Niklas
    Bin auch noch fleißig am Lernen.
    Aber habe jetzt schon einmal was mit "Double" gemacht ^^

    Soweit ich jetzt weiß machste das dann so

    Is nur en Beispiel:

    VB.NET-Quellcode

    1. Dim a As Double
    2. a = 1.0 To 6.0



    So das wäre die definition .

    Bitte korriegiert mich damit ich weiss was da mein Fehler war ^^
    Aufbau


    1x Listbox, 1x Textbox, 1x Button, 1x Label, 1x GrpBox, 2x RadioButton

    Listbox = lstNoten
    Textbox = txtNoten
    Button = cmdCalc
    Label = lblResultat
    RadioButton1 = rdbHalb
    RadioButton2 = rdbGanz

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub cmdCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCalc.Click
    3. Dim anzNoten As Integer
    4. Dim r As Double
    5. Dim note As Integer
    6. Dim durchschnitt As Double
    7. If IsNumeric(txtNoten.Text) And txtNoten.Text <= 6 And txtNoten.Text >= 1 Then
    8. If rdbGanz.Checked = True Then
    9. lstNoten.Items.Add(txtNoten.Text)
    10. lstNoten.Items.Add(txtNoten.Text)
    11. Else
    12. lstNoten.Items.Add(txtNoten.Text)
    13. End If
    14. For Each note In lstNoten.Items
    15. anzNoten += 1
    16. Next
    17. For anzNoten = 0 To lstNoten.Items.Count - 1
    18. durchschnitt = durchschnitt + lstNoten.Items(anzNoten)
    19. Next
    20. r = durchschnitt / anzNoten
    21. lblResultat.Text = Math.Round(r, 2)
    22. Else
    23. MessageBox.Show("Die Zahl ist grösser als 6 oder kleiner als 1")
    24. End If
    25. txtNoten.Text = ""
    26. End Sub
    27. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    28. End Sub
    29. End Class



    Ich entschuldige mich für meinen schlechten Programmierstyl, ich hoffe der verbessert sich ein bisschen ;)
    Trotzdem hoffe ich, dass dir das etwas weitergeholfen hat.


    Freundliche Grüsse,
    fReeZ.

    Edit by der_Kurt:
    * Quellcode wurde formatiert *

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „der_Kurt“ ()

    joar am code könnte man noch bisschen was verbessern ;)


    VB.NET-Quellcode

    1. Private Sub cmdCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCalc.Click
    2. Dim r As Double
    3. Dim durchschnitt As Double
    4. If IsNumeric(txtNoten.Text) Then
    5. If DirectCast(txtNoten.Text, Double) <= 6 And DirectCast(txtNoten.Text, Double) >= 1 Then
    6. If rdbGanz.Checked = True Then
    7. lstNoten.Items.Add(txtNoten.Text)
    8. lstNoten.Items.Add(txtNoten.Text)
    9. Else
    10. lstNoten.Items.Add(txtNoten.Text)
    11. End If
    12. For Each note In lstNoten.Items
    13. durchschnitt += DirectCast(note, Double)
    14. Next
    15. r = durchschnitt / lstNoten.Items.Count
    16. lblResultat.Text = Math.Round(r, 2)
    17. Else
    18. MsgBox("Die Zahl ist grösser als 6 oder kleiner als 1")
    19. End If
    20. Else
    21. MsgBox("Es wurde keine Zahl eingegeben!")
    22. End If
    23. txtNoten.Text = ""
    24. End Sub
    Hallo,

    Jetzt habe ich gedacht ich möchte euch nicht mehr auf die Nerven gehen und versuche den Rest selbst.
    Jetzt stellt sich aber heraus,dass ich auch noch einen RadioButton für Doppelt(Also Schulaufgaben) brauche. Jetzt verstehe ich aber den Code nicht und möchte euch noch einmal fragen ob ihr mit helfen wollt...
    Du fügst einen Radiobutton hinzu + folgende zeile Code:

    VB.NET-Quellcode

    1. Private Sub cmdCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCalc.Click
    2. Dim r As Double
    3. Dim durchschnitt As Double
    4. If IsNumeric(txtNoten.Text) Then
    5. If DirectCast(txtNoten.Text, Double) <= 6 And DirectCast(txtNoten.Text, Double) >= 1 Then
    6. If rdbGanz.Checked Then
    7. lstNoten.Items.Add(txtNoten.Text)
    8. lstNoten.Items.Add(txtNoten.Text)
    9. 'Von hier
    10. ElseIf rdbDoppelt.Checked Then
    11. lstNoten.Items.Add(txtNoten.Text)
    12. lstNoten.Items.Add(txtNoten.Text)
    13. lstNoten.Items.Add(txtNoten.Text)
    14. lstNoten.Items.Add(txtNoten.Text)
    15. 'bis hier
    16. Else
    17. lstNoten.Items.Add(txtNoten.Text)
    18. End If
    19. For Each note In lstNoten.Items
    20. durchschnitt += DirectCast(note, Double)
    21. Next
    22. r = durchschnitt / lstNoten.Items.Count
    23. lblResultat.Text = Math.Round(r, 2)
    24. Else
    25. MsgBox("Die Zahl ist grösser als 6 oder kleiner als 1")
    26. End If
    27. Else
    28. MsgBox("Es wurde keine Zahl eingegeben!")
    29. End If
    30. txtNoten.Text = ""
    31. End Sub


    Ach ja, wenn Du noch Fragen hast, frag ruhig...
    @ponmalka
    Ich hab gar nichts gegen Codebeispiele, aber wenn du ihm schon Code hinklatscht, erklärs ihm wenigstens oder kommentiers gut!!

    @TE
    Das Prinzip ist eigentlich einfach. Du tippst deine Note in die Textbox. Danach setzt du den Radiobutton auf "Ganz" oder "Doppelt" (whatever). Wenn du auf hinzufügen klickst, überprüfst du welcher dieser 2 Radiobuttons markiert ist. Wenn "Ganz" gewählt ist, fügst du die Zahl der Listbox hinzu. Falls "Doppelt" gewählt ist, multiplizierst du die Note in der TextBox mal 2 und fügst sie dann der ListBox hinzu. Zum Notenschnitt kommst du ganz einfach: Alle Noten zusammengerechnet (mit einer Schleife ausrechnen) geteilt durch die Anzahl Noten (ListBox1.Items.Count).

    Der Code dazu sähe so aus (Kommentare lesen):

    VB.NET-Quellcode

    1. Private Sub btn_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_add.Click
    2. 'Abfrage ob in der TextBox eine Zahl steht, ob sie grösser oder gleich 1 ist und kleiner oder gleich 6 ist
    3. If IsNumeric(tb_grade.Text) AndAlso CDbl(tb_grade.Text) >= 1 AndAlso CDbl(tb_grade.Text) <= 6 Then
    4. 'Entscheiden welcher Radiobutton markiert ist
    5. Select Case True
    6. Case rdb_double.Checked 'Doppelt
    7. lb_grades.Items.Add((CDbl(tb_grade.Text) * 2).ToString) 'Text in eine Zahl umwandeln und dann mit 2 multiplizieren (Danach wieder zu Text wandeln [ToString])
    8. Case rdb_full.Checked 'Normal
    9. lb_grades.Items.Add(tb_grade.Text.ToString) 'Normal zählen und hinzufügen
    10. Case rdb_half.Checked
    11. lb_grades.Items.Add((CDbl(tb_grade.Text) / 2).ToString) 'Text in eine Zahl umwandeln und dann durch 2 teilen (Danach wieder zu Text wandeln [ToString])
    12. End Select
    13. 'TextBox leeren
    14. tb_grade.Clear()
    15. Else
    16. MessageBox.Show("Keine gültige Note eingegeben")
    17. End If
    18. End Sub
    19. Private Sub btn_calculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_calculate.Click
    20. 'Variable für die Berechnung
    21. Dim AlleNoten As Double = 0
    22. 'Alle Einträge zu "AlleNoten" addieren
    23. For Index As Integer = 0 To lb_grades.Items.Count - 1 '-1 weil die Listbox 0 basiert ist
    24. AlleNoten += CDbl(lb_grades.Items(Index).ToString) 'Note hinzufügen (Wieder zu Zahl umwandeln, damit gerechnet werden kann, und nach der Berechnung wieder zu Text umwandeln)
    25. Next
    26. 'Ausgabe
    27. Dim Durschnitt As Double = AlleNoten / lb_grades.Items.Count
    28. lbl_average.Text = "Durchschnitt: " & Math.Round(Durschnitt, 2) 'Auf 2 Nachkommastellen runden
    29. End Sub

    Dazu müsste deine Form folgende Steuerelemente besitzen:
    • lbl_average [Label für Durschnitssanzeige]
    • btn_calculate '[Button zum Berechnen]
    • btn_add [Button zu hinzufügen einer neuen Note]
    • rdb_half, rdb_full, rdb_double [Radiobuttons für "Halb", "Ganz" und "Doppelt"]
    • lb_grades [ListBox für die Noten]
    • tb_grade'[TextBox für die Eingabe einer neuen Note]
    Testprojekt:
    Noten.zip

    Bei Fragen einfach nochmals nachfragen.

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Dancger“ ()