Menu
CoddyTech
flag Ar iconالعربيةdown icon

واجهة المسؤول

جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 60 من 65.

challenge icon

التحدي

متوسط

قدّم لأمين المكتبة تقريرًا إحصائيًا. احتفظ بكل ما كتبته في الخطوات السابقة؛ التغيير الوحيد يكون في library.gd.

اكتب get_statistics() -> Dictionary في Library. تُرجع هذه الدالة قاموسًا يحتوي على خمس قيم من النوع int:

  • "total_books": عدد الكتب
  • "available_books": الكتب التي تكون قيمة available فيها true
  • "borrowed_books": الكتب المُعارة
  • "total_users": عدد المستخدمين
  • "users_with_books": المستخدمون الذين لديهم كتاب مُعار واحد على الأقل

يضيف الكود المُرفق الأمر stats، الذي يطبع القيم الخمس. لهذا الإدخال:

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
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

اكتب التعليمات البرمجية في book.gd وuser.gd وlibrary.gd. يحتوي main.gd على كود الإدخال والإخراج المُرفق، ولا يمكن تعديله.

جرّب بنفسك

extends Node

func _ready():
	# كود الإدخال/الإخراج المقدَّم: اتركه كما هو
	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()

جميع دروس البرمجة كائنية التوجّه

تدرّب بنفسك: مترجم GDScript عبر الإنترنت