Menu
CoddyTech

Giao diện quản trị

Thuộc phần Lập trình hướng đối tượng trong hành trình GDScript của Coddy. Bài học 60 trên 65.

challenge icon

Thử thách

Trung bình

Cung cấp cho thủ thư một báo cáo thống kê. Giữ lại mọi thứ bạn đã viết ở các bước trước, chỉ thay đổi library.gd.

Viết get_statistics() -> Dictionary trong Library. Hàm này trả về một từ điển với năm giá trị int:

  • "total_books": số lượng sách
  • "available_books": số sách có available là true
  • "borrowed_books": số sách đang được cho mượn
  • "total_users": số lượng người dùng
  • "users_with_books": số người dùng đã mượn ít nhất một cuốn sách

Code được cung cấp thêm lệnh stats, lệnh này in ra năm giá trị. Với đầu vào sau:

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

đầu ra là:

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

Code của bạn nằm trong book.gd, user.gd và library.gd. main.gd chứa code đầu vào/đầu ra được cung cấp và không thể chỉnh sửa.

Tự làm thử

extends Node

func _ready():
	# Đoạn code đầu vào/đầu ra đã có sẵn: giữ nguyên
	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()

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch GDScript online