using System.Collections.Generic;
// يمثل كل ما تحتويه المكتبة من كتب و مؤلفين و الدوال التي يمكن استخدامها للتعامل معهم Library الكلاس
// سنضع فيه كل معلومات الكتب Books سنضع فيه كل معلومات المؤلفين, و الكائن Authors الكائن
public List<Author> Authors { get; set; }
public List<Book> Books { get; set; }
Authors = new List<Author>();
Books = new List<Book>();
// Authors بداخل المصفوفة Author يمكن استخدامها لإضافة كائن من الكلاس AddAuthor() الدالة
public void AddAuthor(Author author)
// الخاص به Id بالإعتماد على رقم الـ Authors موضوع بداخل المصفوفة Author يمكن استخدامها لإلغاء كائن من الكلاس RemoveAuthor() الدالة
public void RemoveAuthor(int id)
// author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Author author in Authors)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة Id يملك نفس رقم الـ author في حال كان الكائن
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية Id يملك نفس رقم الـ Authors في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Author with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص به Id بالإعتماد على رقم الـ Authors يمكن استخدامها لطباعة كل المعلومات المتوفرة حول مؤلف موضوع بداخل المصفوفة printAuthor() الدالة
public void PrintAuthor(int id)
// author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Author author in Authors)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة Id يملك نفس رقم الـ author في حال كان الكائن
Console.WriteLine("Author with id " + id + " info.");
Console.WriteLine("Name: " + author.Name);
Console.WriteLine("Phone: " + author.Phone);
Console.WriteLine("Email: " + author.Email);
Console.WriteLine("----------------------");
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية Id يملك نفس رقم الـ Authors في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Author with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص به id بالإعتماد على رقم الـ Authors يمكن استخدامها لطباعة كل أسماء الكتب التي قام بتأليفها مؤلف موضوع بداخل المصفوفة PrintAuthorBooks() الدالة
public void PrintAuthorBooks(int id)
// الذي تم تمريره للدالة Id يملك رقم الـ Authors بهدف التأكد ما إن كان يوجد كاتب في المصفوفة isAuthorExist سنستخدم المتغير
// من إعداد هذا الكاتب لأن ذلك سيكون غير منطقي Books لأنه إن لم يكن هناك كاتب أصلاً فلن نقوم بالبحث عن كتب في المصفوفة
bool isAuthorExist = false;
// author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Authors هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Author author in Authors)
// authorName الذي مررناه للدالة سيتم تخزين إسم المؤلف في المتغير Id يملك نفس رقم الـ author في حال كان الكائن
// Authors و إيقاف الحلقة لأننا تأكدنا أن هذا المؤلف موجود في المصفوفة true إلى isAuthorExist و من ثم تغيير قيمة
authorName = author.Name;
// Authors فهذا يعني أنه لم يتم إيجاد أي كائن في المصفوفة false تساوي isAuthorExist في حال بقيت قيمة
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية و الخروج من الدالة Id يملك نفس رقم الـ
Console.WriteLine("Author with id " + id + " is not found!");
Console.WriteLine("----------------------");
// هنا سيتم طباعة إسم المؤلف
Console.WriteLine("Books of author " + authorName + ":");
// book و كل كائن نمر عليه ( و الذي يمثل كتاب ) سنضعه بشكل مؤقته بداخل الكائن Books هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Book book in Books)
// الذي تم تمريره Id يملك نفس رقم الـ book ( أي المؤلف ) الموضوع في الكائن author في حال كان الكائن
// و بالتالي سيتم طباعة إسم هذا الكتاب book للدالة فهذا يعني أنه هو مؤلف الكتاب الحالي المخزن في الكائن
if (book.Author.Id == id)
Console.WriteLine("- " + book.Title);
Console.WriteLine("----------------------");
// Books بداخل المصفوفة Book يمكن استخدامها لإضافة كائن من الكلاس AddBook() الدالة
public void AddBook(Book book)
// الخاص به Id بالإعتماد على رقم الـ Books موضوع بداخل المصفوفة Book يمكن استخدامها لإلغاء كائن من الكلاس RemoveBook() الدالة
public void RemoveBook(int id)
// book و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Book book in Books)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة Id يملك نفس رقم الـ book في حال كان الكائن
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية Id يملك نفس رقم الـ Books في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Book with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص به Id بالإعتماد على رقم الـ Books يمكن استخدامها لطباعة كل المعلومات المتوفرة حول كتاب موضوع بداخل المصفوفة printBook() الدالة
public void PrintBook(int id)
// book و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Book book in Books)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة Id يملك نفس رقم الـ book في حال كان الكائن
Console.WriteLine("Book with id " + id + " info.");
Console.WriteLine("Title: " + book.Title);
Console.WriteLine("Version: " + book.Version);
Console.WriteLine("Publishing date: " + book.PublishingDate);
Console.WriteLine("author in " + book.Author.Name);
Console.WriteLine("----------------------");
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية Id يملك نفس رقم الـ Books في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Book with id " + id + " is not found!");
Console.WriteLine("----------------------");
using System;
using System.Collections.Generic;
// يمثل كل ما تحتويه المكتبة من كتب و مؤلفين و الدوال التي يمكن استخدامها للتعامل معهم Library الكلاس
class Library
{
// سنضع فيه كل معلومات الكتب Books سنضع فيه كل معلومات المؤلفين, و الكائن Authors الكائن
public List<Author> Authors { get; set; }
public List<Book> Books { get; set; }
public Library()
{
Authors = new List<Author>();
Books = new List<Book>();
}
// Authors بداخل المصفوفة Author يمكن استخدامها لإضافة كائن من الكلاس AddAuthor() الدالة
public void AddAuthor(Author author)
{
Authors.Add(author);
}
// الخاص به Id بالإعتماد على رقم الـ Authors موضوع بداخل المصفوفة Author يمكن استخدامها لإلغاء كائن من الكلاس RemoveAuthor() الدالة
public void RemoveAuthor(int id)
{
// author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Author author in Authors)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة Id يملك نفس رقم الـ author في حال كان الكائن
if (author.Id == id)
{
Authors.Remove(author);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية Id يملك نفس رقم الـ Authors في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Author with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص به Id بالإعتماد على رقم الـ Authors يمكن استخدامها لطباعة كل المعلومات المتوفرة حول مؤلف موضوع بداخل المصفوفة printAuthor() الدالة
public void PrintAuthor(int id)
{
// author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Author author in Authors)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة Id يملك نفس رقم الـ author في حال كان الكائن
if (author.Id == id)
{
Console.WriteLine("Author with id " + id + " info.");
Console.WriteLine("Name: " + author.Name);
Console.WriteLine("Phone: " + author.Phone);
Console.WriteLine("Email: " + author.Email);
Console.WriteLine("----------------------");
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية Id يملك نفس رقم الـ Authors في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Author with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص به id بالإعتماد على رقم الـ Authors يمكن استخدامها لطباعة كل أسماء الكتب التي قام بتأليفها مؤلف موضوع بداخل المصفوفة PrintAuthorBooks() الدالة
public void PrintAuthorBooks(int id)
{
// الذي تم تمريره للدالة Id يملك رقم الـ Authors بهدف التأكد ما إن كان يوجد كاتب في المصفوفة isAuthorExist سنستخدم المتغير
// من إعداد هذا الكاتب لأن ذلك سيكون غير منطقي Books لأنه إن لم يكن هناك كاتب أصلاً فلن نقوم بالبحث عن كتب في المصفوفة
bool isAuthorExist = false;
String authorName = "";
// author و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Authors هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Author author in Authors)
{
// authorName الذي مررناه للدالة سيتم تخزين إسم المؤلف في المتغير Id يملك نفس رقم الـ author في حال كان الكائن
// Authors و إيقاف الحلقة لأننا تأكدنا أن هذا المؤلف موجود في المصفوفة true إلى isAuthorExist و من ثم تغيير قيمة
if (author.Id == id)
{
isAuthorExist = true;
authorName = author.Name;
break;
}
}
// Authors فهذا يعني أنه لم يتم إيجاد أي كائن في المصفوفة false تساوي isAuthorExist في حال بقيت قيمة
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية و الخروج من الدالة Id يملك نفس رقم الـ
if (!isAuthorExist)
{
Console.WriteLine("Author with id " + id + " is not found!");
Console.WriteLine("----------------------");
return;
}
// هنا سيتم طباعة إسم المؤلف
Console.WriteLine("Books of author " + authorName + ":");
// book و كل كائن نمر عليه ( و الذي يمثل كتاب ) سنضعه بشكل مؤقته بداخل الكائن Books هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Book book in Books)
{
// الذي تم تمريره Id يملك نفس رقم الـ book ( أي المؤلف ) الموضوع في الكائن author في حال كان الكائن
// و بالتالي سيتم طباعة إسم هذا الكتاب book للدالة فهذا يعني أنه هو مؤلف الكتاب الحالي المخزن في الكائن
if (book.Author.Id == id)
{
Console.WriteLine("- " + book.Title);
}
}
Console.WriteLine("----------------------");
}
// Books بداخل المصفوفة Book يمكن استخدامها لإضافة كائن من الكلاس AddBook() الدالة
public void AddBook(Book book)
{
Books.Add(book);
}
// الخاص به Id بالإعتماد على رقم الـ Books موضوع بداخل المصفوفة Book يمكن استخدامها لإلغاء كائن من الكلاس RemoveBook() الدالة
public void RemoveBook(int id)
{
// book و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Book book in Books)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة Id يملك نفس رقم الـ book في حال كان الكائن
if (book.Id == id)
{
Books.Remove(book);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية Id يملك نفس رقم الـ Books في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Book with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص به Id بالإعتماد على رقم الـ Books يمكن استخدامها لطباعة كل المعلومات المتوفرة حول كتاب موضوع بداخل المصفوفة printBook() الدالة
public void PrintBook(int id)
{
// book و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Book book in Books)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة Id يملك نفس رقم الـ book في حال كان الكائن
if (book.Id == id)
{
Console.WriteLine("Book with id " + id + " info.");
Console.WriteLine("Title: " + book.Title);
Console.WriteLine("Version: " + book.Version);
Console.WriteLine("Publishing date: " + book.PublishingDate);
Console.WriteLine("author in " + book.Author.Name);
Console.WriteLine("----------------------");
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية Id يملك نفس رقم الـ Books في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Book with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
}