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