Account.class.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /* ************************************************************************** */
  2. /* */
  3. /* ::: :::::::: */
  4. /* Account.class.cpp :+: :+: :+: */
  5. /* +:+ +:+ +:+ */
  6. /* By: bchanot <bchanot@gmail.fr> +#+ +:+ +#+ */
  7. /* +#+#+#+#+#+ +#+ */
  8. /* Created: 2025/07/09 15:55:31 by bchanot #+# #+# */
  9. /* Updated: 2025/07/09 20:42:20 by bchanot ### ########.fr */
  10. /* */
  11. /* ************************************************************************** */
  12. #include "Account.class.hpp"
  13. #include <iostream>
  14. #include <iomanip>
  15. #include <ctime>
  16. Account::Account(int initial_deposit) : _amount(initial_deposit) {
  17. Account::_totalAmount += initial_deposit;
  18. Account::_displayTimestamp();
  19. this->_accountIndex = Account::_nbAccounts;
  20. Account::_nbAccounts += 1;
  21. std::cout << "index:" << this->_accountIndex << ";";
  22. std::cout << "amount:" << this->_amount << ";";
  23. std::cout << "created" << std::endl;
  24. return ;
  25. }
  26. Account::~Account(void) {
  27. Account::_displayTimestamp();
  28. std::cout << "index:" << this->_accountIndex << ";";
  29. std::cout << "amount:" << this->_amount << ";";
  30. std::cout << "closed" << std::endl;
  31. return ;
  32. }
  33. int Account::getNbAccounts( void ) {
  34. return Account::_nbAccounts;
  35. }
  36. int Account::getTotalAmount( void ) {
  37. return Account::_totalAmount;
  38. }
  39. int Account::getNbDeposits( void ) {
  40. return Account::_totalNbDeposits;
  41. }
  42. int Account::getNbWithdrawals( void ) {
  43. return Account::_totalNbWithdrawals;
  44. }
  45. void Account::displayAccountsInfos( void ) {
  46. Account::_displayTimestamp();
  47. std::cout << "accounts:" << Account::_nbAccounts << ";";
  48. std::cout << "total:" << Account::_totalAmount << ";";
  49. std::cout << "deposits:" << Account::_totalNbDeposits << ";";
  50. std::cout << "withdrawals:" << Account::_totalNbWithdrawals << ";";
  51. std::cout << std::endl;
  52. }
  53. void Account::makeDeposit( int deposit ) {
  54. Account::_displayTimestamp();
  55. std::cout << "index:" << this->_accountIndex << ";";
  56. std::cout << "p_amount:" << this->_amount << ";";
  57. this->_amount += deposit;
  58. Account::_totalAmount += deposit;
  59. this->_nbDeposits = Account::_totalNbDeposits += 1;
  60. std::cout << "deposit:" << deposit << ";";
  61. std::cout << "amount:" << this->_amount << ";";
  62. std::cout << "nb_deposits:" << this->_nbDeposits << ";";
  63. std::cout << std::endl;
  64. return ;
  65. }
  66. bool Account::makeWithdrawal( int withdrawal ) {
  67. Account::_displayTimestamp();
  68. std::cout << "index:" << this->_accountIndex << ";";
  69. std::cout << "p_amount:" << this->_amount << ";";
  70. if (this->_amount < withdrawal) {
  71. std::cout << "withdrawal:refused" << std::endl;
  72. return false;
  73. }
  74. this->_amount -= withdrawal;
  75. Account::_totalAmount -= withdrawal;
  76. this->_nbWithdrawals = Account::_totalNbWithdrawals += 1;
  77. std::cout << "withdrawal:" << withdrawal << ";";
  78. std::cout << "amount:" << this->_amount << ";";
  79. std::cout << "nb_withdrawals:" << this->_nbWithdrawals << ";";
  80. std::cout << std::endl;
  81. return true;
  82. }
  83. int Account::checkAmount( void ) const {
  84. return this->_amount;
  85. }
  86. void Account::displayStatus( void ) const {
  87. Account::_displayTimestamp();
  88. std::cout << "index:" << this->_accountIndex << ";";
  89. std::cout << "amount:" << this->_amount << ";";
  90. std::cout << "deposits:" << this->_nbDeposits << ";";
  91. std::cout << "withdrawals:" << this->_nbWithdrawals << ";";
  92. std::cout << std::endl;
  93. }
  94. void Account::_displayTimestamp( void ) {
  95. std::time_t now = std::time(nullptr);
  96. std::tm* tm_now = std::localtime(&now);
  97. std::cout << "[" << std::put_time(tm_now, "%Y%m%d_%H%M%S") << "] ";
  98. }
  99. int Account::_nbAccounts = 0;
  100. int Account::_totalAmount = 0;
  101. int Account::_totalNbDeposits = 0;
  102. int Account::_totalNbWithdrawals = 0;