به نام پروردگار هدایت کننده به راه راست
دانشگاه اصفهان
ساختمان داده – دکتر رمضانی
پاییز ۰۲-۰۳
پروژه سوم - پلیلیست موسیقی
طراحان پروژه : امیرعلی گلی – علی ابراهیمی
اهداف پروژه :
- کار با ساختمان داده صف
- پیادهسازی عملیاتهای پرکاربرد صف
- کار با فرمتداده CSV
در این پروژه قرار است با استفاده از صف یک پلیلیست موسیقی را شبیهسازی کنید.
در گام اول، از ریپازیتوری پروژه Clone بگیرید تا در سیستم خود داشته باشید.
ما فایل musics.csv را که حاوی اطلاعات موسیقیهاست، داریم. فرمت کلی اطلاعات یک موسیقی که در فایل خواهد بود:
- artist_name
- track_name
- release_date
- genre
- len
- topic
این اطلاعات به فرمت csv هستند. در مورد این فرمت نمایش دادهها تحقیق کنید. در ابتدای کار اطلاعات موردنظر را خوانده و در برنامه بارگذاری کنید.
در واقع هر خانه صف یک موسیقی بوده که شامل اطلاعات بالا میباشد.که هر پلیلیست موسیقی یک صف از موسیقیهاست . دقت کنید آهنگی که سر صف هست باید در حال پلی شدن باشد
باتوجه به تعاریف بالا موجودیتهای مسئله را بسازید و با استفاده از اطلاعات خواندهشده پلیلیستهای مورد نظر را بسازید.
در نهایت یک ابزار کامند لاینی که امکان ساخت پلی لیست و اعمال دستوراتی بر روی آن را امکان پذیر می سازد را پیاده سازی کنید. ویژگیهایی که باید پیادهسازی شوند :
- ایجاد پلی لیست
- حذف و اضافه کردن موزیک به پلی لیست
- امکان وجود چند عدد پلی لیست (وجه تمایز پلی لیست ها نام آنهاست)
- مرج دو پلی لیست (انتهای پلی لیست اولی به ابتدای پلی لیست دوم متصل میشود) نکته: توجه شود در هنگام مرج دو پلی لیست در پلی لیستی که در نهایت از مرج حاصل میشود نباید آهنگ تکراری وجود داشته باشد.
- سورت (سورت کردن یک پلی لیست بر حسب نام آهنگ، نام خواننده آهنگ و سال انتشار)
- وجود لیستی به نام Liked songs و لایک و دیسلایک (برداشتن لایک از یک آهنگ) و تشکیل لیست Liked songs (در صورت برداشتن لایک از یک آهنگ باید از لیست Liked songs حذف شود.)
- پلی کردن معمولی یک پلی لیست (در حالت غیرامتیازی منظور از پلی کردن صرفا پرینت کردن نام و اطلاعات آهنگ سر صف می باشد.)
- گرافیک
- پخش موزیک بصورت واقعی
- این پروژه بصورت تک نفری باید پیاده سازی شود.
- بستر پیاده سازی پروژه روی گیتهاب میباشد.
- سعی کنید هریک از بخشها را در یک کامیت جداگانه انجام دهید.
- رعایت اصول کدنویسی تمیز بخش بسیار زیادی از نمره را به خود اختصاص میدهد و درصورتی که کد کاملا به شکل غیراصولی پیاده سازی شده باشد. تحویل گرفته نمیشود.
- استفاده از هر زبان، فریمورک و رابطهای گرافیکی کاملا آزاد است. ( به غیر از زبان و فریمورک های پایتون )
- استفاده از پایگاهداده ها برای ذخیره سازی مجاز است.
- به افرادی که از تکلنولوژیهای جدید استفاده کنند، توکن تمدید اضافهتر داده خواهد شد.