我不想将整个答案发布到学校作业,所以我会尝试仅包含足够的编码细节以显示我在哪里挂了。计算出来的月度个人客户付款将为对象数组中的每个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',如果这是一个'客户',没有一个? (如果你不确定,你需要去你的老师。) –