0% found this document useful (0 votes)
10 views19 pages

Bank Management System Code

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views19 pages

Bank Management System Code

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Program Code

#include<iostream>
#include<fstream>
#include<cctype>
#include<iomanip>
using namespace std;

class account
{
int acno;
char name[50];
int deposit;
char type;
public:
void create_account();
void show_account() const;
void modify();
void dep(int);
void draw(int);
void report() const;
int retacno() const;
int retdeposit() const;
char rettype() const;
};

void account::create_account()
{
system("clear");
cout << "\n\t\t\tEnter the Account No. : ";
cin >> acno;
cout << "\n\n\t\t\tPlease Enter the Name of the Account holder Here : ";
[Link]();
[Link](name, 50);
cout << "\n\t\t\tEnter Type of the Account (C/S) : ";
cin >> type;
type = toupper(type);
cout << "\n\t\t\tEnter The Initial amount : ";
cin >> deposit;
cout << "\n\n\t\t\tAccount Created..";
}

void account::show_account() const


{
cout << "\n\t\t\tAccount No. : " << acno;
cout << "\n\t\t\tAccount Holder Name : ";
cout << name;
cout << "\n\t\t\tType of Account : " << type;
cout << "\n\t\t\tBalance amount : " << deposit;
}

void account::modify()
{
cout << "\n\t\t\tAccount No. : " << acno;
cout << "\n\t\t\tModify Account Holder Name : ";
[Link]();
[Link](name, 50);
cout << "\n\t\t\tModify Type of Account : ";
cin >> type;
type = toupper(type);
cout << "\n\t\t\tModify Balance amount : ";
cin >> deposit;
}

void account::dep(int x)
{
deposit += x;
}

void account::draw(int x)
{
deposit -= x;
}
void account::report() const
{
cout << acno << setw(10) << " " << name << setw(10) << " " << type << setw(6) << deposit
<< endl;
}

int account::retacno() const


{
return acno;
}

int account::retdeposit() const


{
return deposit;
}

char account::rettype() const


{
return type;
}

void write_account();
void display_sp(int);
void modify_account(int);
void delete_account(int);
void display_all();
void deposit_withdraw(int, int);

int main()
{
char ch;
int num;
do
{
system("CLS");
cout << "\n\n\t\t\t\t======================\n";
cout << "\t\t\t\tBANK MANAGEMENT SYSTEM";
cout << "\n\t\t\t\t======================\n";

cout << "\t\t\t\t ::MAIN MENU::\n";


cout << "\n\t\t\t\t1. NEW ACCOUNT";
cout << "\n\t\t\t\t2. DEPOSIT AMOUNT";
cout << "\n\t\t\t\t3. WITHDRAW AMOUNT";
cout << "\n\t\t\t\t4. BALANCE ENQUIRY";
cout << "\n\t\t\t\t5. ALL ACCOUNT HOLDER LIST";
cout << "\n\t\t\t\t6. CLOSE AN ACCOUNT";
cout << "\n\t\t\t\t7. MODIFY AN ACCOUNT";
cout << "\n\t\t\t\t8. EXIT";
cout << "\n\n\t\t\t\tSelect Your Option (1-8): ";
cin >> ch;

switch (ch)
{
case '1':
write_account();
break;
case '2':
system("CLS");
cout << "\n\n\t\t\tEnter The account No. : "; cin >> num;
deposit_withdraw(num, 1);
break;
case '3':
system("CLS");
cout << "\n\n\t\t\tEnter The account No. : "; cin >> num;
deposit_withdraw(num, 2);
break;
case '4':
system("CLS");
cout << "\n\n\t\t\tEnter The account No. : "; cin >> num;
display_sp(num);
break;
case '5':
display_all();
break;
case '6':
system("CLS");
cout << "\n\n\t\t\tEnter The account No. : "; cin >> num;
delete_account(num);
break;
case '7':
system("CLS");
cout << "\n\n\t\t\tEnter The account No. : "; cin >> num;
modify_account(num);
break;

default:cout << "\a";


}
[Link]();
[Link]();
} while (ch != '8');
return 0;
}

void write_account()
{
account ac;
ofstream outFile;
[Link]("[Link]", ios::binary | ios::app);
ac.create_account();
[Link](reinterpret_cast<char*> (&ac), sizeof(account));
[Link]();
}

void display_sp(int n)
{
account ac;
bool flag = false;
ifstream inFile;
[Link]("[Link]", ios::binary);
if (!inFile)
{
cout << "File could not be open !! Press any Key...";
return;
}
cout << "\n\t\t\tBALANCE DETAILS\n";
while ([Link](reinterpret_cast<char*> (&ac), sizeof(account)))
{
if ([Link]() == n)
{
ac.show_account();
flag = true;
}
}
[Link]();
if (flag == false)
cout << "\n\n\t\t\tAccount number does not exist";
}

void modify_account(int n)
{
bool found = false;
account ac;
fstream File;
[Link]("[Link]", ios::binary | ios::in | ios::out);
if (!File)
{
cout << "File could not be open !! Press any Key...";
return;
}
while (![Link]() && found == false)
{
[Link](reinterpret_cast<char*> (&ac), sizeof(account));
if ([Link]() == n)
{
ac.show_account();
cout << "\n\n\t\t\tEnter The New Details of account" << endl;
[Link]();
int pos = (-1) * static_cast<int>(sizeof(account));
[Link](pos, ios::cur); //fncallat1353
[Link](reinterpret_cast<char*> (&ac), sizeof(account));
cout << "\n\n\t\t\tRecord Updated";
found = true;
}
}
[Link]();
if (found == false)
cout << "\n\n\t\t\tRecord Not Found ";
}
void delete_account(int n)
{
account ac;
ifstream inFile;
ofstream outFile;
[Link]("[Link]", ios::binary);
if (!inFile)
{
cout << "File could not be open !! Press any Key...";
return;
}
[Link]("[Link]", ios::binary);
[Link](0, ios::beg);
while ([Link](reinterpret_cast<char*> (&ac), sizeof(account)))
{
if ([Link]() != n)
{
[Link](reinterpret_cast<char*> (&ac), sizeof(account));
}
}
[Link]();
[Link]();
remove("[Link]");
rename("[Link]", "[Link]");
cout << "\n\nRecord Deleted ..";
}

void display_all()
{
system("CLS");
account ac;
ifstream inFile;
[Link]("[Link]", ios::binary);
if (!inFile)
{
cout << "File could not be open !! Press any Key...";
return;
}
cout << "\n\n\t\tACCOUNT HOLDER LIST\n\n";
cout << "====================================================\n";
cout << "A/c no. NAME Type Balance\n";
cout << "====================================================\n";
while ([Link](reinterpret_cast<char*> (&ac), sizeof(account)))
{
[Link]();
}
[Link]();
}

void deposit_withdraw(int n, int option)


{
int amt;
bool found = false;
account ac;
fstream File;
[Link]("[Link]", ios::binary | ios::in | ios::out);
if (!File)
{
cout << "File could not be open !! Press any Key...";
return;
}
while (![Link]() && found == false)
{
[Link](reinterpret_cast<char*> (&ac), sizeof(account));
if ([Link]() == n)
{
ac.show_account();
if (option == 1)
{
cout << "\n\n\t\t\tTO DEPOSITSS AMOUNT";
cout << "\n\n\t\t\tEnter The amount to be deposited: ";
cin >> amt;
[Link](amt);
}
if (option == 2)
{
cout << "\n\n\t\t\tTO WITHDRAW AMOUNT";
cout << "\n\n\t\t\tEnter The amount to be withdraw: ";
cin >> amt;
int bal = [Link]() - amt;
if (bal < 0)
cout << "Insufficience balance";
else
[Link](amt);
}
int pos = (-1) * static_cast<int>(sizeof(ac));
[Link](pos, ios::cur);//fn1353
[Link](reinterpret_cast<char*> (&ac), sizeof(account));
cout << "\n\n\t\t\tRecord Updated";
found = true;
}
}
[Link]();
if (found == false)
cout << "\n\n\t\t\tRecord Not Found ";
}
Output

======================

BANK MANAGEMENT SYSTEM

======================

::MAIN MENU::

1. NEW ACCOUNT

2. DEPOSIT AMOUNT

3. WITHDRAW AMOUNT

4. BALANCE ENQUIRY

5. ALL ACCOUNT HOLDER LIST

6. CLOSE AN ACCOUNT

7. MODIFY AN ACCOUNT

8. EXIT
Select Your Option (1-8): 1

Enter the Account No. : 101

Please Enter the Name of the Account holder Here : John Doe

Enter Type of the Account (C/S) : S

Enter The Initial amount : 5000

Account Created..

Press Enter to continue...

======================

BANK MANAGEMENT SYSTEM

======================

::MAIN MENU::

1. NEW ACCOUNT

2. DEPOSIT AMOUNT

3. WITHDRAW AMOUNT

4. BALANCE ENQUIRY

5. ALL ACCOUNT HOLDER LIST

6. CLOSE AN ACCOUNT

7. MODIFY AN ACCOUNT

8. EXIT
Select Your Option (1-8): 2

Enter The account No. : 101

Account No. : 101

Account Holder Name : John Doe

Type of Account : S

Balance amount : 5000

TO DEPOSIT AMOUNT

Enter The amount to be deposited: 2000

Record Updated

Press Enter to continue...

======================

BANK MANAGEMENT SYSTEM

======================

::MAIN MENU::

1. NEW ACCOUNT

2. DEPOSIT AMOUNT

3. WITHDRAW AMOUNT
4. BALANCE ENQUIRY

5. ALL ACCOUNT HOLDER LIST

6. CLOSE AN ACCOUNT

7. MODIFY AN ACCOUNT

8. EXIT

Select Your Option (1-8): 3

Enter The account No. : 101

Account No. : 101

Account Holder Name : John Doe

Type of Account : S

Balance amount : 7000

TO WITHDRAW AMOUNT

Enter The amount to be withdraw: 1500

Record Updated

Press Enter to continue...

======================

BANK MANAGEMENT SYSTEM

======================
::MAIN MENU::

1. NEW ACCOUNT

2. DEPOSIT AMOUNT

3. WITHDRAW AMOUNT

4. BALANCE ENQUIRY

5. ALL ACCOUNT HOLDER LIST

6. CLOSE AN ACCOUNT

7. MODIFY AN ACCOUNT

8. EXIT

Select Your Option (1-8): 4

Enter The account No. : 101

BALANCE DETAILS

Account No. : 101

Account Holder Name : John Doe

Type of Account : S

Balance amount : 5500

Press Enter to continue...

======================

BANK MANAGEMENT SYSTEM


======================

::MAIN MENU::

1. NEW ACCOUNT

2. DEPOSIT AMOUNT

3. WITHDRAW AMOUNT

4. BALANCE ENQUIRY

5. ALL ACCOUNT HOLDER LIST

6. CLOSE AN ACCOUNT

7. MODIFY AN ACCOUNT

8. EXIT

Select Your Option (1-8): 5

ACCOUNT HOLDER LIST

====================================================

Account No. : 101

Account Holder Name : John Doe

Type of Account : S

Balance amount : 5500

====================================================

Press Enter to continue...

Common questions

Powered by AI

File operations are crucial for the persistence of account records in this program. 'write_account()' writes new account data to 'account.dat' file, ensuring data isn't lost between sessions. The 'display_sp()', 'modify_account()', and 'delete_account()' functions read from and write to 'account.dat' for displaying, updating, or deleting specific accounts, enabling data to be shared across different executions of the program. This use of binary file handling not only allows for efficient storage and retrieval but also aids in maintaining data consistency and integrity over time .

The 'account' class in the program is designed to manage bank account information through various member functions. It serves as a blueprint for creating account objects containing attributes such as account number, holder's name, balance, and type of account. The methods include 'create_account' to create new accounts, 'show_account' to display account details, 'modify' to update account details, 'dep' and 'draw' for depositing and withdrawing funds, respectively, and 'report' for listing account summaries. These methods are integral for managing the operations related to account creation, updates, transactions, and reporting .

The system ensures data integrity during deposit and withdrawal operations through a conditional check that prevents withdrawals if insufficient funds exist. When the 'draw' method is called, it checks the balance and only allows the withdrawal if the balance after withdrawal remains non-negative, thereby preventing overdrafts and maintaining account integrity. Furthermore, deposit and withdrawal transactions correctly update the stored balance and persist these changes in the account.dat file, ensuring data consistency across sessions .

During balance inquiries, the program uses a flag variable within the 'display_sp()' function to track if any account matches the queried account number. While iterating over accounts, it sets the flag true upon finding a match. If the flag is false after completion, the program outputs a message stating the account number does not exist, alerting the user to the error. This provides a basic mechanism to handle invalid account numbers by ensuring feedback is given promptly when no match is found .

The program updates account balances by reading the file, modifying the in-memory representation of an account, and then writing the entire account object back to the same position in file. This is done in functions like 'deposit_withdraw()', which adjusts balances before rewriting the updated data using 'seekp()' and 'write()'. While this ensures continuity and correct updating of account information in the binary file, it requires precise positional accuracy and adequacy of file permissions. Errors in positioning may lead to corrupted or unlocatable account data .

The program ensures case-insensitive processing of account types by converting input to uppercase using the 'toupper()' function immediately after capturing the input for the account type. This conversion ensures that whether the user inputs 'c', 'C', 's', or 'S', the program handles them as 'C' or 'S' consistently, reducing potential errors in processing account type related logic .

Using fixed-size char arrays for storing names, as seen in the 'account' class, poses several limitations and dangers. Firstly, it risks buffer overflow if input exceeds the array size, leading to undefined behavior or program crashes. It also wastes memory for shorter names and requires manual management of string terminations. Moreover, such arrays do not easily support modern string manipulation methods that a dynamic string class could offer, reducing flexibility and increasing error potential during implementation. The lack of bounds checking further adds risk by potentially corrupting data .

Data encapsulation is demonstrated in the program through the 'account' class, which encapsulates the account details and related operations. The class provides methods like 'create_account', 'show_account', 'modify', 'dep', and 'draw' to manipulate and access private data members such as account number, name, type, and deposit amount. Direct access to these data members is restricted, promoting data integrity and abstraction by controlling how data is accessed and modified .

The control flow of the main menu uses a 'do-while' loop combined with a 'switch' statement, allowing repeated presentation of options until the user chooses to exit. The loop iterates accepting user input for menu choice, then directs flow based on option selected (e.g., account creation, balance check) through 'switch'. This structure offers a structured way to manage user navigation through multiple functionalities in the program, providing logical branching and loop control to handle continuous user interactions .

A console-based interface, like the one used in this bank management system, offers simplicity and ease of implementation for text-based operations, reducing the need for additional UI frameworks. This approach allows quick debugging and accommodates systems with minimal graphical support. However, it lacks graphical user interaction enhancements that could improve user experience, like pointers and windows, which can make the system seem outdated and less user-friendly. Additionally, the interface may not provide as rich feedback or intuitive navigation as graphical interfaces, potentially affecting usability for less technical users .

You might also like