# 🎯 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! 🚀**