Creating a simple banking system project in Python is an excellent way to learn about classes and objects, encapsulation, and basic data management. This tutorial will guide you through creating a console-based application for managing bank accounts.
Step 1: Define the Bank Account Class
Start by defining a BankAccount class that will create new accounts and the basic operations like deposit, withdrawal, and displaying account details.class BankAccount:
def __init__(self, account_number, account_name, balance=0):
self.account_number = account_number
self.account_name = account_name
self.balance = balance
def deposit(self, amount):
if amount > 0:
self.balance += amount
print(f"Deposited: {amount}. New Balance: {self.balance}")
else:
print("Deposit amount must be positive.")
def withdraw(self, amount):
if 0 < amount <= self.balance:
self.balance -= amount
print(f"Withdrew: {amount}. New Balance: {self.balance}")
else:
print("Invalid withdrawal amount.")
def display_details(self):
print(f"Account Number: {self.account_number}, Account Name: {self.account_name}, Balance: {self.balance}")
Step 2: Define the Bank System Class
Create a BankSystem class to manage multiple bank accounts, including creating new accounts, transferring funds, and listing all accounts.
class BankSystem:
def __init__(self):
self.accounts = {}
def create_account(self, account_number, account_name):
if account_number in self.accounts:
print("Account already exists.")
else:
new_account = BankAccount(account_number, account_name)
self.accounts[account_number] = new_account
print("Account created successfully.")
def transfer_funds(self, from_acc, to_acc, amount):
if from_acc in self.accounts and to_acc in self.accounts:
if self.accounts[from_acc].balance >= amount:
self.accounts[from_acc].withdraw(amount)
self.accounts[to_acc].deposit(amount)
print("Transfer completed successfully.")
else:
print("Insufficient funds.")
else:
print("One or both accounts not found.")
def list_accounts(self):
for account in self.accounts.values():
account.display_details()
Step 3: Implementing User Interaction
Implement a simple console-based interface that allows users to interact with the banking system. This interface will enable users to perform operations like creating accounts, depositing and withdrawing funds, transferring money, and listing all accounts.
def main():
bank_system = BankSystem()
while True:
print("\nBanking System Menu:")
print("1. Create New Account")
print("2. Deposit")
print("3. Withdraw")
print("4. Transfer Funds")
print("5. Display Account Details")
print("6. Exit")
choice = input("Enter choice: ")
if choice == '1':
acc_num = input("Enter account number: ")
acc_name = input("Enter account holder name: ")
bank_system.create_account(acc_num, acc_name)
elif choice == '2':
acc_num = input("Enter account number: ")
amount = float(input("Enter amount to deposit: "))
if acc_num in bank_system.accounts:
bank_system.accounts[acc_num].deposit(amount)
else:
print("Account not found.")
elif choice == '3':
acc_num = input("Enter account number: ")
amount = float(input("Enter amount to withdraw: "))
if acc_num in bank_system.accounts:
bank_system.accounts[acc_num].withdraw(amount)
else:
print("Account not found.")
elif choice == '4':
from_acc = input("Enter from account number: ")
to_acc = input("Enter to account number: ")
amount = float(input("Enter transfer amount: "))
bank_system.transfer_funds(from_acc, to_acc, amount)
elif choice == '5':
bank_system.list_accounts()
elif choice == '6':
print("Exiting system.")
break
else:
print("Invalid choice, please try again.")
Step 4: Run the Banking System
Add the entry point to run the application. Ensure this is at the end of your Python file.
if __name__ == "__main__":
main()
Complete Code
Combine all the snippets above into a single Python file. This complete code represents a basic banking system that allows creating bank accounts, depositing and withdrawing funds, transferring money between accounts, and displaying account details through a simple console interface.
class BankAccount:
def __init__(self, account_number, account_name, balance=0):
self.account_number = account_number
self.account_name = account_name
self.balance = balance
def deposit(self, amount):
if amount > 0:
self.balance += amount
print(f"Deposited: {amount}. New Balance: {self.balance}")
else:
print("Deposit amount must be positive.")
def withdraw(self, amount):
if 0 < amount <= self.balance:
self.balance -= amount
print(f"Withdrew: {amount}. New Balance: {self.balance}")
else:
print("Invalid withdrawal amount.")
def display_details(self):
print(f"Account Number: {self.account_number}, Account Name: {self.account_name}, Balance: {self.balance}")
class BankSystem:
def __init__(self):
self.accounts = {}
def create_account(self, account_number, account_name):
if account_number in self.accounts:
print("Account already exists.")
else:
new_account = BankAccount(account_number, account_name)
self.accounts[account_number] = new_account
print("Account created successfully.")
def transfer_funds(self, from_acc, to_acc, amount):
if from_acc in self.accounts and to_acc in self.accounts:
if self.accounts[from_acc].balance >= amount:
self.accounts[from_acc].withdraw(amount)
self.accounts[to_acc].deposit(amount)
print("Transfer completed successfully.")
else:
print("Insufficient funds.")
else:
print("One or both accounts not found.")
def list_accounts(self):
for account in self.accounts.values():
account.display_details()
def main():
bank_system = BankSystem()
while True:
print("\nBanking System Menu:")
print("1. Create New Account")
print("2. Deposit")
print("3. Withdraw")
print("4. Transfer Funds")
print("5. Display Account Details")
print("6. Exit")
choice = input("Enter choice: ")
if choice == '1':
acc_num = input("Enter account number: ")
acc_name = input("Enter account holder name: ")
bank_system.create_account(acc_num, acc_name)
elif choice == '2':
acc_num = input("Enter account number: ")
amount = float(input("Enter amount to deposit: "))
if acc_num in bank_system.accounts:
bank_system.accounts[acc_num].deposit(amount)
else:
print("Account not found.")
elif choice == '3':
acc_num = input("Enter account number: ")
amount = float(input("Enter amount to withdraw: "))
if acc_num in bank_system.accounts:
bank_system.accounts[acc_num].withdraw(amount)
else:
print("Account not found.")
elif choice == '4':
from_acc = input("Enter from account number: ")
to_acc = input("Enter to account number: ")
amount = float(input("Enter transfer amount: "))
bank_system.transfer_funds(from_acc, to_acc, amount)
elif choice == '5':
bank_system.list_accounts()
elif choice == '6':
print("Exiting system.")
break
else:
print("Invalid choice, please try again.")
if __name__ == "__main__":
main()
Output:
Banking System Menu: 1. Create New Account 2. Deposit 3. Withdraw 4. Transfer Funds 5. Display Account Details 6. Exit Enter choice: 1 Enter account number: 123 Enter account holder name: Ramesh Account created successfully. Banking System Menu: 1. Create New Account 2. Deposit 3. Withdraw 4. Transfer Funds 5. Display Account Details 6. Exit Enter choice: 1 Enter account number: 456 Enter account holder name: Sam Account created successfully. Banking System Menu: 1. Create New Account 2. Deposit 3. Withdraw 4. Transfer Funds 5. Display Account Details 6. Exit Enter choice: 2 Enter account number: 123 Enter amount to deposit: 25000 Deposited: 25000.0. New Balance: 25000.0 Banking System Menu: 1. Create New Account 2. Deposit 3. Withdraw 4. Transfer Funds 5. Display Account Details 6. Exit Enter choice: 3 Enter account number: 123 Enter amount to withdraw: 5000 Withdrew: 5000.0. New Balance: 20000.0 Banking System Menu: 1. Create New Account 2. Deposit 3. Withdraw 4. Transfer Funds 5. Display Account Details 6. Exit Enter choice: 4 Enter from account number: 123 Enter to account number: 456 Enter transfer amount: 10000 Withdrew: 10000.0. New Balance: 10000.0 Deposited: 10000.0. New Balance: 10000.0 Transfer completed successfully. Banking System Menu: 1. Create New Account 2. Deposit 3. Withdraw 4. Transfer Funds 5. Display Account Details 6. Exit Enter choice: 5 Account Number: 123, Account Name: Ramesh, Balance: 10000.0 Account Number: 456, Account Name: Sam, Balance: 10000.0 Banking System Menu: 1. Create New Account 2. Deposit 3. Withdraw 4. Transfer Funds 5. Display Account Details 6. Exit Enter choice: 6 Exiting system. === Code Execution Successful ===
Conclusion
By following this tutorial, you've created a simple but functional banking system in Python. This project introduces you to fundamental programming concepts such as classes, objects, and basic file operations in Python. You can extend this project by adding features like interest calculation, saving and loading account data from a file, or even developing a graphical user interface (GUI) using libraries like Tkinter.
Comments
Post a Comment
Leave Comment