🎯 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:
cd todo_c
gcc -o todo todo.c -Wall -Wextra -std=c99
./todo
C++-Version kompilieren:
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:
- Zähle die Code-Zeilen
- Vergleiche die Fehlerbehandlung
- Welche Version ist einfacher zu erweitern?
- 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! 🚀