Thursday 12 September 2013



History of Programming Language:

1940s:
1943 - Plankalkül (Konrad Zuse), designed, but unimplemented for a half-century
1943 - ENIAC, Electric Numerical Integrator And Computer, machine-specific codeset appearing in 1948.
1949 - 1954 — a series of machine-specific mnemonic instruction sets, like ENIAC's, beginning in 1949 with C-10 for BINAC (which later evolved into UNIVAC).Each codeset, or instruction set, was tailored to a specific manufacturer.

1950-1967s:
1951 - Regional Assembly Language
1952 - Autocode
1954 - IPL (forerunner to LISP)
1955 - FLOW-MATIC (forerunner to COBOL)
1957 - FORTRAN (First compiler)
1957 - COMTRAN (forerunner to COBOL)
1958 - LISP
1958 - ALGOL 58
1959 - FACT (forerunner to COBOL)
1959 - COBOL
1959 - RPG
1962 - APL
1962 - Simula
1962 - SNOBOL
1963 - CPL (forerunner to C)
1964 - BASIC
1964 - PL/I
1966 - JOSS
1967 - BCPL (forerunner to C)

1968-1979:
1968 - Logo
1969 - B (forerunner to C)
1970 - Pascal
1970 - Forth
1972 - C (Dennis Ritche)
1972 - Smalltalk
1972 - Prolog
1973 - ML
1975 - Scheme
1978 - SQL (initially only a query language, later extended with programming constructs)

1980s:
1980 - C++ (as C with classes, name changed in July 1983)
1983 - Ada
1984 - Common Lisp
1984 - MATLAB
1985 - Eiffel
1986 - Objective-C
1986 - Erlang
1987 - Perl
1988 - Tcl
1988 - Mathematica
1989 - FL (Backus);

1990s:
1990 - Haskell
1991 - Python
1991 - Visual Basic
1993 - Ruby
1993 - Lua
1994 - CLOS (part of ANSI Common Lisp)
1995 - Java (1991-1992 its name oak)
1995 - Delphi (Object Pascal)
1995 - JavaScript
1995 - PHP
1996 - WebDNA
1997 - Rebol
1999 - D

2000-current era:
2000 - ActionScript
2001 - C#
2001 - Visual Basic .NET
2002 - F#
2003 - Groovy
2003 - Scala
2003 - Factor
2007 - Clojure
2009 - Go
2011 - Dart.....

Wednesday 14 August 2013

//**********************************************************
//    PROJECT BANKING

//**********************************************************
//**********************************************************
//  **********************  Raghav  **********************
// -----------------------  Project For BCA Final Year -----------------------
//**********************************************************

#include <iostream.h>
#include <fstream.h>
#include <process.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>



//**********************************************************
// THIS CLASS CONTAINS FUNCTIONS RELATED TO DRAW BOX ETC.
//**********************************************************

class shape
{
    public :
            void line_hor(int, int, int, char) ;
            void line_ver(int, int, int, char) ;
            void box(int,int,int,int,char) ;
} ;


//**********************************************************
// THIS CLASS CONTROL ALL THE FUNCTIONS IN THE MENU
//**********************************************************

class control
{
    public :
            void main_menu(void) ;
            void help(void) ;
    private :
            void edit_menu(void) ;
} ;


//**********************************************************
// THIS CLASS CONTAINS FUNCTIONS RELATED TO INITIAL DEPOSIT
//**********************************************************


class initial
{
    public :
            void add_to_file(int, char t_name[30], char t_address[60], float) ;
            void display_list(void) ;
            void delete_account(int) ;
            void update_balance(int, float) ;
            void modify(void) ;
            int  last_accno(void) ;
            int  found_account(int) ;
            char *return_name(int) ;
            char *return_address(int) ;
            float give_balance(int) ;
            int  recordno(int) ;
            void display(int) ;
    private :
            void  modify_account(int, char t_name[30], char t_address[60]) ;
            void  box_for_list(void) ;

            int   accno ;
            char  name[30], address[60] ;
            float balance ;
} ;


//**********************************************************
// THIS CLASS CONTAINS FUNCTIONS RELATED TO TRANSACTIONS
//**********************************************************


class account
{
    public :
            void new_account(void) ;
            void close_account(void) ;
            void display_account(void) ;
            void transaction(void) ;
            void clear(int,int) ;
    private :
            void  add_to_file(int, int, int, int, char, char t_type[10], float, float, float) ;
            void  delete_account(int) ;
            int   no_of_days(int, int, int, int, int, int) ;
            float calculate_interest(int, float) ;
            void  display(int) ;
            void  box_for_display(int) ;

            int   accno ;
            char  type[10] ;    // Cheque or Cash       //
            int   dd, mm, yy ;  // Date                 //
            char  tran ;        // Deposit or Withdraw  //
            float interest, amount, balance ;
} ;



//**********************************************************
// FUNCTION TO DRAW HORIZONTAL LINE
//**********************************************************


void shape :: line_hor(int column1, int column2, int row, char c)
{
    for ( column1; column1<=column2; column1++ )
    {
        gotoxy(column1,row) ;
        cout <<c ;
    }
}


//**********************************************************
// FUNCTION TO DRAW VERTICAL LINE
//***************************************************
*******

void shape :: line_ver(int row1, int row2, int column, char c)
{
    for ( row1; row1<=row2; row1++ )
    {
        gotoxy(column,row1) ;
        cout <<c ;
    }
}


//**********************************************************
// FUNCTION TO DRAW BOX LINE
//**********************************************************


void shape :: box(int column1, int row1, int column2, int row2, char c)
{
    char ch=218 ;
    char c1, c2, c3, c4 ;
    char l1=196, l2=179 ;
    if (c == ch)
    {
        c1=218 ;
        c2=191 ;
        c3=192 ;
        c4=217 ;
        l1 = 196 ;
        l2 = 179 ;
    }
    else
    {
        c1=c ;
        c2=c ;
        c3=c ;
        c4=c ;
        l1 = c ;
        l2 = c ;
    }
    gotoxy(column1,row1) ;
    cout<<c1 ;
    gotoxy(column2,row1) ;
    cout <<c2 ;
    gotoxy(column1,row2) ;
    cout <<c3 ;
    gotoxy(column2,row2) ;
    cout <<c4 ;
    column1++ ;
    column2-- ;
    line_hor(column1,column2,row1,l1) ;
    line_hor(column1,column2,row2,l1) ;
    column1-- ;
    column2++ ;
    row1++ ;
    row2-- ;
    line_ver(row1,row2,column1,l2) ;
    line_ver(row1,row2,column2,l2) ;
}


//**********************************************************
// FUNCTION TO DISPLAY MAIN MENU AND CALL OTHER FUNCTIONS
//**********************************************************


void control :: main_menu(void)
{
    char ch ;
    while (1)
    {
        clrscr() ;
        shape s ;

        s.box(10,5,71,21,219) ;
        s.box(9,4,72,22,218) ;
        textcolor(BLACK) ;
        textbackground(YELLOW) ;
        gotoxy(32,21);cprintf("    RAGHAV KUMAR RAJ ");
        gotoxy(32,25);cprintf("  BCA FINAL YEAR   ");
         textcolor(CYAN) ;
        textbackground(BLUE) ;
            gotoxy(32,7) ;
        cprintf(" B A N K I N G ") ;
        gotoxy(35,9) ;
        cprintf(" OPTIONS ") ;
        textcolor(YELLOW) ;
        textbackground(BLACK) ;
        gotoxy(30,11) ;
        cout <<"1: SEE ACCOUNT" ;
        gotoxy(30,12) ;
        cout <<"2: LIST OF ACCOUNTS" ;
        gotoxy(30,13) ;
        cout <<"3: TRANSACTIONS" ;
        gotoxy(30,14) ;
        cout <<"4: OPEN NEW ACCOUNT" ;
        gotoxy(30,15) ;
        cout <<"5: EDIT ACCOUNTS" ;
        gotoxy(30,16) ;
        cout <<"6: HELP" ;
        gotoxy(30,17) ;
        cout <<"0: QUIT" ;
        gotoxy(30,19) ;
        cout <<"Enter your choice: " ;
        ch = getche() ;
        if (ch == 27)
            break ;
        else
        if (ch == '1')
        {
            account a ;
            a.display_account() ;
        }
        else
        if (ch == '2')
        {
            initial ini ;
            ini.display_list() ;
        }
        else
        if (ch == '3')
        {
            account a ;
            a.transaction() ;
        }
        else
        if (ch == '4')
        {
            account a ;
            a.new_account() ;
        }
        else
        if (ch == '5')
            edit_menu() ;
        else
        if (ch == '6')
            help() ;
        else
        if (ch == '0')
            break ;
    }
    for (int i=25; i>=1; i--)
    {
        sleep(40) ;
        gotoxy(1,i) ; clreol() ;
    }
}


//**********************************************************
// FUNCTION TO DISPLAY EDIT MENU AND CALL OTHER FUNCTIONS
//**********************************************************

void control :: edit_menu(void)
{
    char ch ;
    while (1)
    {
        clrscr() ;
        shape s ;
        s.box(10,5,71,21,219) ;
        s.box(9,4,72,22,218) ;
        textcolor(RED) ;
        textbackground(BLUE) ;
        gotoxy(34,10) ;
        cprintf(" EDIT MENU ") ;
        textcolor(YELLOW) ;
        textbackground(BLACK) ;
        gotoxy(31,12) ;
        cout <<"1: MODIFY ACCOUNT" ;
        gotoxy(31,13) ;
        cout <<"2: CLOSE ACCOUNT" ;
        gotoxy(31,14) ;
        cout <<"0: QUIT" ;
        gotoxy(31,16) ;
        cout <<"Enter your choice: " ;
        ch = getche() ;
        if (ch == 27)
            break ;
        else
        if (ch == '1')
        {
            initial ini ;
            ini.modify() ;
            break ;
        }
        else
        if (ch == '2')
        {
            account a ;
            a.close_account() ;
            break ;
        }
        else
        if (ch == '0')
            break ;
    }
}


//**********************************************************
// FUNCTION TO DISPLAY HELP ABOUT PROJECT
//**********************************************************

void control :: help(void)
{
    clrscr() ;
    textcolor(RED+BLINK) ;textbackground(GREEN);
    gotoxy(18,2); cprintf("  P R O J E C T   F O R   B A N K I N G ") ;
    textcolor(BLACK);
    gotoxy(18,4); cprintf(" By- RAGHAV KUMAR RAJ  (BCA FINAL YEAR)");
    sleep(1) ;
    gotoxy(10,6);  cout <<"In  this  Project  you  can keep  records  of  daily  banking" ;
    sleep(1) ;
    gotoxy(10,7);  cout <<"transactions.               " ;
    sleep(1) ;
    gotoxy(10,9);  cout <<"    This  program is capable of holding any no. of  accounts." ;
    sleep(1) ;
    gotoxy(10,11); cout <<"- In the first option you can see the account of  a  particular" ;
    sleep(1) ;
    gotoxy(10,12); cout <<"  person by giving simply the account no. of that person." ;
    sleep(1) ;
    gotoxy(10,14); cout <<"- In second option you can see the list of all the accounts." ;
    sleep(1) ;
    gotoxy(10,16); cout <<"- Through third option you can operate banking transactions" ;
    sleep(1) ;
    gotoxy(10,17); cout <<"  (Deposit/Withdraw)." ;
    sleep(1) ;
    gotoxy(10,19); cout <<"- In Fourth option you can open new account." ;
    sleep(1) ;
    gotoxy(10,20); cout <<"  (NOTE: Opening amount should not be less than Rs.500/-)" ;
    sleep(1) ;
    gotoxy(10,22); cout <<"- In Fifth option you can modify or Delete any of the accounts." ;
    sleep(1) ;
    gotoxy(10,24); cout <<"- And the last option is to Quit the PROJECT (Exit to Dos).  " ;
    sleep(1) ;
    textcolor(MAGENTA+BLINK) ; textbackground(LIGHTGREEN) ;
    gotoxy(26,30) ; cprintf(" Press any key to continue ") ;
    textcolor(YELLOW) ; textbackground(BLACK) ;
    gotoxy(25,2) ;
   getch();
    for (int i=25; i>=1; i--)
    {
        sleep(1) ;
        gotoxy(1,i) ; clreol() ;
    }
}



//**********************************************************
// THIS FUNCTION RETURN LAST ACCOUNT NO. IN THE FILE
// INITIAL.DAT
//**********************************************************


int initial :: last_accno(void)
{
    fstream file ;
    file.open("c:\INITIAL.DAT", ios::in) ;
    file.seekg(0,ios::beg) ;
    int count=0 ;
    while (file.read((char *) this, sizeof(initial)))
        count = accno ;
    file.close() ;
    return count ;
}


//**********************************************************
// THIS FUNCTION RETURN RECORD NO. OF THE GIVEN ACCOUNT NO.
// IN THE FILE INITIAL.DAT
//**********************************************************


int initial :: recordno(int t_accno)
{
    fstream file ;
    file.open("INITIAL.DAT", ios::in) ;
    file.seekg(0,ios::beg) ;
    int count=0 ;
    while (file.read((char *) this, sizeof(initial)))
    {
        count++ ;
        if (t_accno == accno)
            break ;
    }
    file.close() ;
    return count ;
}


//**********************************************************
// THIS FUNCTION DISPLAY THE ACCOUNT FOR GIVEN ACCOUNT NO.
// FROM THE FILE INITIAL.DAT
//**********************************************************


void initial :: display(int t_accno)
{
    shape s ;
    s.box(8,7,73,11,219) ;
    fstream file ;
    file.open("INITIAL.DAT", ios::in) ;
    file.seekg(0,ios::beg) ;
    while (file.read((char *) this, sizeof(initial)))
    {
        if (t_accno == accno)
        {
            gotoxy(8,5) ;
            cout <<"ACCOUNT NO. " <<accno ;
            gotoxy(10,8) ;
            cout <<"Name    : "<<name ;
            gotoxy(10,9) ;
            cout <<"Address : " <<address ;
            gotoxy(10,10) ;
            cout <<"Balance : " <<balance ;
            break ;
        }
    }
    file.close() ;
}


//**********************************************************
// THIS FUNCTION RETURN NAME FOR THE GIVEN ACCOUNT NO.
// IN THE FILE INITIAL.DAT
//**********************************************************


char *initial :: return_name(int t_accno)
{
    fstream file ;
    file.open("INITIAL.DAT", ios::in) ;
    file.seekg(0,ios::beg) ;
    char t_name[30] ;
    while (file.read((char *) this, sizeof(initial)))
    {
        if (accno == t_accno)
        {
            strcpy(t_name,name) ;
            break ;
        }
    }
    file.close() ;
    return t_name ;
}


//**********************************************************
// THIS FUNCTION RETURN ADDRESS FOR THE GIVEN ACCOUNT NO.
// IN THE FILE INITIAL.DAT
//**********************************************************


char *initial :: return_address(int t_accno)
{
    fstream file ;
    file.open("INITIAL.DAT", ios::in) ;
    file.seekg(0,ios::beg) ;
    char t_address[60] ;
    while (file.read((char *) this, sizeof(initial)))
    {
        if (accno == t_accno)
        {
            strcpy(t_address,address) ;
            break ;
        }
    }
    file.close() ;
    return t_address ;
}


//**********************************************************
// THIS FUNCTION RETURN BALANCE FOR THE GIVEN ACCOUNT NO.
// IN THE FILE INITIAL.DAT
//**********************************************************


float initial :: give_balance(int t_accno)
{
    fstream file ;
    file.open("INITIAL.DAT", ios::in) ;
    file.seekg(0,ios::beg) ;
    float t_balance ;
    while (file.read((char *) this, sizeof(initial)))
    {
        if (accno == t_accno)
        {
            t_balance = balance ;
            break ;
        }
    }
    file.close() ;
    return t_balance ;
}


//**********************************************************
// THIS FUNCTION RETURN 1 IF THE GIVEN ACCOUNT NO. FOUND
// IN THE FILE INITIAL.DAT
//**********************************************************


int initial :: found_account(int t_accno)
{
    fstream file ;
    file.open("INITIAL.DAT", ios::in) ;
    file.seekg(0,ios::beg) ;
    int found=0 ;
    while (file.read((char *) this, sizeof(initial)))
    {
        if (accno == t_accno)
        {
            found = 1 ;
            break ;
        }
    }
    file.close() ;
    return found ;
}


//**********************************************************
// THIS FUNCTION DRAWS THE BOX FOR THE LIST OF ACCOUNTS
//**********************************************************


void initial :: box_for_list()
{
    shape s ;
    s.box(2,1,79,25,218) ;
    s.line_hor(3,78,3,196) ;
    s.line_hor(3,78,5,196) ;
    s.line_hor(3,78,23,196) ;
    textbackground(WHITE) ;
    gotoxy(3,4) ;
    for (int i=1; i<=76; i++) cprintf(" ") ;
    textbackground(BLACK) ;
    textcolor(RED) ; textbackground(WHITE) ;
    gotoxy(4,4) ;
    cprintf("ACCOUNT NO.          NAME OF PERSON                  BALANCE") ;
    textcolor(YELLOW) ; textbackground(BLACK) ;
    int d1, m1, y1 ;
    struct date d;
    getdate(&d);
    d1 = d.da_day ;
    m1 = d.da_mon ;
    y1 = d.da_year ;
    gotoxy(4,2) ;
    cout <<"Date: " <<d1 <<"/" <<m1 <<"/" <<y1 ;
}


//**********************************************************
// THIS FUNCTION DISPLAYS THE LIST OF ACCOUNTS IN FILE
// INITIAL.DAT
//**********************************************************


void initial :: display_list(void)
{
    clrscr() ;
    box_for_list() ;
    int row=6, flag ;
    fstream file ;
    file.open("INITIAL.DAT", ios::in) ;
    while (file.read((char *) this, sizeof(initial)))
    {
        flag = 0 ;
        sleep(1) ;
        gotoxy(7,row) ;
        cout <<accno ;
        gotoxy(25,row) ;
        cout <<name ;
        gotoxy(57,row) ;
        cout <<balance ;
        row++ ;
        if (row == 23)
        {
            flag = 1 ;
            row = 6 ;
            gotoxy(4,24) ;
            cout <<"Press any key to continue..." ;
            getch() ;
            clrscr() ;
            box_for_list() ;
        }
    }
    file.close() ;
    if (!flag)
    {
        gotoxy(4,24) ;
        cout <<"Press any key to continue..." ;
        getch() ;
    }
}


//**********************************************************
// THIS FUNCTION ADDS THE GIVEN DATA INTO THE FILE
// INITIAL.DAT
//**********************************************************


void initial :: add_to_file(int t_accno, char t_name[30], char t_address[60], float t_balance)
{
    accno = t_accno ;
    strcpy(name,t_name) ;
    strcpy(address,t_address) ;
    balance = t_balance ;
    fstream file ;
    file.open("INITIAL.DAT", ios::out | ios::app) ;
    file.write((char *) this, sizeof(initial)) ;
    file.close() ;
}


//**********************************************************
// THIS FUNCTION DELETES RECORD FOR THE GIVEN ACOUNT NO.
// FROM THE FILE INITIAL.DAT
//**********************************************************


void initial :: delete_account(int t_accno)
{
    fstream file ;
    file.open("INITIAL.DAT", ios::in) ;
    fstream temp ;
    temp.open("temp.dat", ios::out) ;
    file.seekg(0,ios::beg) ;
    while ( !file.eof() )
    {
        file.read((char *) this, sizeof(initial)) ;
        if ( file.eof() )
            break ;
        if ( accno != t_accno )
            temp.write((char *) this, sizeof(initial)) ;
    }
    file.close() ;
    temp.close() ;
    file.open("INITIAL.DAT", ios::out) ;
    temp.open("temp.dat", ios::in) ;
    temp.seekg(0,ios::beg) ;
    while ( !temp.eof() )
    {
        temp.read((char *) this, sizeof(initial)) ;
        if ( temp.eof() )
            break ;
        file.write((char *) this, sizeof(initial)) ;
    }
    file.close() ;
    temp.close() ;
}


//**********************************************************
// THIS FUNCTION UPDATE BALANCE FOR THE GIVEN ACOUNT NO.
// IN THE FILE INITIAL.DAT
//**********************************************************


void initial :: update_balance(int t_accno, float t_balance)
{
    int recno ;
    recno = recordno(t_accno) ;
    fstream file ;
    file.open("INITIAL.DAT", ios::out | ios::ate) ;
    balance = t_balance ;
    int location ;
    location = (recno-1) * sizeof(initial) ;
    file.seekp(location) ;
    file.write((char *) this, sizeof(initial)) ;
    file.close() ;
}


//**********************************************************
// THIS FUNCTION MODIFIES THE RECORD FOR THE GIVEN DATA
// IN THE FILE INITIAL.DAT
//**********************************************************


void initial :: modify_account(int t_accno, char t_name[30], char t_address[60])
{
    int recno ;
    recno = recordno(t_accno) ;
    fstream file ;
    file.open("INITIAL.DAT", ios::out | ios::ate) ;
    strcpy(name,t_name) ;
    strcpy(address,t_address) ;
    int location ;
    location = (recno-1) * sizeof(initial) ;
    file.seekp(location) ;
    file.write((char *) this, sizeof(initial)) ;
    file.close() ;
}


//**********************************************************
// THIS FUNCTION GIVE THE DATA TO MODIFY THE RECORD IN THE
// FILE INITIAL.DAT
//**********************************************************


void initial :: modify(void)
{
    clrscr() ;
    char t_acc[10] ;
    int t, t_accno ;
    gotoxy(71,1) ;
    cout <<"<0>=Exit" ;
    gotoxy(5,5) ;
    cout <<"Enter the account no. " ;
    gets(t_acc) ;
    t = atoi(t_acc) ;
    t_accno = t ;
    if (t_accno == 0)
        return ;
    clrscr() ;
    if (!found_account(t_accno))
    {
        gotoxy(5,5) ;
        cout <<"\7Account not found" ;
        getch() ;
        return ;
    }
    shape s ;
    s.box(2,2,79,24,218) ;
    s.line_hor(3,78,4,196) ;
    s.line_hor(3,78,22,196) ;
    gotoxy(71,1) ;
    cout <<"<0>=Exit" ;
    textbackground(BLUE) ;
    gotoxy(3,3) ;
    for (int i=1; i<=76; i++) cprintf(" ") ;
    textbackground(BLACK) ;
    textcolor(RED+BLINK) ; textbackground(BLUE) ;
    gotoxy(30,3) ;
    cprintf("MODIFY ACCOUNT SCREEN") ;
    textcolor(YELLOW) ; textbackground(BLACK) ;
    int d1, m1, y1 ;
    struct date d;
    getdate(&d);
    d1 = d.da_day ;
    m1 = d.da_mon ;
    y1 = d.da_year ;
    gotoxy(62,5) ;
    cout <<"Date: "<<d1 <<"/" <<m1 <<"/" <<y1 ;
    char ch ;
    display(t_accno) ;
    account a ;
    do
    {
        a.clear(5,13) ;
        gotoxy(5,13) ;
        cout <<"Modify this account (y/n): " ;
        ch = getche() ;
        if (ch == '0')
            return ;
        ch = toupper(ch) ;
    } while (ch != 'N' && ch != 'Y') ;
    if (ch == 'N')
        return ;
    int modified=0, valid ;
    char t_name[30], t_address[60] ;
    gotoxy(5,15) ;
    cout <<"Name    : " ;
    gotoxy(5,16) ;
    cout <<"Address : " ;
    do
    {
        a.clear(15,15) ;
        a.clear(5,23) ;
        gotoxy(5,23) ;
        cout <<"ENTER NAME " ;
        valid = 1 ;
        gotoxy(15,15) ;
        gets(t_name) ;
        strupr(t_name) ;
        if (t_name[0] == '0')
            return ;
        if (strlen(t_name) > 25)
        {
            valid = 0 ;
            gotoxy(5,23) ;
            cprintf("\7NAME SHOULD NOT GREATER THAN 25") ;
            getch() ;
        }
    } while (!valid) ;
    if (strlen(t_name) > 0)
        modified = 1 ;
    do
    {
        a.clear(15,16) ;
        a.clear(5,23) ;
        gotoxy(5,23) ;
        cout <<"ENTER ADDRESS " ;
        valid = 1 ;
        gotoxy(15,16) ;
        gets(t_address) ;
        strupr(t_address) ;
        if (t_address[0] == '0')
            return ;
        if (strlen(t_address) > 55)
        {
            valid = 0 ;
            gotoxy(5,23) ;
            cprintf("\7SHOULD NOT BLANK OR GREATER THAN 55") ;
            getch() ;
        }
    } while (!valid) ;
    if (strlen(t_address) > 0)
        modified = 1 ;
    if (!modified)
        return ;
    a.clear(5,23) ;
    do
    {
        a.clear(5,18) ;
        gotoxy(5,18) ;
        cout <<"Do you want to save changes (y/n): " ;
        ch = getche() ;
        if (ch == '0')
            return ;
        ch = toupper(ch) ;
    } while (ch != 'N' && ch != 'Y') ;
    if (ch == 'N')
        return ;
    modify_account(t_accno,t_name,t_address) ;
    gotoxy(5,21) ;
    cout <<"\7Record Modified" ;
    gotoxy(5,23) ;
    cout <<"Press any key to continue..." ;
    getch() ;
}


//**********************************************************
// THIS FUNCTION CLEAR THE GIVEN ROW AND COLUMNS
//**********************************************************


void account :: clear(int col, int row)
{
    for (int i=col; i<=78; i++)
    {
        gotoxy(i,row) ;
        cout <<" " ;
    }
}


//**********************************************************
// THIS FUNCTION ADDS THE GIVEN DATA INTO THE FILE
// BANKING.DAT
//**********************************************************


void account :: add_to_file(int t_accno, int d1, int m1, int y1, char t_tran, char t_type[10], float t_interest, float t_amount, float t_balance)
{
    fstream file ;
    file.open("BANKING.DAT", ios::app) ;
    accno = t_accno ;
    dd = d1 ;
    mm = m1 ;
    yy = y1 ;
    tran = t_tran ;
    strcpy(type,t_type) ;
    interest = t_interest ;
    amount = t_amount ;
    balance = t_balance ;
    file.write((char *) this, sizeof(account)) ;
    file.close() ;
}


//**********************************************************
// THIS FUNCTION DELETES THE RECORD FOR GIVIN ACCOUNT NO.
// FROM FILE BANKING.DAT
//**********************************************************


void account :: delete_account(int t_accno)
{
    fstream file ;
    file.open("BANKING.DAT", ios::in) ;
    fstream temp ;
    temp.open("temp.dat", ios::out) ;
    file.seekg(0,ios::beg) ;
    while ( !file.eof() )
    {
        file.read((char *) this, sizeof(account)) ;
        if ( file.eof() )
            break ;
        if ( accno != t_accno )
            temp.write((char *) this, sizeof(account)) ;
    }
    file.close() ;
    temp.close() ;
    file.open("BANKING.DAT", ios::out) ;
    temp.open("temp.dat", ios::in) ;
    temp.seekg(0,ios::beg) ;
    while ( !temp.eof() )
    {
        temp.read((char *) this, sizeof(account)) ;
        if ( temp.eof() )
            break ;
        file.write((char *) this, sizeof(account)) ;
    }
    file.close() ;
    temp.close() ;
}


//**********************************************************
// THIS FUNCTION ACCEPTS THE DATA TO ADD RECORDS IN THE
// FILE BANKING.DAT
//**********************************************************


void account :: new_account(void)
{
    char ch ;
    int i, valid ;
    clrscr() ;
    initial ini ;
    shape s ;
    s.box(2,2,79,24,218) ;
    s.line_hor(3,78,4,196) ;
    s.line_hor(3,78,22,196) ;
    gotoxy(71,1) ;
    cout <<"<0>=Exit" ;
    textbackground(BLUE) ;
    gotoxy(3,3) ;
    for (i=1; i<=76; i++) cprintf(" ") ;
    textbackground(BLACK) ;
    textcolor(RED+BLINK) ; textbackground(BLUE) ;
    gotoxy(32,3) ;
    cprintf("OPEN NEW ACCOUNT") ;
    textcolor(YELLOW) ; textbackground(BLACK) ;

    int d1, m1, y1 ;
    struct date d;
    getdate(&d);
    d1 = d.da_day ;
    m1 = d.da_mon ;
    y1 = d.da_year ;
    int t_accno ;
    t_accno = ini.last_accno() ;
    t_accno++ ;
    if (t_accno == 1)
    {
        ini.add_to_file(t_accno,"abc","xyz",1.1) ;
        ini.delete_account(t_accno) ;
        add_to_file(t_accno,1,1,1997,'D',"INITIAL",1.1,1.1,1.1) ;
        delete_account(t_accno) ;
    }
    char t_name[30], t[10], t_address[60] ;
    float t_bal=0.0, t_balance=0.0 ;

    gotoxy(5,6) ;
    cout <<"Date : "<<d1 <<"/" <<m1 <<"/" <<y1 ;
    gotoxy(5,8) ;
    cout <<"Account no. # " <<t_accno ;
    gotoxy(5,10) ;
    cout <<"Name    : " ;
    gotoxy(5,11) ;
    cout <<"Address : " ;
    gotoxy(5,12) ;
    cout <<"Name of Verifying person : " ;
    gotoxy(5,14) ;
    cout <<"Initial Deposit : " ;
    do
    {
        clear(15,10) ;
        clear(5,23) ;
        gotoxy(5,23) ;
        cout <<"ENTER NAME OF THE PERSON" ;
        valid = 1 ;
        gotoxy(15,10) ;
        gets(t_name) ;
        strupr(t_name) ;
        if (t_name[0] == '0')
            return ;
        if (strlen(t_name) == 0 || strlen(t_name) > 25)
        {
            valid = 0 ;
            gotoxy(5,23) ;
            cprintf("\7NAME SHOULD NOT BLANK OR GREATER THAN 25") ;
            getch() ;
        }
    } while (!valid) ;
    do
    {
        clear(15,11) ;
        clear(5,23) ;
        gotoxy(5,23) ;
        cout <<"ENTER ADDRESS OF THE PERSON" ;
        valid = 1 ;
        gotoxy(15,11) ;
        gets(t_address) ;
        strupr(t_address) ;
        if (t_address[0] == '0')
            return ;
        if (strlen(t_address) == 0 || strlen(t_address) > 55)
        {
            valid = 0 ;
            gotoxy(5,23) ;
            cprintf("\7SHOULD NOT BLANK OR GREATER THAN 55") ;
            getch() ;
        }
    } while (!valid) ;
    do
    {
        char vari[30] ;
        clear(31,12) ;
        clear(5,23) ;
        gotoxy(5,23) ;
        cout <<"ENTER NAME OF THE VERIFYING PERSON" ;
        valid = 1 ;
        gotoxy(31,12) ;
        gets(vari) ;
        strupr(vari) ;
        if (vari[0] == '0')
            return ;
        if (strlen(vari) == 0 || strlen(vari) > 25)
        {
            valid = 0 ;
            gotoxy(5,23) ;
            cprintf("\7SHOULD NOT BLANK OR GREATER THAN 25") ;
            getch() ;
        }
    } while (!valid) ;
    do
    {
        clear(23,14) ;
        clear(5,23) ;
        gotoxy(5,23) ;
        cout <<"ENTER INITIAL AMOUNT TO BE DEPOSIT" ;
        valid = 1 ;
        gotoxy(23,14) ;
        gets(t) ;
        t_bal = atof(t) ;
        t_balance = t_bal ;
        if (t[0] == '0')
            return ;
        if (t_balance < 500)
        {
            valid = 0 ;
            gotoxy(5,23) ;
            cprintf("\7SHOULD NOT LESS THAN 500          ") ;
            getch() ;
        }
    } while (!valid) ;
    clear(5,23) ;
    do
    {
        clear(5,17) ;
        valid = 1 ;
        gotoxy(5,17) ;
        cout <<"Do you want to save the record (y/n) : " ;
        ch = getche() ;
        if (ch == '0')
            return ;
        ch = toupper(ch) ;
    } while (ch != 'N' && ch != 'Y') ;
    if (ch == 'N')
        return ;
    float t_amount, t_interest ;
    t_amount = t_balance ;
    t_interest = 0.0 ;
    char t_tran, t_type[10] ;
    t_tran = 'D' ;
    strcpy(t_type,"INITIAL") ;
    ini.add_to_file(t_accno,t_name,t_address,t_balance) ;
    add_to_file(t_accno,d1,m1,y1,t_tran,t_type,t_interest,t_amount,t_balance) ;
}


//**********************************************************
// THIS FUNCTION DRAWS THE BOX FOR DISPLAYING RECORD FROM
// FILE BANKING.DAT
//**********************************************************


void account :: box_for_display(int t_accno)
{
    shape s ;
    s.box(2,1,79,25,218) ;
    s.line_hor(3,78,4,196) ;
    s.line_hor(3,78,6,196) ;
    s.line_hor(3,78,23,196) ;
    textbackground(BLUE) ;
    gotoxy(3,5) ;
    for (int i=1; i<=76; i++) cprintf(" ") ;
    textbackground(BLUE) ;
    textcolor(RED) ; textbackground(BLUE) ;
    gotoxy(4,5) ;
    cprintf("DATE        PARTICULAR    DEPOSIT     WITHDRAW    INTEREST    BALANCE") ;
    textcolor(YELLOW) ; textbackground(BLACK) ;
    int d1, m1, y1 ;
    struct date d;
    getdate(&d);
    d1 = d.da_day ;
    m1 = d.da_mon ;
    y1 = d.da_year ;
    gotoxy(63,2) ;
    cout <<"Date: " <<d1 <<"/" <<m1 <<"/" <<y1 ;
    gotoxy(4,2) ;
    cout <<"Account no. " <<t_accno ;
    initial ini ;
    char t_name[30] ;
    strcpy(t_name,ini.return_name(t_accno)) ;
    char t_address[60] ;
    strcpy(t_address,ini.return_address(t_accno)) ;
    gotoxy(25,2) ;
    cout <<t_name ;
    gotoxy(25,3) ;
    cout <<t_address ;
}


//**********************************************************
// THIS FUNCTION DISPLAY RECORD FROM THE FILE BANKING.DAT
//**********************************************************


void account :: display_account(void)
{
    clrscr() ;
    char t_acc[10] ;
    int t, t_accno ;
    gotoxy(71,1) ;
    cout <<"<0>=Exit" ;
    gotoxy(5,5) ;
    cout <<"Enter the account no. " ;
    gets(t_acc) ;
    t = atoi(t_acc) ;
    t_accno = t ;
    if (t_accno == 0)
        return ;
    clrscr() ;
    initial ini ;
/*    if (!ini.found_account(t_accno))
    {
        gotoxy(5,5) ;
        cout <<"\7Account not found" ;
        getch() ;
        return ;
    } */
    box_for_display(t_accno) ;
    int row=7, flag ;
    fstream file ;
    file.open("BANKING.DAT", ios::in) ;
    while (file.read((char *) this, sizeof(account)))
    {
        if (accno == t_accno)
        {
            flag = 0 ;
            sleep(10) ;
            gotoxy(4,row) ;
            cout <<dd <<"/" <<mm <<"/" <<yy ;
            gotoxy(16,row) ;
            cout <<type ;
            if (tran == 'D')
                gotoxy(30,row) ;
            else
                gotoxy(42,row) ;
            cout <<amount ;
            gotoxy(56,row) ;
            cout <<interest;
            gotoxy(66,row) ;
            cout <<balance ;
            row++ ;
            if (row == 23)
            {
                flag = 1 ;
                row = 7 ;
                gotoxy(4,24) ;
                cout <<"Press any key to continue..." ;
                getch() ;
                clrscr() ;
                box_for_display(t_accno) ;
            }
        }
    }
    file.close() ;
    if (!flag)
    {
        gotoxy(4,24) ;
        cout <<"Press any key to continue..." ;
        getch() ;
    }

}


//**********************************************************
// THIS FUNCTION RETURNS THE DIFFERENCE BETWEEN 2 DATES.
//**********************************************************


int account :: no_of_days(int d1, int m1, int y1, int d2, int m2, int y2)
{
    static int month[] = {31,28,31,30,31,30,31,31,30,31,30,31} ;
    int days = 0 ;
    while (d1 != d2 || m1 != m2 || y1 != y2)
    {
        days++ ;
        d1++ ;
        if (d1 > month[m1-1])
        {
            d1 = 1 ;
            m1++ ;
        }
        if (m1 > 12)
        {
            m1 = 1 ;
            y1++ ;
        }
    }
    return days ;
}


//**********************************************************
// THIS FUNCTION CALCULATES INTEREST.
//**********************************************************


float account :: calculate_interest(int t_accno, float t_balance)
{
    fstream file ;
    file.open("BANKING.DAT", ios::in) ;
    file.seekg(0,ios::beg) ;
    int d1, m1, y1, days ;
    while (file.read((char *) this, sizeof(account)))
    {
        if (accno == t_accno)
        {
            d1 = dd ;
            m1 = mm ;
            y1 = yy ;
            break ;
        }
    }
    int d2, m2, y2 ;
    struct date d;
    getdate(&d);
    d2 = d.da_day ;
    m2 = d.da_mon ;
    y2 = d.da_year ;
    float t_interest=0.0 ;
    if ((y2<y1) || (y2==y1 && m2<m1) || (y2==y1 && m2==m1 && d2<d1))
        return t_interest ;
    days = no_of_days(d1,m1,y1,d2,m2,y2) ;
    int months=0 ;
    if (days >= 30)
    {
        months = days/30 ;
        t_interest = ((t_balance*2)/100) * months ;
    }
    file.close() ;
    return t_interest ;
}


//**********************************************************
// THIS FUNCTION MAKES TRANSACTIONS (DEPOSIT/WITHDRAW).
//**********************************************************


void account :: transaction(void)
{
    clrscr() ;
    char t_acc[10] ;
    int t, t_accno, valid ;
    gotoxy(71,1) ;
    cout <<"<0>=Exit" ;
    gotoxy(5,5) ;
    cout <<"Enter the account no. " ;
    gets(t_acc) ;
    t = atoi(t_acc) ;
    t_accno = t ;
    if (t_accno == 0)
        return ;
    clrscr() ;
    initial ini ;
    if (!ini.found_account(t_accno))
    {
        gotoxy(5,5) ;
        cout <<"\7Account not found" ;
        getch() ;
        return ;
    }
    shape s ;
    s.box(2,2,79,24,218) ;
    s.line_hor(3,78,4,196) ;
    s.line_hor(3,78,22,196) ;
    gotoxy(71,1) ;
    cout <<"<0>=Exit" ;
    textbackground(BLUE) ;
    gotoxy(3,3) ;
    for (int i=1; i<=76; i++) cprintf(" ") ;
    textbackground(BLACK) ;
    textcolor(RED+BLINK) ; textbackground(BLUE) ;
    gotoxy(29,3) ;
    cprintf("TRANSACTION IN ACCOUNT") ;
    textcolor(YELLOW) ; textbackground(BLACK) ;
    int d1, m1, y1 ;
    struct date d;
    getdate(&d);
    d1 = d.da_day ;
    m1 = d.da_mon ;
    y1 = d.da_year ;
    gotoxy(5,6) ;
    cout <<"Date : "<<d1 <<"/" <<m1 <<"/" <<y1 ;
    gotoxy(5,8) ;
    cout <<"Account no. # " <<t_accno ;
    char t_name[30] ;
    char t_address[60] ;
    float t_balance ;
    strcpy(t_name,ini.return_name(t_accno)) ;
    strcpy(t_address,ini.return_address(t_accno)) ;
    t_balance = ini.give_balance(t_accno) ;
    s.box(25,10,75,13,218) ;
    gotoxy(27,11) ;
    cout <<"Name   : " <<t_name ;
    gotoxy(27,12) ;
    cout <<"Address: " <<t_address ;
    gotoxy(5,15) ;
    cout <<"Last Balance : Rs." <<t_balance ;
    char  t_tran, t_type[10], tm[10] ;
    float t_amount, t_amt ;
    do
    {
        clear(5,18) ;
        valid = 1 ;
        gotoxy(5,18) ;
        cout <<"Deposit or Withdraw (D/W) : " ;
        t_tran = getche() ;
        if (t_tran == '0')
            return ;
        t_tran = toupper(t_tran) ;
    } while (t_tran != 'D' && t_tran != 'W') ;
    do
    {
        clear(5,19) ;
        clear(5,23) ;
        gotoxy(5,23) ;
        cout <<"ENTER TRANSACTION BY CASH OR CHEQUE" ;
        valid = 1 ;
        gotoxy(5,19) ;
        cout <<"(Cash/Cheque) : " ;
        gets(t_type) ;
        strupr(t_type) ;
        if (t_type[0] == '0')
            return ;
        if (strcmp(t_type,"CASH") && strcmp(t_type,"CHEQUE"))
        {
            valid = 0 ;
            gotoxy(5,23) ;
            cprintf("\7ENTER CORRECTLY                       ") ;
            getch() ;
        }
    } while (!valid) ;
    do
    {
        clear(5,21) ;
        clear(5,23) ;
        gotoxy(5,23) ;
        cout <<"ENTER AMOUNT FOR TRANSACTION" ;
        valid = 1 ;
        gotoxy(5,21) ;
        cout <<"Amount : Rs." ;
        gets(tm) ;
        t_amt = atof(tm) ;
        t_amount = t_amt ;
        if (tm[0] == '0')
            return ;
        if ((t_tran == 'W' && t_amount > t_balance) || (t_amount < 1))
        {
            valid = 0 ;
            gotoxy(5,23) ;
            cprintf("\7INVALID DATA ENTERED               ") ;
            getch() ;
        }
    } while (!valid) ;
    char ch ;
    clear(5,23) ;
    do
    {
        clear(40,20) ;
        valid = 1 ;
        gotoxy(40,20) ;
        cout <<"Save transaction (y/n): " ;
        ch = getche() ;
        if (ch == '0')
            return ;
        ch = toupper(ch) ;
    } while (ch != 'N' && ch != 'Y') ;
    if (ch == 'N')
        return ;
    float t_interest ;
    t_interest = calculate_interest(t_accno,t_balance) ;
    if (t_tran == 'D')
        t_balance = t_balance + t_amount + t_interest ;
    else
        t_balance = (t_balance - t_amount) + t_interest ;
    ini.update_balance(t_accno,t_balance) ;
    add_to_file(t_accno,d1,m1,y1,t_tran,t_type,t_interest,t_amount,t_balance) ;
}


//**********************************************************
// THIS FUNCTION CLOSE THE ACCOUNT (DELETE ACCOUNT).
//**********************************************************


void account :: close_account(void)
{
    clrscr() ;
    char t_acc[10] ;
    int t, t_accno ;
    gotoxy(71,1) ;
    cout <<"<0>=Exit" ;
    gotoxy(5,5) ;
    cout <<"Enter the account no. " ;
    gets(t_acc) ;
    t = atoi(t_acc) ;
    t_accno = t ;
    if (t_accno == 0)
        return ;
    clrscr() ;
    initial ini ;
    if (!ini.found_account(t_accno))
    {
        gotoxy(5,5) ;
        cout <<"\7Account not found" ;
        getch() ;
        return ;
    }
    shape s ;
    s.box(2,2,79,24,218) ;
    s.line_hor(3,78,4,196) ;
    s.line_hor(3,78,22,196) ;
    gotoxy(71,1) ;
    cout <<"<0>=Exit" ;
    textbackground(BLUE) ;
    gotoxy(3,3) ;
    for (int i=1; i<=76; i++) cprintf(" ") ;
    textbackground(BLACK) ;
    textcolor(RED+BLINK) ; textbackground(BLUE) ;
    gotoxy(30,3) ;
    cprintf("CLOSE ACCOUNT SCREEN") ;
    textcolor(YELLOW) ; textbackground(BLACK) ;
    int d1, m1, y1 ;
    struct date d;
    getdate(&d);
    d1 = d.da_day ;
    m1 = d.da_mon ;
    y1 = d.da_year ;
    gotoxy(62,5) ;
    cout <<"Date: "<<d1 <<"/" <<m1 <<"/" <<y1 ;
    char ch ;
    ini.display(t_accno) ;
    do
    {
        clear(5,15) ;
        gotoxy(5,15) ;
        cout <<"Close this account (y/n): " ;
        ch = getche() ;
        if (ch == '0')
            return ;
        ch = toupper(ch) ;
    } while (ch != 'N' && ch != 'Y') ;
    if (ch == 'N')
        return ;
    ini.delete_account(t_accno) ;
    delete_account(t_accno) ;
    gotoxy(5,20) ;
    cout <<"\7Record Deleted" ;
    gotoxy(5,23) ;
    cout <<"Press any key to continue..." ;
    getch() ;
}


//************************************************************
// THIS IS MAIN FUNCTION CALLING HELP AND MAIN MENU FUNCTIONS
//************************************************************



void main(void)
{
    control c ;
    c.help();
    c.main_menu() ;
}
// A Simple Java Project to Store and manage Students Records
import java.util.Scanner;
import java.io.*;
class Student1
{
  String name[]=new String[45];
  int roll[]=new int[45];
  String add[]=new String[45];
  String course[]=new String[45];
  long fee_deposit[]= new long[45];
  long dues[]=new long[45];
  long total[]=new long[45];
  long MCA_fee = 500000L;
  long BCA_fee = 300000L;
  long BTech_fee = 500000L;
  long MTech_fee = 300000L;
  long MBA_fee = 300000L;
  int length;
  static int i;
  static int m;
  void length(int ln){ length = ln; }
  
   void Input()
  {
      Scanner sc = new Scanner(System.in);
      //BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      for( ; true ; i++)
      {
          System.out.print("Enter Name : ");
          name[i] =  sc.next();
          System.out.print("\nEnter Roll : ");
          roll[i] = sc.nextInt();
          System.out.print("\nEnter Address : ");
          add[i] = sc.next();
          Fee_Structure();
          System.out.print("\nEnter Course : ");
          course[i] = sc.next();
          if(course[i].equalsIgnoreCase("MCA"))
          {
              total[i] = MCA_fee;
              System.out.print("\nFee Structure for MCA is : "+MCA_fee);
              System.out.print("\nEnter Deposited Fee : ");
              fee_deposit[i] = sc.nextLong();
          }
          else if(course[i].equalsIgnoreCase("BCA"))
          {
              total[i] = BCA_fee;
              System.out.print("\nFee Structure For BCA is : "+BCA_fee);
              System.out.print("\nEnter Deposited Fee : ");
              fee_deposit[i] = sc.nextLong();
          }
          else if(course[i].equalsIgnoreCase("BTech"))
          {
              total[i] = BTech_fee;
              System.out.print("\nFee Structure For BTech is : "+BTech_fee);
              System.out.print("\nEnter Deposited Fee : ");
              fee_deposit[i] = sc.nextLong();
          }
          else if(course[i].equalsIgnoreCase("MTech"))
          {
              total[i] = MTech_fee;
              System.out.print("\nFee Structure For MTech is : "+MTech_fee);
              System.out.print("\nEnter Deposited Fee : ");
              fee_deposit[i] = sc.nextLong();
          }
          else if(course[i].equalsIgnoreCase("MBA"))
          {
              total[i] = MBA_fee;
              System.out.print("\nFee Structure For MBA is : "+MBA_fee);
              System.out.print("\nEnter Deposited Fee : ");
              fee_deposit[i] = sc.nextLong();
          }
          System.out.print("\nDo You Want to Insert Another Record Press(Y for Yes/N for No) : ");
          String ch = sc.next();
          if(ch.equalsIgnoreCase("n"))
          break;
      } //for loop closed
      i++;
      length(i);
  }
  void Dues()
  {
     
      for(int j=0; j<length;j++)
      {
          dues[j] = total[j] - fee_deposit[j];
      }
  }
  void Output()
   {
       System.out.println("          ===================================================================");
       System.out.print("                    *********-->> Students Records <<--*********");
       System.out.println("\n          ===================================================================\n");
       System.out.println("_____________________________________________________________________________________");
       System.out.print("Roll\tName\t\tAddress\t\tCourse\tTotal\tFee Deposit\tDues");
       System.out.println("\n_____________________________________________________________________________________\n");
       for(int j=0; j<length; j++)
       {
           System.out.print(roll[j]+"\t");
           System.out.print(name[j]+"\t\t");
           System.out.print(add[j]+"\t\t");
           System.out.print(course[j]+"\t");
           System.out.print(total[j]+"\t");
           System.out.print(fee_deposit[j]+"\t\t");
           System.out.print(dues[j]);
           System.out.println();
       }
       System.out.println("______________________________________________________________________________________\n");
   }
   void Update(int rl)
   {
       Scanner sc = new Scanner(System.in);
       for(int i=0;i<length;i++)
       {
           if(roll[i]==rl)
           {
               System.out.println("What do you want to edit int record Please enter :");
               System.out.println("1 -for Name ");
               System.out.println("2 -for Roll No");
               System.out.println("3 -for Address");
               System.out.println("4 -for Course");
               System.out.println("5 -Fee Deposit ");
               System.out.println("Please enter your Choice :");
               int ch = sc.nextInt();
               switch(ch)
               {
                   case 1:
                      System.out.println("Enter New Name :");
                      name[i] = sc.next();
                      break;
                   case 2:
                      System.out.println("Enter New Roll No :");
                      roll[i] = sc.nextInt();
                      break;
                   case 3:
                      System.out.println("Enter New Address ");
                      add[i] = sc.next();
                      break;
                   case 4:
                      System.out.println("Enter New Course : ");
                      course[i] = sc.next();
                      break;
                   case 5:
                      System.out.println("Enter New Fee deposit : ");
                      fee_deposit[i] = sc.nextLong();
                      break;
               }
           }
        }
   }
   void Search(int key)
   {
      
       int i;     
       for(i=0; i< length; i++)
       {
           if(roll[i] == key)
           {
               System.out.println("Which Field you want to see of Roll No "+key+": " );
               System.out.println("Please Enter :");
               System.out.println(" 1. for Name ");
               System.out.println(" 2. for Address ");
               System.out.println(" 3. for Course ");
               System.out.println(" 4. for Fee Deposit ");
               System.out.println(" 5. for Dues ");
               System.out.println(" 6. for All Fields ");
               Scanner sc = new Scanner(System.in);
               int choice = sc.nextInt();
               switch(choice)
               {
                   case 1 :
                       System.out.print("Name of Roll No. "+key+" is : "+name[i]);
                       break;
                   case 2 :
                       System.out.print("Address of Roll No. "+key+" is :"+add[i]);
                       break;
                   case 3 :
                       System.out.print("Course of Roll No. "+key+" is :"+course[i]);
                       break;
                   case 4 :
                       System.out.print("Fee Deposited by Roll No. "+key+" is : "+fee_deposit[i]);
                       break;
                   case 5 :
                       System.out.print("Dues Of Roll No. "+key+" is : "+dues[i]);
                       break;
                   case 6 :
                       System.out.println("Roll\tName\t\tAddress\t\tCourse\tTotal\tFee Deposit\tDues \n");
                       System.out.print(roll[i]+"\t");
                       System.out.print(name[i]+"\t\t");
                       System.out.print(add[i]+"\t\t");
                       System.out.print(course[i]+"\t");
                       System.out.print(total[i]+"\t");
                       System.out.print(fee_deposit[i]+"\t\t");
                       System.out.print(dues[i]);
                       break;
                       
                   default :
                       System.out.println("This Record Does Not Exists in this Database ");
                       System.out.print("*****Thanks*****");
                       break;
               }
           }
           else
               continue;
       }
      
       if( i > length)
          System.out.println("Record Does Not Exists ");
        
    }
    void Delete(int key)
    {
        int i,j;
        for(i=0; i<length; i++)
        {
           if(roll[i] == key)
           {
               if(i == length-1)
               {
                      roll[i]=0;
                      name[i]=null;
                      add[i]=null;
                      fee_deposit[i]=0;
                      dues[i]=0;   
                   length(length-1);
                   return;
               }
               else
               {for(j=i; j<length-1; j++)
               {
                   roll[j] = roll[j+1];
                   name[j] = name[j+1];
                   add[j] = add[j+1];
                   //total[j] = total[j+1];
                   fee_deposit[j+1] = fee_deposit[j+1];
                   dues[j] = dues[j+1];
                  
               }
                   roll[j]=0;
                      name[j]=null;
                      add[j]=null;
                      fee_deposit[j]=0;
                      dues[j]=0;   
               }
               break;
           }
        }
      length(length-1);this.i--;             
    }
    int LogIn()
    {
       Scanner sc = new Scanner(System.in);
      try{
       FileOutputStream fout1 = new FileOutputStream("USERID.DAT",true);
       FileOutputStream fout2 = new FileOutputStream("PASSWORD.DAT",true);
       DataInputStream dis = new DataInputStream(System.in);
       System.out.println("1 :Have an Acount then @@Press 1 ");
       System.out.println("2 :Create a New Acount @@Press 2 ");
       int choice = sc.nextInt();
       char ch;
       while(true)
       {
        switch(choice)
        {
           case 1:
              FileReader f1 = new FileReader("USERID.DAT");
              FileReader f2 = new FileReader("PASSWORD.DAT");
              BufferedReader fin1 = new BufferedReader(f1);
              BufferedReader fin2 = new BufferedReader(f2);
              System.out.print("Enter User Name :");
              String Id = sc.next();
              System.out.print("\nEnter Password : ");
              String pw = sc.next();
              String text1[]=new String[45];
              String text2[]=new String[45];
              int j = 0;
              int m = 0;
              int i = 0;
              int count;int line_count=0;
              int k = 1;
   
                  if(fin1 == null)
                { 
                        System.out.println("You are Not a Member Please Log in");
                        return 0;
                }
                  while((text1[i++] = fin1.readLine())!=null) {}
             
                  while((text2[m++] = fin2.readLine())!=null) {}
                  for(j=0;j<text1.length;j++)
                  {
                     if(Id.equalsIgnoreCase(text1[j]) && pw.equalsIgnoreCase(text2[j]))
                     {
                       System.out.println("You are Logged In Successfully ");f1.close();f2.close();
                       return 1;
                     }
                     if(f1 == null)
                     { 
                        System.out.println("You are Not a Member Please Log in");
                        return 0;
                     }//m++;
                 }
                 
             // }
             
            
             
                  System.out.println("Your User Id or Password Is Incorrect "+m);
                  return 0;
           case 2 :
              for(int ctr=0; ctr<1 ;ctr++)
              {
                 
                    System.out.print("Enter User Name :");
                      while((ch = (char)dis.read())!= '\n')
                         fout1.write(ch);fout1.close();   
                    System.out.print("\nEnter Password :");
                      while((ch = (char)dis.read())!= '\n')
                         fout2.write(ch);fout2.close();
                  System.out.println("You are Registered Successfully!!Now Log In ");
                  choice = 1;
             
              }
              break;
           default :
              System.out.println("\nWrong Choice :\n");
       }//swtich ended
      }//while ended
      }//try ended
      catch(IOException e){ System.out.println(e);}return 0;
   }
   
   
    void Fee_Structure()
    {
        System.out.println("\n____________Avalable Courses And Their Fee Structures_____________\n");
        System.out.print("_______________________________________________________________________");
        System.out.print("\nCourses  :\tBCA\tMCA\tBTech\tMTech\tMBA");
        System.out.print("\n_______________________________________________________________________");
        System.out.print("\nFees     :\t300000\t500000\t500000\t300000\t30000");
        System.out.print("\n_______________________________________________________________________");
    }
}
class StudentDatabase
{
      public static void main(String args[]) throws IOException
      {
          System.out.println("_______________________________________________________________________________");
          System.out.println("                  STUDENTS DATABASE");
          System.out.println("_______________________________________________________________________________");
          Student1 s = new Student1();
          Scanner sc = new Scanner(System.in);
          System.out.println("Please Log In to Perform Operation");
          while(true)
          {
          int response = s.LogIn();
          if(response == 1)
          {
           while(true)
           {
            
            
                 System.out.println("\n*******Menu********\n");
                 System.out.println("Press......");
                 System.out.println("1 -for Create a Record ");
                 System.out.println("2 -To see the Courses And Fee Structure ");     
                 System.out.println("3 -Edit Record ");
                 System.out.println("4 -for delete a Record ");
                 System.out.println("5 -for Search any Record");
                 System.out.println("6 -for Display Records ");
                 System.out.println("7 -Exit");
                 int ch = sc.nextInt();
              switch(ch)
              {
                case 1 :
                     s.Input();
                     s.Dues();
                     //s.Output();
                     break;
             //to see a particular record in Database
                case 2 :
                     s.Fee_Structure();
                     break;
                case 3 :
                     System.out.println("Enter Roll No for Edit the Record :");
                     int rollNo = sc.nextInt();
                     s.Update(rollNo);
                     s.Dues();
                     break;
                case 4 :
                     System.out.println("Enter Roll No For Delete The Record From the list");
                     rollNo = sc.nextInt();
                     s.Delete(rollNo);
                     break;
                case 5:
                     System.out.println("\n\nEnter Roll No to See A particular Record From DataBase :");
                     rollNo = sc.nextInt();
                     s.Search(rollNo);
                     break;
                case 6 :
                     s.Output();
                     break;
                case 7 :
                     return;
                default :
                      System.out.println("\nWrong Chioce");
     
            }//end of Switch
           }/*inner while closed*/
          }/*if closed*/
         }/*outer while closed*/ 
      }
}