Я не хочу публиковать весь ответ на школьное задание, поэтому я попытаюсь просто включить достаточно подробных сведений о кодировке, чтобы показать, где я Я повесил трубку.Вычисленный ежемесячный платеж отдельного клиента будет возвращен для каждого объекта CreditCustomer в массиве объектов
class Customer : IComparable // class declaration
{
public int customerNumber { get; set; }
public string customerName { get; set; }
public double amountDue { get; set; }
// Cust class constructor values assigned through accessors
public Customer(int number, string name, double due)
{
customerNumber = number;
customerName = name;
amountDue = due;
}
// override ToString method
public override string ToString()
{
return ("Credit Customer " + customerNumber + " " + customerName + " AmountDue is " + amountDue.ToString("C2") +
" Interest rate is " + creditRate); // creditRate causes error
}
}
// class derived from Customer
class CreditCustomer : Customer, IComparable
{
public double creditRate { get; set; }
// CreditCustomer class constructor values
public CreditCustomer(int number, string name, double due, double rate) : base(number, name, due)
{
customerNumber = number;
customerName = name;
amountDue = due;
creditRate = rate;
}
// override ToString method
public override string ToString()
{
return (base.ToString() + "\nMonthly payment is " + getPaymentAmount(creditCustomer[count].amountDue));
}
}
// wrapper for Main
class Assignment06
{
static void Main(string[] args)
{
// instantiate an array of 5 CreditCustomer objects
const int NUM_OF_CUSTS = 5;
CreditCustomer[] creditCustomer = new CreditCustomer[NUM_OF_CUSTS];
// get user input
for (int i = 0; i < creditCustomer.Length; i++)
{
Console.Write("Enter customer number: > ");
int number = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter name: > ");
string name = Convert.ToString(Console.ReadLine());
Console.Write("Enter amount due: > ");
double due = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter interest rate: > ");
double rate = Convert.ToDouble(Console.ReadLine());
creditCustomer[i] = new CreditCustomer(number, name, due, rate);
}
// Print to Console Summary Section
Console.WriteLine("\nSummary\n");
double totalDue = 0.00;
for (int count = 0; count < creditCustomer.Length; count++)
{
Console.WriteLine(creditCustomer[count].ToString());
totalDue += creditCustomer[count].amountDue;
}
Console.WriteLine("\nAmountDue for all Customers is {0}", totalDue.ToString("C2"));
// Print to Console Payment Section
Console.WriteLine("\nPayment Information\n");
double monthlyDue = 0.00;
for (int count = 0; count < creditCustomer.Length; count++)
{
double payAmt = getPaymentAmount(creditCustomer[count].amountDue);
Console.WriteLine(creditCustomer[count].ToString());
monthlyDue += creditCustomer[count].amountDue/24;
}
Console.WriteLine("\nMonthly payments for all Customers is {0}", monthlyDue.ToString("C2"));
} // end Main
public static double getPaymentAmount(double value)
{
double monthlyPayment = value/24;
return monthlyPayment;
}
} // end class wrapper for Main
Где у меня возникают проблемы в двух местах: 1) Моей первой "публичное переопределение строки ToString() нужно тянуть в creditRate либо от CreditCustomer или главного класса. Я не уверен, как передать это значение из дочернего класса в родительский класс. 2) На моей второй «открытой переопределяющей строке ToStrng()» я пытаюсь добавить дополнительный вывод консоли для первого переопределения, а значение, которое мне нужно извлечь, является результатом самого последнего метода программы «getPaymentAmount»
Это домашнее задание, поэтому просто пытаюсь выполнить требования.
Любые указания будут оценены!
Эти полные требования домашние задания:
- Создать класс с именем клиента, который реализует интерфейс IComparable.
- Создайте 3 поля класса клиента: номер клиента, имя клиента и причитающуюся сумму. Создавайте автоматические аксессоры для каждого поля.
- Создайте конструктор класса Customer, который принимает параметры для всех полей класса и присваивает переданные значения через аксессоров.
- Создайте конструктор класса по умолчанию, без аргумента, который не примет никаких параметров и приведет к отправке значений по умолчанию (9, «ZZZ», 0) в конструктор с 3 аргументами.
- Создать (переопределить) метод Equals(), который определяет два Клиента, равны, если они имеют одинаковый номер Клиента.
- Создайте (переопределить) метод GetHashCode(), который возвращает номер клиента.
- Создайте (переопределить) метод ToString(), который возвращает строку, содержащую общую информацию о клиенте (например: CreditCustomer 1 russell AmountDue составляет 4 311,00 долларов США. Процентная ставка равна 0,01). Отображение суммы в долларах в формате валюты.
- Внедрение CompareTo для сравнения номеров клиентов объекта для>, <, == для реализации сортировки для массива объектов.
- Создайте класс CreditCustomer, который происходит от Клиента и реализует интерфейс IComparable.
- Создайте переменную класса с именем Rate с использованием автоматического доступа.
- Создайте конструктор класса CreditCustomer, который принимает параметры для номера клиента, полей, имени, суммы и процента процента класса клиента, который устанавливает переменную Rate CreditCustomer в процентную ставку. Передайте номер id, имя и сумму обратно в базовый конструктор класса Customer.
- Создайте конструктор класса CreditCustomer по умолчанию без аргументов, который не примет никаких параметров и приведет к отправке значений по умолчанию (0, «", 0, 0) в конструктор CreditCustomer с 4 аргументами.
- Создайте (переопределить) метод ToString(), который возвращает строку, содержащую общую информацию о клиенте (например: CreditCustomer 1 russell AmountDue составляет 4 311,00 долларов США. Процентная ставка 0,01 Ежемесячный платеж составляет 179,63 доллара США).Отображение суммы в долларах в формате валюты.
- Реализация CompareTo для сравнения объектов CreditCustomer на основе номеров клиентов для>, <, == для реализации сортировки для массива объектов.
- В Main:
- Создать массив из пяти CreditCustomer объектов.
- Запросить пользователя для значений для каждого из пяти объектов Customer; НЕ разрешайте дублировать номера клиентов и заставлять пользователя повторно вводить Клиента при вводе двойного номера клиента.
- Объекты CreditCustomer должны быть отсортированы по номеру клиента до их отображения.
- Когда введены пять действительных Клиентов, отобразите их все, отобразите общую сумму, подлежащую оплате для всех Клиентов, снова отобразите ту же самую информацию с ежемесячной оплатой для каждого клиента. См. Пример ввода/вывода, показанный ниже.
- Создайте статический метод GetPaymentAmounts, который будет иметь текущий объект клиента кредита как параметр и возвращает тип двойного значения. Каждый ежемесячный платеж CreditCustomer составит 1/24 от суммы (причитающейся суммы). Вычисленная ежемесячная индивидуальная оплата клиента будет возвращена для каждого объекта CreditCustomer в массиве объектов.
Так что же такое ожидание, если 'Customer' не' CreditCustomer'? У такого клиента нет «creditRate», и поэтому не имеет смысла иметь его на этом уровне «ToString». –
Я бы согласился, но это просто то, что задает домашнее задание. –
Можете ли вы уточнить, что следует печатать вместо «creditRate», если это будет «Клиент», у которого его нет? (Если вы не уверены, вам нужно обратиться к вашему инструктору.) –