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

Lassen Sie uns das Projekt Bibliotheksverwaltungssystem starten, indem wir die grundlegende Struktur aufbauen! In diesem ersten Schritt erstellen Sie das Grundgerüst, das alle Funktionen unterstützen wird, die wir in den kommenden Lektionen entwickeln werden.

Sie werden Ihren Code über drei Dateien organisieren, um eine saubere Trennung der Zuständigkeiten zu gewährleisten:

  • book.go: Definieren Sie ein Book-Struct, das ein Bibliotheksbuch repräsentiert. Jedes Buch sollte eine ID, einen Title, einen Author und einen Available-Status (Boolean) haben. Erstellen Sie eine Konstruktorfunktion NewBook, die die ID, den Titel und den Autor als Parameter entgegennimmt und einen Pointer auf ein neues Book zurückgibt, wobei Available standardmäßig auf true gesetzt ist. Fügen Sie außerdem eine String()-Methode hinzu, die die Informationen des Buches im Format [ID] Title by Author zurückgibt.
  • user.go: Definieren Sie ein User-Struct, das ein Bibliotheksmitglied mit den Feldern ID, Name und Email repräsentiert. Erstellen Sie eine Konstruktorfunktion NewUser, die alle drei Werte entgegennimmt und einen Pointer auf einen neuen User zurückgibt. Fügen Sie eine String()-Methode hinzu, die User: Name (Email) zurückgibt.
  • main.go: Führen Sie alles zusammen, indem Sie Eingaben lesen, um Bücher und Benutzer zu erstellen, und zeigen Sie dann deren Informationen an.

    Lesen Sie die Anzahl der zu erstellenden Bücher ein. Lesen Sie für jedes Buch dessen ID, Titel und Autor in separaten Zeilen ein. Lesen Sie dann die Anzahl der Benutzer ein und lesen Sie für jeden Benutzer dessen ID, Name und E-Mail in separaten Zeilen ein.

    Nachdem Sie alle Elemente erstellt haben, geben Sie die String-Repräsentation jedes Buches in einer eigenen Zeile aus, gefolgt von der String-Repräsentation 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 (jeweils in separaten Zeilen)

Zum Beispiel, gegeben:

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

Sollte Ihre Ausgabe wie folgt aussehen:

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

Und gegeben:

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

Sollte Ihre Ausgabe wie folgt aussehen:

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

Dieses Fundament bildet die Kern-Datenmodelle, die Sie im Laufe des Projekts erweitern werden. In der nächsten Lektion werden Sie diese Structs verbessern und die Ausleihfunktionalität 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