// يمثل كل ما تحتويه الشركة من أشخاص, فواتير, منتجات, و الدوال التي يمكن استخدامها للتعامل معهم Company الكلاس
using System.Collections.Generic;
// سنضع فيه كل معلومات الفواتير Orders سنضع فيه كل معلومات المنتجات. الكائن Products سنضع فيه كل معلومات الأشخاص. الكائن Persons الكائن
public List<Person> Persons { get; set; }
public List<Product> Products { get; set; }
public List<Order> Orders { get; set; }
// Orders و Products و Persons هنا قمنا بتعريف كونستركتور الكلاس و الذي قمنا فيه بإنشاء الكائنات
Persons = new List<Person>();
Products = new List<Product>();
Orders = new List<Order>();
// Products بداخل المصفوفة Product يمكن استخدامها لإضافة كائن من الكلاس AddProduct() الدالة
public void AddProduct(Product product)
// Persons بداخل المصفوفة Person يمكن استخدامها لإضافة كائن من الكلاس AddPerson() الدالة
public void AddPerson(Person person)
// Orders بداخل المصفوفة Order يمكن استخدامها لإضافة كائن من الكلاس AddOrder() الدالة
public void AddOrder(Order order)
// الخاص به id بالإعتماد على رقم الـ Products موضوع بداخل المصفوفة Product يمكن استخدامها لإلغاء كائن من الكلاس RemoveProduct() الدالة
public void RemoveProduct(int id)
// product و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Product product in Products)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ product في حال كان الكائن
Products.Remove(product);
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Products في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Product with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص به id بالإعتماد على رقم الـ Persons موضوع بداخل المصفوفة Person يمكن استخدامها لإلغاء كائن من الكلاس RemovePerson() الدالة
public void RemovePerson(int id)
// person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Person person in Persons)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ person في حال كان الكائن
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Persons في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Person with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص به id بالإعتماد على رقم الـ Orders موضوع بداخل المصفوفة Order يمكن استخدامها لإلغاء كائن من الكلاس RemoveOrder() الدالة
public void RemoveOrder(int id)
// order و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Order order in Orders)
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ order في حال كان الكائن
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Orders في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Order with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص به id بالإعتماد على رقم الـ Persons يمكن استخدامها لطباعة كل المعلومات المتوفرة حول شخص موضوع بداخل المصفوفة PrintPersonInfo() الدالة
public void PrintPersonInfo(int id)
// person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Person person in Persons)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ person في حال كان الكائن
Console.WriteLine("Person with id " + id + " info.");
Console.WriteLine("Name: " + person.Name);
Console.WriteLine("Phone: " + person.Phone);
Console.WriteLine("Gender: " + person.Gender);
// ( type-casting سيتم تحديد أن الكائن أصله منه ( أي سنفعل ,Client تم إنشاؤه من الكلاس person إذا كان الكائن
// Client التي يملكها الشخص فقط في حال كان عبارة عن كائن من الكلاس Email حتى نستطيع طباعة الخاصية
Console.WriteLine("Email: " + ((Client)person).Email);
// ( type-casting سيتم تحديد أن الكائن أصله منه ( أي سنفعل ,Employee تم إنشاؤه من الكلاس person إذا كان الكائن
// Employee التي يملكها الشخص فقط في حال كان عبارة عن كائن من الكلاس WorkingTime و Salary حتى نستطيع طباعة الخاصيتين
else if (person is Employee)
Console.WriteLine("Salary: " + ((Employee)person).Salary + "$");
Console.WriteLine("Working time: " + ((Employee)person).WorkingTime);
// بعدها سيتم رسم هذا الخط و من ثم الخروج من الدالة
Console.WriteLine("----------------------");
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Persons في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Person with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص به id بالإعتماد على رقم الـ Products يمكن استخدامها لطباعة كل المعلومات المتوفرة حول منتج موضوع بداخل المصفوفة PrintProductDetails() الدالة
public void PrintProductDetails(int id)
// product و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Product product in Products)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ product في حال كان الكائن
Console.WriteLine("Product with id " + id + " details.");
Console.WriteLine("Name: " + product.Name);
Console.WriteLine("Price: " + product.Price + "$");
Console.WriteLine("----------------------");
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Products في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Product with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص بها id بالإعتماد على رقم الـ Orders يمكن استخدامها لطباعة كل معلومات فاتورة موضوعة بداخل المصفوفة PrintProductDetails() الدالة
public void PrintOrderDetails(int id)
// سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في الفاتورة totalSum المتغير
// order و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Order order in Orders)
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ order في حال كان الكائن
Console.WriteLine("Order with id " + id + " details.");
Console.WriteLine("Date: " + order.Date);
Console.WriteLine("Is paid: " + ((order.IsPaid) ? "yes" : "no"));
Console.WriteLine("Ordered by: " + order.Person.Name);
Console.WriteLine("Products:");
// order الموضوعة في الكائن Products هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
// product كل كائن نمر عليه ( و الذي يمثل منتج ) سنضعه بشكل مؤقته بداخل الكائن
// totalSum سعر كل منتج يتم إيجاده في هذه المصفوفة سيتم إضافته على قيمة المتغير
foreach (Product product in order.Products)
totalSum += product.Price;
Console.WriteLine("- " + product.Name + ": " + product.Price + "$");
// و الذي يمثل ثمن كل المشتريات الموضوعة في الفاتورة و من ثم الخروج من الدالة totalSum هنا سيتم عرض ناتج الجمع الذي تم تخزينه في المتغير
Console.WriteLine("Total: " + totalSum + "$");
Console.WriteLine("----------------------");
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Orders في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Order with id " + id + " is not found!");
Console.WriteLine("----------------------");
// الخاص به id بالإعتماد على رقم الـ Persons يمكن استخدامها لطباعة كل معلومات الفواتير التابعة لشخص موضوع بداخل المصفوفة PrintProductDetails() الدالة
public void PrintPersonOrders(int id)
// person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Person person in Persons)
// الذي مررناه للدالة سيتم طباعة كل فواتيره و من ثم الخروج من الدالة id يملك نفس رقم الـ person في حال كان الكائن
Console.WriteLine("All Orders made by person with id " + id + ":");
// order و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Order order in Orders)
// ( الذي مررناه للدالة سيتم طباعة معلوماته ( أي معلومات الفاتورة id يملك نفس رقم الـ order الموضوع في الكائن person في حال كان الكائن
if (order.Person.Id == id)
Console.WriteLine("> Order: #" + order.Id);
Console.WriteLine(" Date: " + order.Date);
Console.WriteLine(" Is paid: " + ((order.IsPaid) ? "yes" : "no"));
Console.WriteLine(" Ordered by: " + order.Person.Name);
Console.WriteLine(" Products:");
// سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في كل فاتورة totalSum المتغير
// order الموضوعة في الكائن Products هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
// product كل كائن نمر عليه ( و الذي يمثل منتج ) سنضعه بشكل مؤقته بداخل الكائن
// totalSum سعر كل منتج يتم إيجاده في هذه المصفوفة سيتم إضافته على قيمة المتغير
foreach (Product product in order.Products)
totalSum += product.Price;
Console.WriteLine(" - " + product.Name + ": " + product.Price + "$");
// و الذي يمثل ثمن كل المشتريات الموضوعة في الفاتورة totalSum هنا سيتم عرض ناتج الجمع الذي تم تخزينه في المتغير
Console.WriteLine(" Total Price: " + totalSum + "$");
// بعدها سيتم رسم هذا الخط و من ثم الخروج من الدالة
Console.WriteLine("----------------------");
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Persons في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Person with id " + id + " is not found!");
Console.WriteLine("----------------------");
// يمثل كل ما تحتويه الشركة من أشخاص, فواتير, منتجات, و الدوال التي يمكن استخدامها للتعامل معهم Company الكلاس
using System;
using System.Collections.Generic;
class Company
{
// سنضع فيه كل معلومات الفواتير Orders سنضع فيه كل معلومات المنتجات. الكائن Products سنضع فيه كل معلومات الأشخاص. الكائن Persons الكائن
public List<Person> Persons { get; set; }
public List<Product> Products { get; set; }
public List<Order> Orders { get; set; }
// Orders و Products و Persons هنا قمنا بتعريف كونستركتور الكلاس و الذي قمنا فيه بإنشاء الكائنات
public Company()
{
Persons = new List<Person>();
Products = new List<Product>();
Orders = new List<Order>();
}
// Products بداخل المصفوفة Product يمكن استخدامها لإضافة كائن من الكلاس AddProduct() الدالة
public void AddProduct(Product product)
{
Products.Add(product);
}
// Persons بداخل المصفوفة Person يمكن استخدامها لإضافة كائن من الكلاس AddPerson() الدالة
public void AddPerson(Person person)
{
Persons.Add(person);
}
// Orders بداخل المصفوفة Order يمكن استخدامها لإضافة كائن من الكلاس AddOrder() الدالة
public void AddOrder(Order order)
{
Orders.Add(order);
}
// الخاص به id بالإعتماد على رقم الـ Products موضوع بداخل المصفوفة Product يمكن استخدامها لإلغاء كائن من الكلاس RemoveProduct() الدالة
public void RemoveProduct(int id)
{
// product و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Product product in Products)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ product في حال كان الكائن
if (product.Id == id)
{
Products.Remove(product);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Products في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Product with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص به id بالإعتماد على رقم الـ Persons موضوع بداخل المصفوفة Person يمكن استخدامها لإلغاء كائن من الكلاس RemovePerson() الدالة
public void RemovePerson(int id)
{
// person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Person person in Persons)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ person في حال كان الكائن
if (person.Id == id)
{
Persons.Remove(person);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Persons في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Person with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص به id بالإعتماد على رقم الـ Orders موضوع بداخل المصفوفة Order يمكن استخدامها لإلغاء كائن من الكلاس RemoveOrder() الدالة
public void RemoveOrder(int id)
{
// order و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Order order in Orders)
{
// الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ order في حال كان الكائن
if (order.Id == id)
{
Orders.Remove(order);
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Orders في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Order with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص به id بالإعتماد على رقم الـ Persons يمكن استخدامها لطباعة كل المعلومات المتوفرة حول شخص موضوع بداخل المصفوفة PrintPersonInfo() الدالة
public void PrintPersonInfo(int id)
{
// person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Person person in Persons)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ person في حال كان الكائن
if (person.Id == id)
{
Console.WriteLine("Person with id " + id + " info.");
Console.WriteLine("Name: " + person.Name);
Console.WriteLine("Phone: " + person.Phone);
Console.WriteLine("Gender: " + person.Gender);
// ( type-casting سيتم تحديد أن الكائن أصله منه ( أي سنفعل ,Client تم إنشاؤه من الكلاس person إذا كان الكائن
// Client التي يملكها الشخص فقط في حال كان عبارة عن كائن من الكلاس Email حتى نستطيع طباعة الخاصية
if (person is Client)
{
Console.WriteLine("Email: " + ((Client)person).Email);
}
// ( type-casting سيتم تحديد أن الكائن أصله منه ( أي سنفعل ,Employee تم إنشاؤه من الكلاس person إذا كان الكائن
// Employee التي يملكها الشخص فقط في حال كان عبارة عن كائن من الكلاس WorkingTime و Salary حتى نستطيع طباعة الخاصيتين
else if (person is Employee)
{
Console.WriteLine("Salary: " + ((Employee)person).Salary + "$");
Console.WriteLine("Working time: " + ((Employee)person).WorkingTime);
}
// بعدها سيتم رسم هذا الخط و من ثم الخروج من الدالة
Console.WriteLine("----------------------");
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Persons في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Person with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص به id بالإعتماد على رقم الـ Products يمكن استخدامها لطباعة كل المعلومات المتوفرة حول منتج موضوع بداخل المصفوفة PrintProductDetails() الدالة
public void PrintProductDetails(int id)
{
// product و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Product product in Products)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ product في حال كان الكائن
if (product.Id == id)
{
Console.WriteLine("Product with id " + id + " details.");
Console.WriteLine("Name: " + product.Name);
Console.WriteLine("Price: " + product.Price + "$");
Console.WriteLine("----------------------");
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Products في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Product with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص بها id بالإعتماد على رقم الـ Orders يمكن استخدامها لطباعة كل معلومات فاتورة موضوعة بداخل المصفوفة PrintProductDetails() الدالة
public void PrintOrderDetails(int id)
{
// سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في الفاتورة totalSum المتغير
float totalSum = 0;
// order و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Order order in Orders)
{
// الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ order في حال كان الكائن
if (order.Id == id)
{
Console.WriteLine("Order with id " + id + " details.");
Console.WriteLine("Date: " + order.Date);
Console.WriteLine("Is paid: " + ((order.IsPaid) ? "yes" : "no"));
Console.WriteLine("Ordered by: " + order.Person.Name);
Console.WriteLine("Products:");
// order الموضوعة في الكائن Products هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
// product كل كائن نمر عليه ( و الذي يمثل منتج ) سنضعه بشكل مؤقته بداخل الكائن
// totalSum سعر كل منتج يتم إيجاده في هذه المصفوفة سيتم إضافته على قيمة المتغير
foreach (Product product in order.Products)
{
totalSum += product.Price;
Console.WriteLine("- " + product.Name + ": " + product.Price + "$");
}
// و الذي يمثل ثمن كل المشتريات الموضوعة في الفاتورة و من ثم الخروج من الدالة totalSum هنا سيتم عرض ناتج الجمع الذي تم تخزينه في المتغير
Console.WriteLine("Total: " + totalSum + "$");
Console.WriteLine("----------------------");
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Orders في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Order with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
// الخاص به id بالإعتماد على رقم الـ Persons يمكن استخدامها لطباعة كل معلومات الفواتير التابعة لشخص موضوع بداخل المصفوفة PrintProductDetails() الدالة
public void PrintPersonOrders(int id)
{
// person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Person person in Persons)
{
// الذي مررناه للدالة سيتم طباعة كل فواتيره و من ثم الخروج من الدالة id يملك نفس رقم الـ person في حال كان الكائن
if (person.Id == id)
{
Console.WriteLine("All Orders made by person with id " + id + ":");
// order و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن Orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
foreach (Order order in Orders)
{
// ( الذي مررناه للدالة سيتم طباعة معلوماته ( أي معلومات الفاتورة id يملك نفس رقم الـ order الموضوع في الكائن person في حال كان الكائن
if (order.Person.Id == id)
{
Console.WriteLine("> Order: #" + order.Id);
Console.WriteLine(" Date: " + order.Date);
Console.WriteLine(" Is paid: " + ((order.IsPaid) ? "yes" : "no"));
Console.WriteLine(" Ordered by: " + order.Person.Name);
Console.WriteLine(" Products:");
// سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في كل فاتورة totalSum المتغير
float totalSum = 0;
// order الموضوعة في الكائن Products هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
// product كل كائن نمر عليه ( و الذي يمثل منتج ) سنضعه بشكل مؤقته بداخل الكائن
// totalSum سعر كل منتج يتم إيجاده في هذه المصفوفة سيتم إضافته على قيمة المتغير
foreach (Product product in order.Products)
{
totalSum += product.Price;
Console.WriteLine(" - " + product.Name + ": " + product.Price + "$");
}
// و الذي يمثل ثمن كل المشتريات الموضوعة في الفاتورة totalSum هنا سيتم عرض ناتج الجمع الذي تم تخزينه في المتغير
Console.WriteLine(" Total Price: " + totalSum + "$");
}
}
// بعدها سيتم رسم هذا الخط و من ثم الخروج من الدالة
Console.WriteLine("----------------------");
return;
}
}
// الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ Persons في حال لم يتم إيجاد أي كائن في المصفوفة
Console.WriteLine("Person with id " + id + " is not found!");
Console.WriteLine("----------------------");
}
}