Simulation of a banking system with an Account class in C++ The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Simple container class with templatesOOP bank databaseUsing PostgreSQL effectively with a banking appAccount registration system for a quiz gameFake bank account classBanking system programRuby banking system programCinema SimulationAn account/banking system in C++C++ Banking Class

How many people can fit inside Mordenkainen's Magnificent Mansion?

Arduino Pro Micro - switch off LEDs

ELI5: Why do they say that Israel would have been the fourth country to land a spacecraft on the Moon and why do they call it low cost?

Is this wall load bearing? Blueprints and photos attached

Did the new image of black hole confirm the general theory of relativity?

Why can't devices on different VLANs, but on the same subnet, communicate?

How did the audience guess the pentatonic scale in Bobby McFerrin's presentation?

Empty set is subset of every set? If yes, why that...

Do working physicists consider Newtonian mechanics to be "falsified"?

Grover's algorithm - DES circuit as oracle?

Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?

Working through the single responsibility principle (SRP) in Python when calls are expensive

Does Parliament hold absolute power in the UK?

The variadic template constructor of my class cannot modify my class members, why is that so?

Didn't get enough time to take a Coding Test - what to do now?

Who or what is the being for whom Being is a question for Heidegger?

A pet rabbit called Belle

Keeping a retro style to sci-fi spaceships?

Did the UK government pay "millions and millions of dollars" to try to snag Julian Assange?

How to delete random line from file using Unix command?

Difference between "generating set" and free product?

How is simplicity better than precision and clarity in prose?

Hopping to infinity along a string of digits

Relations between two reciprocal partial derivatives?



Simulation of a banking system with an Account class in C++



The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Simple container class with templatesOOP bank databaseUsing PostgreSQL effectively with a banking appAccount registration system for a quiz gameFake bank account classBanking system programRuby banking system programCinema SimulationAn account/banking system in C++C++ Banking Class



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








0












$begingroup$


I have been learning C++ and recently I have started practicing classes. I made this simulation of a banking system with an Account class. I would like to hear feedback on my code, what is good - what I should keep doing, and especially what I should pay more attention to, or if you have any suggestion on how to simplify parts of the code, make it more readable because I feel this could be improved. Also, I would like to hear comments on exception handling, since I am quite new to that as well. Thank you all in advance, I will do my best to implement any of your suggestions.



Account.h



#ifndef ACCOUNT.H
#define ACCOUNT.H
#include <string>
#include <vector>

class Account
std::string name;
int id;
double balance;

public:
Account();
std::string getName() const;
int getId() const;
double getBalance() const;
void setName(std::string);
void setID(int);
void setBalance(double);
void addAccount (Account);
void withdraw(double);
void deposit(double);

static std::vector<Account> accountDatabase;
;
#endif // ACCOUNT


Account.cpp



#include "Account.h"
#include <iostream>
#include <string>
#include <vector>

Account::Account()
name = "";
id = 0;
balance = 0;


std::vector<Account> Account::accountDatabase;

void Account::addAccount(Account account)
accountDatabase.push_back(account);


std::string Account::getName() const
return name;


int Account::getId() const
return id;


double Account::getBalance() const
return balance;


void Account::setName(std::string userName)
name = userName;


void Account::setID(int newId)
if (newId < 1)
throw "ntttt ~ ID cannot be zero or negative ~";

for (int i = 0; i < accountDatabase.size(); i++)
if (newId == accountDatabase[i].getId())
throw "ntttt~ Entered ID is already in use ~";

id = newId;


void Account::setBalance(double newBalance)
if (newBalance < 0)
throw "ntttt ~ Balance cannot be negative ~";

balance = newBalance;


void Account::withdraw(double amount)
if (amount < 0)
throw "ntttt ~ Withdrawal amount cannot be negative ~";

balance -= amount;


void Account::deposit(double amount)
if (amount < 0)
throw "ntttt ~ Amount for deposit cannot be negative ~";

balance += amount;



Main



#include <iostream>
#include "Account.h"
#include <string>

void printMenu()
std::cout << "n" << R"(
Please select one of the following options:

1. Create an account
2. Check balance
3. Withdraw
4. Deposit
5. Account summary
6. Make a transaction
7. Exit
)" << "ntttt--> ";


// get a valid input
template<typename Type>
void getInput(Type &value)
while (true)
std::cin >> value;
if (std::cin.fail())
std::cin.clear();
std::cin.ignore(100, 'n');
std::cout << "nttttt~ Invalid input ~"
<< "ntttt--> Enter again: ";

else
std::cin.ignore();
return;




// find account in account database and return index of that account
int findAccount (int id)
for (int i = 0; i < Account::accountDatabase.size(); i++)
if (id == Account::accountDatabase[i].getId()) return i;

return -1;


void createAccount ()
Account newAccount;
std::cout << "ntttt--> Please enter your name: ";
std::string name;
std::cin.ignore();
std::getline(std::cin, name);
newAccount.setName(name);
std::cout << "ntttt--> Please enter your ID: ";
int id;
getInput(id);
newAccount.setID(id);
std::cout << "ntttt--> Please enter your balance: ";
double balance;
getInput(balance);
newAccount.setBalance(balance);
// add account to the database
newAccount.addAccount(newAccount);
std::cout << "ntttt~ Your account has been successfully created ~n";


void MenuSelection()

int option = 1, account, id;
while (option != 7)

std::cout << R"(
########################################################################################################################
~ THANK YOU FOR USING OUR SERVICES ~

########################################################################################################################
)";


int main()
std::cout << R"(
########################################################################################################################
~ W E L C O M E T O O U R B A N K ~

########################################################################################################################


)";
MenuSelection();
return 0;









share









$endgroup$


















    0












    $begingroup$


    I have been learning C++ and recently I have started practicing classes. I made this simulation of a banking system with an Account class. I would like to hear feedback on my code, what is good - what I should keep doing, and especially what I should pay more attention to, or if you have any suggestion on how to simplify parts of the code, make it more readable because I feel this could be improved. Also, I would like to hear comments on exception handling, since I am quite new to that as well. Thank you all in advance, I will do my best to implement any of your suggestions.



    Account.h



    #ifndef ACCOUNT.H
    #define ACCOUNT.H
    #include <string>
    #include <vector>

    class Account
    std::string name;
    int id;
    double balance;

    public:
    Account();
    std::string getName() const;
    int getId() const;
    double getBalance() const;
    void setName(std::string);
    void setID(int);
    void setBalance(double);
    void addAccount (Account);
    void withdraw(double);
    void deposit(double);

    static std::vector<Account> accountDatabase;
    ;
    #endif // ACCOUNT


    Account.cpp



    #include "Account.h"
    #include <iostream>
    #include <string>
    #include <vector>

    Account::Account()
    name = "";
    id = 0;
    balance = 0;


    std::vector<Account> Account::accountDatabase;

    void Account::addAccount(Account account)
    accountDatabase.push_back(account);


    std::string Account::getName() const
    return name;


    int Account::getId() const
    return id;


    double Account::getBalance() const
    return balance;


    void Account::setName(std::string userName)
    name = userName;


    void Account::setID(int newId)
    if (newId < 1)
    throw "ntttt ~ ID cannot be zero or negative ~";

    for (int i = 0; i < accountDatabase.size(); i++)
    if (newId == accountDatabase[i].getId())
    throw "ntttt~ Entered ID is already in use ~";

    id = newId;


    void Account::setBalance(double newBalance)
    if (newBalance < 0)
    throw "ntttt ~ Balance cannot be negative ~";

    balance = newBalance;


    void Account::withdraw(double amount)
    if (amount < 0)
    throw "ntttt ~ Withdrawal amount cannot be negative ~";

    balance -= amount;


    void Account::deposit(double amount)
    if (amount < 0)
    throw "ntttt ~ Amount for deposit cannot be negative ~";

    balance += amount;



    Main



    #include <iostream>
    #include "Account.h"
    #include <string>

    void printMenu()
    std::cout << "n" << R"(
    Please select one of the following options:

    1. Create an account
    2. Check balance
    3. Withdraw
    4. Deposit
    5. Account summary
    6. Make a transaction
    7. Exit
    )" << "ntttt--> ";


    // get a valid input
    template<typename Type>
    void getInput(Type &value)
    while (true)
    std::cin >> value;
    if (std::cin.fail())
    std::cin.clear();
    std::cin.ignore(100, 'n');
    std::cout << "nttttt~ Invalid input ~"
    << "ntttt--> Enter again: ";

    else
    std::cin.ignore();
    return;




    // find account in account database and return index of that account
    int findAccount (int id)
    for (int i = 0; i < Account::accountDatabase.size(); i++)
    if (id == Account::accountDatabase[i].getId()) return i;

    return -1;


    void createAccount ()
    Account newAccount;
    std::cout << "ntttt--> Please enter your name: ";
    std::string name;
    std::cin.ignore();
    std::getline(std::cin, name);
    newAccount.setName(name);
    std::cout << "ntttt--> Please enter your ID: ";
    int id;
    getInput(id);
    newAccount.setID(id);
    std::cout << "ntttt--> Please enter your balance: ";
    double balance;
    getInput(balance);
    newAccount.setBalance(balance);
    // add account to the database
    newAccount.addAccount(newAccount);
    std::cout << "ntttt~ Your account has been successfully created ~n";


    void MenuSelection()

    int option = 1, account, id;
    while (option != 7)

    std::cout << R"(
    ########################################################################################################################
    ~ THANK YOU FOR USING OUR SERVICES ~

    ########################################################################################################################
    )";


    int main()
    std::cout << R"(
    ########################################################################################################################
    ~ W E L C O M E T O O U R B A N K ~

    ########################################################################################################################


    )";
    MenuSelection();
    return 0;









    share









    $endgroup$














      0












      0








      0





      $begingroup$


      I have been learning C++ and recently I have started practicing classes. I made this simulation of a banking system with an Account class. I would like to hear feedback on my code, what is good - what I should keep doing, and especially what I should pay more attention to, or if you have any suggestion on how to simplify parts of the code, make it more readable because I feel this could be improved. Also, I would like to hear comments on exception handling, since I am quite new to that as well. Thank you all in advance, I will do my best to implement any of your suggestions.



      Account.h



      #ifndef ACCOUNT.H
      #define ACCOUNT.H
      #include <string>
      #include <vector>

      class Account
      std::string name;
      int id;
      double balance;

      public:
      Account();
      std::string getName() const;
      int getId() const;
      double getBalance() const;
      void setName(std::string);
      void setID(int);
      void setBalance(double);
      void addAccount (Account);
      void withdraw(double);
      void deposit(double);

      static std::vector<Account> accountDatabase;
      ;
      #endif // ACCOUNT


      Account.cpp



      #include "Account.h"
      #include <iostream>
      #include <string>
      #include <vector>

      Account::Account()
      name = "";
      id = 0;
      balance = 0;


      std::vector<Account> Account::accountDatabase;

      void Account::addAccount(Account account)
      accountDatabase.push_back(account);


      std::string Account::getName() const
      return name;


      int Account::getId() const
      return id;


      double Account::getBalance() const
      return balance;


      void Account::setName(std::string userName)
      name = userName;


      void Account::setID(int newId)
      if (newId < 1)
      throw "ntttt ~ ID cannot be zero or negative ~";

      for (int i = 0; i < accountDatabase.size(); i++)
      if (newId == accountDatabase[i].getId())
      throw "ntttt~ Entered ID is already in use ~";

      id = newId;


      void Account::setBalance(double newBalance)
      if (newBalance < 0)
      throw "ntttt ~ Balance cannot be negative ~";

      balance = newBalance;


      void Account::withdraw(double amount)
      if (amount < 0)
      throw "ntttt ~ Withdrawal amount cannot be negative ~";

      balance -= amount;


      void Account::deposit(double amount)
      if (amount < 0)
      throw "ntttt ~ Amount for deposit cannot be negative ~";

      balance += amount;



      Main



      #include <iostream>
      #include "Account.h"
      #include <string>

      void printMenu()
      std::cout << "n" << R"(
      Please select one of the following options:

      1. Create an account
      2. Check balance
      3. Withdraw
      4. Deposit
      5. Account summary
      6. Make a transaction
      7. Exit
      )" << "ntttt--> ";


      // get a valid input
      template<typename Type>
      void getInput(Type &value)
      while (true)
      std::cin >> value;
      if (std::cin.fail())
      std::cin.clear();
      std::cin.ignore(100, 'n');
      std::cout << "nttttt~ Invalid input ~"
      << "ntttt--> Enter again: ";

      else
      std::cin.ignore();
      return;




      // find account in account database and return index of that account
      int findAccount (int id)
      for (int i = 0; i < Account::accountDatabase.size(); i++)
      if (id == Account::accountDatabase[i].getId()) return i;

      return -1;


      void createAccount ()
      Account newAccount;
      std::cout << "ntttt--> Please enter your name: ";
      std::string name;
      std::cin.ignore();
      std::getline(std::cin, name);
      newAccount.setName(name);
      std::cout << "ntttt--> Please enter your ID: ";
      int id;
      getInput(id);
      newAccount.setID(id);
      std::cout << "ntttt--> Please enter your balance: ";
      double balance;
      getInput(balance);
      newAccount.setBalance(balance);
      // add account to the database
      newAccount.addAccount(newAccount);
      std::cout << "ntttt~ Your account has been successfully created ~n";


      void MenuSelection()

      int option = 1, account, id;
      while (option != 7)

      std::cout << R"(
      ########################################################################################################################
      ~ THANK YOU FOR USING OUR SERVICES ~

      ########################################################################################################################
      )";


      int main()
      std::cout << R"(
      ########################################################################################################################
      ~ W E L C O M E T O O U R B A N K ~

      ########################################################################################################################


      )";
      MenuSelection();
      return 0;









      share









      $endgroup$




      I have been learning C++ and recently I have started practicing classes. I made this simulation of a banking system with an Account class. I would like to hear feedback on my code, what is good - what I should keep doing, and especially what I should pay more attention to, or if you have any suggestion on how to simplify parts of the code, make it more readable because I feel this could be improved. Also, I would like to hear comments on exception handling, since I am quite new to that as well. Thank you all in advance, I will do my best to implement any of your suggestions.



      Account.h



      #ifndef ACCOUNT.H
      #define ACCOUNT.H
      #include <string>
      #include <vector>

      class Account
      std::string name;
      int id;
      double balance;

      public:
      Account();
      std::string getName() const;
      int getId() const;
      double getBalance() const;
      void setName(std::string);
      void setID(int);
      void setBalance(double);
      void addAccount (Account);
      void withdraw(double);
      void deposit(double);

      static std::vector<Account> accountDatabase;
      ;
      #endif // ACCOUNT


      Account.cpp



      #include "Account.h"
      #include <iostream>
      #include <string>
      #include <vector>

      Account::Account()
      name = "";
      id = 0;
      balance = 0;


      std::vector<Account> Account::accountDatabase;

      void Account::addAccount(Account account)
      accountDatabase.push_back(account);


      std::string Account::getName() const
      return name;


      int Account::getId() const
      return id;


      double Account::getBalance() const
      return balance;


      void Account::setName(std::string userName)
      name = userName;


      void Account::setID(int newId)
      if (newId < 1)
      throw "ntttt ~ ID cannot be zero or negative ~";

      for (int i = 0; i < accountDatabase.size(); i++)
      if (newId == accountDatabase[i].getId())
      throw "ntttt~ Entered ID is already in use ~";

      id = newId;


      void Account::setBalance(double newBalance)
      if (newBalance < 0)
      throw "ntttt ~ Balance cannot be negative ~";

      balance = newBalance;


      void Account::withdraw(double amount)
      if (amount < 0)
      throw "ntttt ~ Withdrawal amount cannot be negative ~";

      balance -= amount;


      void Account::deposit(double amount)
      if (amount < 0)
      throw "ntttt ~ Amount for deposit cannot be negative ~";

      balance += amount;



      Main



      #include <iostream>
      #include "Account.h"
      #include <string>

      void printMenu()
      std::cout << "n" << R"(
      Please select one of the following options:

      1. Create an account
      2. Check balance
      3. Withdraw
      4. Deposit
      5. Account summary
      6. Make a transaction
      7. Exit
      )" << "ntttt--> ";


      // get a valid input
      template<typename Type>
      void getInput(Type &value)
      while (true)
      std::cin >> value;
      if (std::cin.fail())
      std::cin.clear();
      std::cin.ignore(100, 'n');
      std::cout << "nttttt~ Invalid input ~"
      << "ntttt--> Enter again: ";

      else
      std::cin.ignore();
      return;




      // find account in account database and return index of that account
      int findAccount (int id)
      for (int i = 0; i < Account::accountDatabase.size(); i++)
      if (id == Account::accountDatabase[i].getId()) return i;

      return -1;


      void createAccount ()
      Account newAccount;
      std::cout << "ntttt--> Please enter your name: ";
      std::string name;
      std::cin.ignore();
      std::getline(std::cin, name);
      newAccount.setName(name);
      std::cout << "ntttt--> Please enter your ID: ";
      int id;
      getInput(id);
      newAccount.setID(id);
      std::cout << "ntttt--> Please enter your balance: ";
      double balance;
      getInput(balance);
      newAccount.setBalance(balance);
      // add account to the database
      newAccount.addAccount(newAccount);
      std::cout << "ntttt~ Your account has been successfully created ~n";


      void MenuSelection()

      int option = 1, account, id;
      while (option != 7)

      std::cout << R"(
      ########################################################################################################################
      ~ THANK YOU FOR USING OUR SERVICES ~

      ########################################################################################################################
      )";


      int main()
      std::cout << R"(
      ########################################################################################################################
      ~ W E L C O M E T O O U R B A N K ~

      ########################################################################################################################


      )";
      MenuSelection();
      return 0;







      c++ beginner object-oriented error-handling vectors





      share












      share










      share



      share










      asked 8 mins ago









      J.JJ.J

      113




      113




















          0






          active

          oldest

          votes












          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217415%2fsimulation-of-a-banking-system-with-an-account-class-in-c%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217415%2fsimulation-of-a-banking-system-with-an-account-class-in-c%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          格濟夫卡 參考資料 导航菜单51°3′40″N 34°2′21″E / 51.06111°N 34.03917°E / 51.06111; 34.03917ГезівкаПогода в селі 编辑或修订