Friday 6 May 2016

A simple Calculator Application

#include"graphics.h"
#include"dos.h"
#include"stdio.h"
#include"math.h"
union REGS i,o;
char text[35][25]={
"7","8","9","*","4","5","6","/","1","2","3","+","0","00",".","-","M","M+",
"M-","+/-","MR","MC","x^2","sr","OFF","AC","CE","="};

int s=0,k=0,pass,op,prop,newnum=1,bt,memo=1,d=0,sq;
long double num=0,accum,m;
void normalbutton(int,int,int,int,char *);
void main()
{
int gd=DETECT,gm,x1,x2,y1,y2,i,j,maxx,maxy,x,y,button;
initgraph(&gd,&gm,"");
if(initmouse()==0)
 {
  closegraph();
  restorecrtmode();
  printf(" Mouse driver not loded");
  exit(1);
}
setcolor(2);
gotoxy(20,10);
printf("WELCOME TO ISTE
");
gotoxy(20,14);
printf("press any key to continue.......
");
getch();
cleardevice();
showmouseptr();
movemouseptr(&x,&y);
setcolor(15);
rectangle(198,140,417,163);
rectangle(199,141,418,164);
rectangle(197,139,416,162);
rectangle(185,130,430,450);
rectangle(184,129,431,451);
rectangle(182,127,433,454);
rectangle(181,126,434,453);
setfillstyle(SOLID_FILL,3);
//bar(200,142,415,161);
outtextxy(50,25,"A Calculator project in C presented by B.NARAYANA 
MOORTHY
AND  R.KARTHIK KEYAN");
outtextxy(200,100,"Press OFF button to exit....");
y1=140;
y2=160;
for(j=0;j<7;j++)
 {
  x1=200;
  x2=235;
  y1+=40;
  y2+=40;
for(i=0;i<4;i++)
{
   normalbutton(x1,x2,y1,y2,text[s]);
   s++;
   x1+=60;
   x2+=60;
   }
}
while(1)
{
getmousepos(&button,&x,&y);
y1=140;
y2=160;
for(j=0;j<7;j++)
 {
  x1=200;
  x2=235;
  y1+=40;
  y2+=40;
  for(i=0;i<4;i++)
  {
 if((x<x2&&x>x1)&&(y<y2&&y>y1))
 {
 if((button&1)==1)
  {
  gotoxy(28,10);
 bt=j*4+i;
 setcolor(11);
 outtextxy(x1+12,y1+7,text[j*4+i]);
 if(num>pow(10.0,18))
 exit();
 delay(10);
 delay(250);
 delay(10);
 switch (bt)
 {
 case  8 :
  addnum(1);
  break;
 case  9 :
  addnum(2);
  break;
 case  10 :
  addnum(3);
  break;
 case  4 :
  addnum(4);
  break;
 case  5 :
  addnum(5);
  break;
 case  6 :
  addnum(6);
  break;
 case  0 :
  addnum(7);
  break;
 case  1 :
  addnum(8);
  break;
 case  2 :
  addnum(9);
  break;
 case  12 :
  addnum(0);
  break;
 case  11 :
  operation(1);   // plus
  break;
 case  15 :
  operation(2);    // minus
  break;
 case  3 :
  operation(3);    // multiplication
  break;
 case  7 :
  operation(4);     // division
  break;
 case 13:
  doublezero();
  break;
 case  14 :
  decimal();
  break;
 case 16:
  m=m;
  printf("%25.5Lf",m); //memory call
  break;
 case 20:
  printf("%25.5Lf",m);
  break;
 case 19:
  plusminus();
  break;
 case 17:
  m=m+num;       //memory plus
  break;
 case 18:
  m=m-num;       //memory minus
  break;
 case 21:
  clearm();
  break;
 case 22 :
  square();
  break;
 case 23:
  sqroot();
  break;
 case 24:
  hidemouseptr();
  setcolor(1);
  cleardevice();
  setcolor(14);
  outtextxy(225,200,"THANK YOU");
  delay(2000);
  exit();
  break;
 case 25:
  allclear();
  break;
 case 26:
  clear();
  break;
 case 27:
  num=operation(5);        //  equalto
  break;
  }
  setcolor(1);
 outtextxy(x1+12,y1+7,text[j*4+i]);
  }
   }
 x1+=60;

 x2+=60;
}
 }
 }
}
void normalbutton(int x1,int x2,int y1,int y2,char *text)
{
setcolor(15);
rectangle(x1-2,y1-2,x2+1,y2+1);
rectangle(x1-1,y1-1,x2+2,y2+2);
setcolor(5);
rectangle(x1,y1,x2+2,y2+2);
rectangle(x1,y1,x2+1,y2+1);
setfillstyle(SOLID_FILL,14);
bar(x1,y1,x2,y2);
setcolor(1);
outtextxy(x1+12,y1+7,text);
k++;
}

initmouse()
{
 i.x.ax=0;
 int86 (0x33,&i,&o);
 return(o.x.ax);
}
hidemouseptr()
{
  i.x.ax=2;
  int86(0x33,&i,&o);
  return 0;
}

showmouseptr()
{
 i.x.ax=1;
 int86(0x33,&i,&o);
 return 0;
}
getmousepos(int *button,int *x,int *y)
{
 i.x.ax=3;
 int86(0x33,&i,&o);
 *button=o.x.bx;
 *x=o.x.cx;
 *y=o.x.dx;
 return 0;
}
/* Move mouse ptr to x,y */
movemouseptr(int *x,int *y)
{
 i.x.ax=4;
 int86(0x33,&i,&o);
 o.x.cx=*x;
 o.x.dx=*y;
 return 0;
}
addnum(int pass)
{   if(sq)
 newnum=1;

 if(newnum)
   {      if(d)
 {
   num=pass/(pow(10.0,d));
   d++;
   newnum=0;
 }
  else
 {  num=pass;
    newnum=0;
 }
   }
 else
 {
 if(d)
 {
    if(num<0)
  num=num-pass/(pow(10.0,d));
    else
  num=num+pass/(pow(10.0,d));
   d++;
 }
 else
 {
 num=num*10+pass;
 }
 }
 printf("%25.5Lf",num);
 return ;
}
operation(int opr)
{  long double pnum;
   pnum=num;

   if(newnum && (prop != 5) && memo)
   {
   }
   else
  {  newnum=1;
  d=0;
  sq=0;
  switch(prop)
 {
  case 1:
  accum=accum+pnum;
  break;
  case 2:
  accum=accum-pnum;
  break;
  case 3:
  accum=accum*pnum;
  break;
  case 4:
  accum=accum/pnum;
  break;
  default:
    accum=pnum;
  }
  }
 prop=opr;
 num=accum;
 printf("%25.5Lf",num);
 return num;
}
allclear()
{
 sq=0;
 accum=0;
 num=0;
 d=0;
 newnum=1;
 printf("%25.5Lf",num);
 return;
}
plusminus()
{ if(num!=0)
  { num*=-1;
 printf("%25.5Lf",num);
  }
  return;
}
clearm()
{
m=0;
//printf("%25.5Lf",m);
return;
}
decimal()
{
 if(!d)
 {
 d=1;
 if(newnum==1)
 {
  num=0;
 }
  printf("%25.5Lf",num);
  }
  return;
}
square()
{
sq=1;
 num*=num;
 printf("%25.5Lf",num);
return;
}
sqroot()
{ sq=1;
 num=pow(num,0.5);
 printf("%25.5Lf",num);
return;
}
doublezero()
{
 if(d)
   {
  d++;
  d++;
   }
 else
  num*=100;
 printf("%25.5Lf",num);
 return;
}
clear()
{
num=0;
printf("%25.5Lf",num);
return;
}

Customer Billing System

 #include<stdio.h>
 #include<conio.h>
 #include<stdlib.h>

 void input();
 void writefile();
 void search();
 void output();

 struct date{
  int month;
  int day;
  int year;
  };

  struct account {
int number;
char name[100];
int acct_no;
float mobile_no;
char street[100];
char city[100];
char acct_type;
float oldbalance;
float newbalance;
float payment;
struct date lastpayment;
  }customer;
  int tl,sl,ts;
 void main()
{
 int i,n;
 char ch;
 clrscr();

 _setcursortype(_NOCURSOR);
 printf("   CUSTOMER BILLING SYSTEM:\n\n");
 printf("===============================\n");
 printf("\n1:    to add account on list\n");
 printf("2:    to search customer account\n");
 printf("3:    exit\n");
 printf("\n================================\n");
 do{
      printf("\nselect what do you want to do?");
      ch=getche();
 }while(ch<='0' || ch>'3');
 switch(ch){
case '1':
clrscr();
printf("\nhow many customer accounts?");
scanf("%d",&n);
for(i=0;i<n;i++){
input();
if(customer.payment>0)
customer.acct_type=(customer.payment<0.1*customer.oldbalance)? 'O': 'D';
else
customer.acct_type=(customer.oldbalance>0)?'D' : 'C';
customer.newbalance=customer.oldbalance - customer.payment;
writefile();
}
main();
case '2':
clrscr();
printf("search by what?\n");
printf("\n1 --- search by customer number\n");
printf("2 --- search by customer name\n");
search();
ch=getche();
main();
case '3':
clrscr();
delay(700);
textcolor(BLUE);
gotoxy(25,25);
cprintf("\nA PROJECT BY VARUN");
delay(1500);
exit(1);
 }
 }


   void input()
{
 FILE *fp=fopen("bidur.dat","rb");
 fseek (fp,0,SEEK_END);
 tl=ftell(fp);
 sl=sizeof(customer);
 ts=tl/sl;
 fseek(fp,(ts-1)*sl,SEEK_SET);
 fread(&customer,sizeof(customer),1,fp);
 printf("\ncustomer no:%d\n",++customer.number);
 fclose(fp);
 printf("         Account number:");
 scanf("%d",&customer.acct_no);
 printf("\n       Name:");
 scanf("%s",customer.name);
 printf("\n       mobile no:");
 scanf("%f",&customer.mobile_no);
 printf("         Street:");
 scanf("%s",customer.street);
 printf("         City:");
 scanf("%s",customer.city);
 printf("         Previous balance:");
 scanf("%f",&customer.oldbalance);
 printf("         Current payment:");
 scanf("%f",&customer.payment);
 printf("         Payment date(mm/dd/yyyy):");
 scanf("%d/%d/%d",&customer.lastpayment.month,&customer.lastpayment.day,&customer.lastpayment.year);
 return;
   }

   void writefile()
   {
 FILE *fp;
 fp=fopen("bidur.dat","ab");
 fwrite(&customer,sizeof(customer),1,fp);
 fclose(fp);
 return;
   }

   void search()
   {
char ch;
char nam[100];
int n,i,m=1;
FILE *fp;
fp=fopen("bidur.dat","rb");
do{
printf("\nenter your choice:");
ch=getche();
}while(ch!='1' && ch!='2');
switch(ch){
     case '1':
   fseek(fp,0,SEEK_END);
   tl=ftell(fp);
   sl=sizeof(customer);
   ts=tl/sl;
   do{
printf("\nchoose customer number:");
scanf("%d",&n);
if(n<=0 || n>ts)
printf("\nenter correct\n");
else{
   fseek(fp,(n-1)*sl,SEEK_SET);
   fread(&customer,sl,1,fp);
   output();
}
printf("\n\nagain?(y/n)");
ch=getche();
   }while(ch=='y');
   fclose(fp);
   break;
     case '2':
   fseek(fp,0,SEEK_END);
   tl=ftell(fp);
   sl=sizeof(customer);
   ts=tl/sl;
   fseek(fp,(ts-1)*sl,SEEK_SET);
   fread(&customer,sizeof(customer),1,fp);
   n=customer.number;

   do{
printf("\nenter the name:");
scanf("%s",nam);
fseek(fp,0,SEEK_SET);
for(i=1;i<=n;i++)
{
    fread(&customer,sizeof(customer),1,fp);
    if(strcmp(customer.name,nam)==0)
    {
output();
m=0;
break;
    }
}
if(m!=0)
printf("\n\ndoesn't exist\n");
printf("\nanother?(y/n)");
ch=getche();
   }while(ch=='y');
   fclose(fp);
     }
     return;
}



   void output()
{
  printf("\n\n    Customer no    :%d\n",customer.number);
  printf("    Name   :%s\n",customer.name);
  printf("    Mobile no      :%.f\n",customer.mobile_no);
  printf("    Account number :%d\n",customer.acct_no);
  printf("    Street         :%s\n",customer.street);
  printf("    City           :%s\n",customer.city);
  printf("    Old balance    :%.2f\n",customer.oldbalance);
  printf("    Current payment:%.2f\n",customer.payment);
  printf("    New balance    :%.2f\n",customer.newbalance);
  printf("    Payment date   :%d/%d/%d\n\n",customer.lastpayment.month,customer.lastpayment.day,customer.lastpayment.year);
  printf("    Account status :");
  textcolor(128+RED);
  switch(customer.acct_type)
     {
     case 'C':
cprintf("CURRENT\n\n");
break;
     case 'O':
cprintf("OVERDUE\n\n");
break;
     case 'D':
cprintf("DELINQUENT\n\n");
break;
     default:
cprintf("ERROR\\n\n");
     }
     textcolor(GREEN);
     return;
  }