# يمثل كل ما تحتويه المكتبة من كتب و مؤلفين و الدوال التي يمكن استخدامها للتعامل معهم Library هنا قمنا بتعريف الكلاس
# سنضع فيها كل معلومات الكتب books سنضع فيها كل معلومات المؤلفين, و المصفوفة authors المصفوفة
# authors بداخل المصفوفة Author يمكن استخدامها لإضافة كائن من الكلاس add_author() الدالة
def add_author(self, author):
self.authors.append(author)
# الخاص به id بالإعتماد على رقم الـ authors موضوع بداخل المصفوفة Author يمكن استخدامها لإلغاء كائن من الكلاس remove_author() الدالة
def remove_author(self, id):
# author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for author in self.authors:
# الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ author في حال كان الكائن
self.authors.remove(author)
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
print("Author with id", id, "is not found!")
print("----------------------")
# الخاص به id بالإعتماد على رقم الـ authors يمكن استخدامها لطباعة كل المعلومات المتوفرة حول مؤلف موضوع بداخل المصفوفة print_author() الدالة
def print_author(self, id):
# author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for author in self.authors:
# الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ author في حال كان الكائن
print("Author with id", id, "info.")
print("Name:", author.name)
print("Phone:", author.phone)
print("Email", author.email)
print("----------------------")
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
print("Author with id", id, "is not found!")
print("----------------------")
# الخاص به id بالإعتماد على رقم الـ authors يمكن استخدامها لطباعة كل أسماء الكتب التي قام بتأليفها مؤلف موضوع بداخل المصفوفة print_author_books() الدالة
def print_author_books(self, id):
# الذي تم تمريره للدالة id يملك رقم الـ authors بهدف التأكد ما إن كان يوجد كاتب في المصفوفة isAuthorExist سنستخدم المتغير
# من إعداد هذا الكاتب لأن ذلك سيكون غير منطقي books لأنه إن لم يكن هناك كاتب أصلاً فلن نقوم بالبحث عن كتب في المصفوفة
# author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن authors هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for author in self.authors:
# authorName الذي مررناه للدالة سيتم تخزين إسم المؤلف في المتغير id يملك نفس رقم الـ author في حال كان الكائن
# authors و إيقاف الحلقة لأننا تأكدنا أن هذا المؤلف موجود في المصفوفة true إلى isAuthorExist و من ثم تغيير قيمة
author_name = author.name
# authors فهذا يعني أنه لم يتم إيجاد أي كائن في المصفوفة false تساوي isAuthorExist في حال بقيت قيمة
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية و الخروج من الدالة id يملك نفس رقم الـ
print("Author with id", id, "is not found!")
print("----------------------")
# هنا سيتم طباعة إسم المؤلف
print("Books of author " + author_name + ":")
# book و كل كائن نمر عليه ( و الذي يمثل كتاب ) سنضعه بشكل مؤقته بداخل الكائن books هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
# الذي تم تمريره id يملك نفس رقم الـ book ( أي المؤلف ) الموضوع في الكائن author في حال كان الكائن
# و بالتالي سيتم طباعة إسم هذا الكتاب book للدالة فهذا يعني أنه هو مؤلف الكتاب الحالي المخزن في الكائن
print("----------------------")
# books بداخل المصفوفة Book يمكن استخدامها لإضافة كائن من الكلاس add_book() الدالة
def add_book(self, book):
# الخاص به id بالإعتماد على رقم الـ books موضوع بداخل المصفوفة Book يمكن استخدامها لإلغاء كائن من الكلاس remove_book() الدالة
def remove_book(self, id):
# book و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
# الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ book في حال كان الكائن
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ books في حال لم يتم إيجاد أي كائن في المصفوفة
print("Book with id", id, "is not found!")
print("----------------------")
# الخاص به id بالإعتماد على رقم الـ books يمكن استخدامها لطباعة كل المعلومات المتوفرة حول كتاب موضوع بداخل المصفوفة print_book() الدالة
def print_book(self, id):
# book و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
# الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ book في حال كان الكائن
print("Book with id", id, " info.")
print("Title:", book.title)
print("Publishing date:", book.publishing_date)
print("Author:", book.author.name)
print("----------------------")
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ books في حال لم يتم إيجاد أي كائن في المصفوفة
print("Book with id", id, "is not found!")
print("----------------------")
# يمثل كل ما تحتويه المكتبة من كتب و مؤلفين و الدوال التي يمكن استخدامها للتعامل معهم Library هنا قمنا بتعريف الكلاس
class Library:
# سنضع فيها كل معلومات الكتب books سنضع فيها كل معلومات المؤلفين, و المصفوفة authors المصفوفة
authors = []
books = []
# authors بداخل المصفوفة Author يمكن استخدامها لإضافة كائن من الكلاس add_author() الدالة
def add_author(self, author):
self.authors.append(author)
# الخاص به id بالإعتماد على رقم الـ authors موضوع بداخل المصفوفة Author يمكن استخدامها لإلغاء كائن من الكلاس remove_author() الدالة
def remove_author(self, id):
# author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for author in self.authors:
# الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ author في حال كان الكائن
if author.id == id:
self.authors.remove(author)
return
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
print("Author with id", id, "is not found!")
print("----------------------")
# الخاص به id بالإعتماد على رقم الـ authors يمكن استخدامها لطباعة كل المعلومات المتوفرة حول مؤلف موضوع بداخل المصفوفة print_author() الدالة
def print_author(self, id):
# author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for author in self.authors:
# الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ author في حال كان الكائن
if author.id == id:
print("Author with id", id, "info.")
print("Name:", author.name)
print("Phone:", author.phone)
print("Email", author.email)
print("----------------------")
return
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
print("Author with id", id, "is not found!")
print("----------------------")
# الخاص به id بالإعتماد على رقم الـ authors يمكن استخدامها لطباعة كل أسماء الكتب التي قام بتأليفها مؤلف موضوع بداخل المصفوفة print_author_books() الدالة
def print_author_books(self, id):
# الذي تم تمريره للدالة id يملك رقم الـ authors بهدف التأكد ما إن كان يوجد كاتب في المصفوفة isAuthorExist سنستخدم المتغير
# من إعداد هذا الكاتب لأن ذلك سيكون غير منطقي books لأنه إن لم يكن هناك كاتب أصلاً فلن نقوم بالبحث عن كتب في المصفوفة
is_author_exist = False
author_name = ""
# author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن authors هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for author in self.authors:
# authorName الذي مررناه للدالة سيتم تخزين إسم المؤلف في المتغير id يملك نفس رقم الـ author في حال كان الكائن
# authors و إيقاف الحلقة لأننا تأكدنا أن هذا المؤلف موجود في المصفوفة true إلى isAuthorExist و من ثم تغيير قيمة
if author.id == id:
is_author_exist = True
author_name = author.name
break
# authors فهذا يعني أنه لم يتم إيجاد أي كائن في المصفوفة false تساوي isAuthorExist في حال بقيت قيمة
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية و الخروج من الدالة id يملك نفس رقم الـ
if not is_author_exist:
print("Author with id", id, "is not found!")
print("----------------------")
return
# هنا سيتم طباعة إسم المؤلف
print("Books of author " + author_name + ":")
# book و كل كائن نمر عليه ( و الذي يمثل كتاب ) سنضعه بشكل مؤقته بداخل الكائن books هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for book in self.books:
# الذي تم تمريره id يملك نفس رقم الـ book ( أي المؤلف ) الموضوع في الكائن author في حال كان الكائن
# و بالتالي سيتم طباعة إسم هذا الكتاب book للدالة فهذا يعني أنه هو مؤلف الكتاب الحالي المخزن في الكائن
if book.author.id == id:
print("- " + book.title)
print("----------------------")
# books بداخل المصفوفة Book يمكن استخدامها لإضافة كائن من الكلاس add_book() الدالة
def add_book(self, book):
self.books.append(book)
# الخاص به id بالإعتماد على رقم الـ books موضوع بداخل المصفوفة Book يمكن استخدامها لإلغاء كائن من الكلاس remove_book() الدالة
def remove_book(self, id):
# book و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for book in self.books:
# الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ book في حال كان الكائن
if book.id == id:
self.books.remove(book)
return
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ books في حال لم يتم إيجاد أي كائن في المصفوفة
print("Book with id", id, "is not found!")
print("----------------------")
# الخاص به id بالإعتماد على رقم الـ books يمكن استخدامها لطباعة كل المعلومات المتوفرة حول كتاب موضوع بداخل المصفوفة print_book() الدالة
def print_book(self, id):
# book و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for book in self.books:
# الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ book في حال كان الكائن
if book.id == id:
print("Book with id", id, " info.")
print("Title:", book.title)
print("Publishing date:", book.publishing_date)
print("Author:", book.author.name)
print("----------------------")
return
# الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ books في حال لم يتم إيجاد أي كائن في المصفوفة
print("Book with id", id, "is not found!")
print("----------------------")