// authors بداخل المصفوفة Author يمكن استخدامها لإضافة كائن من الكلاس addAuthor() الدالة
void Library::addAuthor(const Author& author)
authors.push_back(author);
// الخاص به id بالإعتماد على رقم الـ authors موضوع بداخل المصفوفة Author يمكن استخدامها لإلغاء كائن من الكلاس removeAuthor() الدالة
void Library::removeAuthor(int id)
// authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < authors.size(); i++)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ author في حال كان الكائن
authors.erase(authors.begin() + i);
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Author with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ authors يمكن استخدامها لطباعة كل المعلومات المتوفرة حول مؤلف موضوع بداخل المصفوفة printAuthor() الدالة
void Library::printAuthor(int id)
// authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < authors.size(); i++)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ author في حال كان الكائن
cout << "Author with id " << id << " info.\n";
cout << "Name: " << authors[i].name << "\n";
cout << "Phone: " << authors[i].phone << "\n";
cout << "Email: " << authors[i].email << "\n";
cout << "----------------------\n";
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Author with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ authors يمكن استخدامها لطباعة كل أسماء الكتب التي قام بتأليفها مؤلف موضوع بداخل المصفوفة printAuthorBooks() الدالة
void Library::printAuthorBooks(int id)
// الذي تم تمريره للدالة id يملك رقم الـ authors بهدف التأكد ما إن كان يوجد كاتب في المصفوفة isAuthorExist سنستخدم المتغير
// من إعداد هذا الكاتب لأن ذلك سيكون غير منطقي books لأنه إن لم يكن هناك كاتب أصلاً فلن نقوم بالبحث عن كتب في المصفوفة
bool isAuthorExist = false;
// authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < authors.size(); i++)
// authorName الذي مررناه للدالة سيتم تخزين إسم المؤلف في المتغير id الحالي يملك نفس رقم الـ author في حال كان الكائن
// authors و إيقاف الحلقة لأننا تأكدنا أن هذا المؤلف موجود في المصفوفة true إلى isAuthorExist و من ثم تغيير قيمة
authorName = authors[i].name;
// authors فهذا يعني أنه لم يتم إيجاد أي كائن في المصفوفة false تساوي isAuthorExist في حال بقيت قيمة
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية و الخروج من الدالة id يملك نفس رقم الـ
cout << "Author with id " << id << " is not found!\n";
cout << "----------------------\n";
// هنا سيتم طباعة إسم المؤلف
cout << "Books of author " << authorName << ":\n";
// books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < books.size(); i++)
// الذي تم تمريره id يملك نفس رقم الـ book ( أي المؤلف ) الحالي الموضوع في الكائن author في حال كان الكائن
// و بالتالي سيتم طباعة إسم هذا الكتاب book للدالة فهذا يعني أنه هو مؤلف الكتاب الحالي المخزن في الكائن
if (books[i].author.id == id)
cout << "- " << books[i].title << "\n";
cout << "----------------------\n";
// books بداخل المصفوفة Book يمكن استخدامها لإضافة كائن من الكلاس addBook() الدالة
void Library::addBook(const Book& book)
// الخاص به id بالإعتماد على رقم الـ books موضوع بداخل المصفوفة Book يمكن استخدامها لإلغاء كائن من الكلاس removeBook() الدالة
void Library::removeBook(int id)
// books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < books.size(); i++)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي نفس رقم الـ book في حال كان الكائن
books.erase(books.begin() + i);
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ books في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Book with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ books يمكن استخدامها لطباعة كل المعلومات المتوفرة حول كتاب موضوع بداخل المصفوفة printBook() الدالة
void Library::printBook(int id)
// books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < books.size(); i++)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ book في حال كان الكائن
cout << "Book with id " << id << " info.\n";
cout << "Title: " << books[i].title << "\n";
cout << "Version: " << books[i].version << "\n";
cout << "Publishing date: " << books[i].publishingDate << "\n";
cout << "Author: " << books[i].author.name << "\n";
cout << "----------------------\n";
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ books في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Book with id " << id << " is not found!\n";
cout << "----------------------\n";
#include "Library.h"
#include <iostream>
#include <stdbool.h>
vector<Author> authors;
vector<Book> books;
// authors بداخل المصفوفة Author يمكن استخدامها لإضافة كائن من الكلاس addAuthor() الدالة
void Library::addAuthor(const Author& author)
{
authors.push_back(author);
}
// الخاص به id بالإعتماد على رقم الـ authors موضوع بداخل المصفوفة Author يمكن استخدامها لإلغاء كائن من الكلاس removeAuthor() الدالة
void Library::removeAuthor(int id)
{
// authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < authors.size(); i++)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ author في حال كان الكائن
if (authors[i].id == id)
{
authors.erase(authors.begin() + i);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Author with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ authors يمكن استخدامها لطباعة كل المعلومات المتوفرة حول مؤلف موضوع بداخل المصفوفة printAuthor() الدالة
void Library::printAuthor(int id)
{
// authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < authors.size(); i++)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ author في حال كان الكائن
if (authors[i].id == id)
{
cout << "Author with id " << id << " info.\n";
cout << "Name: " << authors[i].name << "\n";
cout << "Phone: " << authors[i].phone << "\n";
cout << "Email: " << authors[i].email << "\n";
cout << "----------------------\n";
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Author with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ authors يمكن استخدامها لطباعة كل أسماء الكتب التي قام بتأليفها مؤلف موضوع بداخل المصفوفة printAuthorBooks() الدالة
void Library::printAuthorBooks(int id)
{
// الذي تم تمريره للدالة id يملك رقم الـ authors بهدف التأكد ما إن كان يوجد كاتب في المصفوفة isAuthorExist سنستخدم المتغير
// من إعداد هذا الكاتب لأن ذلك سيكون غير منطقي books لأنه إن لم يكن هناك كاتب أصلاً فلن نقوم بالبحث عن كتب في المصفوفة
bool isAuthorExist = false;
string authorName = "";
// authors بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < authors.size(); i++)
{
// authorName الذي مررناه للدالة سيتم تخزين إسم المؤلف في المتغير id الحالي يملك نفس رقم الـ author في حال كان الكائن
// authors و إيقاف الحلقة لأننا تأكدنا أن هذا المؤلف موجود في المصفوفة true إلى isAuthorExist و من ثم تغيير قيمة
if (authors[i].id == id)
{
isAuthorExist = true;
authorName = authors[i].name;
break;
}
}
// authors فهذا يعني أنه لم يتم إيجاد أي كائن في المصفوفة false تساوي isAuthorExist في حال بقيت قيمة
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية و الخروج من الدالة id يملك نفس رقم الـ
if (!isAuthorExist)
{
cout << "Author with id " << id << " is not found!\n";
cout << "----------------------\n";
return;
}
// هنا سيتم طباعة إسم المؤلف
cout << "Books of author " << authorName << ":\n";
// books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < books.size(); i++)
{
// الذي تم تمريره id يملك نفس رقم الـ book ( أي المؤلف ) الحالي الموضوع في الكائن author في حال كان الكائن
// و بالتالي سيتم طباعة إسم هذا الكتاب book للدالة فهذا يعني أنه هو مؤلف الكتاب الحالي المخزن في الكائن
if (books[i].author.id == id)
{
cout << "- " << books[i].title << "\n";
}
}
cout << "----------------------\n";
}
// books بداخل المصفوفة Book يمكن استخدامها لإضافة كائن من الكلاس addBook() الدالة
void Library::addBook(const Book& book)
{
books.push_back(book);
}
// الخاص به id بالإعتماد على رقم الـ books موضوع بداخل المصفوفة Book يمكن استخدامها لإلغاء كائن من الكلاس removeBook() الدالة
void Library::removeBook(int id)
{
// books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < books.size(); i++)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي نفس رقم الـ book في حال كان الكائن
if (books[i].id == id)
{
books.erase(books.begin() + i);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ books في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Book with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ books يمكن استخدامها لطباعة كل المعلومات المتوفرة حول كتاب موضوع بداخل المصفوفة printBook() الدالة
void Library::printBook(int id)
{
// books بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < books.size(); i++)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ book في حال كان الكائن
if (books[i].id == id)
{
cout << "Book with id " << id << " info.\n";
cout << "Title: " << books[i].title << "\n";
cout << "Version: " << books[i].version << "\n";
cout << "Publishing date: " << books[i].publishingDate << "\n";
cout << "Author: " << books[i].author.name << "\n";
cout << "----------------------\n";
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ books في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Book with id " << id << " is not found!\n";
cout << "----------------------\n";
}