php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 487|回复: 0

银行项目 c语言

[复制链接]

2627

主题

2634

帖子

9336

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
6587
贡献
0
注册时间
2021-4-14
最后登录
2024-4-26
在线时间
667 小时
QQ
发表于 2022-3-31 16:36:42 | 显示全部楼层 |阅读模式
[mw_shl_code=cpp,true]//**********************************************************
//        PROJECT BANKING

//**********************************************************

//**********************************************************
//        BY MUHAMMAD AWAIS RAZA
//      Project For 2nd Smester
//**********************************************************

#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("    MUHAMMAD AWAIS RAZA  ");
                gotoxy(32,25);cprintf("  LOGIC EYE DEVELOPERS    ");
                 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--)
        {
                delay(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  B A N K I N G  OF P U N J A B ") ;
        textcolor(BLACK);
        gotoxy(18,4); cprintf(" By- MUHAMMAD AWAIS RAZA  (Logic eye Developers)");
        delay(10) ;
        gotoxy(10,6);  cout <<"In  this  Project  you  can keep  records  of  daily  banking" ;
        delay(10) ;
        gotoxy(10,7);  cout <<"transactions.               " ;
        delay(10) ;
        gotoxy(10,9);  cout <<"    This  program is capable of holding any no. of  accounts." ;
        delay(10) ;
        gotoxy(10,11); cout <<"- In the first option you can see the account of  a  particular" ;
        delay(10) ;
        gotoxy(10,12); cout <<"  person by giving simply the account no. of that person." ;
        delay(10) ;
        gotoxy(10,14); cout <<"- In second option you can see the list of all the accounts." ;
        delay(10) ;
        gotoxy(10,16); cout <<"- Through third option you can operate banking transactions" ;
        delay(10) ;
        gotoxy(10,17); cout <<"  (Deposit/Withdraw)." ;
        delay(10) ;
        gotoxy(10,19); cout <<"- In Fourth option you can open new account." ;
        delay(10) ;
        gotoxy(10,20); cout <<"  (NOTE: Opening amount should not be less than Rs.500/-)" ;
        delay(10) ;
        gotoxy(10,22); cout <<"- In Fifth option you can modify or Delete any of the accounts." ;
        delay(10) ;
        gotoxy(10,24); cout <<"- And the last option is to Quit the PROJECT (Exit to Dos).  " ;
        delay(10) ;
        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--)
        {
                delay(50) ;
                gotoxy(1,i) ; clreol() ;
        }
}



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

int initial :: last_accno(void)
{
        fstream file ;
        file.open("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 ;
                delay(10) ;
                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 <<"ress any key to continue..." ;
                        getch() ;
                        clrscr() ;
                        box_for_list() ;
                }
        }
        file.close() ;
        if (!flag)
        {
                gotoxy(4,24) ;
                cout <<"ress 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:ut | 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:ut) ;
        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:ut) ;
        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:ut | 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:ut | 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 <<"ress 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:ut) ;
        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:ut) ;
        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 ;
                        delay(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 <<"ress any key to continue..." ;
                                getch() ;
                                clrscr() ;
                                box_for_display(t_accno) ;
                        }
                }
        }
        file.close() ;
        if (!flag)
        {
                gotoxy(4,24) ;
                cout <<"ress 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 <<"ress 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() ;
}[/mw_shl_code]





上一篇:c++类确定windows版本
下一篇:dos 计算器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )51LA统计

GMT+8, 2024-4-27 03:15 , Processed in 0.193797 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表