myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Code-Reviews » Wie kann ich diesen WinForms Code verbessern?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich diesen WinForms Code verbessern?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Holyfuture Holyfuture ist männlich
myCSharp.de-Mitglied

avatar-205.gif


Dabei seit: 18.04.2018
Beiträge: 3
Entwicklungsumgebung: Visual Studio


Holyfuture ist offline

Wie kann ich diesen WinForms Code verbessern?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

verzeiht, wenn ich hier im falschen Forum frage. Ich bin noch neu hier im Forum ^^

Aktuell beschäftige ich mich mit der Programmiersprache C# die mir auch viel Spaß macht. Als kleines Einstiegsprojekt habe ich mich für ein Programm entschieden, dass den Notendurchschnitt berechnet. Ich bin selber nicht zufrieden mit meinem geschriebenen Programmier-Code, aber ich weiß nicht wie ich ihn verbessern kann. Ich hatte an einer Alternativlösung mit arrays gedacht, um die variablen übersichtlicher zu halten, dennoch konnte ich mir nichts schlüssiges zusammenreimen. Ich hoffe ihr könnt mir helfen meinen Code zu verbessern. Tipps und Verbesserungsvorschläge sind also gerne gesehen =)

C#-Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btn_calc_Click(object sender, EventArgs e)
        {
            string[] note = new string[6];
            string[] eingabe = new string[6] { note1.Text, note2.Text, note3.Text, note4.Text, note5.Text, note6.Text };
            int n;

            for (int i = 0; i < 6; i++)
            {
                note[i] = eingabe[i];

                if (i == 5)
                {
                    if (String.IsNullOrEmpty(note[i]))
                    {
                        MessageBox.Show("Bitte fülle alle Felder aus!");
                    }
                    else if(int.TryParse(note[i], out n))
                    {
                        double teilnehmer = 0, gesamtnote = 0, durchschnitt = 0;
                        int nr = 1;

                        for (int j = 0; j < 6; j++)
                        {
                            teilnehmer += Convert.ToInt32(note[j]);
                            gesamtnote += (nr++ * Convert.ToInt32(note[j]));
                        }

                        durchschnitt = gesamtnote / teilnehmer;

                        MessageBox.Show("Der Notendurchschnitt von " + Convert.ToString(teilnehmer) + " Schülern lautet " + Convert.ToString(String.Format("{0:0.00}", durchschnitt)));
                    }

                }

            }

        }

        private void btn_close_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Holyfuture am 19.04.2018 11:23.

18.04.2018 16:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 1.010
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich denke das würde viel besser aussehen, wenn du Logik von Ansicht trennen würdest und entsprechend DataBinding einsetzt.

Ist aufgrund fehlender Komplexität hier zwar nicht wirklich erforderlich - aber man sollte es zum Lernen definitiv gleich richtig machen.

Was du noch einbauen könntest wäre ein etwas dynamischeres Notensystem im Sinne von:
Es gibt nicht nur Noten von 1-6 - sondern von 1-x. Wenn du's richtig machst kannst du dir einige Code-Dopplungen sparen (Double.TryParse - sollte eigentlich aber sicher eher int.TryParse ?) und machst eine dynamische Oberfläche.

LG
18.04.2018 16:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
M.L.
myCSharp.de-Mitglied

Dabei seit: 26.09.2006
Beiträge: 215
Entwicklungsumgebung: VS Community '19


M.L. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Und beim Anlegen und Bearbeiten der Form-Elemente kann man etwas eleganter vorgehen:  https://stackoverflow.com/questions/1077...-textboxes-in-c
18.04.2018 16:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.639
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

19.04.2018 08:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Holyfuture Holyfuture ist männlich
myCSharp.de-Mitglied

avatar-205.gif


Dabei seit: 18.04.2018
Beiträge: 3
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von Holyfuture

Holyfuture ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe den obrigen Code verbessert und im Startbeitrag editiert. Danke an Th69 für die Verlinkung des Guides. Komisch, dass ich darauf selber nicht gekommen bin, obwohl ich das im abgespeckten Umfang schon in C++ gemacht habe, mh. Beilegend kann ich folgenden Beitrag empfehlen, wenn man noch recht unsicher auf den Beinen ist ->  https://stackoverflow.com/questions/1077...-textboxes-in-c - danke dafür an M.L!

@Taipi88
Danke für deinen Tipp. Weitere Noten dynamisch vom Benutzer hinzuzufügen betrachte ich jetzt als nicht wirklich sinnvoll, da es ja schließlich nur ein einfacher Durchschnittsberechner sein soll. Ich werde es allerdings zu Übungszwecken ausprobieren. Für einen besseren Code werde ich mich nun in WPF einarbeiten!

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Holyfuture am 19.04.2018 11:54.

19.04.2018 11:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.945
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Holyfuture:
Ich habe den obrigen Code verbessert und im Startbeitrag editiert.

Bitte nicht. So funktioniert ein Forum nicht.
Wenn Du den historischen Verlauf des Threads kaputt machst, werden die Beiträge sinnfrei.
Das sollte logisch sein.

Bitte poste Deinen korrigierten Code einfach in einen neuen Beitrag, den Du ja nun ohnehin geschrieben hast.
Danke.
19.04.2018 13:02 Beiträge des Benutzers | zu Buddylist hinzufügen
Holyfuture Holyfuture ist männlich
myCSharp.de-Mitglied

avatar-205.gif


Dabei seit: 18.04.2018
Beiträge: 3
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von Holyfuture

Holyfuture ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das war leider unüberlegt. Ich habe den alten Code verworfen und nirgendswo abgespeichert. Ich hatte gehofft, dass ich die Editierungs-Historie des Startbeitrags als Referenz nutzen könnte, doch scheint diese Steinalte WBB Version dies noch nicht zu unterstützen ~ sorry


mycsharp.de  Moderationshinweis von MrSparkle (19.04.2018 15:23):

Bitte keine Full Quotes. Und beachte bitte  [Hinweis] Wie poste ich richtig?
 
19.04.2018 13:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
M.L.
myCSharp.de-Mitglied

Dabei seit: 26.09.2006
Beiträge: 215
Entwicklungsumgebung: VS Community '19


M.L. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
und nirgendswo abgespeichert.

Aus solchen Gründen könnte man ein Versionsverwaltungssystem verwenden, am Beispiel Python & Git:  https://realpython.com/python-git-github-intro/
20.04.2018 11:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Jahre.
Der letzte Beitrag ist älter als 2 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 08.07.2020 15:40