Menu
Coddy logo textTech

Projektübersicht & Struktur

Teil des Abschnitts Objektorientierte Programmierung der GO-Journey von Coddy. Lektion 98 von 107.

challenge icon

Aufgabe

Einfach

Beginnen wir mit dem Projekt „Bibliotheksverwaltungssystem“, indem wir die grundlegende Struktur einrichten! In diesem ersten Schritt erstellst du das grundlegende Gerüst, das alle Funktionen unterstützen wird, die wir in den kommenden Lektionen entwickeln.

Du organisierst deinen Code auf drei Dateien, um eine klare Trennung der Zuständigkeiten zu gewährleisten:

  • book.go: Definiere eine Book-Struktur, die ein Bibliotheksbuch repräsentiert. Jedes Buch sollte eine ID, einen Title, einen Author und einen Available-Status (boolesch) haben. Erstelle eine Konstruktorfunktion NewBook, die die ID, den Titel und den Autor als Parameter entgegennimmt und einen Zeiger auf ein neues Book zurückgibt, wobei Available standardmäßig auf true gesetzt wird. Füge außerdem eine String()-Methode hinzu, die die Informationen des Buches im Format [ID] Title by Author zurückgibt.
  • user.go: Definiere eine User-Struktur, die ein Bibliotheksmitglied mit den Feldern ID, Name und Email repräsentiert. Erstelle eine Konstruktorfunktion NewUser, die alle drei Werte entgegennimmt und einen Zeiger auf einen neuen User zurückgibt. Füge eine String()-Methode hinzu, die Folgendes zurückgibt: User: Name (Email)
  • main.go: Führe alles zusammen, indem du Eingaben einliest, um Bücher und Benutzer zu erstellen, und anschließend ihre Informationen anzeigst.

    Lies die Anzahl der zu erstellenden Bücher ein. Lies für jedes Buch seine ID, seinen Titel und seinen Autor in separaten Zeilen ein. Lies anschließend die Anzahl der Benutzer ein und für jeden Benutzer dessen ID, Namen und E-Mail-Adresse in separaten Zeilen.

    Nachdem alle Elemente erstellt wurden, gib die Zeichenfolgendarstellung jedes Buches in einer eigenen Zeile aus, gefolgt von der Zeichenfolgendarstellung jedes Benutzers in einer eigenen Zeile.

Die folgenden Eingaben werden bereitgestellt:

  • Anzahl der Bücher
  • Für jedes Buch: ID, Titel und Autor (jeweils in separaten Zeilen)
  • Anzahl der Benutzer
  • Für jeden Benutzer: ID, Name und E-Mail-Adresse (jeweils in separaten Zeilen)

Zum Beispiel bei folgender Eingabe:

2
B001
The Go Programming Language
Alan Donovan
B002
Clean Code
Robert Martin
1
U001
Alice Smith
alice@library.com

Deine Ausgabe sollte folgendermaßen aussehen:

[B001] The Go Programming Language by Alan Donovan
[B002] Clean Code by Robert Martin
User: Alice Smith (alice@library.com)

Und bei folgender Eingabe:

1
B100
Design Patterns
Gang of Four
2
U001
Bob Jones
bob@email.com
U002
Carol White
carol@email.com

Deine Ausgabe sollte folgendermaßen aussehen:

[B100] Design Patterns by Gang of Four
User: Bob Jones (bob@email.com)
User: Carol White (carol@email.com)

Diese Grundlage etabliert die zentralen Datenmodelle, die du im weiteren Verlauf des Projekts erweitern wirst. In der nächsten Lektion wirst du diese Strukturen verbessern und die Ausleihfunktion hinzufügen!

Probier es selbst

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	reader := bufio.NewReader(os.Stdin)

	// Anzahl der Bücher lesen
	numBooksStr, _ := reader.ReadString('\n')
	numBooks, _ := strconv.Atoi(strings.TrimSpace(numBooksStr))

	// TODO: Erstelle ein Slice, um Bücher zu speichern

	// TODO: Lies die Informationen jedes Buches (ID, Titel, Autor in separaten Zeilen)
	// und erstelle Book-Objekte mit NewBook
	for i := 0; i < numBooks; i++ {
		id, _ := reader.ReadString('\n')
		id = strings.TrimSpace(id)
		title, _ := reader.ReadString('\n')
		title = strings.TrimSpace(title)
		author, _ := reader.ReadString('\n')
		author = strings.TrimSpace(author)

		// TODO: Erstelle ein neues Buch und füge es deinem Slice hinzu
	}

	// Anzahl der Benutzer lesen
	numUsersStr, _ := reader.ReadString('\n')
	numUsers, _ := strconv.Atoi(strings.TrimSpace(numUsersStr))

	// TODO: Erstelle ein Slice, um Benutzer zu speichern

	// TODO: Lies die Informationen jedes Benutzers (ID, Name, E-Mail in separaten Zeilen)
	// und erstelle User-Objekte mit NewUser
	for i := 0; i < numUsers; i++ {
		id, _ := reader.ReadString('\n')
		id = strings.TrimSpace(id)
		name, _ := reader.ReadString('\n')
		name = strings.TrimSpace(name)
		email, _ := reader.ReadString('\n')
		email = strings.TrimSpace(email)

		// TODO: Erstelle einen neuen Benutzer und füge ihn deinem Slice hinzu
	}

	// TODO: Gib die String-Repräsentation jedes Buches aus

	// TODO: Gib die String-Repräsentation jedes Benutzers aus
	fmt.Println("TODO: Print output here")
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Go-Compiler