//=========================================================== // PROJECT ON AUTOMATION OF A BANK //=========================================================== #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 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<<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(LIGHTBLUE+BLINK); textbackground(BLACK); gotoxy(32,7); cprintf(" B A N K I N G "); gotoxy(35,9); cprintf(" OPTIONS "); textcolor(LIGHTBLUE); 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(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. "<<accno; gotoxy(10,8); cout<<"NAME :"<<name; gotoxy(10,9); cout<<"ADDRERSS :"<<address; gotoxy(10,10); cout<<"BALANCE :"<<balance; break; } } file.close(); } //============================================================= //THIS FUNCTION RETURNS 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 RETURNS 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(BLACK); gotoxy(3,4); for(int i=1;i<=76;i++) cprintf(" "); textbackground(BLACK); textcolor(LIGHTBLUE); textbackground(BLACK); gotoxy(4,4); cprintf("ACCOUNT NO. NAME OF PERSON 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(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<<"PRESS ANY KEY TO CONTINUE..."; getch(); clrscr(); box_for_list(); } } file.close(); (!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 ACCOUNT 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 ACCOUNT 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 MODIFYS 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(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:"<<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 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("\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 <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)>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:"<<d1<<"/"<<m1<<"/"<<y1; gotoxy(5,8); cout<<"ACCOUNT NO. # :"<<t_accno; gotoxy(5,10); cout<<"NAME :"; gotoxy(8,11); cout<<"ADDRESS :"; gotoxy(8,12); cout<<"NAME OF VARIFYING 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(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: "<<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<<" 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(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: "<<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 TRANSACTIONS 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(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: "<<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(); }
Sabtu, Ogos 03, 2013
C++ : Sistem bank (UI)
Langgan:
Catat Ulasan (Atom)
0 ulasan:
Catat Ulasan
Selamat datang ke 0x2013LΣΣT. Sekiranya anda mempunyai persoalan, pandangan, permintaan, bantuan, cadangan dan sebagainya. Tinggalkan pesanan anda ke dalam kotak komen. Terima kasih !
- http://0x2013.blogspot.com -