Menu
CoddyTech

Interfaccia amministratore

Fa parte della sezione Programmazione orientata agli oggetti del percorso GDScript di Coddy. Lezione 60 di 65.

challenge icon

Sfida

Medio

Fornisci al bibliotecario un report statistico. Mantieni tutto ciò che hai scritto nei passaggi precedenti; cambia solo library.gd.

Scrivi get_statistics() -> Dictionary in Library. Restituisce un dizionario con cinque valori int:

  • "total_books": il numero di libri
  • "available_books": i libri per cui available è true
  • "borrowed_books": i libri dati in prestito
  • "total_users": il numero di utenti
  • "users_with_books": gli utenti che hanno preso in prestito almeno un libro

Il codice fornito aggiunge il comando stats, che stampa i cinque valori. Per questo input:

Community
book The Great Gatsby|F. Scott Fitzgerald|123456
book To Kill a Mockingbird|Harper Lee|789012
book 1984|George Orwell|345678
user U001|Alice
user U002|Bob
user U003|Charlie
borrow 123456|U001
borrow 789012|U001
borrow 345678|U002
stats

l'output è:

Book borrowed successfully
Book borrowed successfully
Book borrowed successfully
Total Books: 3
Available Books: 0
Borrowed Books: 3
Total Users: 3
Users with Books: 2

Il tuo codice va in book.gd, user.gd e library.gd. main.gd contiene il codice fornito per l'input/output e non può essere modificato.

Provalo tu

extends Node

func _ready():
	# Codice di input/output fornito: lascialo così com'è
	var library := Library.new(OS.read_string_from_stdin())
	var line := OS.read_string_from_stdin()
	while line != "":
		var parts := line.split(" ", true, 1)
		var fields: PackedStringArray = parts[1].split("|") if parts.size() > 1 else PackedStringArray()
		match parts[0]:
			"book":
				library.add_book(Book.new(fields[0], fields[1], fields[2]))
			"user":
				library.add_user(User.new(fields[0], fields[1]))
			"borrow":
				print(library.borrow_book(fields[0], fields[1]))
			"search":
				var term: String = parts[1] if parts.size() > 1 else ""
				var found: Array = library.search_by_title(term)
				print("Results for '%s': %d" % [term, found.size()])
				for book in found:
					print("- ", book.title, " by ", book.author)
			"stats":
				var stats: Dictionary = library.get_statistics()
				print("Total Books: ", stats["total_books"])
				print("Available Books: ", stats["available_books"])
				print("Borrowed Books: ", stats["borrowed_books"])
				print("Total Users: ", stats["total_users"])
				print("Users with Books: ", stats["users_with_books"])
			"loans":
				var reader: User = library.find_user(fields[0])
				print(reader.user_name, " has borrowed:")
				for isbn in reader.borrowed_isbns:
					print("- ", library.find_book(isbn).title)
			"holder":
				var book: Book = library.find_book(fields[0])
				if book.available:
					print(book.title, " is on the shelf")
				else:
					print(book.title, " is borrowed by ", library.find_user(book.borrower_id).user_name)
			"books":
				for book in library.books:
					print(book)
			"users":
				for user in library.users:
					print(user)
			"show":
				print(library)
		line = OS.read_string_from_stdin()

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore GDScript online