Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.17 KB | None | 0 0
  1. //=========================================================== // PROJECT ON AUTOMATION OF A BANK //=========================================================== #include #include #include #include #include #include #include #include #include //=========================================================== // 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 withdrawl 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<=1;i--) { delay(20); gotoxy(1,i); clreol(); } } //============================================================= // FUNCTION TO DISPLAY EDIT MENU AND CALL OTHER FUNCTION //============================================================= 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(LIGHTBLUE); textbackground(BLACK); gotoxy(34,10); cprintf(" EDIT MENU"); textcolor(LIGHTBLUE); 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(); shape s; s.box(2,1,79,25,218); s.box(25,2,54,4,219); textcolor(LIGHTBLUE+BLINK); gotoxy(27,3); cprintf("WELCOME TO THE PROJECT BANKING "); textcolor(LIGHTBLUE); delay(10); gotoxy(10,6); cout<<"IN THIS PROJECT YOU CAN KEEP RECORD OF DAILY BANKING "; delay(10); gotoxy(10,7); cout<<" TRANSACTIONS. "; delay(10); gotoxy(10,9); cout<<" THIS PROGRAMME IS CAPABLE OF HOLDING ANY NO. OF ACCOUNTS "; delay(10); gotoxy(10,11); cout<<" # IN FIRST OPTION YOU CAN SEE ACCOUNT OF A PARTICULAR "; delay(10); gotoxy(10,12); cout<<" PERSON BY GIVING SIMPLY ACCOUNT NO. OF THAT PERSON"; delay(10); gotoxy(10,14); cout<<"# IN SECOND OPTION YOUN CAN SEE THE LIST OF ALL ACCOUNTS. "; delay(10); gotoxy(10,16); cout<<"# THROUGH THIRD OPTION YOU CAN DO 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 LESS THAN Rs.500/-. "; delay(10); gotoxy(10,22); cout<<"# IN THE FIFTH OPTION YOU CAN MODIFY OR DELETE ANY ACCOUNT. "; delay(10); gotoxy(10,24); cout<<"# AND LAST OPTION IS QUIT (EXIT TO DOS)."; delay(10); textcolor(LIGHTBLUE+BLINK); textbackground(BLACK); gotoxy(26,25); cprintf(" PRESS ANY KEY TO CONTINUE "); textcolor(LIGHTBLUE);textbackground(BLACK); gotoxy(25,2); getch(); for(int i=25;i>=1;i--) { delay(20); 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 FUNTION 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. "<=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(BLACK); gotoxy(3,3); for(int i=1;i< =76;i++) cprintf(" "); textbackground(BLACK); textcolor(LIGHTBLUE+BLINK); textbackground(BLACK); gotoxy(30,3); cprintf("MODIFY ACCOUNT SCREEN"); textcolor(LIGHTBLUE); 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:"< 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("\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 OR PRESS FOR NO CHANGE"; 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 GIVEN 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(BLACK); gotoxy(3,3); for(i=1;i< =76;i++) cprintf(" "); textbackground(BLACK); textcolor(LIGHTBLUE+BLINK); textbackground(BLACK); gotoxy(32,3); cprintf("OPEN NEW ACCOUNT"); textcolor(LIGHTBLUE); 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:"<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(23,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(5,23); gotoxy(5,23); cout< <"ENTER NAME OF THE VARIFYING PERSON"; valid=1; gotoxy(35,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(5,23); 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(7,21); 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(BLACK); gotoxy(3,5); for(int i=1;i<=76;i++) cprintf(" "); textbackground(BLACK); textcolor(LIGHTBLUE); textbackground(BLACK); gotoxy(4,5); cprintf("DATE PARTICULAR DEPOSIT WITHDRAW INTEREST BALANCE"); textcolor(LIGHTBLUE); 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: "<=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<
  2. 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=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(BLACK); gotoxy(3,3); for(int i=1;i< =76;i++) cprintf(" "); textbackground(BLACK); textcolor(LIGHTBLUE+BLINK); textbackground(BLACK); gotoxy(29,3); cprintf("TRANSACTION IN ACCOUNT"); textcolor(LIGHTBLUE); 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: "<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(BLACK); gotoxy(3,3); for(int i=1;i< =76;i++) cprintf(" "); textbackground(BLACK); textcolor(GREEN+BLINK); textbackground(BLACK); gotoxy(30,3); cprintf("CLOSE ACCOUNT SCREEN"); textcolor(LIGHTBLUE); 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: "<
  3. Read more at: http://projects.icbse.com/cpp-118
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement