Skip to content

The C++ Basic Bank Account Simulation System emulates key banking operations, allowing users to deposit, withdraw, and check balances in a virtual environment. Demonstrating essential banking functionalities, it showcases object-oriented programming principles.

Notifications You must be signed in to change notification settings

MITHRADEVI-K/Bank-Account-Operations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏦 C++ OOP-Based Banking System

A console-based banking simulator built to showcase modern C++ proficiency, including OOP design, STL usage, file handling, templates, and more.

OOP Illustration


Table of Contents


Project Overview

This project is a demonstration of C++ and OOP skills, simulating a banking system with account management, transactions, and persistent storage. It uses real-world inspired data and modular code structure.


Background & Objective

To bridge theory and practice in C++, I built a banking system that manages user accounts, supports deposits/withdrawals, and logs transactions. The project demonstrates file I/O, STL containers, error handling, and OOP design patterns.


Features

  • Loads and saves account data from CSV files
  • Unique Account ID generation (static members)
  • STL usage: map, set, vector
  • Template functions for utility
  • Multiple source/header files (modular design)
  • Simple file-based transaction logging
  • Unit testing with assert
  • Makefile for compilation
  • Const correctness and encapsulation

Sample Data

users.csv

account_id,username,email,balance,account_type
1000,JohnDoe,john@example.com,1000.00,Savings
1001,MithraDevi,mithra@example.com,5000.75,Current

How It Works

  1. Build the Project:

    g++ src/main.cpp src/BankAccount.cpp src/BankSystem.cpp -o bank_app
  2. Run the Program:

    ./bank_app
  3. Follow the menu to display accounts, deposit, withdraw, and exit.


Typical Output

1. Display All Accounts
2. Deposit
3. Withdraw
4. Exit
Choice: 1
[Account List]
ID: 1000 | Holder: JohnDoe | Balance: $1000.00 | Type: Savings
ID: 1001 | Holder: MithraDevi | Balance: $5000.75 | Type: Current
...

Challenges & Solutions

  • File I/O robustness: Ensured correct parsing and updating of CSV files.
  • Account uniqueness: Used static members for unique IDs.
  • Error handling: Managed invalid input and insufficient funds gracefully.
  • Modularity: Split code into headers and implementations for maintainability.

Technical Design & Language Proficiency

  • Encapsulation and modularity: Private members, public accessors, separate files.
  • Inheritance & polymorphism: Extendable for Savings/Current accounts.
  • STL containers: Efficient account and transaction management.
  • Templates: Utility functions for comparisons.
  • Unit testing: Assert-based tests for reliability.
  • Build automation: Makefile for easy compilation.

Usage

  1. Build:

    g++ src/main.cpp src/BankAccount.cpp src/BankSystem.cpp -o bank_app
  2. Run:

    ./bank_app
  3. Interact with the menu for banking operations.


Future Work

  • Add login/authentication system
  • Introduce interest rate simulation (SavingsAccount)
  • File-based persistent storage for transactions
  • Export reports in CSV format

Conclusion

This Banking System project demonstrates my skills in C++ and object-oriented programming. It simulates real-world banking operations with robust logic and modular design. Suggestions and contributions are welcome!


This Banking System project demonstrates my skills in C++ and object-oriented programming. It simulates real-world banking operations with robust logic and modular design. Suggestions and contributions are welcome!


About

The C++ Basic Bank Account Simulation System emulates key banking operations, allowing users to deposit, withdraw, and check balances in a virtual environment. Demonstrating essential banking functionalities, it showcases object-oriented programming principles.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages