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
- 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.