C++ You are to design and implement bank account usage. It is up to you to inclu
ID: 3832778 • Letter: C
Question
C++
You are to design and implement bank account usage. It is up to you to include more or less bank account activities. A typical bank account will include: account number, name (first, last), checking balance/interest rate/last updated date, savings balance/interest rate/last updated date. The activities may include (not limited to): open an account; check balance; deposit to checking or saving; cash from checking or saving; transfer from checking/saving to saving/checking.
You will specify the program input and check the output. It is assumed that user will also enter the date of an activity (e.g., today's date).
Note: You code should use class(es) for the design and coding. You will decide how to calculate the interest earned (e.g., by days or months or years); If you would like to make the project simpler, you may skip the interest calculation (i.e., assuming interest rate = 0).
Explanation / Answer
#include<iostream.h>
#include<fstream.h>
#include<cctype.h>
#include<iomanip.h>
class acc //Class definition starts
{
int ano;
char name[100];
int dep;
char type;
public:
void create_acc(); //function to create a new account
void show_acc() const; //function to show account details
void modify(); //function to modify account details
void adep(int); //function to accept deposit amount
void draw(int); //function to subtract withdrawal amount
void report() const; //function to show data in tabular format
int retano() const; //For returning account number
int retbal() const; //For returning balance amount
char qtype() const; //For returning type of account
}; //Class definition ends
void acc::create_acc()
{
cout<<" Enter The Account Number :";
cin>>ano;
cout<<" Enter, Name of The Account Holder : ";
cin.ignore();
cin.getline(name,100);
cout<<" Enter Type of Account(Current/Savings) : ";
cin>>type;
cout<<" Enter The Initial amount(>=500 for Saving and >=1000 for current ) : ";
cin>>dep; // have set the minimum initial amount for savings be 500 & for current be 1000
cout<<" Congrats Account Has Been Created..";
}
void acc::show_acc() const
{
cout<<" Account Number : "<<ano;
cout<<" Account Holder Name : ";
cout<<name;
cout<<" Type of Account : "<<type;
cout<<" Balance amount : "<<dep;
}
void acc::modify()
{
cout<<" Account Number : "<<ano;
cout<<" Modify Account Holder Name : ";
cin.ignore();
cin.getline(name,100);
cout<<" Modify Type of Account : ";
cin>>type;
cout<<" Modify Balance amount : ";
cin>>dep;
}
void acc::adep(int x)
{
dep+=x;
}
void acc::draw(int x)
{
dep-=x;
}
void acc::report() const
{
cout<<ano<<setw(10)<<" "<<name<<setw(10)<<" "<<type<<setw(6)<<dep<<endl;
}
int acc::retano() const
{
return ano;
}
int acc::retbal() const
{
return dep;
}
char acc::qtype() const
{
return type;
}
void write_acc(); //function to write record in binary file
void display_sp(int); //function to display account details given by user
void modify_acc(int); //function to modify record of file
void delete_acc(int); //function to delete record of file
void display_all(); //function to display all account details
void dep_withdraw(int, int); // function to desposit/withdraw amount for given account
void intro(); //introductory screen function
int main()
{
char ch;
int num;
intro();
do
{
system("cls"); //Clear The Screen
cout<<" ACTION MENU";
cout<<" 01. NEW ACCOUNT";
cout<<" 02. DEPOSIT";
cout<<" 03. WITHDRAW";
cout<<" 04. BALANCE ENQUIRY";
cout<<" 05. COMPLETE ACCOUNT HOLDERS LIST";
cout<<" 06. CLOSE AN ACCOUNT";
cout<<" 07. MODIFY AN ACCOUNT";
cout<<" 08. EXIT";
cout<<" Select Your Option (1-8) ";
cin>>ch;
system("cls"); //Clear The Screen
switch(ch)
{
case '1':
write_acc();
break;
case '2':
cout<<" Enter The Account Number : "; cin>>num;
dep_withdraw(num, 1);
break;
case '3':
cout<<" Enter The Account Number : "; cin>>num;
dep_withdraw(num, 2);
break;
case '4':
cout<<" Enter The Account Number : "; cin>>num;
display_sp(num);
break;
case '5':
display_all();
break;
case '6':
cout<<" Enter The Account Number : "; cin>>num;
delete_acc(num);
break;
case '7':
cout<<" Enter The Account Number : "; cin>>num;
modify_acc(num);
break;
case '8':
cout<<" Thanks For Visiting Our Bank!";
break;
default :cout<<"";
}
cin.ignore();
cin.get();
}while(ch!='8');
return 0;
}// Function To write the account data to .dat file
void write_acc()
{
acc ac;
ofstream x;
x.open("info.dat",ios::binary|ios::app);
ac.create_acc();
x.write(reinterpret_cast<char *> (&ac), sizeof(acc));
x.close();
}
void display_sp(int n) //function to retrive a record from file stored
{
acc ac;
bool flag=false;
ifstream x;
x.open("info.dat",ios::binary);
if(!x)
{
cout<<"File could not be opened!! Press any Key to exit...";
return;
}
cout<<" BALANCE DETAILS ";
while(x.read(reinterpret_cast<char *> (&ac), sizeof(acc)))
{
if(ac.retano()==n)
{
ac.show_acc();
flag=true;
}
}
x.close();
if(flag==false)
cout<<" Account number does not exist";
}//function to modify record of an account which is stored in file
void modify_acc(int n)
{
bool found=false;
acc ac;
fstream x;
x.open("info.dat",ios::binary|ios::in|ios::out);
if(!x)
{
cout<<"File could not be open !! Press any Key...";
return;
}
while(!x.eof() && found==false)
{
x.read(reinterpret_cast<char *> (&ac), sizeof(acc));
if(ac.retano()==n)
{
ac.show_acc();
cout<<" Enter The New Details of account"<<endl;
ac.modify();
int pos=(-1)*static_cast<int>(sizeof(acc));
x.seekp(pos,ios::cur);
x.write(reinterpret_cast<char *> (&ac), sizeof(acc));
cout<<" Record Updated";
found=true;
}
}
x.close();
if(found==false)
cout<<" Record Not Found ";
}//function to delete a record from file
void delete_acc(int n)
{
acc ac;
ifstream x;
ofstream y;
x.open("info.dat",ios::binary);
if(!x)
{
cout<<"File could not be open !! Press any Key...";
return;
}
y.open("Temp.dat",ios::binary);
x.seekg(0,ios::beg);
while(x.read(reinterpret_cast<char *> (&ac), sizeof(acc)))
{
if(ac.retano()!=n)
{
y.write(reinterpret_cast<char *> (&ac), sizeof(acc));
}
}
x.close();
y.close();
remove("info.dat");
rename("Temp.dat","info.dat");
cout<<" Record Deleted ..";
}// function to display account details from the stored file
void display_all()
{
acc ac;
ifstream x;
x.open("info.dat",ios::binary);
if(!x)
{
cout<<"File could not be open !! Press any Key...";
return;
}
cout<<" ACCOUNT HOLDER LIST ";
cout<<"==================================================== ";
cout<<"A/c no. NAME Type Balance ";
cout<<"==================================================== ";
while(x.read(reinterpret_cast<char *> (&ac), sizeof(acc)))
{
ac.report();
}
x.close();
}// function to withdraw amout from the account
void dep_withdraw(int n, int option)
{
int amt;
bool found=false;
acc ac;
fstream x;
x.open("info.dat", ios::binary|ios::in|ios::out);
if(!x)
{
cout<<"File could not be open !! Press any Key...";
return;
}
while(!x.eof() && found==false)
{
x.read(reinterpret_cast<char *> (&ac), sizeof(acc));
if(ac.retano()==n)
{
ac.show_acc();
if(option==1)
{
cout<<" TO DEPOSITE AMOUNT ";
cout<<" Enter The amount to be deposited";
cin>>amt;
ac.adep(amt);
}
if(option==2)
{
cout<<" TO WITHDRAW AMOUNT ";
cout<<" Enter The amount to be withdraw";
cin>>amt;
int bal=ac.retbal()-amt;
if((bal<500 && ac.qtype()=='S') || (bal<1000 && ac.qtype()=='C'))
cout<<"Insufficience balance";
else
ac.draw(amt);
}
int pos=(-1)*static_cast<int>(sizeof(ac));
x.seekp(pos,ios::cur);
x.write(reinterpret_cast<char *> (&ac), sizeof(acc));
cout<<" Record Updated";
found=true;
}
}
x.close();
if(found==false)
cout<<" Record Not Found ";
}//The Entry/Welcome Screen
void intro()
{
cout<<" Press Enter To Continue........";
cin.get();
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.