【发布时间】:2020-03-27 17:11:42
【问题描述】:
我正在尝试对银行系统进行编程。这是一个课堂作业,所以我不是在寻找一个完整的解决方案,而只是在寻找如何完成一个方面。系统有一个Customer类、一个抽象Account类和4个派生的account类。我正在使用 Windows 窗体来接受用户输入。用户在文本框中输入客户信息,然后单击一个按钮,该按钮实例化一个新的客户对象并将其添加到前面在代码中创建的客户列表中:
customerList.Add(new Customer(custID, name, phone));
然后用户可以输入帐户信息并选择帐户类型,然后单击另一个按钮以实例化一个客户对象作为其参数之一的帐户对象。
checkingList.Add(new CheckingAccount(_____, acctNum, startBal, "Checking"));
这里是重载的 Account 构造函数:
public Account(Customer customer, int acctNum, decimal balance, string acctType)
{
_customer = customer;
_acctNum = acctNum;
_balance = balance;
_APY = APY;
_acctType = acctType;
}
我的问题是,我不知道应该在new CheckingAccount(_____, acctNum, startBal, "Checking") 行中用什么代替此处显示的下划线。这个想法是使用组合来显示该帐户属于客户(即客户“拥有”帐户),以便我可以显示属于特定客户的帐户列表。这在无需用户输入的情况下直接在代码中实例化对象时效果很好,因为我可以在编写 Customer 对象变量时为其命名。例如:
Customer customer1 = new Customer(1000, "John Doe", "555-555-5555");
customerList.Add(customer1);
checkingList.Add(new CheckingAccount(customer1, 300001, 5000, "Checking"));
savingsList.Add(new SavingsAccount(customer1, 400001, 10000, "Savings"));
我尝试使用custID 和Customer.custID 代替上面的下划线,但我不断收到以下错误:
参数 1:无法从 'int' 转换为 'Bank.Customer' 而且我理解为什么会弹出错误,但我无法找出正确的方法,所以我没有收到错误。
另一个我考虑过但不太清楚如何实现的想法是简单地从重载构造函数的参数列表中删除 Customer 对象。相反,要调用特定客户的帐户,我会使用列表中的对象索引。但是,除了知道将客户/帐户添加到各自列表中的顺序之外,用户如何能够为正确的客户/帐户提取正确的信息?
【问题讨论】:
-
通过首先指定您的列表是什么并只留下重现问题所需的最少代码,为我们提供更多代码。
标签: c# visual-studio winforms composition