Thursday, December 22, 2016

Project: Banking System

Description: The C++ programs on BANKING SYSTEM has account class with data members like account number, name, deposit, withdraw amount and type of account. Customer data is stored in a binary file. A customer can deposit and withdraw amount in his account. User can create, modify and delete account.

Code:

#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
class Account
{
char name[30];
int deposit;
char type[10];
public:
long long account_no;
void getdata()
{
cout<<"Enter Name =";
cin.ignore();
cin.getline(name,30);
cout<<"Enter Type of Account =";
cin>>type;
cout<<"Enter Initial Deposit =";
cin>>deposit;
cout<<"Enter Account Number =";
cin>>account_no;
}
void putdata()
{   cout<<"\n*********************";
cout<<"\nName="<<name;
cout<<"\nAccount Number="<<account_no;
cout<<"\nBalance= "<<deposit;
cout<<"\nType= "<<type<<"\n";
}
void depposit()
{
int x;
cout<<"Enter Amount To Deposit =";
cin>>x;
deposit=deposit+x;
cout<<"\nAmount Deposited\nNew Balance is "<<deposit;
}
void withdraw()
{
int x;
cout<<"Enter Amount To Withdraw ";
cin>>x;
if(x<deposit)
{
deposit=deposit-x;
cout<<"\nNew Balance "<<deposit;
   }
   else
   {
    cout<<"\nNot Enough Balance";
}
   }
void modify()
{
cout<<"\nEnter Name =";
cin.ignore();
cin.getline(name,30);
cout<<"Enter Type of Account=";
cin>>type;
}
};
main()
{
    Account a;
    int password;
cout<<"\n****Welcome To Abc Bank****\n";
int x;
cout<<"\nEnter Password: ";
cin>>password;
if(password==1507623)
{   system("cls");
cout<<"\nChoose From Menu Below\n";
while(1)
{
cout<<"\n\nPress\n1. To Create An Account\n2. To Modify An Account\n3. To Display An Account\n4. To Delete An Account\n5. To Display All Accounts\n6. To Deposit Amount\n7. To Withdraw Amount\n8. To Exit\n";
cin>>x;
system("cls");
switch(x)
{
case 1:
{
ofstream fout("Banking.bin",ios::app | ios::binary);
cout<<"Enter Details\n";
a.getdata();
fout.write((char *)&a,sizeof(a));
fout.close();
break;
}
case 2:
   {
cout<<"Enter Account Number ";
   long long y;char ch;
   int flag=0;
   cin>>y;
   fstream file("Banking.bin",ios::in | ios::binary | ios::out);
while(file&&flag==0)
{  
file.read((char *)&a,sizeof(Account));
if(a.account_no==y)
{
cout<<"Enter New Details\n";
a.modify();
                     file.seekp(-(sizeof(Account)), ios::cur);
file.write((char *) &a,sizeof(Account));
flag=1;
}
}
if(flag==0)
{
cout<<"Invalid Account Number";
}
file.close();
   break;
}
                    case 3:

{
cout<<"\nEnter Account Nunber ";
long long y;
cin>>y;
ifstream fin("Banking.bin",ios::binary);
int flag=0;

while(fin&&flag==0)
{   fin.read((char *)&a,sizeof(Account));
if(a.account_no==y)
{
cout<<"\nDetails Are\n";
a.putdata();
flag=1;
}
}
if(flag==0)
{
cout<<"Invalid Account Number";
}
fin.close();
break;
}
   case 4:
               {
            cout<<"\nEnter Account Nunber ";
long long y;
cin>>y;
fstream fin("Banking.bin",ios::binary |ios::in);
fstream file("Bank2.bin",ios::binary | ios::out);
fin.seekg(0,ios::beg);
while(fin.read((char *)&a,sizeof(Account)))
{
if(a.account_no!=y)
{ file.write((char *)&a,sizeof(Account));}
}
fin.close();
file.close();
remove("Banking.bin");
rename("Bank2.bin","Banking.bin");
cout<<"\nRecord Deleted\n";
break;
               }

case 5:
{
ifstream fin("Banking.bin",ios::binary);
while(fin.read((char *)&a,sizeof(Account)))
{
a.putdata();
   }
   fin.close();
     break;
   }
case 6:
{
cout<<"\nEnter Account Nunber ";
long long y;
cin>>y;
fstream fin("Banking.bin",ios::binary | ios::in | ios::out);
int flag=0;
while(fin&&flag==0)
{   fin.read((char *)&a,sizeof(Account));
if(a.account_no==y)
{
  a.depposit();
                    fin.seekp(-(sizeof(Account)),ios::cur);
fin.write((char *)&a,sizeof(Account));
  flag=1;
}
   }
if(flag==0)
{
cout<<"Invalid Account Number";
}
          fin.close();
  break;
           }
case 7:
{
cout<<"\nEnter Account Nunber ";
long long y;
cin>>y;
fstream fin("Banking.bin",ios::binary | ios::in | ios::out);
int flag=0;
while(fin&&flag==0)
{   fin.read((char *)&a,sizeof(Account));
if(a.account_no==y)
{
 a.withdraw();
    fin.seekp(-(sizeof(Account)),ios::cur);
fin.write((char *)&a,sizeof(Account));
  flag=1;
}
   }
if(flag==0)
{
cout<<"Invalid Account Number";
}
     fin.close();
 break;
           }
                case 8:
    exit(1);
   default: cout<<"\a\nInvalid Choice \t Try Again";
    }
    }
}
else
{
cout<<"\a\nInvalid Password";
}
}

Output:

Wednesday, November 9, 2016

Pointer Arithmetic

Pointer Arithmetic involves the following operations
1.Increment / Decrement pointer
2.Addition  / Subtraction of integer
3.Subtraction of Two Pointers

Following Program Illustrates the Concept:

#include<iostream>
using namespace std;
main()
{
int a[3]={1,2,3};
int *p,*q;
p=&a[0];
q=&a[2];
//incrementing decrementing
cout<<"Value"<<"\t"<<"Address"<<"\n";
cout<<*p<<"\t"<<p<<"\n";
p++;
cout<<*p<<"\t"<<p<<"\n";
p--;
cout<<*p<<"\t"<<p<<"\n";
// addition and subtraction of integer
p+=2;
cout<<*p<<"\t"<<p<<"\n";
p-=2;
cout<<*p<<"\t"<<p<<"\n";
//subtaction of two pointers
cout<<"q-p= ";
cout<<q-p;
}

Output:




File Opening Modes App(append) vs Ate(at the end)

Both Ate and App makes the file pointer points to the end of file,but there is a difference in these two.
That during App mode we cannot change the position of pointer using seekg i.e "No Modify"
While in Ate mode we can change the position of pointer using seekg i.e "Modify Allowed".

Following Program Illustrates the concept:

#include<iostream>
#include<fstream>
using namespace std;
main()
{ int a;
fstream file("file.txt",ios::in|ios::out|ios::app);
    fstream file2("file2.txt",ios::in|ios::out|ios::ate);
file<<1507;
file2<<1507;
file.seekg(0,ios::beg);
file2.seekg(0,ios::beg);
file<<623;
file2<<623;
file.close();
file2.close();
}

Special Thanks To Miss Naina Thaman For This Program.

File Output:
file.txt:                                                                                file2.txt:


File Copying :)

Program To Copy The Contents of One File To Another ,so that other file is Identical Except Every Consecutive blank Space is replaced by Single Space.

#include<iostream>
#include<fstream>
using namespace std;
main()
{
ifstream fin("text.txt");
ofstream fout("text2.txt");
char c=fin.get(),d;
while(fin)
{
fout.put(c);
d=fin.get();
if(c==' '&&d==' ')
{
d=fin.get();
}
c=d;
}
}

File  Output:
Text.txt


Text2.txt

Sunday, November 6, 2016

File Pointers :)

Program To Illustrate the Concept of File Pointers :

#include<iostream>
#include<fstream>
using namespace std;
main()
{
char data[50];
cout<<"Enter Text ";
cin.getline(data,50);
ofstream fout("file1.txt",ios::out);
fout<<data;
fout.close();
cout<<"\nOpening The File\n";
ifstream fin("file1.txt",ios::in);
    fin.seekg(0,ios::end);
    int x=fin.tellg();
    cout<<"Total size "<<x<<" Bytes\n";
}

Output :



Thursday, November 3, 2016

FILE HANDLING :)

C++ Program to Illustrate the Concept of File Handling.

#include <iostream>
#include <fstream> //Header file for File Operations
using namespace std;
int main()
{
    int sal,age;
    char name[20];
    cout<<"Enter Name: ";
    cin>>name;
    cout<<"Enter Age: ";
    cin>>age;
    cout<<"Enter Salary: ";
    cin>>sal;
    cout<<"\n\nWriting to File..\n";

    ofstream fout;
    fout.open("employee.dat"); //Opening file "employee.dat"  for writing using open() Function
    fout<<name<<"\n"; //Writing Data to File
    fout<<age<<"\n";
    fout<<sal<<"\n\n";
    cout<<"\nClosing File..\n\n";
    fout.close(); //Closing File

    cout<<"Reading from File..\n\n";
    ifstream fin; //Opening file for Reading using open() Function
    fin>>name>>age>>sal; //Reading Data from File
    cout<<"Name: "<<name;
    cout<<"\nAge: "<<age;
    cout<<"\nSalary: "<<sal;
    cout<<"\n\nClosing File..\n";
    fin.close();
    return 0;
}



employee.dat File



Tuesday, November 1, 2016

Post Overloading Increment Operator

As we all know in operator overloading we overload operators so that they work on objects in same way as they work on built in datatypes.
Now We can overload some operators as Pre or Post
Pre Increment Click Here

In Post Increment we have to supply an integer type argument in operator definition so that compiler can distinguish between Post And Pre.
Following Program Illustrates The Above Concept:
#include<iostream>
using namespace std;
class sample
{
int a;
public:
sample()
{
cout<<"Enter The Number ";
cin>>a;
}
void operator ++(int)
{
a++;
}
void display()
{
cout<<a;
}
};
main()
{
sample n;
n++;
cout<<"After Incrementing  ";
n.display();
}
Output: