CSharp

Payroll

Thời gian làm bài từ 20:00:00 ngày 9/7/2025 đến 23:59:59 ngày 10/7/2025

Link nộp bài: https://forms.gle/3jB5TkUC9BTvQZjf9

Đề bài

Công ty CEB muốn xây dựng một hệ thống Payroll. Hàng tháng, công ty cần tính tiền chi trả cho các hoá đơn (Invoice) và tiền lương cho nhân viên (Employee). Mặc dù các loại chi trả này thuộc các danh mục khác nhau và có cách tính khác nhau, nhưng chúng đều thực hiện nhiệm vụ tính tổng số tiền (GetPaymentAmount) mà công ty cần chi trả. Trong đó, Invoice có thông tin về danh sách hàng hoá (Goods), phương thức GetPaymentAmount tính và trả về tổng số tiền cần phải chi trả cho các hàng hoá trong hoá đơn đó. Một đối tượng Goods bao gồm thông tin về tên sản phẩm (name), số lượng (quantity), và giá (Price). Employee bao gồm thông tin tên (name) và địa chỉ (address) của nhân viên, phương thức GetPaymentAmount tính và trả về số tiền mà công ty cần trả cho nhân viên. Để tính lương cho nhân viên, công ty chia nhân viên thành ba loại: SalariedEmployee, HourlyEmployee, và CommissionEmployee. Cụ thể, SalariedEmployee mỗi tuần được trả cố định một khoản weeklySalary không quan tâm tới số giờ họ làm việc. HourlyEmployee được trả h × hourSalary, trong đó h và hourSalary lần lượt là số giờ làm việc trong tuần và mức lương của một giờ làm việc. CommissionEmployee được trả theo tỉ lệ hàng hoá họ bán được, theo công thức commissionRate × grossSales, trong đó commissionRate và grossSales lần lượt là tỉ lệ hoa hồng họ được nhận và tổng giá trị họ đã bán được.

Yêu cầu

  1. Tạo các lớp trừu tượng và/hoặc giao diện (interface) một cách thích hợp (3 điểm).
  2. Viết mã cài đặt các lớp cụ thể (concrete class) được mô tả trong bài (4 điểm).
  3. Nhập và in ra danh sách các đơn hàng và nhân viên trong công ty (1)
  4. Tính tổng số tiền phải trả hàng tháng của công ty (2 điểm).

Lưu ý

Học viên sử dụng code do AI tạo ra nộp bài sẽ tính 0 điểm