مهدیار به عنوان مدیر داخلی شرکت «گوبرا» انتخاب شده است. او پس از چند روز که از شروع کارش گذشت و مشخصات کارمندان شرکت را در کاغذ وارد کرد، احساس خستگی کرد. مهدیار از عطا خواست که برایش برنامهی اندرویدی بنویسد که بتواند با کمک آن لیست کارمندان شرکت را مدیریت کند. عطا هم از فرط خستگی، پروژه را ناتمام گذاشته و زحمت اتمام کار بر دوش شماست.برنامه دو قسمت اصلی دارد؛ ثبت کارمند جدید و گرفتن گزارش کارمندان.
در بخش ثبت کارمند جدید(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
ارسال پاسخ برای این سؤال