مهدیار به عنوان مدیر داخلی شرکت «گوبرا» انتخاب شده است. او پس از چند روز که از شروع کارش گذشت و مشخصات کارمندان شرکت را در کاغذ وارد کرد، احساس خستگی کرد. مهدیار از عطا خواست که برایش برنامهی اندرویدی بنویسد که بتواند با کمک آن لیست کارمندان شرکت را مدیریت کند. عطا هم از فرط خستگی، پروژه را ناتمام گذاشته و زحمت اتمام کار بر دوش شماست.برنامه دو قسمت اصلی دارد؛ ثبت کارمند جدید و گرفتن گزارش کارمندان.
در بخش ثبت کارمند جدید(Register)، باید مشخصات کارمند جدید دریافت شود. هر کارمند مشخصات زیر را دارد:
- کد کارمندی
 - نام
 - نام خانوادگی
 - حقوق(به ازای هر ساعت)
 - ساعت کار ماهانه
 - منصب(مدیر، توسعهدهنده، کارمند)
 
در بخش گزارش(Report)، چند نوع گزارش میتوان تهیه کرد.
- محاسبهی کل پرداختی ماهانهی شرکت برای هر گروه شغلی(مدیر، توسعهدهنده، کارمند، همه)
 - گرفتن مشخصات کارمند با واردکردن کد کارمندی
 - مشاهدهی 
nامین کارمند شرکت از نظر بیشترین درآمد ماهانه. (رتبه هر کارمند به اینصورت محاسبه میشود: درصورتی که کارمندان را بصورت نزولی براساس حقوق دریافتی ماهانه مرتب کنیم، کارمند با بیشترین دریافتی رتبه یک را دریافت میکند و با کاهش حقوق، به ترتیب رتبه افزایش مییابد.) 
شما باید تغییرات زیر را در پروژه ایجاد کنید:
- 
با اجرای برنامه،
MainActivityاجرا شود وactivity_mainرا نمایش دهد. همچنین در اولین اجرای برنامه بر روی دستگاه، پایگاه دادهای با نام company (دقیقا به همین نام و بدون هیچ پسوند، پیشوند یا فرمت فایل) ساخته شود و جدولی به اسم Staff با ستونهای زیر در آن قرار گیرد: شمارهی کارمندی (ستونID) نام (ستونFirstName) نام خانوادگی (ستونLastName) درآمد هر ساعت (ستونSalary) ساعات کار ماهانه (ستونHour) منصب (ستونPosition) - 
با زدن دکمهی
Register، کلاسRegisterActivityو با زدن دکمهیReport، کلاسReportActivityاجرا شود و به ترتیبactivity_registerوactivity_reportنمایش داده شوند. - 
در
activity_register، داخلedit_code،edit_hourوedit_salaryفقط باید بتوان عدد وارد کرد. - 
در
activity_register، پس از فشردهشدنbtn_submitاگر هر کدام ازEditTextها خالی بود، رنگ پیغام راهنمای آن باید با استفاده از ثابتColor.REDیا کد رنگ معادل آن، به قرمز تغییر کند. در غیر اینصورت، اطلاعات واردشده باید به جدول Staff اضافه شوند. در صورتی که کد کارمندی واردشده تکراری بود، نباید اطلاعات اضافه شوند و پیغام Duplicate Personal Codeداخلtxt_resultنمایش داده شود. در صورت موفقیتآمیز بودن هم پیغامRegistration successfulداخلtxt_resultنمایش داده شود و همهEditTextها به حالت اولیه (بدون متنی که کاربر وارد کرده و با کد رنگ پیشفرض برای متن راهنما) برگردند. - 
در
activity_report، با فشردهشدنbtn_paymentباید کل حقوق ماهانهی همه کارمندان گروهی که درdrop_report_positionانتخاب شدهاند، درtxt_reportنمایش داده شود.(کل حقوق ماهانهی یک کارمند برابر با حاصلضرب تعداد ساعات کار در حقوق ساعتی است.) - 
در
activity_report، با فشردهشدنbtn_person، باید نام و نام خانوادگی کارمندی که شمارهی کارمندی او درedit_get_codeوارد شده است، درtxt_reportنمایش داده شود. توجه کنید که بین نام و نام خانوادگی باید دقیقا یک فاصله (space)باشد. همچنین اگر کارمندی با شماره واردشده وجود نداشت، پیغامNot foundدرtxt_reportنمایش داده شود. همچنین اگرedit_get_codeخالی بود، پیغام راهنمای آن باید با استفاده از ثابتColor.REDیا کد رنگ معادل آن، به رنگ قرمز تغییر کند. توجه شود که ورودیedit_get_codeفقط باید عدد باشد و غیر عدد را نباید بتوان وارد کرد. - 
در
activity_report، با فشردهشدنbtn_top، باید کارمندی که در رتبهی متناظر با عدد واردشده درedit_topقرار دارد، درtxt_reportنمایش دادهشود؛ (کارمندان براساس حقوق دریافتی بصورت نزولی مرتب میشوند و بالاترین حقوق، بالاترین رده یعنی رذه یک را دریافت میکند) باید نام، نام خانوادگی و درآمد ماهیانه درtxt_reportنوشته شود (موارد باید با دقیقا یک کاراکترspaceاز هم جدا میشوند.) اگر عدد واردشده از تعداد کارمندان شرکت بیشتر بود، عبارتNot foundدرtxt_reportنوشته شود. همچنین اگرedit_topخالی بود، پیغام راهنمای آن با استفاده از ثابتColor.REDیا کد رنگ معادل آن، به قرمز تغییر کند. توجه شود که ورودیedit_topفقط باید عدد باشد و غیر عدد را نباید بتوان وارد کرد. 
نکات مهم:
- برای پیادهسازی خواستههای مسئله (بخصوص ساخت و پیادهسازی دیتابیس)، هیچگونه دسترسی یا 
permisionجدیدی نباید به فایل پروژه اضافه شود. درصورت استفاده از روشهایی که نیاز به افزودن دسترسی به پروژه دارند، بخشی از نمره راهحل ارسالی کسر میگردد و یا نمرهای به راهحل ارسالی شما تعلق نمیگیرد. 
ساختار فایل ارسالی(فایلهایی که باید تغییر دهید با ----> نمایش داده شده اند):
<your-zip-name>.zip
└───app
    │   .gitignore
    │   app.iml
    │   build.gradle
    │   proguard-rules.pro
    │
    ├───libs
    └───src
        ├───androidTest
        │   │   androidTest.iml
        │   │
        │   └───java
        │       └───ir
        │           └───quera
        │               └───companymanager
        │                       ExampleInstrumentedTest.java
        │
        ├───main
        │   │   AndroidManifest.xml
        │   │   main.iml
        │   │
        │   ├───gen
        │   ├───java
        │   │   └───ir
        │   │       └───quera
        │   │           └───companymanager
        │   │                   MainActivity.java           <----
        │   │                   RegisterActivity.java       <----
        │   │                   ReportActivity.java         <----
        │   │
        │   └───res
        │       ├───drawable
        │       ├───layout
        │       │       activity_main.xml
        │       │       activity_register.xml
        │       │       activity_report.xml
        │       │
        │       ├───mipmap-hdpi
        │       │       ic_launcher.png
        │       │       ic_launcher_round.png
        │       │
        │       ├───mipmap-mdpi
        │       │       ic_launcher.png
        │       │       ic_launcher_round.png
        │       │
        │       ├───mipmap-xhdpi
        │       │       ic_launcher.png
        │       │       ic_launcher_round.png
        │       │
        │       ├───mipmap-xxhdpi
        │       │       ic_launcher.png
        │       │       ic_launcher_round.png
        │       │
        │       ├───mipmap-xxxhdpi
        │       │       ic_launcher.png
        │       │       ic_launcher_round.png
        │       │
        │       └───values
        │               colors.xml
        │               strings.xml
        │               styles.xml
ارسال پاسخ برای این سؤال