如何解决C ++-如果找不到帐号,则显示错误消息
因此,我正在创建一个程序,该程序将实现代表银行,其客户和银行帐户的各种类。银行对象存储客户对象的集合以及帐户对象的集合。每个客户都将拥有属于自己的帐户的独立集合。
下面是该程序应输出的图片-如果用户尝试输入负数,或者如果他们尝试提取比其帐户中更多的资金,则会显示一条错误消息,指出此金额不能借记或贷记。我的程序正确地输出了这部分,但是,我在努力寻找找不到图片中的帐号时如何输出错误消息。
void initBank(Bank& b){
b.addCust(new Customer(1010,"Toby"));
b.addAcct(1010,new Account(200130,400.4f));
}
void transactions(Bank& b)
{
b.debit(200130,20.00f);
b.debit(200174,85.00f);
}
虽然200130与Toby的帐户匹配,但数字200174与任何人的帐户都不匹配,因此它会打印出错误“找不到200174”。我很难实现这一目标,因为我不确定如何检查要借记/贷记金额的帐号是否与现有客户的任何帐号都不匹配。我会向正确的方向提供帮助或提示。
Account.cc中的借方和贷方功能是打印这些消息的位置,而Bank.cc也调用这些功能。
如果人们可以避免发布大量的代码并且仅在答案部分中发布必要的行,因为我仍在从事此项目,并且一直等到我真正完成它的发布,则我们将不胜感激:)
Bank.cc:https://zerobin.net/?c39a2d26c993a4f3#GuMG6bVh53CogRqqR8of9y5YVosGIroURBrCUQFEkI8=
Customer.cc:https://pastebin.com/C40q3ehp
CustArray.cc:https://pastebin.com/6QYFDeHD
解决方法
您需要在这里做一些事情,您的程序中可能已经有,但在问题中并未让它们变得明显。
- 您必须在某处拥有一个帐户集合,并按帐户ID /密钥进行索引。可以将其视为
std::map<int,Account> accounts
。 - 创建新帐户时,必须生成一个新的唯一ID,并将其添加到地图和帐户中。
- 基于以上两点,您的
credit()
和debit()
函数或调用它们的函数必须掌握每个帐户的ID和accounts
映射,并检查它们是否存在做其他事情。 - 如果未找到帐户,则由您决定如何处理错误报告。也许您可以返回错误代码,或引发异常,或终止程序。
您可以通过更改您的credit()和debit()函数轻松地做到这一点,只需检查控件是否退出for循环(back.cc for(int i = 0; i < numberOfBankAccounts; ++i)
中的第51行),所需的值。
您只需在开头创建/初始化一个布尔值即可完成此操作,并在找到匹配的银行帐户时对其进行更改。
类似这样的东西:-
bool flag = false;
for(int i = 0; i < numberOfBankAccounts; ++i){
if(accountsBank[i]->getNumber() == acctNum){
flag = true;
accountsBank[i]->debit(amount);
break;
}
if(!flag){
// if the control reaches here this means the account number does not exist thus display an error message
}
您也可以通过返回错误代码来完成此操作,就像@Tanveer Badar所说的那样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。