Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - رواتب الموظفين

جزء من قسم البرمجة كائنية التوجه في رحلة R على Coddy. الدرس 16 من 57.

challenge icon

التحدي

متوسط

أنشئ نظام كشوف رواتب عبر ثلاثة ملفات. الدالة العامة pay() معطاة في Employee.R.

  • Employee.R: new_employee(name, salary, ..., class = character())؛ pay.employee() هي الراتب مقسومًا على 12؛ وتُرجع format.employee() القيمة Ada: 5000.00 مع تنسيق pay() إلى منزلتين عشريتين؛ أما manager_cost(staff) فهي إجمالي الأجر الشهري لكل من يرث من manager.
  • Manager.R: new_manager(name, salary, bonus) مع الحقل الإضافي bonus؛ تضيف pay.manager() اثني عشرَ البدل إلى أجر الموظف باستخدام NextMethod()؛ وتضيف format.manager() القيمة (manager) بعد نص الموظف باستخدام NextMethod().
  • Intern.R: new_intern(name, salary)؛ وpay.intern() تساوي نصف أجر الموظف باستخدام NextMethod(). ويحافظ المتدربون على تنسيق الموظف.

يقرأ الكود المُعطى الأسطر employee Bo 36000 أو manager Ada 60000 12000 أو intern Cy 24000، ويطبع تنسيق كل شخص، ثم الإجمالي الخاص بالمديرين.

ضع كودك في Employee.R وManager.R وIntern.R. يحتوي main.R على كود الإدخال/الإخراج المُعطى ولا يمكن تعديله.

جرّب بنفسك

source("Employee.R")
source("Manager.R")
source("Intern.R")

# كود الإدخال/الإخراج المُزوَّد: اتركه كما هو
input <- suppressWarnings(readLines(file("stdin")))
staff <- list()
for (line in input) {
  p <- strsplit(line, " ")[[1]]
  staff[[length(staff) + 1]] <- switch(p[1],
    employee = new_employee(p[2], as.numeric(p[3])),
    manager = new_manager(p[2], as.numeric(p[3]), as.numeric(p[4])),
    intern = new_intern(p[2], as.numeric(p[3])))
}
for (x in staff) cat(format(x), "\n", sep = "")
cat(sprintf("managers cost %.2f per month", manager_cost(staff)), "\n", sep = "")

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم R عبر الإنترنت