Click here to Skip to main content
15,181,010 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
C++
#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("CLS");
	cout<<"\n\t\t\tEnter the Account No. : ";
	cin>>acno;
	cout<<"\n\n\t\t\tEnter the Name of the Account holder : ";
	cin.ignore();
	cin.getline(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()
{
    no.="" "<<acno;
    cout<<"\n\t\t\tmodify="" cin.ignore();
    cin.getline(name,50);
    type="" 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() deposit;
}

char account::rettype() 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 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 cout<<"\n\t\t\t\t7. modify 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;
		 case '8':
		 	system("CLS");
			cout<<"\n\n\t\t\tThank you!";
			break;
		 default :cout<<"\a";
		}
		cin.ignore();
		cin.get();
    }while(ch!='8');
	return 0;
}


void write_account()
{
	account ac;
	ofstream outFile;
	outFile.open("account.dat",ios::binary|ios::app);
	ac.create_account();
	outFile.write(reinterpret_cast<char *=""> (&ac), sizeof(account));
	outFile.close();
}

void display_sp(int n)
{
	account ac;
	bool flag=false;
	ifstream inFile;
	inFile.open("account.dat",ios::binary);
	if(!inFile)
	{
		cout<<"File could not be open !! Press any Key...";
		return;
	}
	cout<<"\n\t\t\tBALANCE DETAILS\n";
    	while(inFile.read(reinterpret_cast<char *=""> (&ac), sizeof(account)))
	{
		if(ac.retacno()==n)
		{
			ac.show_account();
			flag=true;
		}
	}
    inFile.close();
	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;
    File.open("account.dat",ios::binary|ios::in|ios::out);
	if(!File)
	{
		cout<<"File could not be open !! Press any Key...";
		return;
	}
	while(!File.eof() && found==false)
	{
		File.read(reinterpret_cast<char *=""> (&ac), sizeof(account));
		if(ac.retacno()==n)
		{
			ac.show_account();
			cout<<"\n\n\t\t\tEnter The New Details of account"<<endl;
 ac.modify();
="" int="" pos="(-1)*static_cast<int">(sizeof(account));
			File.seekp(pos,ios::cur); //fncallat1353
		    File.write(reinterpret_cast<char *=""> (&ac), sizeof(account));
		    cout<<"\n\n\t\t\tRecord Updated";
		    found=true;
		  }
	}
	File.close();
	if(found==false)
		cout<<"\n\n\t\t\tRecord Not Found ";
}



void delete_account(int n)
{
	account ac;
	ifstream inFile;
	ofstream outFile;
	inFile.open("account.dat",ios::binary);
	if(!inFile)
	{
		cout<<"File could not be open !! Press any Key...";
		return;
	}
	outFile.open("Temp.dat",ios::binary);
	inFile.seekg(0,ios::beg);
	while(inFile.read(reinterpret_cast<char *=""> (&ac), sizeof(account)))
	{
		if(ac.retacno()!=n)
		{
			outFile.write(reinterpret_cast<char *=""> (&ac), sizeof(account));
		}
	}
    inFile.close();
	outFile.close();
	remove("account.dat");
	rename("Temp.dat","account.dat");
	cout<<"\n\nRecord Deleted ..";
}


void display_all()
{
	system("CLS");
	account ac;
	ifstream inFile;
	inFile.open("account.dat",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(inFile.read(reinterpret_cast<char *=""> (&ac), sizeof(account)))
	{
		ac.report();
	}
	inFile.close();
}


void deposit_withdraw(int n, int option)
{
	int amt;
	bool found=false;
	account ac;
	fstream File;
    File.open("account.dat", ios::binary|ios::in|ios::out);
	if(!File)
	{
		cout<<"File could not be open !! Press any Key...";
		return;
	}
	while(!File.eof() && found==false)
	{
		File.read(reinterpret_cast<char *=""> (&ac), sizeof(account));
		if(ac.retacno()==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;
				ac.dep(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=ac.retdeposit()-amt;
				if(bal<0)
					cout<<"Insufficience balance";
				else
					ac.draw(amt);
		      }
			int pos=(-1)*static_cast<int>(sizeof(ac));
			File.seekp(pos,ios::cur);//fn1353
			File.write(reinterpret_cast<char *=""> (&ac), sizeof(account));
			cout<<"\n\n\t\t\tRecord Updated";
			found=true;
	       }
         }
    File.close();
	if(found==false)
		cout<<"\n\n\t\t\tRecord Not Found ";
}


What I have tried:

I don't understand it especially starting from void write_account().
Posted
Updated 26-Nov-21 21:31pm
v3
Comments
merano99 27-Nov-21 6:46am
   
Are you shure that this code compiles?
I think several places will not:
e.g.
reinterpret_cast<char *="">
no.="" "<<acno;

That's not going to happen. You posted a LOT of code and explaining it line-by-line would take writing a small book. That's far too much to put into the little text boxes here.

Since you're looking for an explanation, you apparently didn't write the code. It would probably best if you talked to the person who did write it.
   
Comments
Zheng Ye 2021 27-Nov-21 1:17am
   
I don't understand how this code use the file handling starting from the void write_account()
NObody is goign to sit down and document an app for you: Do you have any idea how much work explaining code line by line is?
Every single line needs a paragraph of explanation! For example:
int next = r.Next();

Create a new variable called "next" which can hold a integer value. From the previously declared Random instance "r", call the "Next" method to get a new random number, and assign it to the "next" variable.

Can you imagine how long it would take us to explain even a very short code fragment like your example, line by line?

No. It is not going to happen. If you have a specific problem, then ask a question about it. But think first - would you want to sit down for 45 minutes and type up a line-by-line description for no good reason?


Quote:
I actually don't understand a few specific parts of the code not all of it. I afraid that you don't understand it if I just post the specific part. What I am trying to ask is why do we need to use reinterpret_cast<char *=""> (&ac), sizeof(account))? What does it do?


Start here: ostream::write - C++ Reference[^] and you'll find that ostream only supports one signature - it expects two parameters: a string to write and a count of the number of characters to write.

But what you are writing isn't a string: it's a class instance - so the reinterpret_cast tells the system to treat the account object as if it was a string so the function can be called: reinterpret_cast conversion - cppreference.com[^]
To be honest, it's a cheat, and if you use that code it'll probably come back to bite you later, and hard: if you expand or otherwise alter your Account class your data file will be useless, and there are variable types you could add to your class that will never work using that code.

Frankly, that code looks like someone grabbed chunks from a couple of dozen different student homework projects and bodged round the failures until they could hand it in: it's extremely poor quality. If you fished that out of the internet, I'd throw it back and run away screaming if I was you!
   
v2
Comments
Zheng Ye 2021 27-Nov-21 2:20am
   
I actually don't understand a few specific parts of the code not all of it. I afraid that you don't understand it if I just post the specific part. What I am trying to ask is why do we need to use reinterpret_cast<char *=""> (&ac), sizeof(account))? What does it do?
Zheng Ye 2021 27-Nov-21 6:54am
   
I get confused the way that person wrote this code. I have doubts about whether this code are correctly done or not. I actually finding ideas to create a c++ program for my school assignment. I just found it when I searching for project ideas.
OriginalGriff 27-Nov-21 7:12am
   
Throw it in the bin: try to write your own!

You'll learn something, and you won't submit a pile of crap that looks like a dozen students already submitted it ...

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900