static void Main(string[] args) { EmployeeList list = new EmployeeList(); Employee fte1, fte2, fte3, pte1, pte2; fte1 = new FulltimeEmployee("张无忌", 3200, 45); fte2 = new FulltimeEmployee("杨过", 2000, 40); fte3 = new FulltimeEmployee("段誉", 2400, 38); pte1 = new ParttimeEmployee("洪七公", 80, 20); pte2 = new ParttimeEmployee("郭靖", 60, 18); list.addEmployee(fte1); list.addEmployee(fte2); list.addEmployee(fte3); list.addEmployee(pte1); list.addEmployee(pte2); Console.WriteLine("财务部 访问数据!"); Department fadep = new FADepartment(); list.accept(fadep); Console.WriteLine(); Console.WriteLine("人力资源部 访问数据!"); Department hrdep = new HRDepartment(); list.accept(hrdep); Console.ReadLine(); }
/// <summary> /// 实现人力资源部对全职员工的访问 /// </summary> /// <param name="employee"></param> public override void Visit(FulltimeEmployee employee) { int workTime = employee.WorkTime; Console.WriteLine("正式员工{0}实际工作时间为:{1}小时。", employee.Name, employee.WorkTime); if(workTime > 40) { Console.WriteLine("正式员工{0}加班时间为{1}小时。", employee.Name, workTime - 40); } else if(workTime < 40) { Console.WriteLine("正式员工{0}请假时间为:{1}小时。", employee.Name, 40 - workTime); } }
/// <summary> /// 实现财务部对全职员工的访问 /// </summary> /// <param name="employee"></param> public override void Visit(FulltimeEmployee employee) { int workTime = employee.WorkTime; Decimal weekWage = employee.WeeklyWage; if(workTime > 40) { weekWage = weekWage + (workTime - 40) * 100; } else if(workTime < 40) { weekWage = weekWage - (40 - workTime) * 80; if(weekWage < 0) { weekWage = 0; } } Console.WriteLine("正式员工{0}实际工资为:{1}元。", employee.Name, weekWage); }
//声明一组重载的访问方法,用于访问不同类型的具体元素 /// <summary> /// 实现对全职员工的访问 /// </summary> /// <param name="employee"></param> public abstract void Visit(FulltimeEmployee employee);