π‘π Aufgabensammlung
Last updated
Last updated
Unten stehen sechs Aufgaben. Es ist empfohlen, dass alle Aufgaben in der selben Projektmappe (Solution) gelΓΆst werden. In der Projektmappe soll pro Aufgabe ein Projekt angelegt werden. Du kannst wΓ€hlen, welches Projekt ausgefΓΌhrt wird, indem du folgenden Anweisungen folgst: (Wie kann ich wΓ€hlen, welches meiner Projekte ausgefΓΌhrt wird?).
TextBox Control
Button Control
ListBox Control
Es soll ein Text eingegeben werden kΓΆnnen. Dieser Text wird der Liste hinzugefΓΌgt, sobald die Eingabe bestΓ€tigt wird. Die ListeneintrΓ€ge sollen nummeriert werden ("1: _", "2: _", ...).
Namensgebung
Angenehme BenutzeroberflΓ€che gestalten
Folgendes soll bei der generellen Namensgebung beachtet werden:
Priorisiere Lesbarkeit ΓΌber KΓΌrze (CanScrollHorizontally anstatt ScrollableX)
Auch keine AbkΓΌrzungen, ausser in AusnahmefΓ€llen mit allgemein bekannten AbkΓΌrzungen
WΓ€hle eine einfache Reihenfolge (CanScrollHorizontally anstatt HorizontalCanScroll)
Gestalte den Namen einfach
Keine _ und andere Sonderzeichen
Keine Typ-Prefixe (name anstatt sName) (Ausnahme siehe Controls)
Keine Umlaute
Folgendes soll bei der Namensgebung fΓΌr WinForms beachtet werden:
Projektmappen sollen sinnvolle Namen haben (z.B. "M318Exercises" anstatt "MySolution")
Projekte sollen sinnvolle Namen haben (z.B. "M318Exercise1" anstatt "MyFormsProject")
Der Name kann auf Deutsch oder Englisch sein, solange alle Namen in derselben Sprache sind.
Die Controls (z.B. Label, TextBox, ListBox) sollen sinnvolle Namen haben
Beispiel 1: titleLabel anstatt label1
Beispiel 2: connectionsGrid anstatt dataGridView1 oder connectionsDataGridView
Wichtig: Alle Controls sollen gute Namen haben, nicht nur die, welche im Code verwendet werden.
Die Events sollen sinnvolle Namen haben
Option 1: Korrekte Namensgebung verwenden
_ entferenen
Umformulierung
Beispiel: ConnectionsSelectedIndexChanged
Option 2: Generierte Namen verwenden
Achtung: Wenn ein Control umbenennt wird, mΓΌssen auch die dazugehΓΆrigen Events umbenennt werden.
Beispiel: connectionsGrid_SelectedIndexChanged
Folgendes soll FΓΌr die Benutzerfreundlichkeit beachtet werden:
Die Tab-Reihenfolge soll sinnvoll sein
TabIndex-Eigenschaft
ZusammengehΓΆrige Controls nacheinander
Etwa in der Reihenfolge, wie man liest
BestΓ€tigungsfunktion (AcceptButton-Eigenschaft von Form)
Stellt ein, was passiert, wenn man Enter drΓΌckt
Sollte beinahe immer gesetzt sein
Abbrechenfunktion (CancelButton-Eigenschaft von Form)
Stellt ein, was passiert, wenn man Escape drΓΌckt
Soll bei Dialogen gesetzt sein
Anchoring korrekt gesetzt
Wenn man bei einem Form die GrΓΆsse verΓ€ndern kann, muss die Anchor-Eigenschaft der Controls gesetzt werden. So werden die Controls sauber angezeigt.
Tipp: Controls, welche den Anchor links haben, sollen nur links von Controls sein, welche den Anchor rechts haben. Controls, welche den Anchor sowohl links als auch rechts haben, soll rechts nur rechts-Anchored und links nur links-Anchored Controls haben.
Folgendes sollte zur allgemeinen CodequalitΓ€t beachtet werden:
Redundante Strings: Wenn ein String doppelt in der Anwendung vorkommt soll er via Konstanten oder Variablen ausgelagert und nur einmalig deklariert werden. Dies gilt doppelt fΓΌr Magic Strings.
Die EinrΓΌckung soll immer gleich sein (Standard im Visual Studio: 4 Tabs pro geschachteltem Codeblock)
Diese GrundsΓ€tze sollen ab jetzt immer umgesetzt werden. Bei der Projektarbeit zΓ€hlt das zu Benutzerfreundlichkeit und Code-QualitΓ€t!
ComboBox Control
Buttons korrekt einschalten oder ausschalten
Doppelklick
Erstelle eine Anwendung, in welcher du auswΓ€hlen kannst, was du frΓΌhstΓΌcken mΓΆchtest. Diese Anwendung soll aus folgenden Teilen bestehen:
Combobox, welche alle nicht gewΓ€hlten Nahrungsmittel enthΓ€lt
Listbox, welche die gewΓ€hlten Nahrungsmittel enthΓ€lt
Ein Button ">>", welcher das in der Combobox markierte Nahrungsmittel wΓ€hlt
Ein Button "<<", welcher das in der Listbox markierte Nahrungsmittel entwΓ€hlt
Ein Doppelklick auf ein Nahrungsmittel in der Listbox hat dieselbe FunktionalitΓ€t wie der Button "<<", das Nahrungsmittel soll also entwΓ€hlt werden.
Ein wichtiges Feature ist, dass die Buttons korrekt ein- und ausgeschalten werden. Wichtig zu beachten ist, dass jedes Nahrungsmittel entweder in der Combobox oder in der Listbox ist, aber nicht an beiden Orten zugleich.
RadioButton Control
CheckBox Control
GroupBox Control
Erstelle eine Anwendung mit drei Gruppen (GroupBox). In der ersten zwei Gruppen sollen je drei RadioButton-Controls sein. In der dritten Gruppe sollen drei CheckBox-Controls sein. Beim Klick auf einen Button soll eine MessageBox gezeigt werden, welche ausgibt, was ausgewΓ€hlt wurde.
Eingabevalidierung
Status der Anwendung merken
Erstelle ein Form, welches ein Eingabefeld, einen Einzahlen-Button, einen Abheben-Button und ein Label mit dem aktuellen Kontostand hat. Man darf nur positive Zahlen eingeben. Das Abheben soll nur dann passieren, wenn man auch genΓΌgend Geld auf dem Konto hat. Ansonsten soll eine Fehlermeldung gezeigt werden. Die Anzeige soll immer den aktuellen Kontostand anzeigen.
DataGridView Control
Neu soll ein Protokoll erstellt werden. Verwende dafΓΌr eine DataGridView mit drei Spalten: Uhrzeit, Γnderung des Kontostands und neuer Kontostand.
Logik in eine Klasse auslagern
Erstelle eine Klasse, welche die Logik fΓΌr dein Bankkonto enthΓ€lt. Sie soll folgende Methoden enthalten:
Lagere nun alle Logik in diese Klasse aus. Beachte, dass du keine redundante Logik hast. Die Klasse soll fΓΌr alle mΓΆglichen Eingaben korrekt reagieren, sprich negative Eingaben ablehnen.
Datei-Interaktionen
Der aktuelle Kontostand soll nun nicht nur angezeigt, sondern auch in einer Datei gespeichert werden. Wenn die Anwendung gestartet wird soll der Kontostand aus der Datei geladen werden. Diese Datei soll im Ordner der TemporΓ€ren App-Daten sein (Umgebungsvariable %TEMP%).
Timer
Anwendung mit mehreren mΓΆglichen ZustΓ€nden abbilden
Entwickle eine Stoppuhr. Sie soll aus einer Zeitanzeige (hh:mm:ss), zwei Buttons und einer ListBox bestehen. Sie soll den folgenden Ablauf abbilden kΓΆnnen:
Komplexere Anwendung realisieren
Erstelle eine Adressverwaltung. Die wichtigsten Funktionen sind:
Erfassen, LΓΆschen und Bearbeiten von Adressen
Speichern und Laden der Adressen in/aus einer Datei
Suchen von Adressen
Anforderungen:
Klasse, z.B. Address, welche die Daten einer Adresse enthΓ€lt. Sie soll folgende Eigenschaften haben:
Vorname
Nachname
Strasse
Postleitzahl
Ort
UI
Suchfeld
DataGridView mit der Liste der Adressen
Eingabefelder fΓΌr die Eigenschaften der neuen oder zu bearbeitenden Adresse
Toolbar mit einer Option "Datei" mit den Optionen "Speichern" und "Laden"
Die Suche soll alle Eigenschaften der Adresse beinhalten.
Das Speichern und Laden der Adressen in einer Datei soll nur via Optionen in der Toolbar passieren, nicht beim Start der Anwendung.
Das Datei fΓΌr das Speichern und Laden soll mit einem Datei-Dialog gewΓ€hlt werden kΓΆnnen.
Optional: Der Name kann Punkte enthalten. Wenn er Punkte enthΓ€lt, soll der Namen der Projektmappe am Anfang des Namens des Projekts stehen (z.B. "M318.Exercises" & "M318.Exercises.Nr1") Stichwort: .
Magic Strings: Strings, welche direkt in einer Statement hart kodiert sind und das Verhalten der Anwendung steuern. Diese sollen via Konstanten oder Variablen abgebildet werden. Mehr, siehe:
Mit kann man eine Liste nach Typ filtern
Streams sind eine robuste Alternative zur File-Klasse, die ihr wahrscheinlich noch antreffen werdet. Hier wΓ€re eine Gelegenheit, das einzubauen. Siehe .