namespace PayRollSystemManagement
public abstract class Employee
public string Name { get; set; }
public string Ssn { get; set; }
public Employee(string name, string ssn)
public override string ToString()
return Name + "nSocial security number: " + Ssn;
public abstract double earnings();
public class SalariedEmployee : Employee
public double WeeklySalary { get; set; }
public SalariedEmployee(string name, string ssn, double salary) : base(name, ssn)
public override double earnings()
public override string ToString()
string s = "Salaried employee: " + base.ToString() + "nWeekly salary " + string.Format("${0:0.00}", WeeklySalary) + string.Format("nEarned ${0:0.00}", earnings()) + "n";
static void Main(string[] args)
SalariedEmployee salariedEmployee = new SalariedEmployee("Mahbub Murshed", "111-22-3333", 800.00);
HourlyEmployee hourlyEmployee = new HourlyEmployee("Michael Jackson", "111-22-4444", 16.75, 45);
CommissionEmployee commissionEmployee = new CommissionEmployee("Susan Harper", "444-44-4444", 10000, .06);
BasePlusCommissionEmployee basePlusCommissionEmployee = new BasePlusCommissionEmployee("Manpreet Kaur", "777-77-7777", 5000, .04, 300);
Console.WriteLine("Employees processed individually:n");
Console.WriteLine(salariedEmployee);
Console.WriteLine(hourlyEmployee);
Console.WriteLine(commissionEmployee);
Console.WriteLine(basePlusCommissionEmployee);
var employees = new Employee[4];
employees[0] = salariedEmployee;
employees[1] = hourlyEmployee;
employees[2] = commissionEmployee;
employees[3] = basePlusCommissionEmployee;
Console.WriteLine("nUtilise polymorphism to iterate across different employees:n");
foreach (var currentEmployee in employees)
if (currentEmployee is BasePlusCommissionEmployee)
BasePlusCommissionEmployee employee = (BasePlusCommissionEmployee)currentEmployee;
employee.BaseSalary = 1.30 * employee.BaseSalary;
Console.WriteLine("New base-salary with 30% increase is: $" + employee.BaseSalary);
Console.WriteLine(currentEmployee);
for (int j = 0; j < employees.Length; j++)
Console.WriteLine("Employee {0} is {1}", j + 1, employees[j].GetType().Name);