Skip to content

Lugmaner/examFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

examFlow

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.

Features

  • 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

Projektstruktur

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

Wichtige Komponenten

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

Beispiel

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);

Build & Tests

Voraussetzung:

  • Java 21+
  • Maven
mvn test
mvn package

Die gebaute JAR-Datei liegt anschließend unter:

target/examFlow-1.0-SNAPSHOT.jar

Tech-Stack

Bereich Technologie
Sprache Java 21+
Build-Tool Maven
Testing JUnit 5
Architektur Strategy Pattern
Java-Features Interfaces, Generics, Records, Exceptions

Roadmap

  • .ics-Export für Google Calendar / Apple Calendar
  • CLI-Interface für eigene Prüfungstermine
  • Backtracking-Scheduler als zweite SchedulingStrategy
  • Schwierigkeitsgewichtete Priorisierung

About

Java project for scheduling study blocks before exams, focused on greedy scheduling, clean models and JUnit testing.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages