I just some reviews on how I can make it more efficient or cleaner and what I should fix in general.
class bankAcc
{
public:
bankAcc() = default;
bankAcc(string fn, string ln) : firstName(fn), lastName(ln) {}
bool createUser(istream &is);
bool login() const;
private:
bool correctLogin(const string&, const string&) const;
static vector<string> usernames;
static vector<string> passwords;
string firstName, lastName;
string username, password;
};
vector<string> bankAcc::usernames;
vector<string> bankAcc::passwords;
bool bankAcc::createUser(istream &is) {
is >> username >> password;
if (is.fail()) {
cout << "Invalid option" << endl;
cin.clear();
return false;
}
usernames.push_back(username);
passwords.push_back(password);
return true;
}
bool bankAcc::login() const {
bool login;
string tempUser, tempPass;
cin >> tempUser >> tempPass;
if (cin.fail()) {
cout << "Invalid options" << endl;
cin.clear();
return false;
}
login = correctLogin(tempUser, tempPass);
if (login == true) {
cout << "Logged on" << endl;
return login;
}
else {
cout << "Incorrect info" << endl;
return login;
}
return login;
}
bool bankAcc::correctLogin(const string &tempUser, const string &tempPass) const {
if (usernames.empty() || passwords.empty())
return false;
bool usernamePassed, passwordPassed; int cnt = 0;
for (auto c : usernames) {
if (tempUser == c) {
usernamePassed = true;
break;
}
else {
usernamePassed = false;
}
++cnt;
}
if (passwords[cnt] == tempPass && cnt < passwords.size()) {
passwordPassed = true;
}
else {
passwordPassed = false;
}
return usernamePassed && passwordPassed;
}