piscine_cpp/cpp00/ex02/Account.cpp
2024-11-04 15:39:36 +01:00

129 lines
3.9 KiB
C++

/* ************************************************************************* */
/* */
/* ::: :::::::: */
/* Account.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/23 16:11:46 by rparodi #+# #+# */
/* Updated: 2024/11/04 15:38:22 by rparodi ### ########.fr */
/* */
/* ************************************************************************** */
#include "Account.hpp"
#include <ctime>
#include <iostream>
#include <ostream>
int Account::_nbAccounts = 0;
int Account::_totalAmount = 0;
int Account::_totalNbDeposits = 0;
int Account::_totalNbWithdrawals = 0;
void Account::_displayTimestamp( void )
{
time_t raw_time = time(0);
tm *time = localtime(&raw_time);
std::cout << "[" << time->tm_year + 1900 << "0" << time->tm_mon + 1 << time->tm_mday << "_";
std::cout << time->tm_hour << time->tm_min << time->tm_sec << "] ";
}
/// [19920104_091532] index:0;amount:42;created
Account::Account( int initial_deposit )
{
_accountIndex = _nbAccounts;
_amount = initial_deposit;
_totalAmount += _amount;
_nbDeposits = 0;
_nbWithdrawals = 0;
_displayTimestamp();
std::cout << "index:" << _accountIndex << ";";
std::cout << "amount:" << _amount << ";";
std::cout << "created" << std::endl;
_nbAccounts++;
}
// index:0;amount:47;closed
Account::~Account()
{
_displayTimestamp();
std::cout << "index:" << _accountIndex << ";";
std::cout << "amount:" << _amount << ";";
std::cout << "closed" << std::endl;
_nbAccounts--;
}
// [19920104_091532] index:1;p_amount:54;deposit:765;amount:819;nb_deposits:1
void Account::makeDeposit(int deposit)
{
_displayTimestamp();
std::cout << "index:" << _accountIndex << ";";
std::cout << "p_amount:" << _amount << ";";
std::cout << "deposit:" << deposit << ";";
_amount += deposit;
_totalAmount += deposit;
std::cout << "amount:" << _amount << ";";
_totalNbDeposits++;
_nbDeposits++;
std::cout << "nb_deposits:" << _nbDeposits << std::endl;
}
// [19920104_091532] index:1;p_amount:819;withdrawal:34;amount:785;nb_withdrawals:1
bool Account::makeWithdrawal(int withdrawal)
{
_displayTimestamp();
std::cout << "index:" << _accountIndex << ";";
std::cout << "p_amount:" << _amount << ";";
if (withdrawal > _amount)
{
std::cout << "withdrawal:refused" << std::endl;
return false;
}
std::cout << "withdrawal:" << withdrawal << ";";
_totalAmount -= withdrawal;
_amount -= withdrawal;
std::cout << "amount:" << _amount << ";";
_totalNbWithdrawals++;
_nbWithdrawals++;
std::cout << "nb_withdrawals:" << _nbWithdrawals << std::endl;
return true;
}
int Account::getNbAccounts()
{
return (_nbAccounts);
}
int Account::getTotalAmount()
{
return (Account::_totalAmount);
}
int Account::getNbDeposits()
{
return (Account::_totalNbDeposits);
}
int Account::getNbWithdrawals()
{
return (Account::_totalNbWithdrawals);
}
void Account::displayAccountsInfos() {
_displayTimestamp();
std::cout << "accounts:" << _nbAccounts
<< ";total:" << _totalAmount
<< ";deposits:" << _totalNbDeposits
<< ";withdrawals:" << _totalNbWithdrawals
<< std::endl;
}
//[19920104_091532] index:0;amount:42;deposits:0;withdrawals:0
void Account::displayStatus() const
{
_displayTimestamp();
std::cout << "index:" << _accountIndex << ";";
std::cout << "amount:" << _amount << ";";
std::cout << "deposits:" << _nbDeposits << ";";
std::cout << "withdrawals:" << _nbWithdrawals << std::endl;
}