Skip to content

ahvroyal/FamilyTree-DataStructure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Family Tree Database

در این پروژه قصد داریم از یک ساختمان داده درخت یا گراف برای نگهداری اطلاعات شجره نامه خانوادگی اسحاق استفاده کنیم. متأسفانه اسحاق حافظه ضعیفی دارد و طایفه ایشان هم طایفه بزرگی است. به خاطر همین همیشه در به یادآوردن نام اقوامش مشکل دارد! می‌خواهیم به اسحاق کمک کنیم تا برای همیشه از این مشکل خلاص شود و با نگهداری اطلاعات شجره نامه خانوادگی اش پاسخگوی هر سوالی در مورد خانواده و طایفه‌اش باشیم.

اطلاعات طایفه اسحاق به صورت متنی به برنامه شما داده می‌شود. سپس به صورت متنی سوالاتی از برنامه شما پرسیده می‌شود که برنامه باید در پاسخ به هر سوال اطلاعاتی را روی صفحه نمایش دهد. در هر خط یک دستور به برنامه شما داده می‌شود. بعضی از این دستورات اطلاعاتی هستند و باید بر اساس آن‌ها تغییراتی در ساختمان داده شما منعکس شود. بعضی دستورات هم حالت سوالی دارند و برنامه شما باید در پاسخ به آن‌ها اطلاعاتی را روی صفحه نمایش دهد.

جد بزرگ خانواده به کمک دستور 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

برنامه شما باید حداقل دستورات فوق را پشتیبانی کند، اما عملکرد آن می‌تواند فقط به این دستورات محدود نباشد. مثلا پرسیدن نام همسر، نام برادر، نام خواهر، نام پسرعموها، نام پسردایی‌ها، و ... می‌تواند به اسحاق کمک بیشتری کند. هر چه برنامه شما دستورات پرسشی بیشتری را پشتیبانی کند کامل‌تر تلقی می‌شود.

About

Data structure to present the relations in a family tree

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published