برای مدیریت بهتر کتابهایمان به یک کتابخانه نیاز داریم. این کتابخانه مقداری ظرفیت دارد که بیشتر از آن نمیتواند کتاب در خود جا دهد.
این کتابخانه مشخصات زیر را دارد:
- از هر کتاب دقیقاً یکی دارد که یا موجود است و یا به یک نفر امانت داده شده است.
- اسم کتابها به بزرگی و کوچکی حساس نیست، مثلاً
Golestan
وgOlEsTan
دقیقاً یک کتاب هستند. - یک نفر میتواند چند کتاب را امانت بگیرد و از این نظر محدودیتی نیست.
- در صورتی که یک کتاب امانت گرفته شده باشد، جایش همچنان محفوظ است و ظرفیت آن برای اضافه شدن کتاب دیگری باز نمیشود.
- پیامهای خطای زیر از متدهای مختلف کتابخانه دریافت میشود. در صورتی که هیچ خطایی نباشد نیز
OK
داده میشود:
تشخیص اینکه کدام ارور در چه زمان(ها)ی باید برگردانده شود بر عهدهی شماست.
جزئیات پروژه
پروژهی اولیه را از این لینک دانلود کنید. ساختار فایلهای پروژه به صورت زیر است:
در فایل main.go
چند تابع و متد وجود دارد که شما باید آنها را کامل کنید.
تابع NewLibrary
این تابع یک اشارهگر به یک شی از نوع کتابخانه برمیگرداند. در این تابع باید یک شی جدید بسازید و ساختار داخلی آن را مطابق آنچه خودتان تعریف کردهاید مقداردهی کنید.
متد AddBook
در این متد شما اسم یک کتاب را گرفته و در صورتی که شرایط برقرار بود (مثلاً کتابخانه جا داشت و این کتاب قبلا در کتابخانه نبود) آن را اضافه میکنید و OK
بر میگردانید. در غیر این صورت بسته به مورد ارور مناسب را در قالب یک رشته برمیگردانید.
*راهنمایی: در صورتی که کتابخانه پر باشد و کتابی با نام تکراری وارد شود، خطای مربوط به کتاب تکراری (و نه پر بودن ظرفیت) باید برگردانده شود.*
متد BorrowBook
و ReturnBook
در این دو متد یک نفر یک کتاب را امانت میگیرد و سپس آن را پس میدهد.
در مواردی نیز ممکن است خطا پیش آید مثلا کتابی که امانت گرفته شده را دوباره کسی بخواهد امانت بگیرد یا کسی کتابی که در حال حاضر امانت گرفته نشده را بخواهد پس دهد.
آنچه باید آپلود کنید
پس از پیادهسازی توابع خواسته شده، فایل main.go
را آپلود کنید.
ارسال پاسخ برای این سؤال