vector<Product> products;
// products بداخل المصفوفة product يمكن استخدامها لإضافة كائن من الكلاس addProduct() الدالة
void Company::addProduct(const Product& product)
products.push_back(product);
// persons بداخل المصفوفة Persons يمكن استخدامها لإضافة مؤشر كائن من الكلاس addPerson() الدالة
void Company::addPerson(Person *person)
persons.push_back(person);
// orders بداخل المصفوفة Order يمكن استخدامها لإضافة كائن من الكلاس addOrder() الدالة
void Company::addOrder(const Order& order)
// الخاص به id بالإعتماد على رقم الـ products موضوع بداخل المصفوفة Product يمكن استخدامها لإلغاء كائن من الكلاس removeProduct() الدالة
void Company::removeProduct(int id)
// products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < products.size(); i++)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ products[i] في حال كان الكائن
if (products[i].id == id)
products.erase(products.begin() + i);
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ products في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Product with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ persons أو من أحد الكلاسات التي ترث منه و موضوع بداخل المصفوفة Person يمكن استخدامها لإلغاء مؤشر كائن من الكلاس removePerson() الدالة
void Company::removePerson(int id)
// persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < persons.size(); i++)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ persons[i] في حال كان الكائن
if (persons[i]->id == id)
persons.erase(persons.begin() + i);
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ persons في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Person with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ orders موضوع بداخل المصفوفة Order يمكن استخدامها لإلغاء كائن من الكلاس removeOrder() الدالة
void Company::removeOrder(int id)
// orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < orders.size(); i++)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ orders[i] في حال كان الكائن
orders.erase(orders.begin() + i);
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ orders في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Order with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ persons يمكن استخدامها لطباعة كل المعلومات المتوفرة حول شخص موضوع مؤشره بداخل المصفوفة printPersonInfo() الدالة
void Company::printPersonInfo(int id)
// persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < persons.size(); i++)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ persons[i] في حال كان الكائن
if (persons[i]->id == id)
cout << "Person with id " << id << " info.\n";
cout << "Name: " << persons[i]->name << "\n";
cout << "Phone: " << persons[i]->phone << "\n";
cout << "Gender: " << persons[i]->gender << "\n";
// لطباعة المعلومات الإضافية المتوفرة عن الشخص printExtraInfo() هنا قمنا باستدعاء الدالة
// Client الموجودة في الكلاس printExtraInfo() سيتم إستدعاء الدالة Client إذا كان الشخص عبارة عن كائن أصله من الكلاس
// Employee الموجودة في الكلاس printExtraInfo() سيتم إستدعاء الدالة Employee إذا كان الشخص عبارة عن كائن أصله من الكلاس
persons[i]->printExtraInfo();
cout << "----------------------\n";
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ persons في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Person with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ products يمكن استخدامها لطباعة كل المعلومات المتوفرة حول منتج موضوع بداخل المصفوفة printProductDetails() الدالة
void Company::printProductDetails(int id)
// products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < products.size(); i++)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ products[i] في حال كان الكائن
if (products[i].id == id)
cout << "Product with id " << id << " details.\n";
cout << "Name: " << products[i].name << "\n";
cout << "Price: " << products[i].price << "$\n";
cout << "----------------------\n";
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ products في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Product with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ orders يمكن استخدامها لطباعة كل المعلومات المتوفرة حول فاتورة موضوعة بداخل المصفوفة printOrderDetails() الدالة
void Company::printOrderDetails(int id)
// سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في الفاتورة totalSum المتغير
// orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < orders.size(); i++)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ orders[i] في حال كان الكائن
cout << "Order with id " << id << " details.\n";
cout << "Date: " << orders[i].date << "\n";
cout << "Is paid: " << ((orders[i].isPaid)? "Yes": "no") << "\n";
cout << "Ordered by: " << orders[i].person->name << "\n";
// orders[i] التي تملكها الفاتورة products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
// و سنطبع إسمه و سعره totalSum كل منتج نمر عليه, سنقوم بإضافة ثمنه على قيمة المتغير
for (unsigned j = 0; j < orders[i].products.size(); j++)
totalSum += orders[i].products[j].price;
cout << "- " << orders[i].products[j].name << ": " << orders[i].products[j].price << "$\n";
// بعد أن يتم حساب ناتج جمع جميع أسعار المنتجات الموضوعة في الفاتورة سيتم عرض الناتج و من ثم الخروج من الدالة
cout << "Total: " << totalSum << "$\n";
cout << "----------------------\n";
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ orders في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Order with id " << id << " is not found!\n";
cout << "----------------------\n";
// الخاص به id بالإعتماد على رقم الـ orders يمكن استخدامها لطباعة كل المعلومات المتوفرة حول فواتير شخص موضوع بداخل المصفوفة printPersonOrders() الدالة
void Company::printPersonOrders(int id)
// persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < persons.size(); i++)
// الذي مررناه للدالة سيتم المرور على جميع فواتيره id الحالي يملك نفس رقم الـ persons[i] في حال كان الكائن
if (persons[i]->id == id)
cout << "All orders made by person with id " << id << ":\n";
// orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned j = 0; j < orders.size(); j++)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ orders[i] في حال كان الكائن
if (orders[j].person->id == id)
cout << "> Order with id " << id << " details.\n";
cout << " Date: " << orders[j].date << "\n";
cout << " Is paid: " << ((orders[j].isPaid)? "Yes": "no") << "\n";
cout << " Ordered by: " << orders[j].person->name << "\n";
// سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في كل فاتورة totalSum المتغير
// orders[j] التي تملكها الفاتورة products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
// و سنطبع إسمه و سعره totalSum كل منتج نمر عليه, سنقوم بإضافة ثمنه على قيمة المتغير
for (unsigned k = 0; k < orders[j].products.size(); k++)
totalSum += orders[j].products[k].price;
cout << "- " << orders[j].products[k].name << ": " << orders[j].products[k].price << "$\n";
// بعد أن يتم حساب ناتج جمع جميع أسعار المنتجات الموضوعة في الفاتورة سيتم عرض الناتج
cout << "Total: " << totalSum << "$\n";
// بعد طباعة جميع الفواتير سيتم الخروج من الدالة
cout << "----------------------\n";
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Person with id " << id << " is not found!\n";
cout << "----------------------\n";
#include "Company.h"
#include <iostream>
vector<Person*> persons;
vector<Product> products;
vector<Order> orders;
// products بداخل المصفوفة product يمكن استخدامها لإضافة كائن من الكلاس addProduct() الدالة
void Company::addProduct(const Product& product)
{
products.push_back(product);
}
// persons بداخل المصفوفة Persons يمكن استخدامها لإضافة مؤشر كائن من الكلاس addPerson() الدالة
void Company::addPerson(Person *person)
{
persons.push_back(person);
}
// orders بداخل المصفوفة Order يمكن استخدامها لإضافة كائن من الكلاس addOrder() الدالة
void Company::addOrder(const Order& order)
{
orders.push_back(order);
}
// الخاص به id بالإعتماد على رقم الـ products موضوع بداخل المصفوفة Product يمكن استخدامها لإلغاء كائن من الكلاس removeProduct() الدالة
void Company::removeProduct(int id)
{
// products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < products.size(); i++)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ products[i] في حال كان الكائن
if (products[i].id == id)
{
products.erase(products.begin() + i);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ products في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Product with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ persons أو من أحد الكلاسات التي ترث منه و موضوع بداخل المصفوفة Person يمكن استخدامها لإلغاء مؤشر كائن من الكلاس removePerson() الدالة
void Company::removePerson(int id)
{
// persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < persons.size(); i++)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ persons[i] في حال كان الكائن
if (persons[i]->id == id)
{
persons.erase(persons.begin() + i);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ persons في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Person with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ orders موضوع بداخل المصفوفة Order يمكن استخدامها لإلغاء كائن من الكلاس removeOrder() الدالة
void Company::removeOrder(int id)
{
// orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < orders.size(); i++)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ orders[i] في حال كان الكائن
if (orders[i].id == id)
{
orders.erase(orders.begin() + i);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ orders في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Order with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ persons يمكن استخدامها لطباعة كل المعلومات المتوفرة حول شخص موضوع مؤشره بداخل المصفوفة printPersonInfo() الدالة
void Company::printPersonInfo(int id)
{
// persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < persons.size(); i++)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ persons[i] في حال كان الكائن
if (persons[i]->id == id)
{
cout << "Person with id " << id << " info.\n";
cout << "Name: " << persons[i]->name << "\n";
cout << "Phone: " << persons[i]->phone << "\n";
cout << "Gender: " << persons[i]->gender << "\n";
// لطباعة المعلومات الإضافية المتوفرة عن الشخص printExtraInfo() هنا قمنا باستدعاء الدالة
// Client الموجودة في الكلاس printExtraInfo() سيتم إستدعاء الدالة Client إذا كان الشخص عبارة عن كائن أصله من الكلاس
// Employee الموجودة في الكلاس printExtraInfo() سيتم إستدعاء الدالة Employee إذا كان الشخص عبارة عن كائن أصله من الكلاس
persons[i]->printExtraInfo();
cout << "----------------------\n";
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ persons في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Person with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ products يمكن استخدامها لطباعة كل المعلومات المتوفرة حول منتج موضوع بداخل المصفوفة printProductDetails() الدالة
void Company::printProductDetails(int id)
{
// products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < products.size(); i++)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ products[i] في حال كان الكائن
if (products[i].id == id)
{
cout << "Product with id " << id << " details.\n";
cout << "Name: " << products[i].name << "\n";
cout << "Price: " << products[i].price << "$\n";
cout << "----------------------\n";
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ products في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Product with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ orders يمكن استخدامها لطباعة كل المعلومات المتوفرة حول فاتورة موضوعة بداخل المصفوفة printOrderDetails() الدالة
void Company::printOrderDetails(int id)
{
// سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في الفاتورة totalSum المتغير
float totalSum = 0;
// orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < orders.size(); i++)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ orders[i] في حال كان الكائن
if (orders[i].id == id)
{
cout << "Order with id " << id << " details.\n";
cout << "Date: " << orders[i].date << "\n";
cout << "Is paid: " << ((orders[i].isPaid)? "Yes": "no") << "\n";
cout << "Ordered by: " << orders[i].person->name << "\n";
cout << "Products:\n";
// orders[i] التي تملكها الفاتورة products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
// و سنطبع إسمه و سعره totalSum كل منتج نمر عليه, سنقوم بإضافة ثمنه على قيمة المتغير
for (unsigned j = 0; j < orders[i].products.size(); j++)
{
totalSum += orders[i].products[j].price;
cout << "- " << orders[i].products[j].name << ": " << orders[i].products[j].price << "$\n";
}
// بعد أن يتم حساب ناتج جمع جميع أسعار المنتجات الموضوعة في الفاتورة سيتم عرض الناتج و من ثم الخروج من الدالة
cout << "Total: " << totalSum << "$\n";
cout << "----------------------\n";
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ orders في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Order with id " << id << " is not found!\n";
cout << "----------------------\n";
}
// الخاص به id بالإعتماد على رقم الـ orders يمكن استخدامها لطباعة كل المعلومات المتوفرة حول فواتير شخص موضوع بداخل المصفوفة printPersonOrders() الدالة
void Company::printPersonOrders(int id)
{
// persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned i = 0; i < persons.size(); i++)
{
// الذي مررناه للدالة سيتم المرور على جميع فواتيره id الحالي يملك نفس رقم الـ persons[i] في حال كان الكائن
if (persons[i]->id == id)
{
cout << "All orders made by person with id " << id << ":\n";
// orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
for (unsigned j = 0; j < orders.size(); j++)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id الحالي يملك نفس رقم الـ orders[i] في حال كان الكائن
if (orders[j].person->id == id)
{
cout << "> Order with id " << id << " details.\n";
cout << " Date: " << orders[j].date << "\n";
cout << " Is paid: " << ((orders[j].isPaid)? "Yes": "no") << "\n";
cout << " Ordered by: " << orders[j].person->name << "\n";
cout << " Products:\n";
// سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في كل فاتورة totalSum المتغير
float totalSum = 0;
// orders[j] التي تملكها الفاتورة products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
// و سنطبع إسمه و سعره totalSum كل منتج نمر عليه, سنقوم بإضافة ثمنه على قيمة المتغير
for (unsigned k = 0; k < orders[j].products.size(); k++)
{
totalSum += orders[j].products[k].price;
cout << "- " << orders[j].products[k].name << ": " << orders[j].products[k].price << "$\n";
}
// بعد أن يتم حساب ناتج جمع جميع أسعار المنتجات الموضوعة في الفاتورة سيتم عرض الناتج
cout << "Total: " << totalSum << "$\n";
}
}
// بعد طباعة جميع الفواتير سيتم الخروج من الدالة
cout << "----------------------\n";
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ authors في حال لم يتم إيجاد أي كائن في المصفوفة
cout << "Person with id " << id << " is not found!\n";
cout << "----------------------\n";
}