Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: Hệ thống tính lương nhân viên đa loại với abstract Employee

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 5: Lập trình hướng đối tượng (1): lớp và đối tượng — khóa Lập trình Java

    Một công ty có 4 loại nhân viên: Manager, Engineer, Intern, Sales. Mỗi loại có công thức lương khác nhau.

    1. Lớp trừu tượng Employee:
      • id (String), name (String)
      • Phương thức trừu tượng double salary().
    2. Lớp con:
      • Manager: thêm baseSalary (double), teamSize (int). salary = baseSalary + teamSize * 500000.
      • Engineer: thêm baseSalary (double), level (int). salary = baseSalary * (1 + level * 0.1).
      • Intern: thêm hourlyRate (double), hours (int). salary = hourlyRate * hours. Nếu hours > 80 thì 80h đầu trả nguyên, từ giờ 81 trả 0.5x (vì là thực tập).
      • Sales: thêm baseSalary (double), commission (double), sold (double). salary = baseSalary + commission * sold.
    3. Đọc N nhân viên. Format mỗi dòng:
      • MGR <id> <name> <baseSalary> <teamSize>
      • ENG <id> <name> <baseSalary> <level>
      • INT <id> <name> <hourlyRate> <hours>
      • SAL <id> <name> <baseSalary> <commission> <sold>
    4. In ra danh sách <id> <name> <salary> (2 chữ số thập phân), sắp xếp giảm dần theo salary. Khi bằng nhau, giữ thứ tự nhập.
    5. Dòng cuối: PAYROLL <tổng> (2 chữ số thập phân).
    • Định dạng đầu vào:
      • Dòng 1: N (1 ≤ N ≤ 200)
      • N dòng nhân viên theo format trên
    • Ràng buộc đầu vào:
      • baseSalary, hourlyRate, sold, commission ∈ [0, 10⁷]
      • 0 ≤ teamSize ≤ 100
      • 0 ≤ level ≤ 10
      • 0 ≤ hours ≤ 200
    • Định dạng đầu ra:
      • N dòng <id> <name> <salary> đã sắp xếp giảm dần theo salary
      • Dòng cuối PAYROLL <tổng>

    Ví dụ:

    Đầu vào:

    4
    MGR M01 An 20000000 5
    ENG E01 Binh 15000000 3
    INT I01 Cuong 50000 100
    SAL S01 Dung 10000000 0.05 200000000
    

    Đầu ra:

    M01 An 22500000.00
    S01 Dung 20000000.00
    E01 Binh 19500000.00
    I01 Cuong 4500000.00
    PAYROLL 66500000.00
    

    Giải thích:

    Manager An: 20M + 5×500K = 22.5M. Engineer Binh: 15M × 1.3 = 19.5M. Intern Cuong: 80×50K + 20×25K = 4M + 500K = 4.5M. Sales Dung: 10M + 0.05×200M = 20M. Sort giảm dần: M01(22.5M) → S01(20M) → E01(19.5M) → I01(4.5M). PAYROLL = 66.5M.

    Đầu vào:

    2
    INT I1 a 100000 50
    INT I2 b 100000 80
    

    Đầu ra:

    I2 b 8000000.00
    I1 a 5000000.00
    PAYROLL 13000000.00
    

    Giải thích:

    I1: 50h ≤ 80 → 50×100K = 5M. I2: 80h = 80 → 80×100K = 8M. Sort: I2 → I1. PAYROLL = 13M.

    Đầu vào:

    3
    MGR a x 1000 0
    MGR b y 1000 0
    MGR c z 1000 0
    

    Đầu ra:

    a x 1000.00
    b y 1000.00
    c z 1000.00
    PAYROLL 3000.00
    

    Giải thích:

    Ba MGR cùng salary 1000 → giữ thứ tự nhập a, b, c.

    Đầu vào:

    1
    ENG E z 10000000 0
    

    Đầu ra:

    E z 10000000.00
    PAYROLL 10000000.00
    

    Giải thích:

    Level 0 → salary = baseSalary × 1 = 10M.

    Đầu vào:

    5
    MGR m1 a 5000000 10
    ENG e1 b 8000000 5
    INT i1 c 60000 200
    SAL s1 d 5000000 0.1 50000000
    INT i2 e 60000 80
    

    Đầu ra:

    e1 b 12000000.00
    m1 a 10000000.00
    s1 d 10000000.00
    i1 c 8400000.00
    i2 e 4800000.00
    PAYROLL 45200000.00
    

    Đầu vào:

    3
    SAL s1 a 0 0.1 1000000
    SAL s2 b 0 0.2 500000
    SAL s3 c 1000000 0 999999
    

    Đầu ra:

    s3 c 1000000.00
    s1 a 100000.00
    s2 b 100000.00
    PAYROLL 1200000.00
    

    Giải thích:

    Test sales: s1 = 100K, s2 = 100K (bằng nhau giữ thứ tự), s3 = 1M.

    Chủ đề

    🧩 Lập trình hướng đối tượng☕ JavaJavaJava: OOPTất cả môn học

    Đang tải editor...