learning from the course to build something substantial Project: A bank is build
ID: 3825445 • Letter: L
Question
learning from the course to build something substantial Project: A bank is building a new software in C. The requirements for this software are the following: account and a customer account. To start off the administrator account user must be "admin" (login), admin (password) The login screen should allow both administrator and Customer to login to the system Welcome to Online Banking/ATM System Enter your Customer Admin ID: 12345 OR admin Enter your Customer/Admin Password: XXXXX OR admin The administrator shall be able to login to the system. The system should detect when an administrator has logged in. Once logged in shelhe shall be able to see a menu as shown below Welcome to Online Banking/ATM System Administrator Menu Create Customer account 2 Change Password View Customer Info 4 Change Customer Info so Delete Customer account 6 Show Top 5 accounts Show customer accounts alphabetically 8) ExitExplanation / Answer
#include<iostream> //For Turbo C++, write iostream.h
#include<fstream> //For Turbo C++, write fstream.h
#include<cctype> //For Turbo C++, write cctype.h
#include<iomanip> //For Turbo C++, write iomanip.h
using namespace std;
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; //We 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<<" Welcome To XYZ BANK MANAGEMENT SYSTEM";
//Note: All the data of the new account entered will be stored in the disk
//So Please use with Admin Privilage for the compiled .exe, so that it could access the disk space
cout<<" Press Enter To Continue........";
cin.get();
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.