میخواهیم سامانهای برای مدیریت کالج طراحی کنیم. در یک کالج ۳ نوع کاربر باید قابل تعریف باشد. «عضو»، «مربی» و «مدیر». هر کدام از این افراد یک نام کاربری شناسایی میشوند.
بالاترین سطح دسترسی به ترتیب متعلق به «مدیر»، «مربی» و «عضو» است.
هر حساب کاربری بعد از ثبت نام در حالت «غیرفعال» است. زمانی یک حساب فعال میشود که یک «مدیر» آن را فعال کند. همچنین مدیران و مربیها نیاز دارند تا لیست کاربرهایی که «غیر فعال» هستند را داشته باشند.
از شما میخواهیم برنامهای بنویسید که درخواستهای زیر را برآورده کند.
فرمت کلی این دستورات به صورت زیر است:
یعنی کاربری با نام <USERNAME>
درخواست عضویت با نقش <ROLE>
را دارد.
INVALID USERNAME
را چاپ کنید.<ROLE>
، هیچکدام از مقدارهای ADMIN
، MENTOR
یا MEMBER
نبود، پیام INVALID ROLE
را چاپ کنید. WAITING FOR ACCEPT
را چاپ کنید.همواره کاربرها بعد از اضافه شدن «غیرفعال» هستند و باید منتظر فعال شدن بمانند.
فرمت کلی این دستورات به صورت زیر است:
یعنی کاربر <USERNAME1>
میخواهد کاربر <USERNAME2>
را به حالت فعال تبدیل کند.
<USERNAME1>
وجود ندارد، پیام INVALID USERNAME
را چاپ کنید.<USERNAME1>
فعال نیست، پیام WAITING FOR ADMIN
را چاپ کنید.<USERNAME1>
نقش ADMIN
ندارد پیام <USERNAME1> IS NOT ADMIN
را چاپ کنید.<USERNAME2>
وجود ندارد، پیام INVALID USERNAME
را اعلام کنید.<USERNAME2>
اکنون فعال است، پیام <USERNAME2> IS ACTIVE
را چاپ کنید.<USERNAME2>
را فعال کنید و پیام <USERNAME2> ACTIVATED
را چاپ کنید.یعنی کاربر <USERNAME1>
میخواهد کاربر <USERNAME2>
را فعال نکند و درخواست عضویت او را پاک کند.
<USERNAME1>
وجود ندارد، پیام INVALID USERNAME
را چاپ کنید.<USERNAME1>
فعال نیست، پیام WAITING FOR ADMIN
را چاپ کنید.<USERNAME1>
نقش ADMIN
ندارد، پیام USERNAME1> IS NOT ADMIN>
را چاپ کنید.<USERNAME2>
وجود ندارد، پیام INVALID USERNAME
را اعلام کنید.<USERNAME2>
اکنون فعال است، پیام USERNAME1> IS ACTIVE>
را چاپ کنید.<USERNAME2>
را از لیست انتظار حذف کنید و پیام <USERNAME2> REJECTED
را چاپ کنید.USERNAME
وجود نداشت، پیام INVALID USERNAME
را چاپ کنید.WAITING FOR ADMIN
را چاپ کنید.MEMBER
داشت، پیام NOT ENOUGH ACCESS
را چاپ کنید.NO USER
را چاپ کنید.<USERNAME1>
یا <USERNAME2>
وجود ندارد، پیام INVALID USERNAME
را چاپ کنید.<USERNAME1>
یا <USERNAME2>
غیرفعال است، پیام WAITING FOR ADMIN
را چاپ کنید.<ROLE>
هیچ کدام از سه نقش گفته شده نبود، پیام INVALID ROLE
را چاپ کنید.<USERNAME1>
پایینتر از <USERNAME2>
است یا هردو نقش یکسانی دارند، NOT ENOUGH ACCESS
را چاپ کنید.<USERNAME1>
میخواهد نقش <USERNAME2>
را به آن تغییر بدهد، بالاتر از نقش خود اوست (مثلاً خود MENTOR
است و میخواهد <USERNAME2>
را به ADMIN
تغییر دهد)، INVALID CHANGEROLE
را چاپ کنید. (تغییر نقش زمانی مجاز است که <USERNAME2>
به نقشی پایینتر یا هم تراز <USERNAME1>
تغییر پیدا کند).ALREADY HAS THIS ROLE
چاپ کنید.USERNAME2
را به ROLE
تغییر دهید و پیام ROLE CHANGED SUCCESSFULLY
را چاپ کنید.نام کاربری، نقش و فعال بودن آن را با این الگو چاپ کنید:
اگر کاربری با نام <USERNAME>
وجود ندارد، پیام INVALID USERNAME
را چاپ کنید.
اگر کاربر فعال است:
username: <USERNAME> role: <ROLE> active
در غیر این صورت:
username: <USERNAME> role: <ROLE> not active
ADMIN
و نقش ADMIN
به صورت فعال در سامانه وجود دارد.در سطر اول ورودی، عدد صحیح و مثبت داده میشود که تعداد دستورها را نشان میدهد.
در سطر بعدی، در هر سطر یکی از دستورهایی که در بالا تعریف شده، داده میشود.
برای هر دستور، خروجی مورد نظر را چاپ کنید. تضمین میشود ورودیها طوری داده شود که مجموع کاراکتر خروجیها از بیشتر نشود.