یک شرکت فراهم‌کننده سرویس اینترنت (ISP- Internet Service Provider) دو سال است که شروع به کار کرده و در این مدت برای جذب مشتری بیشتر، صرفا سرویس نامحدود اینترنت و با قیمت مناسب ارایه داده است. این شرکت در این دو سال، میزان و نحوه مصرف هر یک مشتریان خود را با دقت رصد کرده است و حالا که بازار را در دست گرفته و ارایه سرویس نامحدود دیگر برایش مقرون به‎صرفه نیست، قصد دارد متناسب با نیازهای مشتریانش، تعدادی سرویس محدود تعریف کرده و به آن‎ها پیشنهاد دهد. اولین قدم برای این کار، دسته‎بندی کاربران بر اساس فاکتورهای مختلف است و شما هم به همین دلیل استخدام شده‎اید.

فایل Source را دانلود کرده و محتوای آن را ببینید. اطلاعات مربوط به میزان مصرف هر مشتری در تاریخ‎های مختلف در شی‎ای از نوع TrafficUsage ذخیره شده است و توسط متد loadAll در کلاس TrafficUsageDao در قالب یک لیست در اختیار شما قرار می‎گیرد. هر رکورد از این لیست، دارای اطلاعات زیر است:

  • user: کاربر
  • internal: مشخص می‌کند که اینترنت مصرفی داخلی بوده یا خارجی
  • nightly: مشخص می‌کند اینترنت مصرفی مربوط به حجم روزانه بوده یا شبانه
  • date: تاریخ مصرف حجم اینترنت
    • یک رشته با فرمت yy/MM/dd است (مانند 97/08/25).
  • usage: میزان مصرف اینترنت بر حسب مگابایت

در کلاس TrafficUsageService قرار است به کمک این داده‎ها، اطلاعات زیر استخراج شده و در دسته‎بندی مشتریان مورد استفاده قرار بگیرد:

  1. عاشقان رسانه‎های اجتماعی (متد socialMediaLovers):
    • مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آن‎ها از اینترنت خارجی، از مصرف اینترنت خارجی حداقل 90% سایر کاربران فعال در آن ماه بیشتر باشد.
      • مثلا اگر علی در تیر 97 به میزان 50 گیگ اینترنت خارجی مصرف کرده اما حداقل 90% سایر کاربران، هر کدام در تیر 97 مصرفشان از اینترنت خارجی کمتر از 50 گیگ بوده، علی از عاشقان رسانه‌های اجتماعی در تیر 97 بوده است.
      • منظور از کاربر فعال در یک بازه زمانی خاص، کاربری است که حداقل یک رکورد TrafficUsage در آن ماه و به نام آن کاربر ثبت شده باشد.
  2. مشتریان عشق دانلود (متد downloadLovers):
    • مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آن‌ها از اینترنت شبانه، بیش از مجموع مصرف آن‎ها از اینترنت روزانه باشد. **نکته**:
  • در هر یک از دو سرویس مورد نظر، به هر دلیلی اگر کاربری پیدا نشود، باید یک لیست خالی برگردانده شود (خروجی متد null نباشد).

با اجرای متد main در کلاس Main، خروجی زیر مورد انتظار است:

socialMediaLovers:
a100
downloadLovers:
a100
a101
a102
Plain text

آنچه باید آپلود کنید:

یک فایل زیپ شامل بسته‌ی com.rahnema.isp.service.impl است. به صورتی که وقتی فایل زیپ را باز می‌کنیم، دقیقا شاخه‌ی com را ببینیم که درون آن شاخه‌ی rahnema و درون آن شاخه‌ی isp و درون آن شاخه service و درون آن شاخه impl قرار دارد. در داخل شاخه‌ی impl فقط و فقط فایل TrafficUsageServiceImpl.java وجود دارد.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.