برنامه ای بنویسید که یک خانواده را پیاده سازی کند.
کلاس خانواده (Family) دارای ساختار زیر است:
- حالت ها:
- پدر از نوع انسان
- مادر از نوع انسان
- آرایه ای از فرزندها ([]Human) با طول ثابت 100
- درجه ی خوشبختی/رضایت: عددی صحیح بین 1 تا 10
- سطح درآمد: عددی صحیح بین 0 تا 100 میلیون
- رفتارها:
- setter و getter برای تنظیم و دریافت پدر، مادر، درجه ی رضایت و سطح درآمد
- تابع print برای چاپ اطلاعات خانواده
- تابع addChild: مشخصات فرزند را دریافت کرده و آن را به آرایه اضافه می کند
- تابع removeChild: اندیس فرزند را دریافت کرده و آن را از آرایه حذف می کند
- تابع printHappinessLevel: یکی از سه مقدار "Happy" (مقادیر 4 تا 7)،(مقادیر 1 تا 3) "Not Happy" و "HappyFull" (مقادیر 8 تا 10) را چاپ می کند.
- تابع printIncomeLevel: یکی از چهار مقدار "Poor"،(مقادیر بین 1 میلیون تا 3 میلیون) "Average" (مقادیر کمتر از 1 میلیون)،(مقادیر بین 3 میلیون تا 10 میلیون) "Good" و "Very Good" (مقادیر بیشتر از 10 میلیون) را چاپ می کند.
کلاس انسان (Human) دارای ساختار زیر است:
- حالت ها:
- شماره ملی: رشته ای با طول دقیقا 10 (نه کمتر و نه بیشتر)
- نام و نام خانوادگی
- جنسیت: عددی صحیح بین 1 و 2 (1: زن، 2: مرد)
- سن: عددی صحیح بین 0 تا 100
- رفتارها:
- تنها یک سازنده دارد که کد ملی را به عنوان ورودی دریافت می کند
- setter و getter برای همه حالت ها
- تابع print برای چاپ مشخصات انسان
منوی برنامه:
- برنامه دارای یک منو با گزینه های زیر است:
- 1: ایجاد یک خانواده جدید (در هر زمان تنها یک خانواده وجود دارد: در نتیجه ایجاد خانواده جدید، خانواده ی قبلی را از بین خواهد برد)
- برای ایجاد خانواده اطلاعات زیر دریافت می شود
- 1-1: درجه ی رضایت
- 1-2: میزان درآمد
- 2: تعیین پدر خانواده (پدر قبلی از بین خواهد رفت)
- برای تعریف پدر اطلاعات زیر دریافت می شود:
- 2-1: شماره ملی
- 2-2: نام و نام خانوادگی پدر
- 2-3: سن پدر
- جنسیت پدر به صورت خودکار مقداردهی می شود (از ورودی دریافت نمی شود)
- 3: تعیین مادر خانواده (مادر قبلی از بین خواهد رفت)
- برای تعریف مادر اطلاعات زیر دریافت می شود:
- 2-1: شماره ملی
- 2-2: نام و نام خانوادگی مادر
- 2-3: سن مادر
- جنسیت مادر به صورت خودکار مقداردهی می شود (از ورودی دریافت نمی شود)
- 4: اضافه کردن فرزند به خانواده
- برای ایجاد یک فرزند اطلاعات زیر دریافت می شود:
- 4-1: شماره ملی فرزند
- 4-2: نام و نام خانوادگی فرزند
- 4-3: سن فرزند
- 4-4: جنسیت فرزند
- 5: حذف فرزند ار خانواده
- شماره ملی فرزند دریافت شده و در صورت وجود حذف می شود
- 6: چاپ اطلاعات خانواده (شامل اعضای خانواده، درجه ی رضایت و سطح درآمد)
- 7: خروج از برنامه
نکته ها:
- همه توابع باید معتبر بودن ورودی را بررسی کنند. برای مثال تابع removeChild ابتدا بررسی می کند که آیا فرزندی با اندیس ورودی برای حذف کردن وجود دارد؟ و یا تابع setter مربوط به درجه ی رضایت خانواده، ابتدا بررسی می کند که مقدار ورودی در بازه 1 تا 10 قرار دارد یا خیر.
- دو تابع printHappinessLevel و printIncomeLevel خصوصی هستند و تنها توسط تابع print مورد استفاده قرار می گیرند.
- استفاده از ابزارهای خوانده نشده موجب کاهش نمره ی تمرین می گردد.
-
استفاده از توابع اضافی مجاز است.
ارسال تمرین:
- فرصت ارسال این تمرین تا روز شنبه، 29 اسفند، ساعت 24 هست.
- فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
- نحوه ارسال تمرین ها در این پست توضیح داده شده.
- عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
- مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین پنجم