إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    الخوارزميات و هياكل البيانات التحدي الثاني - الحل بلغة بايثون

    فكرة المشروع

    في هذا التمرين سنفترض أننا نقوم بتخزين بيانات لمؤسسة صغيرة.
    البيانات التي نريد تخزينها هي التالية:

    • الموظفين الذين يعملون في المؤسسة (الإسم, الهاتف, الجنس, دوام العمل, أيام العمل).
    • الزبائن الذين يشترون من المؤسسة (الإسم, الهاتف, الجنس, البريد الإلكتروني).
    • المنتجات التي تبيعها المؤسسة (إسم المنتج و سعره).
    • الفواتير الخاصة ببيع المنتجات (تاريخ البيع, هل تم الدفع أم لا, بيانات المشتري, المنتجات التي تم شراءها).

    ملاحظة: رقم التعرفة لكل من الأشخاص, المنتجات, الفواتير يجب أن يتم إعطاؤه لهم بشكل تلقائي.


    الشكل العام لأقسام المشروع


    شرح أقسام المشروع

    Person يمثل المعلومات المشتركة بين الموظف و الزبون.
    Client يمثل المعلومات الإضافية الخاصة بالزبون و غير موجودة عند الموظف.
    Employee يمثل المعلومات الإضافية الخاصة الموظف و غير موجودة عند الزبون.
    Product يمثل أي منتج تبيعه الشركة.
    Order يمثل فواتير بيع المنتجات و لاحظ أن كل فاتورة سيتم فيها بيع مجموعة من المنتجات و كل فاتورة سيتم إصدارها لشخص محدد.
    add_product(): مهمتها إضافة منتج جديد.
    add_person(): مهمتها إضافة شخص جديد سواء موظف أو زبون.
    add_order(): مهمتها إضافة فاتورة جديدة.
    remove_product(): مهمتها حذف منتج من خلال id المنتج الذي نمرره لها عند استدعائها.
    remove_person(): مهمتها حذف شخص من خلال id الشخص الذي نمرره لها عند استدعائها.
    remove_order(): مهمتها حذف فاتورة من خلال id الفاتورة الذي نمرره لها عند استدعائها.
    print_person_info(): مهمتها عرض كل معلومات الشخص من خلال id الشخص الذي نمرره لها عند استدعائها.
    print_product_details(): مهمتها عرض كل معلومات المنتج من خلال id المنتج الذي نمرره لها عند استدعائها.
    print_order_details(): مهمتها عرض كل معلومات الفاتورة من خلال id الفاتورة الذي نمرره لها عند استدعائها.
    print_person_orders(): مهمتها عرض كل فواتير الشخص من خلال id الشخص الذي نمرره لها عند استدعائها.
    print_extra_info(): مهمتها عرض كل المعلومات المتوفرة حول الشخص سواء كان موظف أو زبون.

    قم بتحويل الرسم إلى كود. ثم قم بإنشاء مجموعة موظفين, زبائن, منتجات و فواتير. و قم بتجربة جميع الدوال في البرنامج.


    معلومة

    لإعطاء رقم id موحد لكل كائن يتم إنشاؤه, يمكنك تعريف متغير في الكلاس و الأفضل جعله مخفياً ( من خلال وضع الرمز __ قبل إسمه ) حتى لا يمكن رؤيته مع باقي متغيرات الكلاس من الكائنات التي ننشئها منه. بعدها تقوم فقط بجعل قيمته تزيد 1 كلما قمت بإنشاء كائن من هذا الكلاس و من ثم تضع قيمته في المتغير id.

    ملاحظة: سنقوم بإنشاء متغير إسمه __id_incrementer في الكلاسات Person, Product و Order من أجل هذا الهدف فقط.


    الحل بلغة بايثون

    Person.py
    # و الذي سيحتوي على جميع الخصائص التي سيمكلها أي شخص Person هنا قمنا بتعريف الكلاس
    class Person:
        # بتعريفه هنا و هكذا ليكون موحد بالنسبة لجميع الكائنات التي ننشئها من هذا الكلاس idIncrementer المتغير
        __id_incrementer = 0
    
        # هنا قمنا بتعريف الخصائص الأساسية التي يجب أن يملكها الشخص و التي يمكننا تحديد قيمها عند إنشاء كائن من هذا الكلاس
        # الخاسة بالكائن id تزيد 1 في كل مرة و من ثم يتم وضعها في الخاصية idIncrementer لاحظ أننا قمنا بجعل قيمة
        # القيم الأخرى التي يتم تمريرها للكائن سيتم تخزينها كما هي
        def __init__(self, name, phone, gender):
            Person.__id_incrementer += 1
            self.id = Person.__id_incrementer
            self.name = name
            self.phone = phone
            self.gender = gender
    		

    Client.py
    from Person import Person
    
    
    # الذي وضعنا فيه المعلومات الأساسية التي يجب أن يملكها أي زبون Client هنا قمنا بتعريف الكلاس
    # email لأن الزبون عبارة عن شخص عادي و لكنه يملك الخاصية الإضافية Person هذا الكلاس يرث من الكلاس
    class Client(Person):
    
    	# هنا قمنا بتعريف كونستركتور للكلاس حتى نستطيع إسناد قيم للخصائص بشكل مباشر بواسطته
        # super() عن طريق الدالة Person سيتم إسناد قيم لها من خلال كونستركتور الكلاس name, phone, gender الخصائص
        # id سيتولى أمر توليد قيمة للمتغير Person أيضاَ, لا تنسى أن كونستركتور الكلاس
        def __init__(self, name, phone, gender, email):
            super().__init__(name, phone, gender)
            self.email = email
    		

    Employee.py
    from Person import Person
    
    
    # الذي وضعنا فيه المعلومات الأساسية التي يجب أن يملكها أي موظف Employee هنا قمنا بتعريف الكلاس
    # workingTime و salary لأن الموظف عبارة عن شخص عادي و لكنه يملك خصائص إضافية هي Person هذا الكلاس يرث من الكلاس
    class Employee(Person):
    
    	# هنا قمنا بتعريف كونستركتور للكلاس حتى نستطيع إسناد قيم للخصائص بشكل مباشر بواسطته
        # super() عن طريق الدالة Person سيتم إسناد قيم لها من خلال كونستركتور الكلاس name, phone, gender الخصائص
        # id سيتولى أمر توليد قيمة للمتغير Person أيضاَ, لا تنسى أن كونستركتور الكلاس
        def __init__(self, name, phone, gender, salary, working_time):
            super().__init__(name, phone, gender)
            self.salary = salary
            self.working_time = working_time
    		

    Product.py
    # الذي وضعنا فيه المعلومات الأساسية التي يجب أن يملكها أي منتج Product هنا قمنا بتعريف الكلاس
    class Product:
    
        # بتعريفه هنا و هكذا ليكون موحد بالنسبة لجميع الكائنات التي ننشئها من هذا الكلاس idIncrementer المتغير
        __id_incrementer = 0
    
    	# هنا قمنا بتعريف الخصائص الأساسية التي يجب أن يملكها المنتج و التي يمكننا تحديد قيمها عند إنشاء كائن من هذا الكلاس
        # الخاسة بالكائن id تزيد 1 في كل مرة و من ثم يتم وضعها في الخاصية idIncrementer لاحظ أننا قمنا بجعل قيمة
        # القيم الأخرى التي يتم تمريرها للكائن سيتم تخزينها كما هي
        def __init__(self, name, price):
            Product.__id_incrementer += 1
            self.id = Product.__id_incrementer
            self.name = name
            self.price = price
    		

    Order.py
    # و الذي سيحتوي على جميع الخصائص التي ستملكها أي فاتورة Order هنا قمنا بتعريف الكلاس
    class Order:
    
        # بتعريفه هنا و هكذا ليكون موحد بالنسبة لجميع الكائنات التي ننشئها من هذا الكلاس idIncrementer المتغير
        __id_incrementer = 0
    
        # هنا قمنا بتعريف الخصائص الأساسية التي يجب أن يملكها الفاتورة و التي يمكننا تحديد قيمها عند إنشاء كائن من هذا الكلاس
        # الخاسة بالكائن id تزيد 1 في كل مرة و من ثم يتم وضعها في الخاصية idIncrementer لاحظ أننا قمنا بجعل قيمة
        # القيم الأخرى التي يتم تمريرها للكائن سيتم تخزينها كما هي
        def __init__(self, date, is_paid, person, products):
            Order.__id_incrementer += 1
            self.id = Order.__id_incrementer
            self.date = date
            self.is_paid = is_paid
            self.person = person
            self.products = products
    		

    Company.py
    from Client import Client
    from Employee import Employee
    
    
    # يمثل كل ما تحتويه المكتبة من كتب و مؤلفين و الدوال التي يمكن استخدامها للتعامل معهم Company هنا قمنا بتعريف الكلاس
    class Company:
        # سنضع فيها كل معلومات الفواتير orders سنضع فيها كل معلومات الكتب. المصفوفة orders سنضع فيها كل معلومات الأشخاص. المصفوفة persons المصفوفة
        persons = []
        products = []
        orders = []
    
        # product بداخل المصفوفة Product يمكن استخدامها لإضافة كائن من الكلاس add_product() الدالة
        def add_product(self, product):
            self.products.append(product)
    
        # persons بداخل المصفوفة Person يمكن استخدامها لإضافة كائن من الكلاس add_person() الدالة
        def add_person(self, person):
            self.persons.append(person)
    
        # orders بداخل المصفوفة Order يمكن استخدامها لإضافة كائن من الكلاس add_order() الدالة
        def add_order(self, order):
            self.orders.append(order)
    
        # الخاص به id بالإعتماد على رقم الـ products موضوع بداخل المصفوفة Product يمكن استخدامها لإلغاء كائن من الكلاس remove_product() الدالة
        def remove_product(self, id):
            # product و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
            for product in self.products:
                # الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ product في حال كان الكائن
                if product.id == id:
                    self.products.remove(product)
                    return
            # الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ products في حال لم يتم إيجاد أي كائن في المصفوفة
            print("Product with id", id, "is not found!")
            print("----------------------")
    
        # الخاص به id بالإعتماد على رقم الـ persons موضوع بداخل المصفوفة Person يمكن استخدامها لإلغاء كائن من الكلاس remove_person() الدالة
        def remove_person(self, id):
            # person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
            for person in self.persons:
                # الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ person في حال كان الكائن
                if person.id == id:
                    self.persons.remove(person)
                    return
            # الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ persons في حال لم يتم إيجاد أي كائن في المصفوفة
            print("Person with id", id, "is not found!")
            print("----------------------")
    
        # الخاص به id بالإعتماد على رقم الـ orders موضوع بداخل المصفوفة Order يمكن استخدامها لإلغاء كائن من الكلاس remove_order() الدالة
        def remove_order(self, id):
            # order و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
            for order in self.orders:
                # الذي مررناه للدالة سيتم حذفه و من ثم الخروج من الدالة id يملك نفس رقم الـ order في حال كان الكائن
                if order.id == id:
                    self.orders.remove(order)
                    return
            # الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ orders في حال لم يتم إيجاد أي كائن في المصفوفة
            print("Order with id", id, "is not found!")
            print("----------------------")
    
        # الخاص به id بالإعتماد على رقم الـ persons يمكن استخدامها لطباعة كل المعلومات المتوفرة حول شخص موضوع بداخل المصفوفة print_person_info() الدالة
        def print_person_info(self, id):
            # person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن persons بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
            for person in self.persons:
                # الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ person في حال كان الكائن
                if person.id == id:
                    print("Person with id", id, "info.")
                    print("Name:", person.name)
                    print("Phone:", person.phone)
                    print("Gender", person.gender)
    
    				# التي يملكها email سيتم طباعة الخاصية Client تم إنشاؤه من الكلاس person إذا كان الكائن
                    if isinstance(person, Client):
                        print("Email:", person.email)
    
    				# التي يملكها workingTime و salary سيتم طباعة الخاصيتين Employee تم إنشاؤه من الكلاس person إذا كان الكائن
                    elif isinstance(person, Employee):
                        print("Salary:", person.salary)
                        print("Working time", person.working_time)
    
    				# بعدها سيتم طباعة خط و الخروج من الدالة
                    print("----------------------")
                    return
            # الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ persons في حال لم يتم إيجاد أي كائن في المصفوفة
            print("Person with id", id, "is not found!")
            print("----------------------")
    
        # الخاص به id بالإعتماد على رقم الـ products يمكن استخدامها لطباعة كل المعلومات المتوفرة حول منتج موضوع بداخل المصفوفة print_product_details() الدالة
        def print_product_details(self, id):
            # product و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن products بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
            for product in self.products:
                # الذي مررناه للدالة سيتم طباعة كل معلوماته و من ثم الخروج من الدالة id يملك نفس رقم الـ product في حال كان الكائن
                if product.id == id:
                    print("Product with id", id, "info.")
                    print("Name:", product.name)
                    print("Price:", str(product.price) + "$")
                    print("----------------------")
                    return
            # الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ products في حال لم يتم إيجاد أي كائن في المصفوفة
            print("Product with id", id, "is not found!")
            print("----------------------")
    
        # الخاص به id بالإعتماد على رقم الـ orders يمكن استخدامها لطباعة كل المعلومات المتوفرة حول فاتورة موضوعة بداخل المصفوفة print_order_details() الدالة
        def print_order_details(self, id):
            # سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في الفاتورة total_sum المتغير
            total_sum = 0
            # order و كل كائن نمر عليه ( و الذي يمثل كتاب ) سنضعه بشكل مؤقته بداخل الكائن orders هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
            for order in self.orders:
                # الذي مررناه للدالة سيتم طباعة كل معلوماته id يملك نفس رقم الـ order في حال كان الكائن
                if order.id == id:
                    print("Order with id", id, "details.")
                    print("Date:", order.date)
                    print("Is paid:", "yes" if order.is_paid else "no")
                    print("Ordered by:", order.person.name)
                    print("Products")
                    # order الموضوعة في الكائن products هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
                    # product كل كائن نمر عليه ( و الذي يمثل منتج ) سنضعه بشكل مؤقته بداخل الكائن
                    # total_sum سعر كل منتج يتم إيجاده في هذه المصفوفة سيتم إضافته على قيمة المتغير
                    for product in order.products:
                        total_sum += product.price
                        print("- " + product.name + ": " + str(product.price) + "$")
    				
    				#  و الذي يمثل ثمن كل المشتريات الموضوعة في الفاتورة و من ثم الخروج من الدالة total_sum هنا سيتم عرض ناتج الجمع الذي تم تخزينه في المتغير
                    print("Total Price: " + str(total_sum) + "$")
                    print("----------------------")
                    return
            # الذي تم تمريره للدالة سيتم طباعة الجملة التالية id يملك نفس رقم الـ orders في حال لم يتم إيجاد أي كائن في المصفوفة
            print("Order with id", id, "is not found!")
            print("----------------------")
    
    	# الخاص به id بالإعتماد على رقم الـ persons يمكن استخدامها لطباعة كل معلومات الفواتير التابعة لشخص موضوع بداخل المصفوفة print_person_orders() الدالة 
        def print_person_orders(self, id):
            # الذي تم تمريره للدالة id يملك رقم الـ persons بهدف التأكد ما إن كان يوجد شخص في المصفوفة isPersonExist سنستخدم المتغير
            # تابعو لهذا الشخص لأن ذلك سيكون غير منطقي orders لأنه إن لم يكن هناك شخص أصلاً فلن نقوم بالبحث عن فواتير في المصفوفة
            is_person_exist = False
            # person و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن persons هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
            for person in self.persons:
                # الذي مررناه للدالة سيتم تغيير قيمة id يملك نفس رقم الـ person في حال كان الكائن
                # persons و إيقاف الحلقة لأننا تأكدنا أن هذا الشخص موجود في المصفوفة True إلى is_person_exist
                if person.id == id:
                    is_person_exist = True
                    break
            # persons فهذا يعني أنه لم يتم إيجاد أي كائن في المصفوفة False تساوي is_person_exist في حال بقيت قيمة
            # الذي تم تمريره للدالة سيتم طباعة الجملة التالية و الخروج من الدالة id يملك نفس رقم الـ
            if not is_person_exist:
                print("Person with id", id, "is not found!")
                print("----------------------")
                return
            print("All orders made by person with id " + str(id) + ":")
            # order و كل كائن نمر عليه سنضعه بشكل مؤقته بداخل الكائن orders بواسطة هذه الحلقة سنمر على جميع الكائنات المخزنة بداخل المصفوفة
            for order in self.orders:
                # ( الذي مررناه للدالة سيتم طباعة معلوماته ( أي معلومات الفاتورة id يملك نفس رقم الـ order الموضوع في الكائن person في حال كان الكائن
                if order.person.id == id:
                    print("> Order: #" + str(order.id))
                    print("  Date:", order.date)
                    print("  Is paid:", "yes" if order.is_paid else "no")
                    print("  Ordered by:", order.person.name)
                    print("  Products")
    				# سنستخدمه لحساب ناتج جمع جميع أسعار المنتجات التي نجدها في كل فاتورة total_sum المتغير
                    total_sum = 0
    				# order الموضوعة في الكائن products هنا سنمر على جميع الكائنات المخزنة بداخل المصفوفة
                    # product كل كائن نمر عليه ( و الذي يمثل منتج ) سنضعه بشكل مؤقته بداخل الكائن
                    # totalSum سعر كل منتج يتم إيجاده في هذه المصفوفة سيتم إضافته على قيمة المتغير
                    for product in order.products:
                        total_sum += product.price
                        print("  - " + product.name + ": " + str(product.price) + "$")
    				# و الذي يمثل ثمن كل المشتريات الموضوعة في الفاتورة total_sum هنا سيتم عرض ناتج الجمع الذي تم تخزينه في المتغير
                    print("  Total Price: " + str(total_sum) + "$")
            print("----------------------")
    		

    Main.py
    from Client import Client
    from Employee import Employee
    from Product import Product
    from Order import Order
    from Company import Company
    
    # أي كأننا قمنا بإنشاء شخصين Person هنا قمنا بإنشاء كائنين من كلاسات ترث من الكلاس
    # و بالتالي فإنه يمثل شخص يعتبر زبون Client عبارة عن كائن من الكلاس person1
    # و بالتالي فإنه يمثل شخص يعتبر موظف Employee عبارة عن كائن من الكلاس person2
    person1 = Client("Mhamad", "+96170123456", "Male", "mhamad@example.com")
    person2 = Employee("Nadine", "+9631249392", "Female", 800, "8:00 AM to 3:00 PM")
    
    # و التي تمثل 6 منتجات Product هنا قمنا بتعريف 6 كائنات من الكلاس
    product1 = Product("Keyboard", 15)
    product2 = Product("Camera", 45)
    product3 = Product("HDD 1TB", 70)
    product4 = Product("SSD 1TB", 274.66)
    product5 = Product("Mouse", 8)
    product6 = Product("Table", 44.55)
    
    # و التي تمثل فواتير Order هنا قمنا بتعريف 3 كائنات من الكلاس
    # person1 وضعناهما لنفس الشخص الذي يمثل الكائن order2 و order1 لاحظ أن الفاتورتين
    order1 = Order("2020-1-1", True, person1, [product1, product2, product3])
    order2 = Order("2020-2-7", True, person1, [product4])
    order3 = Order("2020-5-4", False, person2, [product5, product6])
    
    # لأننا نريد تخزين الأشخاص و المنتجات و الفواتير بشكل مرتب بداخله Company هنا قمنا بإنشاء كائن من الكلاس
    company = Company()
    
    # add_person() بواسطة الدالة company التي يمكلها الكائن persons هنا قمنا بإضافة الشخصين في المصفوفة
    company.add_person(person1)
    company.add_person(person2)
    
    # add_product() بواسطة الدالة company التي يمكلها الكائن products هنا قمنا بإضافة المنتجات في المصفوفة
    company.add_product(product1)
    company.add_product(product2)
    company.add_product(product3)
    company.add_product(product4)
    company.add_product(product5)
    company.add_product(product6)
    
    # add_order() بواسطة الدالة company التي يمكلها الكائن orders هنا قمنا بإضافة الفواتير في المصفوفة
    company.add_order(order1)
    company.add_order(order2)
    company.add_order(order3)
    
    # print_person_info() الخاص بهم و بواسطة الدالة id هنا قمنا بطباعة معلومات كلا الشخصين بالإعتماد على رقم التعرفة
    # تذكر: رقم التعرفة الخاص بكل شخص تم إنشاؤه بشكل تلقائي عند إنشاء كل شخص بداخل الكونستركتور
    company.print_person_info(1)
    company.print_person_info(2)
    
    # print_product_details() الخاص بهم و بواسطة الدالة id هنا قمنا بطباعة معلومات كل المنتجات بالإعتماد على رقم التعرفة
    # تذكر: رقم التعرفة الخاص بكل منتج تم إنشاؤه بشكل تلقائي عند إنشاء كل منتج بداخل الكونستركتور
    company.print_product_details(1)
    company.print_product_details(2)
    company.print_product_details(3)
    company.print_product_details(4)
    company.print_product_details(5)
    company.print_product_details(6)
    
    # print_person_orders() الخاص بهم و بواسطة الدالة id هنا قمنا بطباعة الفواتير التي يملكها كل شخص بالإعتماد على رقم التعرفة
    company.print_person_orders(1)
    company.print_person_orders(2)
    
    # remove_order() هنا قمنا الفاتورة التي تملك رقم التعرفة 1 بواسطة الدالة
    # printOrderDetails() بعدها حاولنا طباعة معلومات الفاتورة التي قمنا بحذفها بواسطة الدالة
    # بعدها قمنا بطباعة جمبع الفواتير التي يمكلها الشخص الذي يملك رقم التعرفة 1 و الذي كان يملك الفاتورة التي تم حذفها
    # لاحظ أن الفاتورة المحذوفة أيضاَ لم تظر ضمن فواتيره
    company.remove_order(1)
    company.print_order_details(1)
    company.print_person_orders(1)
    		

    سنحصل على النتيجة التالية عند التشغيل.

    Person with id 1 info.   --> الموضوعة في السطر 49 print_person_info() تم عرض هذا المحتوى بسبب استدعاء الدالة
    Name: Mhamad
    Phone: +96170123456
    Gender: Male
    Email: mhamad@example.com
    ----------------------
    Person with id 2 info.   --> الموضوعة في السطر 50 print_person_info() تم عرض هذا المحتوى بسبب استدعاء الدالة
    Name: Nadine
    Phone: +9631249392
    Gender: Female
    Salary: 800$
    Working time: 8:00 AM to 3:00 PM
    ----------------------
    Product with id 1 details.   --> الموضوعة في السطر 54 print_product_details() تم عرض هذا المحتوى بسبب استدعاء الدالة
    Name: Keyboard
    Price: 15$
    ----------------------
    Product with id 2 details.   --> الموضوعة في السطر 55 print_product_details() تم عرض هذا المحتوى بسبب استدعاء الدالة
    Name: Camera
    Price: 45$
    ----------------------
    Product with id 3 details.   --> الموضوعة في السطر 56 print_product_details() تم عرض هذا المحتوى بسبب استدعاء الدالة
    Name: HDD 1TB
    Price: 70$
    ----------------------
    Product with id 4 details.   --> الموضوعة في السطر 57 print_product_details() تم عرض هذا المحتوى بسبب استدعاء الدالة
    Name: SSD 1TB
    Price: 274.66$
    ----------------------
    Product with id 5 details.   --> الموضوعة في السطر 58 print_product_details() تم عرض هذا المحتوى بسبب استدعاء الدالة
    Name: Mouse
    Price: 8$
    ----------------------
    Product with id 6 details.   --> الموضوعة في السطر 59 print_product_details() تم عرض هذا المحتوى بسبب استدعاء الدالة
    Name: Table
    Price: 44.55$
    ----------------------
    All orders made by person with id 1:   --> الموضوعة في السطر 62 print_person_orders() تم عرض هذا المحتوى بسبب استدعاء الدالة
    > Order: #1
      Date: 2020-1-1
      Is paid: yes
      Ordered by: Mhamad
      Products:
      - Keyboard: 15$
      - Camera: 45$
      - HDD 1TB: 70$
      Total Price: 130$
    > Order: #2
      Date: 2020-2-7
      Is paid: yes
      Ordered by: Mhamad
      Products:
      - SSD 1TB: 274.66$
      Total Price: 274.66$
    ----------------------
    All orders made by person with id 2:   --> الموضوعة في السطر 63 print_person_orders() تم عرض هذا المحتوى بسبب استدعاء الدالة
    > Order: #3
      Date: 2020-5-4
      Is paid: no
      Ordered by: Nadine
      Products:
      - Mouse: 8$
      - Table: 44.55$
      Total Price: 52.55$
    ----------------------
    Order with id 1 is not found!   --> الموضوعة في السطر 70 print_order_details() تم عرض هذا المحتوى بسبب استدعاء الدالة
    ----------------------
    All orders made by person with id 1:   --> الموضوعة في السطر 71 print_person_orders() تم عرض هذا المحتوى بسبب استدعاء الدالة
    > Order: #2
      Date: 2020-2-7
      Is paid: yes
      Ordered by: Mhamad
      Products:
      - SSD 1TB: 274.66$
      Total Price: 274.66$
    ----------------------
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب