diff --git a/exercises/final_project/README.md b/exercises/final_project/README.md new file mode 100644 index 0000000..61918df --- /dev/null +++ b/exercises/final_project/README.md @@ -0,0 +1,163 @@ +# 🎯 Final-Projekt: Todo-App + +*Vollständige CRUD-Anwendung in C und C++* + +--- + +## 📋 Projektübersicht + +Dieses Final-Projekt implementiert eine vollständige **Todo-Liste** als Kommandozeilen-Anwendung mit: + +- ✅ **C-Version:** Manuelle Speicherverwaltung, structs, Datei-I/O +- ✅ **C++-Version:** Klassen, STL, moderne C++17 Features + +--- + +## 🗂️ Dateien + +``` +final_project/ +├── todo_c/ +│ ├── todo.c # C-Implementierung +│ ├── todo.h # Header (optional) +│ └── todos.dat # Datenbank (automatisch erstellt) +└── todo_cpp/ + ├── todo.cpp # C++-Implementierung + └── todos_cpp.txt # Datenbank (automatisch erstellt) +``` + +--- + +## 🚀 Schnellstart + +### C-Version kompilieren: +```bash +cd todo_c +gcc -o todo todo.c -Wall -Wextra -std=c99 +./todo +``` + +### C++-Version kompilieren: +```bash +cd todo_cpp +g++ -o todo todo.cpp -Wall -Wextra -std=c++17 +./todo +``` + +--- + +## ✨ Features + +| Feature | C | C++ | +|---------|---|---| +| Todo hinzufügen | ✅ | ✅ | +| Todos anzeigen | ✅ | ✅ | +| Todo abschließen | ✅ | ✅ | +| Todo löschen | ✅ | ✅ | +| Speichern/Laden | ✅ (Binär) | ✅ (Text) | +| Todo bearbeiten | ❌ | ✅ | +| Nach Status filtern | ❌ | ✅ | +| Suchen | ❌ | ✅ | +| ID-Management | Manuell | Automatisch | + +--- + +## 🎓 Lernziele + +### C-Version üben: +- Structs und Arrays +- Datei-I/O mit fread/fwrite +- Manuelle Speicherverwaltung +- Pointer-Arithmetik +- String-Handling + +### C++-Version üben: +- Klassen und Objekte +- STL (vector, string, algorithm) +- Stream-I/O (fstream, sstream) +- Lambda-Funktionen +- Move-Semantik + +--- + +## 📝 Beispiel-Session (C++) + +``` +📝 Willkommen zur Todo-App (C++)! + +=== TODO-APP (C++ Edition) === +1. Todo hinzufügen +2. Alle Todos anzeigen +... +Wahl: 1 +Titel: Einkaufen gehen +Beschreibung: Milch, Brot, Eier +✓ Todo hinzugefügt! + +Wahl: 1 +Titel: C++ lernen +Beschreibung: Module 7 durcharbeiten +✓ Todo hinzugefügt! + +Wahl: 2 + +=== DEINE TODOS === +#1 [ ] Einkaufen gehen + Milch, Brot, Eier +#2 [ ] C++ lernen + Module 7 durcharbeiten + +Wahl: 5 +Todo-ID: 1 +✓ Todo #1 abgeschlossen! + +Wahl: 9 +✓ 2 Todos gespeichert! + +Wahl: 0 +Speichern vor Beenden? (j/n): n +Auf Wiedersehen! +``` + +--- + +## 🔧 Erweiterungsmöglichkeiten + +### Einfach: +- [ ] Kategorien/Tags hinzufügen +- [ ] Prioritäten (Hoch/Mittel/Niedrig) +- [ ] Fälligkeitsdatum + +### Mittel: +- [ ] Mehrere Listen (Projekte) +- [ ] Export zu CSV/JSON +- [ ] Undo-Funktion + +### Fortgeschritten: +- [ ] Netzwerksynchronisation +- [ ] GUI mit ncurses (C) oder Qt (C++) +- [ ] REST-API-Version + +--- + +## 🏆 Challenge + +**Vergleiche C und C++ Version:** + +1. Zähle die Code-Zeilen +2. Vergleiche die Fehlerbehandlung +3. Welche Version ist einfacher zu erweitern? +4. Wo spart C++ Code durch STL? + +--- + +## 📚 Zugehörige Kursmodule + +- **Modul 1:** Memory-Management (malloc vs new) +- **Modul 5:** Datenstrukturen (Array vs vector) +- **Modul 7:** OOP (struct vs class) +- **Modul 8:** Modularisierung + +--- + +**Viel Erfolg beim Programmieren! 🚀**