Files

🎯 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:

  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! 🚀