我不想將整個答案發布到學校作業,所以我會嘗試僅包含足夠的編碼細節以顯示我在哪裏掛了。計算出來的月度個人客戶付款將爲對象數組中的每個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()」需要無論從CreditCustomer或主類creditRate拉。我不知道如何將該值從子類傳遞到父類 2)在我的第二個'公共覆蓋字符串ToStrng()',我試圖添加一個額外的控制檯輸出到第一個覆蓋,並且我需要的值是名爲'getPaymentAmount'的程序的最後一種方法的結果
這是一項家庭作業任務,因此只是試圖填寫要求。
任何指導將不勝感激!
這些都是充分的功課要求:
- 定義類客戶實現IComparable接口。
- 創建3個客戶類字段:客戶編號,客戶名稱和應付金額。爲每個字段創建自動訪問器。
- 創建一個Customer類構造函數,它接受所有類字段的參數並通過訪問器分配傳遞的值。
- 創建一個不帶參數的默認無參數Customer類構造函數,它將不帶任何參數並導致將默認值(9,「ZZZ」,0)發送到3參數構造函數。
- 創建一個(覆蓋)Equals()方法,如果它們具有相同的客戶編號,則確定兩個客戶相等。
- 創建一個(重寫)GetHashCode()方法,該方法返回客戶編號。
- 創建一個(覆蓋)ToString()方法,該方法返回包含一般客戶信息的字符串(例如:CreditCustomer 1 russell AmountDue爲$ 4,311.00利率爲0.01)。以貨幣格式顯示美元金額。
- 執行CompareTo以比較>,<,==的對象客戶編號以實現對對象數組的排序。
- 創建一個從Customer派生並實現IComparable接口的CreditCustomer類。
- 使用自動存取器創建一個名爲Rate的類變量。
- 創建一個CreditCustomer類構造函數,該構造函數爲Customer類的字段設置客戶編號,名稱,金額和費率百分比,將Rate CreditCustomer變量設置爲費率百分比。將ID號,名稱和金額傳回給基類Customer構造函數。
- 創建一個不帶參數的默認無參數CreditCustomer類構造函數,該構造函數將不帶任何參數,並會將默認值(0,「」,0,0)發送到四參數CreditCustomer構造函數。
- 創建一個(覆蓋)ToString()方法,該方法返回一個包含一般客戶信息的字符串(例如:CreditCustomer 1 russell AmountDue爲$ 4,311.00利率爲0.01每月付款爲$ 179.63)。以貨幣格式顯示美元金額。
- 實施的CompareTo比較根據客戶的號碼>,<,==實現分選對象的數組CreditCustomer對象。
- 在主:
- 創建五個CreditCustomer對象的數組。
- 提示用戶輸入五個Customer對象各自的值;不要允許重複的客戶號碼,並在輸入重複的客戶號碼時強制用戶重新輸入客戶。
- CreditCustomer對象應在客戶編號顯示前按客戶編號排序。
- 當輸入五位有效客戶時,將其全部顯示出來,顯示所有客戶到期的總金額,再次顯示相同信息以及每位客戶的每月付款。請參閱下面顯示的輸入/輸出示例。
- 創建一個靜態GetPaymentAmounts方法,該方法將當前的Credit客戶對象作爲參數並返回一個double值類型。每個CreditCustomer每月付款將爲餘額的1/24(到期金額)。計算出的每月個人客戶付款將針對對象數組中的每個CreditCustomer對象返回。
那麼究竟是什麼樣的期望,如果'Customer'不是'CreditCustomer'?這種類型的客戶沒有'creditRate',所以在'ToString'這個級別上沒有什麼意義。 –
我同意,但這只是這個作業的任務要求.. –
你能澄清一下應該打印什麼來代替'creditRate',如果這是一個'客戶',沒有一個? (如果你不確定,你需要去你的老師。) –