Menu
CoddyTech

Antarmuka Admin

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 60 dari 65.

challenge icon

Tantangan

Sedang

Berikan pustakawan laporan statistik. Pertahankan semua yang kamu tulis pada langkah sebelumnya; hanya library.gd yang berubah.

Tulis get_statistics() -> Dictionary di Library. Fungsi ini mengembalikan dictionary dengan lima nilai int:

  • "total_books": jumlah buku
  • "available_books": buku yang nilai available-nya adalah true
  • "borrowed_books": buku yang sedang dipinjam
  • "total_users": jumlah pengguna
  • "users_with_books": pengguna yang memiliki setidaknya satu buku pinjaman

Kode yang disediakan menambahkan perintah stats, yang mencetak kelima nilai tersebut. Untuk input ini:

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

output-nya adalah:

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

Kodemu ditulis di book.gd, user.gd, dan library.gd. main.gd berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

extends Node

func _ready():
	# Kode input/output yang disediakan: biarkan apa adanya
	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()

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler GDScript online