Уважаеммые программисты, помогите написать программу на си шарпе правильно, вроде пишу и вставляю что надо а понять почему выводит не не могу
где ошиька я выделила красным цветом, помогите пожалуйста, нужно для экзамена.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace консоль
{
public abstract class Employee // абстрактный базовый класс
{
private String first_name; // имя
private String last_name; // фамилия
private double wage; // заработная плата
public Employee(String first_name, String last_name, double wage)
{
this.first_name = first_name;
this.last_name = last_name;
this.wage = wage;
}
public abstract double CalculatePay(); // расчет зарплаты - абстрактный метод
public abstract double CalculateBonus(); // расчет премии - абстрактный метод
public double getWage() // метод-аксессор
{
return wage;
}
public String getFirstName() // метод-аксессор
{
return first_name;
}
public String getLastName() // метод-аксессор
{
return last_name;
}
public void PrintPaycheck() // печать чека
{
String full_name = first_name + " " + last_name + " - "; // полное имя
Console.WriteLine("Oплата: " + full_name + " $" + CalculatePay());
}
} ///////////// конец класса Employee ////////////////////
public class HourlyEmployee : Employee // Класс - служащий с почасовой оплатой
{
private int hours; // отслеживание количества отработанных часов
public HourlyEmployee(String first_name, String last_name, double wage) :
base(first_name, last_name, wage)
{
}
public override double CalculatePay()
{
return getWage() * hours;
}
public override double CalculateBonus() // размер премии для почасово оплачиваемых служащих
{
return 100.00;
}
public void AddHours(int hours) // определение количества отработанных часов
{
this.hours = this.hours + hours;
}
public int getHours() // метод-аксессор
{
return hours;
}
public void resetHours() // метод-мутатор (сброс)
{
hours = 0;
}
} /////////////конец класса HourlyEmployee /////////////////////
public class CommissionedEmployee : Employee // Класс - служащий с комис-ной оплатой
{
private double commission; // количество долларов за единицу товара
private int units; // отслеживание количества проданных единиц товара
public CommissionedEmployee(String first_name, String last_name, double wage, double
commission)
: base(first_name, last_name, wage)
{
this.commission = commission;
}
public override double CalculatePay()
{
return getWage() + (commission * units);
}
public override double CalculateBonus() // вычисление премии за проданные единицы товара
{
return 100.00 * getSales();
}
public void AddSales(int units) // определение количества проданных единиц товара
{
this.units = this.units + units;
}
public int getSales() // метод-аксессор
{
return units;
}
public void resetSales() // метод-мутатор (сброс)
{
units = 0;
}
} ////////////конец класса CommissionedEmployee //////////////////
public class Payroll // Класс Платежная ведомость
{
private int total_hours; // итого отработано часов
private int total_sales; // итого продано единиц товара
private double total_pay; // итого выплачено всем служащим
/* Полиморфизм включения (с.143) ЛУЧШЕ, чем перегрузка методов / с.168, но см. с. 192 /,
так как при любом количестве служащих необходим только один метод PayEmployees().
Перегрузка м-да RecordEmployeeInfo() (см. ниже) ХУЖЕ тем, что с появлением нового
служащего необходимо прибавлять новый м-д, то есть осуществлять перегрузку метода*/
public void PayEmployees(Employee[] emps)
{ // emps - полиморфная переменная базового класса, она хранит данные различных служащих
for (int i = 0; i < emps.Length; i++)
{
Employee emp = emps;
total_pay += emp.CalculatePay();
emp.PrintPaycheck();
}
}
public void CalculateBonus(Employee[] emps)
// Премия служащих с разной оплатой труда. Полиморфизм включения
{
for (int i = 0; i < emps.Length; i++)
{
Employee emp = emps;
Console.WriteLine("Размер премии " + emp.getFirstName() + " " + emp.getLastName() + "$" + emp.CalculateBonus());
}
}
public void RecordEmployeeInfo(CommissionedEmployee emp)
// перегрузка метода. М-д служ-го с комиссион-й оплатой.
{ // Благодаря перегрузке этот м-д явл-ся полиморфным.
total_sales += emp.getSales(); // определение количества проданных единиц товара
}
public void RecordEmployeeInfo(HourlyEmployee emp)
// Перегрузка метода. М-д служ-го с почасовой оплатой
{ // Благодаря перегрузке этот м-д явл-ся полиморфным
total_hours += emp.getHours(); // определение количества отработанных часов
}
public void PrintReport()
{
Console.WriteLine("ПЛАТЕЖНАЯ ВЕДОМОСТЬ:");
Console.WriteLine("Итого отработано часов: " + total_hours);
Console.WriteLine("Итого продано единиц товара: " + total_sales);
Console.WriteLine("Итого выплачено всем служащим: $" + total_pay);
}
} //////////////////////////////конец класса Payroll//////////////////////////////////////////
/* Начальный класс EmployeeDriver создает экземпляры классов
CommissionedEmployee и HourlyEmployee и испытывает их.*/
public class PayrollDriver
{
public static void Main(String[] args)
{
{
Console.WriteLine("Введите Ваше имя"); // вывод строки на экран
string name;
name = Console.ReadLine(); // ввод строки с клавиатуры
if (name == "продавец")
Console.WriteLine("Г-н", "Продавец", 25000.00, 1000.00);
else
Console.WriteLine("Г-жа", "Продавщица", 25000.00, 1000.00);
name = Console.ReadLine();
}
Payroll payroll = new Payroll(); // создать систему платежной ведомости
// создать и модифицировать служащих с комиссионной оплатой
CommissionedEmployee emp1 = new CommissionedEmployee("Г-н", "Продавец", 25000.00, 1000.00);
CommissionedEmployee emp2 = new CommissionedEmployee("Г-жа", "Продавщица", 25000.00, 1000.00);
emp1.AddSales(7);
emp2.AddSales(5);
// создать и модифицировать служащих с почасовой оплатой
HourlyEmployee emp3 = new HourlyEmployee("Продавец", "с минимальной зарплатой", 6.50);
HourlyEmployee emp4 = new HourlyEmployee("Продавщица", "с минимальной зарплатой", 6.50);
emp3.AddHours(40);
emp4.AddHours(46);
payroll.RecordEmployeeInfo(emp1); // используем перегруженные (overloaded) методы
payroll.RecordEmployeeInfo(emp2); // -- ” -- //
payroll.RecordEmployeeInfo(emp3); //-- ” –//
payroll.RecordEmployeeInfo(emp4); //-- ” --//
/* запомним всех служащих в массиве emps.
emps - это полиморфная переменная базового класса, она может хранить объекты
различных /производных/ типов (то есть разные служащие) */
Employee[] emps = new Employee[4];
emps[0] = emp1; emps[1] = emp2; emps[2] = emp3; emps[3] = emp4;
payroll.PayEmployees(emps); // расчет зарплаты, выплаченной всем служащим
Console.WriteLine();
payroll.PrintReport(); // печать платежной ведомости
Console.WriteLine();
payroll.CalculateBonus(emps); // расчет премии, выплаченной всем служащим
Console.ReadLine();
} ////////конец класса EmployeeDriver//////////////////////
}
}