A C++ Bank Account Management System allows users to create and manage bank accounts. The system supports basic banking operations such as depositing money, withdrawing funds, checking balance, and viewing account details. The purpose of this project is to practice object-oriented programming (OOP) concepts, file handling, and basic data management in C++.
The project can be structured as follows:
The BankAccount class will represent individual accounts. Each account will have attributes like account number, account holder's name, and account balance. The class will include methods for deposit, withdraw, display account details, and other functionalities.
#include
#include
class BankAccount {
private:
int accountNumber;
std::string holderName;
double balance;
public:
// Constructor to initialize account
BankAccount(int accountNumber, std::string holderName, double initialBalance)
: accountNumber(accountNumber), holderName(holderName), balance(initialBalance) {}
// Function to deposit money
void deposit(double amount) {
if (amount > 0) {
balance += amount;
std::cout << "Deposited " << amount << ". New balance: " << balance << std::endl;
} else {
std::cout << "Invalid deposit amount." << std::endl;
}
}
// Function to withdraw money
void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
std::cout << "Withdrew " << amount << ". New balance: " << balance << std::endl;
} else {
std::cout << "Invalid or insufficient funds for withdrawal." << std::endl;
}
}
// Function to check balance
void checkBalance() {
std::cout << "Current balance: " << balance << std::endl;
}
// Function to display account details
void displayAccountDetails() {
std::cout << "Account Number: " << accountNumber << "\nAccount Holder: " << holderName
<< "\nBalance: " << balance << std::endl;
}
};
To retain account data even after the program terminates, account information is saved in a file. We will use ofstream to write data to a file and ifstream to read data from the file.
#include
void saveToFile(const BankAccount& account) {
std::ofstream file("bank_accounts.txt", std::ios::app); // Open in append mode
if (file.is_open()) {
file << account.getAccountNumber() << "\n"
<< account.getHolderName() << "\n"
<< account.getBalance() << "\n";
file.close();
} else {
std::cout << "Error opening file." << std::endl;
}
}
#include
#include
std::vector loadFromFile() {
std::vector accounts;
std::ifstream file("bank_accounts.txt");
int accountNumber;
std::string holderName;
double balance;
while (file >> accountNumber >> std::ws && std::getline(file, holderName) && file >> balance) {
accounts.push_back(BankAccount(accountNumber, holderName, balance));
}
file.close();
return accounts;
}
The user will interact with the system via a simple menu. The menu will allow the user to choose different banking operations, including creating an account, depositing money, withdrawing money, checking balance, and displaying account details.
#include
#include
void displayMenu() {
std::cout << "1. Create Account\n";
std::cout << "2. Deposit Money\n";
std::cout << "3. Withdraw Money\n";
std::cout << "4. Check Balance\n";
std::cout << "5. View Account Details\n";
std::cout << "6. Exit\n";
}
int main() {
std::vector accounts;
int choice;
while (true) {
displayMenu();
std::cout << "Enter your choice: ";
std::cin >> choice;
switch (choice) {
case 1: {
int accountNumber;
std::string holderName;
double initialBalance;
std::cout << "Enter account number: ";
std::cin >> accountNumber;
std::cin.ignore();
std::cout << "Enter account holder name: ";
std::getline(std::cin, holderName);
std::cout << "Enter initial balance: ";
std::cin >> initialBalance;
BankAccount newAccount(accountNumber, holderName, initialBalance);
accounts.push_back(newAccount);
saveToFile(newAccount);
break;
}
case 2: {
int accountNumber;
double depositAmount;
std::cout << "Enter account number: ";
std::cin >> accountNumber;
std::cout << "Enter amount to deposit: ";
std::cin >> depositAmount;
for (auto& account : accounts) {
if (account.getAccountNumber() == accountNumber) {
account.deposit(depositAmount);
break;
}
}
break;
}
case 3: {
int accountNumber;
double withdrawalAmount;
std::cout << "Enter account number: ";
std::cin >> accountNumber;
std::cout << "Enter amount to withdraw: ";
std::cin >> withdrawalAmount;
for (auto& account : accounts) {
if (account.getAccountNumber() == accountNumber) {
account.withdraw(withdrawalAmount);
break;
}
}
break;
}
case 4: {
int accountNumber;
std::cout << "Enter account number: ";
std::cin >> accountNumber;
for (auto& account : accounts) {
if (account.getAccountNumber() == accountNumber) {
account.checkBalance();
break;
}
}
break;
}
case 5: {
int accountNumber;
std::cout << "Enter account number: ";
std::cin >> accountNumber;
for (auto& account : accounts) {
if (account.getAccountNumber() == accountNumber) {
account.displayAccountDetails();
break;
}
}
break;
}
case 6:
std::cout << "Exiting the program...\n";
return 0;
default:
std::cout << "Invalid option. Please try again.\n";
break;
}
}
return 0;
}
The C++ Bank Account Management System is a great project to practice object-oriented programming, file handling, and basic operations in C++. This project allows users to perform real-life banking operations such as creating an account, depositing and withdrawing money, and viewing balance and account details. It demonstrates how C++ can be used to develop useful applications with data persistence.
A void pointer is a special type of pointer that can point to any data type, making it versatile for generic data handling.
Dynamic memory allocation in C++ refers to allocating memory at runtime using operators like new and delete, providing flexibility in memory management.
Templates in C++ allow functions and classes to operate with generic types, enabling code reusability and type safety.
Iterators are objects that allow traversal through the elements of a container in the STL, providing a uniform way to access elements.
C++ is an object-oriented programming language that extends C by adding features like classes, inheritance, and polymorphism. Unlike C, which is procedural, C++ supports both procedural and object-oriented paradigms.
An array in C++ is declared by specifying the type of its elements followed by the array name and size in square brackets, e.g., int arr[10];.
The new operator allocates memory dynamically on the heap, while the delete operator deallocates memory, preventing memory leaks.
Type casting in C++ is the process of converting a variable from one data type to another, either implicitly or explicitly.
Inheritance is a feature in C++ where a new class (derived class) acquires properties and behaviors (methods) from an existing class (base class).
Operator overloading enables the redefinition of the way operators work for user-defined types, allowing operators to be used with objects of those types.
Function overloading allows multiple functions with the same name but different parameters to coexist in a C++ program, enabling more intuitive function calls.
In C++, a class is declared using the class keyword, followed by the class name and a pair of curly braces containing member variables and functions.
No, a C++ program cannot execute without a main() function, as it is the designated entry point for program execution.
Vectors are dynamic arrays provided by the STL in C++ that can grow or shrink in size during program execution.
A namespace in C++ is a declarative region that provides a scope to the identifiers (names of types, functions, variables) to avoid name conflicts.
The primary difference is that members of a struct are public by default, whereas members of a class are private by default.
The const keyword in C++ is used to define constants, indicating that the value of a variable cannot be changed after initialization.
Exception handling in C++ is a mechanism to handle runtime errors using try, catch, and throw blocks, allowing a program to continue execution after an error.
The STL is a collection of template classes and functions in C++ that provide general-purpose algorithms and data structures like vectors, lists, and maps.
A reference in C++ is an alias for another variable, whereas a pointer holds the memory address of a variable. References cannot be null and must be initialized upon declaration.
Pointers in C++ are variables that store memory addresses of other variables. They allow for dynamic memory allocation and efficient array handling.
Polymorphism allows objects of different classes to be treated as objects of a common base class, enabling a single function or operator to work in different ways.
Constructors are special member functions that initialize objects when they are created. Destructors are called when objects are destroyed, used to release resources.
These access specifiers define the accessibility of class members. Public members are accessible from outside the class, private members are not, and protected members are accessible within the class and by derived classes.
The main() function serves as the entry point for a C++ program. It is where the execution starts and ends.
Copyrights © 2024 letsupdateskills All rights reserved