/playlist

project-2-asAlwaysZahra created by GitHub Classroom

Primary LanguageJava

به نام پروردگار هدایت کننده به راه راست

دانشگاه اصفهان

ساختمان داده – دکتر رمضانی

پاییز ۰۲-۰۱

پروژه دوم - پلی‌لیست موسیقی

طراحان پروژه : امیرعلی گلی – محمد توکلی – علیرضا ساعی

مبحث : لینک‌لیست

اهداف پروژه :

  • کار با ساختمان داده لینک‌لیست
  • پیاده‌سازی عملیات‌های پرکاربر لینک‌لیست
  • کار با فرمت‌داده CSV

در این پروژه قرار است با استفاده از لیست‌پیوندی یک پلی‌لیست موسیقی را شبیه‌سازی کنید.

گام های پروژه

گام اول

در گام اول، از ریپازیتوری پروژه Clone بگیرید تا در سیستم خود داشته باشید.

گام دوم:

ما فایل musics.csv را که حاوی اطلاعات موسیقی‌هاست، داریم. فرمت کلی اطلاعات یک موسیقی که در فایل خواهد بود:

  • artist_name
  • track_name
  • release_date
  • genre
  • len
  • topic

این اطلاعات به فرمت csv هستند. در مورد این فرمت نمایش داده‌ها تحقیق کنید. در ابتدای کار اطلاعات موردنظر را خوانده و در برنامه بارگذاری کنید.

گام سوم:

در واقع هر نود از لینک‌لیست یک موسیقی بوده که شامل اطلاعات بالا می‌باشد.که هر پلی‌لیست موسیقی یک لیست‌پیوندی از نودهای موسیقی است.

باتوجه به تعاریف بالا موجودیت‌‌های مسئله را بسازید و با استفاده از اطلاعات خوانده‌شده پلی‌لیست‌های مورد نظر را بسازید.

گام چهارم :

در نهایت یک ابزار کامند لاینی که امکان ساخت پلی لیست و اعمال دستوراتی بر روی آن را امکان پذیر می سازد را پیاده سازی کنید. ویژگی‌هایی که باید پیاده‌سازی شوند :

  1. ایجاد پلی لیست
  2. حذف و اضافه کردن موزیک به پلی لیست
  3. امکان وجود چند عدد پلی لیست (وجه تمایز پلی لیست ها نام آن‌هاست)
  4. مرج دو پلی لیست (انتهای پلی لیست اولی به ابتدای پلی لیست دوم متصل می‌شود)
  5. شافل مرج (پلی لیست جدیدی از دو یا چند پلی لیست موجود ساخته می شود که ترتیب عناصر آنها لزوما حفظ نخواهد شد)
  6. نکته: توجه شود در هنگام مرج دو پلی لیست در پلی لیستی که در نهایت از مرج حاصل می‌شود نباید آهنگ تکراری وجود داشته باشد.
  7. سورت (سورت کردن یک پلی لیست بر حسب نام آهنگ، نام خواننده آهنگ و سال انتشار)
  8. فیلتر ( ساخت و نمایش یک پلی لیست جدید از یک پلی لیست موجود برحسب ویژگی هایی مانند: سبک، نام خواننده، سال انتشار و ...)
  9. وجود لیستی به نام Liked songs و لایک و دیسلایک (برداشتن لایک از یک آهنگ) و تشکیل لیست Liked songs (در صورت برداشتن لایک از یک آهنگ باید از لیست Liked songs حذف شود.)
  10. پلی کردن معمولی یک پلی لیست (در حالت غیرامتیازی منظور از پلی کردن صرفا پرینت کردن نام و اطلاعات آهنگ می باشد.)
  11. پلی کردن یک پلی لیست به حالت شافل

ویژگی‌های امتیازی:

  • ذخیره تغییرات
  • گرافیک
  • پخش موزیک بصورت واقعی

نکات تکمیلی :

  • این پروژه بصورت تک نفری باید پیاده سازی شود.
  • بستر پیاده سازی پروژه روی گیت‌هاب می‌باشد.
  • سعی کنید هریک از بخش‌ها را در یک کامیت جداگانه انجام دهید.
  • رعایت اصول کدنویسی تمیز بخش بسیار زیادی از نمره را به خود اختصاص می‌دهد و درصورتی که کد کاملا به شکل غیراصولی پیاده سازی شده باشد. تحویل گرفته نمی‌شود.
  • استفاده از هر زبان، فریمورک و رابط‌های گرافیکی کاملا آزاد است.
  • استفاده از پایگاه‌داده ها برای ذخیره سازی مجاز است.
  • به افرادی که از تکلنولوژی‌های جدید استفاده کنند، توکن تمدید اضافه‌تر داده خواهد شد.
  • با پیاده‌سازی هر مورد امتیازی یک توکن اضافه دریافت خواهید کرد.