02

Flashcards

Eine JavaFX-Desktop-App zum Lernen mit digitalen Karteikarten, sortiert in Stapel. Sie fragt jeden Stapel in zufälliger Reihenfolge ab, speichert zu jeder Antwort eine Bewertung, zählt Lern-Streaks und Statistiken, importiert und exportiert Stapel und speichert sie als JSON mit Jackson. Gebaut nach dem MVP-Pattern, auf Deutsch und Englisch, mit hellem und dunklem Theme und Tests mit JUnit und Mockito.

Sprache
Java
Jahr
2026
Team
4 Personen
Stack
  • Java
  • JavaFX
  • Jackson
  • JUnit
  • Mockito
  • Maven
View · JavaFX
Presenter
Model
Speicherung
  • JUnit 5
  • Mockito
  • Maven
  • AsciiDoc

Funktionen

  • Karten in Stapeln mit Icons ordnen; Karten können Bilder und Audio enthalten.
  • Der Lernmodus geht einen Stapel einmal in zufälliger Reihenfolge durch.
  • Jede Antwort als falsch, schwierig, OK oder leicht bewerten.
  • Statistiken nach Bewertung und Tag, für den letzten Tag, die letzte Woche, den letzten Monat oder insgesamt, dazu eine Lernserie.
  • Karten und Stapel als JSON importieren und exportieren, mit einem Dialog für Duplikate.
  • Englisch und Deutsch, helles und dunkles Theme, jederzeit umschaltbar.

So ist es gebaut

Eine JavaFX-Desktop-App nach dem Model-View-Presenter-Muster. Die Views sind in Java-Code gebaut, ein Presenter verbindet sie mit dem Model.

Eine klügere Kartenauswahl ist als Strategie vorbereitet: Ein CardSelector nutzt hinter einem gemeinsamen Interface einen zufälligen oder einen gewichteten Algorithmus. Eine Bewertung setzt das Gewicht der Karte, von 8 für falsch bis 1 für leicht, und der gewichtete Algorithmus zieht jede Karte mit einer Wahrscheinlichkeit proportional zu ihrem Gewicht. Unit-Tests decken sie ab, der Lernmodus mischt den Stapel aber noch und nutzt sie nicht.

Stapel, Lerndaten und Serien werden mit Jackson als JSON gespeichert. Übersetzungen und Theme-Farben kommen aus Provider-Klassen, an die sich die Views binden, sodass Sprache und Theme sofort wechseln. JUnit 5 und Mockito testen Model, Speicherung und Übersetzungen. Entstanden ist die App als Schulprojekt im Viererteam, mit User Stories, Pflichtenheft und Protokollen in AsciiDoc, veröffentlicht auf GitHub Pages.