Add Final Project README
This commit is contained in:
163
exercises/final_project/README.md
Normal file
163
exercises/final_project/README.md
Normal file
@@ -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! 🚀**
|
||||||
Reference in New Issue
Block a user