164 lines
3.0 KiB
Markdown
164 lines
3.0 KiB
Markdown
# 🎯 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! 🚀**
|