یک شرکت فراهمکننده سرویس اینترنت (ISP- Internet Service Provider) دو سال است که شروع به کار کرده و در این مدت برای جذب مشتری بیشتر، صرفا سرویس نامحدود اینترنت و با قیمت مناسب ارایه داده است. این شرکت در این دو سال، میزان و نحوه مصرف هر یک مشتریان خود را با دقت رصد کرده است و حالا که بازار را در دست گرفته و ارایه سرویس نامحدود دیگر برایش مقرون بهصرفه نیست، قصد دارد متناسب با نیازهای مشتریانش، تعدادی سرویس محدود تعریف کرده و به آنها پیشنهاد دهد. اولین قدم برای این کار، دستهبندی کاربران بر اساس فاکتورهای مختلف است و شما هم به همین دلیل استخدام شدهاید.
فایل Source را دانلود کرده و محتوای آن را ببینید. اطلاعات مربوط به میزان مصرف هر مشتری در تاریخهای مختلف در شیای از نوع TrafficUsage ذخیره شده است و توسط متد loadAll در کلاس TrafficUsageDao در قالب یک لیست در اختیار شما قرار میگیرد. هر رکورد از این لیست، دارای اطلاعات زیر است:
user: کاربرinternal: مشخص میکند که اینترنت مصرفی داخلی بوده یا خارجیnightly: مشخص میکند اینترنت مصرفی مربوط به حجم روزانه بوده یا شبانهdate: تاریخ مصرف حجم اینترنت- یک رشته با فرمت yy/MM/dd است (مانند 97/08/25).
usage: میزان مصرف اینترنت بر حسب مگابایت
در کلاس TrafficUsageService قرار است به کمک این دادهها، اطلاعات زیر استخراج شده و در دستهبندی مشتریان مورد استفاده قرار بگیرد:
- عاشقان رسانههای اجتماعی (متد socialMediaLovers):
- مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آنها از اینترنت خارجی، از مصرف اینترنت خارجی حداقل 90% سایر کاربران فعال در آن ماه بیشتر باشد.
- مثلا اگر علی در تیر 97 به میزان 50 گیگ اینترنت خارجی مصرف کرده اما حداقل 90% سایر کاربران، هر کدام در تیر 97 مصرفشان از اینترنت خارجی کمتر از 50 گیگ بوده، علی از عاشقان رسانههای اجتماعی در تیر 97 بوده است.
- منظور از کاربر فعال در یک بازه زمانی خاص، کاربری است که حداقل یک رکورد
TrafficUsageدر آن ماه و به نام آن کاربر ثبت شده باشد.
- مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آنها از اینترنت خارجی، از مصرف اینترنت خارجی حداقل 90% سایر کاربران فعال در آن ماه بیشتر باشد.
- مشتریان عشق دانلود (متد downloadLovers):
- مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آنها از اینترنت شبانه، بیش از مجموع مصرف آنها از اینترنت روزانه باشد. **نکته**:
- در هر یک از دو سرویس مورد نظر، به هر دلیلی اگر کاربری پیدا نشود، باید یک لیست خالی برگردانده شود (خروجی متد
nullنباشد).
با اجرای متد main در کلاس Main، خروجی زیر مورد انتظار است:
socialMediaLovers:
a100
downloadLovers:
a100
a101
a102
آنچه باید آپلود کنید:
یک فایل زیپ شامل بستهی com.rahnema.isp.service.impl است. به صورتی که وقتی فایل زیپ را باز میکنیم، دقیقا شاخهی com را ببینیم که درون آن شاخهی rahnema و درون آن شاخهی isp و درون آن شاخه service و درون آن شاخه impl قرار دارد. در داخل شاخهی impl فقط و فقط فایل TrafficUsageServiceImpl.java وجود دارد.
ارسال پاسخ برای این سؤال