Project C++ Bank Management System#include <iostream.h>
#include <fstream.h> #include<process.h> #include<string.h> #include<stdio.h> #include<ctype.h> #include<conio.h> #include<dos.h> #include<stdlib.h> #include<iomanip.h> class main_menu { int i, done; public: char menu(); void control_menu(); char e_menu(); void edit_menu(); void help(void); }; class initial { public : void add_to_file(int, char t_name[30],char t_address[30],float); void display_list(void ); void delete_account(int); void update_balance( int, char t_name[30],char t_address[30],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[30]); int accno; char name[30], address[30]; float balance; }; class account { public: void new_account(void); void close_account(void); void display_account(void); void transaction(void); void clear(int, int ); void month_report(void); 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]; int dd, mm, yy; char tran; float interest,amount,balance; }; char main_menu::menu() { clrscr(); char g; cout<<"\n\t\t\t\t\t Main Menu\n"; cout<<"\n\t\t\t\t**************************\n"; cout<<"\n\t\t1 New account\n"; cout<<"\n\t\t2 List of account\n"; cout<<"\n\t\t3 Indivisual Account\n"; cout<<"\n\t\t4 Daily Transaction \n"; cout<<"\n\t\t5 Monthly Report\n"; cout<<"\n\t\t6 Edit Account\n"; cout<<"\n\t\t7 Exit \n"; cout<<"\n\n\n\n\n\t\t\tEnter your choice (1-7 ) : " ; fflush(stdin); cin>>g; return g; } void main_menu::control_menu() { char choice; account a; do { choice = menu(); clrscr(); switch(choice) { case '1' : a.new_account(); break; case '2' : initial ini; ini.display_list(); break; case '3' : a.display_account(); break; case '4' : a.transaction(); break; case '5' : a.month_report(); break; case '6' : edit_menu(); break; case '7' : exit(0); } }while(choice !=6); } char main_menu::e_menu() { char ch; clrscr(); cout<<"\n\t\t\t\t EDIT -MENU\n"; cout<<"\n\t\t\t**************************\n\n"; cout<<"\n\n\t\t1. Modify\n\n\n\n\t\t2. Close\n\n\n\n\t\t3. Exit \n\n"; cout<<"\n\n\n\t\t Enter your choice ( 1, 2 or 3) : "; fflush(stdin); cin>>ch; return ch; } /* Function for edit menu with account modification and close*/ void main_menu::edit_menu() { char choice ; account a; do { choice = e_menu(); clrscr(); switch(choice) { case '1': initial ini; ini.modify(); break; case '2': account a; a.close_account(); break; case '3': return; } }while(choice!=6); } /* function to display help about this project */ void main_menu::help(void) { clrscr(); gotoxy(10,1); cout<<" Welcome to Banking Project "; getch(); } //339 /*Fuction for modifying the existing accounts */ void initial::modify(void) { clrscr(); int j,t,t_accno; char t_acc[10]; gotoxy(17,1); cout<<" <0> = Exit "; gotoxy(5,5); cout<<" Enter the account no. "; fflush(stdin); 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<<"\n Account not found"; getch(); return; } gotoxy(71,1); cout<<" <0>= Exit "; cprintf(" Modify Account Screen "); 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; char ch; display(t_accno); account a; do { cout<<" Modify this accout <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[30]; gotoxy(5,15); cout<<" Name : "; gotoxy(5,16); cout<<" Address : "; do { cout<<"\n\n Enter Name or Press Enter for No change "; 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("\n Name should not be greter than 25 "); getch(); } } while(!valid); do { cout<<"\n\nEnter address or press enter for no change"; valid=1; gotoxy(15,16); gets(t_address); strupr(t_address); if(t_address[0]=='0') return; if(strlen(t_address)>25) { valid=0; gotoxy(5,23); cprintf("\7address should not be greater than 25"); getch(); } }while(!valid); if(strlen(t_address)>0) modified=1; if(!modified) return; do { a.clear(5,23); gotoxy(5,18); cout<<"\nDo 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; //Passes the parameter to add in data file modify_account(t_accno,t_name,t_address); gotoxy(5,21); cout<<"\nRecord modified "; cout<<"Press any key to continue..."; getch(); } /*Function for displaing an account when modified*/ void initial::display(int t_accno) { fstream file; file.open("INITIAL.dat",ios::in); file.seekg(0,ios::beg); //Display the record contents matching with t_accno from INITIAl.dat data file while(file.read((char*)this,sizeof(initial))) { if(t_accno==accno) { gotoxy(8,5); cout<<"Account no. "<<accno; gotoxy(10,8); cout<<"Name:"; puts(name); gotoxy(10,9); cout<<"Address : "; puts(address); gotoxy(10,10); cout<<"Balance:" << setw(15) //set width <<setprecision(2) // set position of dicimal point <<setiosflags(ios::left) // set left justified output <<setiosflags(ios::showpoint) // alwayes show decimal point <<setiosflags(ios::fixed) // set fixed notation for display <<balance; break; } } file.close(); } /* Function for updating the modified account into INITIAL.dat file */ void initial::modify_account(int t_accno,char t_name[30],char t_address[30]) { int recno; cout<<"\n t_accno"<<t_accno<<" t_name "<<t_name<<" t_address"<<t_address<<"\n"; recno=recordno(t_accno); fstream file; file.open("INITIAL.dat",ios::out|ios::ate); strcpy(name,t_name); strcpy(address,t_address); int location; // finds the position in data file location=(recno-1)*sizeof(initial); file.seekp(location); // overwrites thr modified record into INITIAL.dat data file file.close(); return; } /* Function to find the last account number */ int initial::last_accno(void) { fstream file; file.open("INITIAL.dat",ios::in); file.seekg(0,ios::beg); int count=0; // Find the last account no. while(file.read((char*)this,sizeof(initial))) count=accno; file.close(); return count; } /* This function add_to_file()is usedto creat new/fresh record in the data file */ void initial::add_to_file(int t_accno,char t_name[30],char t_address[30],float t_balance) { accno =t_accno; strcpy(name,t_name); strcpy(address, t_address); balance=t_balance; fstream file; // Appends new account record with balance into INITIAL.dat data file file.open("INITIAL.dat ",ios::out|ios::app); file.write((char*)this,sizeof(initial)); file.close(); } // Function for deleting a account from INITIAL.dat file*/ 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); //Uses a copy method to delete the account from INITIAL.dat data file 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); //copy the TEMP.dat contents into INITIAL.datdata file while(!temp.eof()) { temp.read((char*)this,sizeof(initial)); if(temp.eof()) break; if(accno !=t_accno) file.write((char*)this,sizeof(initial)); } file.close(); temp.close(); } void account::add_to_file(int t_accno,int dl,int ml,int y1,char t_tran,char t_type[10],float t_interest,float t_amount,float t_balance) { fstream file; file.open("BAKNING.dat",ios::app); accno=t_accno; getch(); dd=dl; mm=ml; 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(); } void account::delete_account(int t_accno) { fstream file; file.open("BAKNING.dat",ios::in);//Open to read records fstream temp; temp.open("TEMP.dat",ios::out);//Open to write records 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("BAKNING.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; if(accno !=t_accno) file.write((char*)this,sizeof(account)); } file.close(); temp.close(); } void initial::display_list(void) { clrscr(); int flag,dl,ml,yl; float t_bal=0.0; fstream file; gotoxy(25,2); cout<<"Accounts list in Bank"; gotoxy(25,3); cout<<"========================="; struct date d; getdate(&d); dl=d.da_day; ml=d.da_mon; yl=d.da_year; gotoxy(62,3); cout<<"Date:"<<dl<<"/"<<ml<<"/"<<yl; gotoxy(1,4); for(int j=1;j<=79;j++) cout<<"="; gotoxy(1,5); cout<<"Accno#"; gotoxy(10,5); cout<<"Name"; gotoxy(30,5); cout<<"Address"; gotoxy(65,5); cout<<"Balance"; gotoxy(1,6); for(j=1;j<=79;j++) cout<<"="; file.open("INITIAL.dat",ios::in); file.seekg(0,ios::beg); int row=7; while(file.read((char*)this,sizeof(initial))) { flag=0; delay(2); gotoxy(3,row); cout<<accno; gotoxy(10,row); puts(name); gotoxy(30,row); puts(address); gotoxy(65,row); cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<balance; t_bal=t_bal+balance; row++; if(row<23) { flag=1; row=6; gotoxy(4,24); cout<<"Press any key to continue...."; getch(); clrscr(); } } gotoxy(1,row); for(j=1;j<=79;j++) cout<<"="; row++; gotoxy(65,row); cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<t_bal; file.close(); if(!flag) { gotoxy(4,24); cout<<"Press any key to continue..."; getch(); } } /*Function for clearing specified row and colume.*/ void account::clear(int col,int row) { for(int j=col;j<=79;j++) { gotoxy(j,row); cout<<""; } } /*Function to find an account for display account function.*/ int initial::found_account(int t_accno) { // cout<<" t_accno = "<<t_accno<<"\n"; fstream file; file.open("INITIAL.dat",ios::in); file.seekg(0,ios::beg); int found=0; //Searches the specified record in INITIAL.dat data file while(file.read((char*)this,sizeof(initial))) { //cout<<" accno = "<<accno<<" and t_accno = "<<t_accno<<"\n"; if(accno == t_accno) { found = 1; break; } } file.close(); cout<<" found = "<<found<<"\n\n"; return found; } /*Function for return name of the account holder from 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]; //Return the name to display at report screen if found while(file.read((char*) this,sizeof(initial))) { if(accno==t_accno) { strcpy(t_name,name); break; } } file.close(); return t_name; } /*Function for return address of the account holder from 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[30]; // return the address to display at report screen if found while(file.read((char*)this,sizeof(initial))) { if(accno==t_accno) { strcpy(t_address,address); break; } } file.close(); return t_address; } /*function for display account details */ void account::box_for_display(int t_accno) { 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[30]; strcpy(t_address,ini.return_address(t_accno)); gotoxy(25,2); cout<<t_name; gotoxy(25,3); cout<<t_address; gotoxy(4,5); cout<<"global report of account"; textbackground(WHITE); textcolor(BLACK); textbackground(WHITE); gotoxy(1,6); for(int i=1;i<=79;i++) cout<<"="; gotoxy(4,7); cprintf("Date Particular Deposit Withdrawal Balance"); gotoxy(1,8); for(i=1;i<=79;i++) cout<<"="; textcolor(LIGHTGRAY); textbackground(BLACK); } /*function for display an account from BAKNING.dat file.*/ void account::display_account(void) { clrscr(); char t_acc[10]; int j,tamt=0,damt=0,wamt=0,t=0,t_accno; // gotoxy(71,1); cout<<"<0>=Exit"; // gotoxy(5,5); cout<<" Enter account no. : "; // fflush(stdin); gets(t_acc); puts(t_acc); t = atoi(t_acc); t_accno=t; cout<<" you are enter "<<t_accno<<" \n"; if(t_accno==0) return; // clrscr(); initial ini; if(!ini.found_account(t_accno)) { // gotoxy(5,5); cout<<"\7Account not found"; getch(); // return; } // Display the heading from this function // box_for_display(t_accno); int row=9,flag; fstream file; file.open("BAKNING.dat",ios::in); while(file.read((char *)this,sizeof(account))) { // cout<<"\n\n accno = "<<accno<<" and t_accno = "<<t_accno<<"\n"; if(accno==t_accno) { flag=0; delay(2); gotoxy(4,row); cout<<dd<<"-"<<mm<<"-"<<yy; gotoxy(16,row); puts(type); if(tran=='D') { damt=damt+amount; tamt=tamt+amount; gotoxy(30,row); } else { wamt=wamt+amount; tamt=tamt-amount; gotoxy(42,row); } cout<< setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<amount; gotoxy(66,row); cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<balance; row++; if(row>23) { flag = 1; row = 7; gotoxy(4,24); cout<<"Press any kew to continue"; getch(); clrscr(); box_for_display(t_accno); } } } file.close(); gotoxy(1,row); for(j=1;j<=79;j++) cout<<"="; row++; gotoxy(4,row); cout<<"Total->:"; gotoxy(30,row); cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<damt; gotoxy(42,row); cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<wamt; gotoxy(66,row); cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<tamt; if(!flag) { gotoxy(4,24); cout<<"Press any key to continue..."; getch(); } } /*Function to list monthwise transaction report.*/ void account::month_report(void) { int dd1,mm1,yy1; clrscr(); gotoxy(10,3); cout<<"Enter any date of month D ENTER - M ENTER - Y ENTER "; gotoxy(10,5); cout<<"Enter any date of month "; gotoxy(38,5); cin>>dd1; gotoxy(40,5); cout<<"-"; gotoxy(41,5); cin>>mm1; gotoxy(43,5); cout<<"-"; gotoxy(44,5); cin>>yy1; clrscr(); char t_acc[10]; int j; int tamt=0,damt=0,wamt=0,t,t_accno; gotoxy(71,1); cout<<"<0>=Exit"; gotoxy(5,5); cout<<"Enter account no."; gets(t_acc); t=atoi(t_acc); t_accno=t; cout<<" t_accno = "<<t_accno<<"\n"; if(t_accno==0) return; clrscr(); initial ini; if(!ini.found_account(t_accno)) { gotoxy(5,5); cout<<"\nAccount not found"; getch(); return; } box_for_display(t_accno); gotoxy(4,5); cout<<"Statement Month:"<<dd1<<"/"<<mm1<<"/"<<yy1; getch(); int row=9,flag; fstream file; file.open("BAKNING.dat",ios::in); float pre_balance=0.0;//Previous balance amount //The loop finds the last months balance while(file.read((char*)this,sizeof(account))) { //Checks the account no.andtill the previous month and till current year if((accno==t_accno)&&((mm<mm1&&yy<=yy1)||(mm1<mm&&yy<yy1))) { pre_balance=balance; } } file.close(); file.open("BAKNING.dat",ios::in); gotoxy(54,row); cout<<"B/F... "<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<pre_balance; row++; //The loop display the current transaction after previous month while (file.read((char*)this,sizeof(account))) { if((accno==t_accno)&&(mm1==mm&&yy1<=yy)) { flag=0; delay(2); gotoxy(4,row); cout<<dd<<"-"<<mm<<"-"<<yy; gotoxy(16,row); puts(type); if(tran=='D') { damt=damt+amount; tamt=tamt+amount; gotoxy(30,row); } else { wamt=wamt+amount; tamt=tamt-amount; gotoxy(42,row); } cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<amount; gotoxy(66,row); cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<balance; row++; // if row increases 23 then the next screen continues 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(); gotoxy(1,row); for(j=1;j<=79;j++) cout<<"="; row++; gotoxy(4,row); cout<<"Total->:"; gotoxy(30,row); //Deposited amount cout<<setw(15) //setwidth <<setprecision(2) //set position of decimal point <<setiosflags(ios::left) //set left justified output <<setiosflags(ios::showpoint) //always show decimal point <<setiosflags(ios::fixed) //set fixed notation for display <<damt; gotoxy(42,row); //Withdraw amount cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<wamt; gotoxy(66,row); tamt=tamt+pre_balance; //Balance amount cout<<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<tamt; if(!flag) { gotoxy(4,24); cout<<"Press any key to continue.."; getch(); } } /*Function for creating new account for new customer.*/ void account::new_account(void) { char ch; int i, valid; clrscr(); initial ini; cout<<"<0>=Exit"; int d1,m1,y1; struct date d; //For extractingsystem date getdate(&d); d1=d.da_day; m1=d.da_mon; y1=d.da_year; int t_accno; t_accno=ini.last_accno(); t_accno++; //Append and delete a false record to create primary position in data files 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[30]; float t_bal=0.0,t_balance=0.0; gotoxy(5,6); cout<<"data: "<<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("\7 Name should not be greater than 25"); getch(); } } while(!valid); do { clear(25,15); 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(t_address[0]=='0') return ; if(strlen(t_address)==0 || strlen (t_address)>25) { valid=0; gotoxy(5,23); cprintf("\nAddress should not be greater than 25"); getch(); } }while(!valid); do { char vari[30]; clear(13,12); clear(5,23); gotoxy(5,23); cout<<" Enter name of the varifying 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(" Should not be blank or greater than 25"); getch(); } }while (!valid); do { clear(13,12); clear(5,23); gotoxy(5,23) ; cout<<" Enter initial amount to be deposited "; valid=1; gotoxy(23,14); gets(t); t_bal=atof(t); t_balance=t_bal; if(t[0]=='0') { valid =0 ; gotoxy(5,23); cprintf("\nShould not be 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"); //append the records contents into both INITIAL.dat and BAKNING.dat data file 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); } /* Function for returning balance amount of an account */ float initial :: give_balance(int t_accno) { fstream file; file.open("INITIAL.dat",ios::in); file.seekg(0,ios::beg); float t_balance; //Gives the balance of an individual account while(file.read((char*)this, sizeof (initial))) { if(accno==t_accno) { t_balance= balance; break; } } file.close(); return t_balance; } /* function for returning the record no. for updating balance */ int initial::recordno(int t_accno) { fstream file; file.open("INITIAL.dat",ios::in); file.seekg(0,ios::beg); int count =0; //Finds the record position in INITIAL .dat data file while(file.read((char *)this,sizeof(initial))) { count++; if(t_accno==accno) break; } file.close(); return count; } /* Function for updating the balance for the given account no .*/ void initial:: update_balance (int t_accno, char t_name[30],char t_address[30],float t_balance) { int recno; recno= recordno(t_accno); fstream file; file.open("INITIAL.dat",ios::out|ios::ate); strcpy(name,t_name); strcpy(address,t_address); balance = t_balance; int location ; location = (recno-1)* sizeof(initial); file.seekp(location); //updates the balance amount in INITIAL.dat data file file.write((char * )this,sizeof(initial)); file.close(); } /* function to return no. days between two 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,30,31,30,31,30}; int days=0; while(d1 !=d2 ||m1!=m2||y1!=y2) { days++; d1++; if(d1>month[m1-1]) { d1=1; m1++; } if(m1>m2) { m1=1; y1++; } } return days; } /*Function for calculating interest */ float account :: calculate_interest(int t_accno, float t_balance) { fstream file ; file.open("BAKNING.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; } /* function for making daily transaction (Deposit'D'/Withdraw'W'.*/ 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<<"\nAccount not found "; getch(); return; } gotoxy(71,1); cout<<"<0> = Exit "; gotoxy(3,3); for(int i=1;i<=76;i++) cprintf(" "); textbackground(BLACK); textcolor(BLACK+BLINK); textbackground(WHITE); gotoxy(29,3); cprintf(" Transaction in Account "); textcolor(LIGHTGRAY); 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],t_address[30]; 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); gotoxy(27,11); cout<<"Name:"<<t_name; gotoxy(27,12); cout<<"address:" <<t_address; gotoxy(5,15); cout<<"Last balance Rs." <<setw(15) <<setprecision(2) <<setiosflags(ios::left) <<setiosflags(ios::showpoint) <<setiosflags(ios::fixed) <<t_balance; char t_tran,t_type[10],tm[10]; float t_amount, t_amt; do { clear(5,10); valid=1; gotoxy(5,10); cout<<"Deposit or Withdrawal(D/W):"; t_tran=getch(); 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 Transation by Cash or Cheqe "; valid=1; gotoxy(5,19); cout<<" Write CASH/CHEQUE in capital letters : "; fflush(stdin); gets(t_type); if(t_type[0]=='0') return; if(strcmp(t_type,"CASH")&& strcmp(t_type,"CHEQUE")) { valid=0; gotoxy(5,23); cprintf("\nEnter correctly"); getch(); } }while(!valid); do { clear(5,21); clear(5,23); gotoxy(5,23); cout<<"Enter Amount for Transaction"; valid=1; gotoxy(5,21); 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("\n Invalid Data entered"); getch(); } }while(!valid); char ch; clear(5,23); do { clear(20,23); valid=1; gotoxy(40,20); cout<<"Save Transation <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_name,t_address,t_balance); add_to_file(t_accno,d1,m1,y1,t_tran,t_type,t_interest,t_amount,t_balance); } 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<<"\n Account not found"; getch(); return; } gotoxy(71,1); cout<<"<0>=Exit"; gotoxy(3,3); textbackground(WHITE); for(int i=1;i<=76;i++) cprintf(" "); textbackground(BLACK); textcolor(BLACK+BLINK); textbackground(WHITE); gotoxy(30,3); cprintf("Close account screen \n"); textcolor(LIGHTGRAY); textbackground(BLACK); int dl,ml,yl; struct date d; getdate(&d); dl=d.da_day; ml=d.da_mon; yl=d.da_year; gotoxy(5,6); cout<<"Date: "<<dl<<"/"<<ml<<"/"<<yl<<"\n"; 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<<"\n Account Deleted"; gotoxy(5,23); cout<<"Press any key to continue..."; getch(); } // Main program logic which controls the members and member functions. void main(void) { main_menu m_menu; m_menu. control_menu(); } |
PREFACEThe objective of this project is to understand the concept and theories clearly behind the banking management system. It helps in gaining some practical knowledge and experience about various aspects of management.
Content and language used in this project is very easy. Emphasis is laid on comprehension of concepts and principles behind the project. I have taken care of clarity of expressions and logical organization of concepts. This project is segmented into fairly short sections and is adequately illustrated with an introduction that establishes the context for the subject matter to be discovered. Important concepts, definitions, equations are either bold faced, italicized or highlighted to draw needed attention. I remember with gratitude the encouragement provided by my teachers, parents and friends. I welcome suggestion for improvement. |