我正在尝试对银行系统进行编程。这是用于一个类的任务,所以我不是在寻找一个完整的解决方案,而是在如何完成一个方面。该系统具有一个Customer类,一个抽象Account类和4个派生帐户类。我正在使用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对象。相反,要呼叫特定客户的帐户,我将使用列表中的对象索引。但是,除了仅知道将客户/帐户添加到其各自列表中的顺序之外,用户如何才能为正确的客户/帐户提取正确的信息?
如果我对您的理解正确,那么您的问题是,您无法从Windows窗体中的给定用户输入转到创建帐户?似乎您已经在“直接在代码中实例化”部分中掌握了要放入_____块的内容。
我建议,对于您创建新帐户的表单,从customerList中填充一个Customers下拉列表。然后,将用户的选择通过id映射到customerList中的实际Customer,并将其传递到帐户构造函数中。