Teil 23: Abschlussprojekt planen
Lernziel: Eine Anwendung in Teilaufgaben gliedern.
Voraussetzungen: Die vorherigen Lektionen, insbesondere Teil 22.
Worum geht es?
Wir kombinieren die Grundlagen zu einem kleinen Messwert-Manager. Dieser Teil plant die Datenstruktur, Funktionen und Bedienung, bevor alles zusammengefügt wird.
Schritt für Schritt
Anforderungen
Das Programm soll über ein Menü Messwerte hinzufügen, anzeigen, einen Mittelwert bestimmen, Daten als CSV speichern und beendet werden können.
Datenstruktur
#[derive(Debug)]
struct Messwert {
nummer: usize,
temperatur: f64,
}
Speichere die Werte in Vec<Messwert>. Für den Einstieg verzichten wir bewusst auf eine Datenbank und eine grafische Oberfläche.
Vorgesehene Funktionen
fn hinzufuegen(werte: &mut Vec<Messwert>, temperatur: f64) { /* ... */ }
fn anzeigen(werte: &[Messwert]) { /* ... */ }
fn mittelwert(werte: &[Messwert]) -> Option<f64> { /* ... */ }
fn exportieren(werte: &[Messwert]) -> std::io::Result<()> { /* ... */ }
Einfache Ablaufplanung
- Menü ausgeben.
- Eingabe als Auswahl interpretieren.
- Entsprechende Funktion aufrufen.
- Nach Abschluss erneut zum Menü zurückkehren.
- Nur bei Menüpunkt „Beenden“ das Programm verlassen.
Qualitätsziel: Keine Panik bei einem nicht numerischen Messwert; stattdessen eine verständliche Meldung.
Selbst ausprobieren
Lege ein neues Cargo-Projekt messwert_abschluss an. Implementiere die Struktur und die Funktion hinzufuegen und füge zwei Beispielwerte hinzu.
Musterlösung anzeigen
#[derive(Debug)]
struct Messwert { nummer: usize, temperatur: f64 }
fn hinzufuegen(werte: &mut Vec<Messwert>, temperatur: f64) {
werte.push(Messwert { nummer: werte.len() + 1, temperatur });
}
fn main() {
let mut werte = Vec::new();
hinzufuegen(&mut werte, 205.0);
hinzufuegen(&mut werte, 210.5);
println!("{werte:?}");
}
Das solltest du mitnehmen
- Eine Anwendung in Teilaufgaben gliedern.
- Nutze
cargo runfür das Ausführen undcargo checkfür eine schnelle Fehlerprüfung (ab Teil 4). - Experimentiere mit veränderten Werten und beobachte die Compilermeldungen.
