examFlow ist ein intelligenter Lernplan-Generator für Prüfungen.
Das Tool nimmt Prüfungstermine und Fixtermine entgegen und berechnet automatisch passende Lernblöcke – konfliktfrei, deadline-bewusst und erweiterbar.
- Verteilt Lernstunden für mehrere Prüfungen auf verfügbare Zeitfenster
- Berücksichtigt Fixtermine wie Vorlesungen, Treffen oder andere belegte Slots
- Sortiert Prüfungen nach Deadline mit einem Greedy-Ansatz
- Plant zuerst Prüfungen mit der engsten Deadline
- Wirft eine verständliche Exception, wenn eine Prüfung nicht mehr planbar ist
- Erweiterbar über das
SchedulingStrategy-Interface, zum Beispiel für Backtracking
src/
├── main/
│ └── java/
│ └── at/lugmaner/examflow/
│ ├── model/
│ │ ├── Schedulable.java
│ │ ├── TimeSlot.java
│ │ ├── Exam.java
│ │ ├── FixedAppointment.java
│ │ ├── StudyBlock.java
│ │ └── Difficulty.java
│ └── scheduler/
│ ├── SchedulingStrategy.java
│ ├── GreedyScheduler.java
│ └── FailedToScheduleExamException.java
└── test/
└── java/
└── GreedySchedulerTester.java
| Datei | Beschreibung |
|---|---|
Schedulable.java |
Interface für planbare Lernziele mit Name, Deadline, Schwierigkeit und benötigten Stunden |
TimeSlot.java |
Interface für Objekte mit Datum, Startzeit und Endzeit |
Exam.java |
Modelliert eine Prüfung und implementiert Schedulable |
FixedAppointment.java |
Modelliert einen festen Termin und implementiert TimeSlot |
StudyBlock.java |
Generierter Lernblock als record, implementiert TimeSlot |
Difficulty.java |
Enum für Schwierigkeitsgrade: EASY, MEDIUM, HARD, VERY_HARD |
SchedulingStrategy.java |
Strategy-Interface für austauschbare Planungsalgorithmen |
GreedyScheduler.java |
Aktuelle Greedy-Implementierung des Schedulers |
FailedToScheduleExamException.java |
Exception für nicht planbare Prüfungen |
GreedyScheduler scheduler = new GreedyScheduler(
LocalTime.of(8, 0),
LocalTime.of(20, 0),
10,
90
);
List<Exam> exams = List.of(
new Exam("Algorithmen", LocalDate.of(2026, 6, 20), Difficulty.HARD, 10),
new Exam("Mathe 2", LocalDate.of(2026, 6, 25), Difficulty.MEDIUM, 6)
);
Map<LocalDate, List<TimeSlot>> fixedSlots = new HashMap<>();
List<StudyBlock> plan = scheduler.getStudyBlocks(exams, fixedSlots);
plan.forEach(System.out::println);Voraussetzung:
- Java 21+
- Maven
mvn test
mvn packageDie gebaute JAR-Datei liegt anschließend unter:
target/examFlow-1.0-SNAPSHOT.jar
| Bereich | Technologie |
|---|---|
| Sprache | Java 21+ |
| Build-Tool | Maven |
| Testing | JUnit 5 |
| Architektur | Strategy Pattern |
| Java-Features | Interfaces, Generics, Records, Exceptions |
-
.ics-Export für Google Calendar / Apple Calendar - CLI-Interface für eigene Prüfungstermine
- Backtracking-Scheduler als zweite
SchedulingStrategy - Schwierigkeitsgewichtete Priorisierung