Code : #include #include #include #include #include #include #include #include #include #include #include void gra1(); void gra2(); //Program segment to display some graphic void box(int,int); //********************************************************** // THIS CLASS CONTAINS FUNCTIONS RELATED TO DRAW BOX ETC. //********************************************************** class shape { public : //Public member functions 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) ; //Public member functions void help(void) ; private : void edit_menu(void) ; //Private member functions } ; //********************************************************** // 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) ; //So that the private members of class char *return_address(int) ; //can be used in required segments. 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 ; //Private member elements 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 ; } ; //********************************************************** // CLASS SHAPE :: 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 <0;i--) { if((counter==1)||(choice==0)) sound(3*i); setcolor(1); line(320-i,0,320-i,480); line(320+i,0,320+i,480); line(0,320-i,640,320-i); line(0,160+i,640,160+i); delay(2); } nosound(); closegraph(); if (choice == 1) { account a ; a.display_account() ; } else if (choice == 2) { initial ini ; ini.display_list() ; } else if (choice == 3) { account a ; a.transaction() ; } else if (choice == 4) { account a ; a.new_account() ; } else if (choice == 5) edit_menu() ; else if (choice == 6) help() ; else if (choice == 0) { break; } } } void toggle(int i,int temp) { char m1[]="1: SEE ACCOUNT ",m2[]="2: LIST OF ACCOUNTS",m3[]="3:TRANSACTIONS ", m4[]="4: OPEN NEW ACCOUNT",m5[]="5: EDIT ACCOUNT ",m6[]="6: HELP", m7[]="7: QUIT "; if (i==0) i=7; if (temp==0) temp=7; box(temp,7); switch(temp) { case 1: box(1,7); setcolor(15); outtextxy(320,90,m1); break; case 2: box(2,7); setcolor(15); outtextxy(320,150,m2); break; case 3: box(3,7); setcolor(15); outtextxy(320,210,m3); break; case 4: box(4,7); setcolor(15); outtextxy(320,270,m4); break; case 5: box(5,7); setcolor(15); outtextxy(320,330,m5); break; case 6: box(6,7); setcolor(15); outtextxy(320,390,m6); break; case 7: box(7,7); setcolor(15); outtextxy(320,450,m7); break; } switch(i) { case 1: box(1,9); setcolor(1); outtextxy(320,90,m1); break; case 2: box(2,9); setcolor(1); outtextxy(320,150,m2); break; case 3: box(3,9); setcolor(1); outtextxy(320,210,m3); break; case 4: box(4,9); setcolor(1); outtextxy(320,270,m4); break; case 5: box(5,9); setcolor(1); outtextxy(320,330,m5); break; case 6: box(6,9); setcolor(1); outtextxy(320,390,m6); break; case 7: box(7,9); setcolor(1); outtextxy(320,450,m7); break; } } void selected(int i) { if(i==0) i=7; delay(350); setcolor(0); line(180,60*(i+.5)-20,180,60*(i+.5)+20); line(180,60*(i+.5)-20,460,60*(i+.5)-20); setcolor(15); line(460,60*(i+.5)-20,460,60*(i+.5)+20); line(180,60*(i+.5)+20,460,60*(i+.5)+20); line(461,60*(i+.5)-20,461,60*(i+.5)+21); line(180,60*(i+.5)+21,461,60*(i+.5)+21); delay(350); setcolor(15); line(180,60*(i+.5)-20,180,60*(i+.5)+20); line(180,60*(i+.5)-20,460,60*(i+.5)-20); setcolor(0); line(460,60*(i+.5)-20,460,60*(i+.5)+20); line(180,60*(i+.5)+20,460,60*(i+.5)+20); line(461,60*(i+.5)-20,461,60*(i+.5)+21); line(180,60*(i+.5)+21,461,60*(i+.5)+21); } void box(int i,int color) { setcolor(5); line(180,60*(i+.5)-20,180,60*(i+.5)+20); line(180,60*(i+.5)-20,460,60*(i+.5)-20); line(460,60*(i+.5)-20,460,60*(i+.5)+20); line(180,60*(i+.5)+20,460,60*(i+.5)+20); setfillstyle(1,color); floodfill(320,60*(i+.5),5); setcolor(15); line(180,60*(i+.5)-20,180,60*(i+.5)+20); line(180,60*(i+.5)-20,460,60*(i+.5)-20); setcolor(0); line(460,60*(i+.5)-20,460,60*(i+.5)+20); line(180,60*(i+.5)+20,460,60*(i+.5)+20); line(461,60*(i+.5)-20,461,60*(i+.5)+21); line(180,60*(i+.5)+21,461,60*(i+.5)+21); } //************************************************************************ // CLASS CONTROL :: 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(BLACK) ; textbackground(WHITE) ; gotoxy(34,10) ; cprintf(" EDIT MENU ") ; textcolor(LIGHTGRAY) ; 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 ; } } //********************************************************** // CLASS CONTROL :: 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 PROJECT BANKING") ; delay(10) ; gotoxy(10,5); cout <<" IN THIS PROJECT YOU CAN KEEP RECORD FORDAILY "; delay(10) ; gotoxy(10,6); cout <<" BANKING TRANSACTIONS. " ; delay(10) ; gotoxy(10,8); cout <<"- THIS PROGRAM IS CAPABLE OF HOLDING ANY No. OF ACCOUNTS"; delay(10) ; gotoxy(10,10); cout <<"-1.) In the first option the account of a particular person"; delay(10) ; gotoxy(10,11); cout <<" is displayed by giving simply the account no. of that person." ; delay(10) ; gotoxy(10,13); cout <<"-2.) In second option you can see the list of all the accounts." ; delay(10) ; gotoxy(10,15); cout <<"-3.) Through third option you can do banking transactions" ; delay(10) ; gotoxy(10,16); cout <<" (Deposit/Withdraw)." ; delay(10) ; gotoxy(10,18); cout <<"-4.) In Fourth option you can open new account." ; delay(10) ; gotoxy(10,19); cout <<" (NOTE: Opening amount i.e. , the first deposit should not be " ; delay(10) ; gotoxy(10,20); cout <<" less than Rs.500/-"; delay(10); gotoxy(10,22); cout <<"-5.) In Fifth option you can Modify or Delete any account." ; delay(10) ; gotoxy(10,23); cout <<"-6.) In sixth option the help menu is displayed "; gotoxy(10,24); cout <<"-0.) This is the last option i.e., Quit (Exit to Dos). " ; delay(10) ; textcolor(RED+BLINK) ; textbackground(WHITE+BLINK) ; gotoxy(26,25) ; cprintf(" Press a key to continue ") ; textcolor(LIGHTGRAY) ; textbackground(BLACK) ; gotoxy(25,2) ; getch() ; getch() ; for (int i=25; i>=1; i--) { delay(20) ; gotoxy(1,i) ; clreol() ; } } //****************************************************************** // CLASS INITIAL :: THIS FUNCTION RETURN LAST ACCOUNT NO. IN THE FILE // INITIAL.DAT //****************************************************************** int initial :: last_accno(void) { fstream file ; file.open("INITIAL.DAT", ios::in|ios::binary) ; file.seekg(0,ios::beg) ; int count=0 ; while (file.read((char *) this, sizeof(initial))) count = accno ; file.close() ; return count ; } //************************************************************************ * // CLASS INITIAL :: 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|ios::binary) ; 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 ; } //************************************************************************ // CLASS I NITIAL :: 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|ios::binary) ; file.seekg(0,ios::beg) ; while (file.read((char *) this, sizeof(initial))) { if (t_accno == accno) { gotoxy(8,5) ; cout <<"ACCOUNT NO. " < 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 BE 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 BE 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 a key to continue..." ; getch() ; } //**************************************************************** // CLASS ACCOUNT :: 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 <<" " ; } } //***************************************************************** // CLASS ACCOUNT :: 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|ios::binary) ; 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() ; } //************************************************************************ // CLASS ACCOUNT :: 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|ios::binary) ; fstream temp ; temp.open("temp.dat", ios::out|ios::binary) ; 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|ios::binary) ; temp.open("temp.dat", ios::in|ios::binary) ; 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(WHITE) ; gotoxy(3,3) ; for (i=1; i<=76; i++) cprintf(" ") ; textbackground(BLACK) ; textcolor(BLACK+BLINK) ; textbackground(WHITE) ; gotoxy(32,3) ; cprintf("OPEN NEW 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 ; 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 BE 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 VERIFING 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(WHITE) ; gotoxy(3,5) ; for (int i=1; i<=76; i++) cprintf(" ") ; textbackground(BLACK) ; textcolor(BLACK) ; textbackground(WHITE) ; gotoxy(4,5) ; cprintf("DATE PARTICULAR DEPOSIT WITHDRAW INTEREST BALANCE") ; 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(63,2) ; cout <<"Date: " < 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|ios::binary) ; 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(1,1) ; cout <<"PRESS (0) TO 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(1,1) ; cout <<"PRESS (0) TO EXIT" ; textbackground(WHITE) ; 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 : "< 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(1,1) ; cout <<"PRESS (0) TO 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(1,1) ; cout <<"PRESS (0) TO EXIT" ; textbackground(WHITE) ; gotoxy(3,3) ; for (int i=1; i<=76; i++) cprintf(" ") ; textbackground(BLACK) ; textcolor(BLACK+BLINK) ; textbackground(WHITE) ; gotoxy(30,3) ; cprintf("CLOSE ACCOUNT SCREEN") ; 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(62,5) ; cout <<"Date: "<270) s=45; if (x2>370) s=10; if (x2==320) delay(999); else delay(s); } delay(800); for (int i=27; i<=37; i++) { gotoxy(i,23) ; cout <<" " ; } gotoxy(28,23); cout<<"COMPLETE"; gotoxy(20,25); cout<<"PRESS ANY KEY TO CONTINUE "; getch(); cleardevice(); } void gra2() //Function definition *2 { clrscr(); //To make a designer ellipse int gd=DETECT,gm; initgraph(&gd, &gm, "c: c"); setcolor(8); ellipse(320,240,0,360,300,150); settextstyle(10,0,4); settextjustify(1,1); setcolor(5); outtextxy(320,170,"PROJECT BANKING"); delay(250); settextstyle(4,0,4); setcolor(20); outtextxy(320,220,"Presented By:"); delay(250); outtextxy(320,315,"ISIT"); settextstyle(10,0,4); setcolor(3); delay(250); outtextxy(320,265,"INTELLIGENTS"); for (int stangle=0;!kbhit();stangle++) { setcolor(7); ellipse(320,240,stangle,stangle+20,300,150); ellipse(320,240,stangle+180,stangle+200,300,150); delay(9); setcolor(8); ellipse(320,240,stangle-1,stangle+19,300,150); ellipse(320,240,stangle-1+180,stangle+199,300,150); } closegraph(); }