map
class BankAccount
{
public:
BankAccount(int acctNum,const string& name):mAcctNum(acctNum),mClientName(name) {}
void setAcctNum(int acctNum) { mAcctNum = acctNum; }
int getAcctNum() const { return mAcctNum; }
void setClientName(const string& name) { mClientName = name; }
string getClientName() const { return mClientName; }
protected:
int mAcctNum;
string mClientName;
};
class BankDB
{
public:
BankDB() {}
bool addAccount(const BankAccount& acct);
void deleteAccout(int acctNum);
BankAccount& findAccount(int acctNum) throw(out_of_range);
BankAccount& findAccount(const string& name) throw(out_of_range);
void mergeDatabase(BankDB& db);
protected:
map<int,BankAccount> mAccounts;
};
bool BankDB::addAccount(const BankAccount& acct)
{
pair<map<int,BankAccount>::iterator, bool> res;
res = mAccounts.insert(make_pair(acct.getAcctNum(),acct));
return res.second;
}
void BankDB::deleteAccout(int acctNum)
{
mAccounts.erase(acctNum);
}
BankAccount& BankDB::findAccount(int acctNum) throw(out_of_range)
{
map<int, BankAccount>::iterator it = mAccounts.find(acctNum);
if (it == mAccounts.end()) {
throw (out_of_range("No account with that number."));
}
return it->second;
}
BankAccount& BankDB::findAccount(const string& name) throw(out_of_range)
{
for (map<int,BankAccount>::iterator it = mAccounts.begin(); it != mAccounts.end(); ++it)
{
if (it->second.getClientName() == name) {
return it->second;
}
}
throw out_of_range("No account with that name.");
}
void BankDB::mergeDatabase(BankDB& db)
{
mAccounts.insert(db.mAccounts.begin(), db.mAccounts.end());
db.mAccounts.clear();
}
multimap
本文介绍了一个简单的银行账户管理系统的设计与实现。系统使用 C++ 编写,通过 map 存储银行账户信息,提供了添加、删除、查找账户等功能,并支持数据库合并操作。
458

被折叠的 条评论
为什么被折叠?



