Untitled
unknown
plain_text
10 months ago
3.0 kB
8
Indexable
class Account:
def __init__(self, account_number, holder_name, initial_balance=0):
# Initializing account details
self.account_number = account_number
self.holder_name = holder_name
self.balance = initial_balance
def deposit(self, amount):
# Adds amount to the balance
if amount > 0:
self.balance += amount
print(f"Deposited ${amount} to account {self.account_number}")
else:
print("Deposit amount must be positive")
def withdraw(self, amount):
# Subtracts amount if sufficient funds are available
if 0 < amount <= self.balance:
self.balance -= amount
print(f"Withdrew ${amount} from account {self.account_number}")
else:
print("Insufficient balance or invalid amount")
def get_balance(self):
return self.balance
def display_info(self):
print(f"Account Number: {self.account_number}")
print(f"Holder Name: {self.holder_name}")
print(f"Balance: ${self.balance}")
class SavingsAccount(Account):
def __init__(self, account_number, holder_name, initial_balance=0, interest_rate=0.01):
# Initialize using Account's constructor
super().__init__(account_number, holder_name, initial_balance)
self.interest_rate = interest_rate
def apply_interest(self):
# Applies interest to the current balance
interest = self.balance * self.interest_rate
self.balance += interest
print(f"Applied interest of ${interest:.2f} to account {self.account_number}")
class Bank:
def __init__(self):
# Dictionary to store accounts with account_number as the key
self.accounts = {}
def add_account(self, account):
# Adds an account to the bank
self.accounts[account.account_number] = account
print(f"Added account {account.account_number}")
def find_account(self, account_number):
# Finds and returns an account by account_number
return self.accounts.get(account_number)
def transfer(self, from_account_number, to_account_number, amount):
# Transfers funds between accounts
from_account = self.find_account(from_account_number)
to_account = self.find_account(to_account_number)
if from_account and to_account:
if from_account.balance >= amount and amount > 0:
from_account.withdraw(amount)
to_account.deposit(amount)
print(f"Transferred ${amount} from {from_account_number} to {to_account_number}")
else:
print("Insufficient balance or invalid transfer amount")
else:
print("One or both accounts not found")
# Example usage
test_bank = Bank()
# Create and add accounts
test_savings = SavingsAccount("SA001", "John Doe", 1000, 0.02)
test_bank.add_account(test_savings)
test_savings.display_info()
test_savings.apply_interest()
test_savings.display_info()
Editor is loading...
Leave a Comment