پدرام مدیر وبسایت آموزشی کاپآموز است. او در این روزهای کرونایی تصمیم گرفته است که یک نظرسنجی بین کاربران سایتش برگزار کند تا بداند کدام دورهها موردعلاقهی کاربران بودهاند. پدرام استراتژی خاصی را برای این نظرسنجی در نظر گرفته است. چنین نظرسنجیهایی معمولاً به اینصورت برگزار میشوند که هر کاربر دوره یا دورههای موردعلاقهی خود را از میان تمامی دورهها انتخاب میکند. از آنجایی که اکثر کاربران کاپآموز تمامی دورهها را گذراندهاند(!)، او از کاربران میخواهد یک رتبهبندی بین دورهها انجام دهند.
روند برگزاری نظرسنجی به اینصورت است که کاربر در هر مرحله با یک پرسش دوگزینهای مواجه میشود و باید از بین دو دوره، دورهای که علاقهی بیشتری به آن دارد را انتخاب کند. در انتها، رتبهبندی دورهها نمایش داده میشود.
جزئیات پروژه
پروژهی اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه بهصورت زیر است:
interactive-sort
├── assets
├── test
├── index.php
└── items.txt
صفحهای که کاربر با آن تعامل دارد، index.php
است. محتوای این صفحه بر حسب وضعیت فعلی باید تغییر کند.
فایل items.txt
شامل نام دورهها است. در هر خط، نام یک دوره نوشته شده است. تضمین میشود که تا زمان نمایش نتایج، محتوای این فایل تغییر نمیکند.
صفحهی پرسش
این صفحه باید بهصورت زیر باشد (به ID المانها و محتوای آنها توجه کنید):
<body>
<p id="question">PHP course or Python course?</p>
<div id="choice1" class="button">PHP course</div>
<div id="choice2" class="button">Python course</div>
<form name="form" method="post">
<input type="hidden" id="choice" name="choice">
<input type="submit">
</form>
</body>
اگر کاربر گزینهی اول را انتخاب کند، فیلد choice
با مقدار 1
با متد POST به index.php
ارسال میشود. در غیر اینصورت، فیلد choice
با مقدار 2
ارسال میشود.
گزینههایی که کاربر انتخاب میکند را به شکل دلخواه در session ذخیره کنید.
نتیجه بهصورت زیر خواهد بود:
صفحهی نتایج
این صفحه باید بهصورت زیر باشد (به ID المانها و محتوای آنها توجه کنید):
<body>
<p id="result">Java course < Python course < PHP course</p>
</body>
نتیجه بهصورت زیر خواهد بود:
فرایند رتبهبندی را با استفاده از الگوریتمی نظیر merge sort انجام دهید تا با استفاده از کمترین مقایسهی ممکن بتوان رتبهبندی را انجام داد.
پس از نمایش نتیجهی رتبهبندی، با ارسال مجدد درخواست به index.php
، کاربر همچنان باید با صفحهی نتایج روبهرو شود.
مثال
در پروژهی اولیه، محتویات فایل items.txt
بهصورت زیر است:
PHP course
Python course
Java course
مقادیر فوق، همان مقادیری هستند که کاربر باید مقایسه را بین آنها انجام دهد.
نمونهای از فرایند مقایسه را در زیر میبینید:
نکات
- فرایند مرتبسازی را با الگوریتمی نظیر merge sort انجام دهید. در صورت بالا بودن تعداد مقایسهها، امتیازی کسب نخواهید کرد.
- انتخابهای کاربر را نمیتوانید در کوکی ذخیره کنید. برای ذخیرهسازی انتخابها، از session استفاده کنید (تنها کوکی
PHPSESSID
در نظر گرفته میشود).
آنچه باید آپلود کنید
فایل index.php
را آپلود کنید. اگر فایلهای دیگری نیز در کنار index.php
به پروژه اضافه کردهاید، همهی فایلها را Zip کرده و ارسال کنید.
ارسال پاسخ برای این سؤال