در این پروژه قصد داریم از یک ساختمان داده درخت یا گراف برای نگهداری اطلاعات شجره نامه خانوادگی اسحاق استفاده کنیم. متأسفانه اسحاق حافظه ضعیفی دارد و طایفه ایشان هم طایفه بزرگی است. به خاطر همین همیشه در به یادآوردن نام اقوامش مشکل دارد! میخواهیم به اسحاق کمک کنیم تا برای همیشه از این مشکل خلاص شود و با نگهداری اطلاعات شجره نامه خانوادگی اش پاسخگوی هر سوالی در مورد خانواده و طایفهاش باشیم.
اطلاعات طایفه اسحاق به صورت متنی به برنامه شما داده میشود. سپس به صورت متنی سوالاتی از برنامه شما پرسیده میشود که برنامه باید در پاسخ به هر سوال اطلاعاتی را روی صفحه نمایش دهد. در هر خط یک دستور به برنامه شما داده میشود. بعضی از این دستورات اطلاعاتی هستند و باید بر اساس آنها تغییراتی در ساختمان داده شما منعکس شود. بعضی دستورات هم حالت سوالی دارند و برنامه شما باید در پاسخ به آنها اطلاعاتی را روی صفحه نمایش دهد.
جد بزرگ خانواده به کمک دستور ROOT معرفی میشود. جد بزرگ ممکن است مرد یا زن باشد. جد بزرگ از احترام خاصی در طایفه برخوردار است و سفارشات ایشان را همه باید عمل کنند. اسحاق ارادت خاصی به جد بزرگش عمران دارد.
ROOT EMRAN MALE
هر فرد دیگر به عنوان فرزند فردی که قبلا معرفی شده است اعلام میشود، مثلا
CHILD YAHYA MALE PARENT EMRAN
CHILD ELYAS MALE PARENT EMRAN
CHILD BOSHRA FEMALE PARENT EMRAN
CHILD ESHAGH MALE PARENT ELYAS
CHILD YOONES MALE PARENT ELYAS
CHILD SHOAYB MALE PARENT EMRAN
CHILD TAHER MALE PARENT EMRAN
برای بعضی افراد ممکن است اطلاعات همسر ایشان نیز بیان شود. در طایفه اسحاق ازدواج درون طایفهای توسط جد بزرگ ممنوع شده است. به همین خاطر همسر یک فرد، عضو همان طایفه نیست و به همین دلیل اطلاعات او قبلا به عنوان یک فرد بیان نشده است. به عنوان مثال
SPOUSE OF EMRAN IS HELMA
CHILD JAMILEH FEMALE PARENT EMRAN
SPOUSE OF JAMILEH IS HABIB
در بین دستورات قبلی، یا بعد از آنها، ممکن است دستورات سوالی داشته باشیم. اطلاعات آماری طایفه به کمک دستور زیر پرسیده میشود:
SHOW STATS
در پاسخ به این دستور انتظار میرود که برنامه شما اطلاعاتی مانند تعداد کل افراد طایفه، تعداد افراد متأهل، تعداد افراد مجرد، تعداد مردان، و تعداد زنان، و عمق درخت را نمایش دهد
یک دستور پرسشی دیگر مربوط به بزرگترین خانواده است و در پاسخ به آن برنامه شما باید اطلاعات بزرگترین خانواده در طایفه را نمایش دهد:
SHOW BIGGEST FAMILY
یک دستور پرسشی دیگر، پرسیدن نام والدین یک فرد خاص است، مثلا
WHO ARE PARENTS OF ESHAGH
یک دستور پرسشی دیگر، پرسیدن نام فرزندان یک فرد خاص است، مثلا
WHO ARE CHILDREN OF EMRAN
یک دستور پرسشی دیگر، پرسیدن نام عموهای یک فرد خاص است. اما در انگلیسی واژه uncle برای اشاره به عمو، دایی، شوهر عمه، و شوهر خاله به کار میرود. یعنی در واقع برای اشاره به مردانی که با والدین فرد ارتباط نزدیکی دارند. به همین خاطر برای پرسیدن نام عموهای اسحاق از دستور پرسشی زیر استفاده میکنیم:
WHO ARE FATHER’S BROTHERS OF ESHAGH
همینطور دستورات زیر را نیز پوشش دهید:
WHO ARE FATHER’S SISTERS OF ESHAGH
WHO ARE MOTHER’S BROTHERS OF ESHAGH
WHO ARE MOTHER’S SISTERS OF ESHAGH
همانطور که گفتیم، واژه uncle در انگلیسی برای اشاره به عمو، دایی، شوهر عمه، و شوهرخالهها به کار میرود. دستور پرسشی زیر نام این افراد را نیز سوال میکند:
WHO ARE UNCLES OF ESHAGH
به طور مشابه واژه aunt در انگلیسی برای اشاره به عمه، خاله،زن عمو، و زن داییها به کار میرود. دستور پرسشی زیر نام این افراد را نیز سوال میکند:
WHO ARE AUNTS OF ESHAGH
واژه cousin برای اشاره به عموزادهها، عمه زادهها، خالهزادهها، و داییزادههای یک فرد به کار میرود. در مسیحیت کاتولیک ازدواج با این افراد ممنوع است، و به همین خاطر این نسبت مهم است. دستور پرسشی زیر نام این افراد را سوال میکند:
WHO ARE COUSINS OF ESHAGH
برنامه شما باید حداقل دستورات فوق را پشتیبانی کند، اما عملکرد آن میتواند فقط به این دستورات محدود نباشد. مثلا پرسیدن نام همسر، نام برادر، نام خواهر، نام پسرعموها، نام پسرداییها، و ... میتواند به اسحاق کمک بیشتری کند. هر چه برنامه شما دستورات پرسشی بیشتری را پشتیبانی کند کاملتر تلقی میشود.