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