Sunday, February 14, 2010

Simple Account Software

#include
#include
#include
#include
#include

union REGS i,o;
char *menu[]={"1.Add Records","2.Show Records","3.Modify Records",
"4.Del Records","5.Search Record","6.Exit"};


main()
{
int gd=DETECT,gm,choice=1,width=0,i,count,sr=0;
char **buffer;
FILE *m,*t;
char sname[20];
long int size;
char mrec;
struct cust
{
char name[20];
int accno;
float balance;
};
struct cust s;

m=fopen("C:\record.txt","rb+");

if(m==NULL)
{
t=fopen("C:\record.txt","wb+");

if(t==NULL)
{ printf("Error in opening file ");
exit();
}
}
size=sizeof(s);
initgraph(&gd,&gm,"C:\Tc\Bgi");

setbkcolor(1);
setcolor(11);
if(initmouse()==0)
{
printf("
Mouse driver not loaded...");
exit();
}

count=sizeof(menu)/sizeof(char *);
settextstyle(TRIPLEX_FONT,0,3);
displaymenu(menu,count,10,10);

for(i=0;i
{
if(textwidth(menu[i])>width)
width=textwidth(menu[i]);
}

// movemouseptr(&x1,&y1);

buffer=malloc(sizeof(menu));
savemenu(menu,buffer,width,count,10,10);
showmouseptr();
while (1)
{ displaymenu(menu,count,10,10);
choice=getresponse(menu,buffer,width,count,10,10);
gotoxy(50,15);

hidemouseptr();
switch (choice)
{
case 1 : cleardevice();
fseek(m,0,SEEK_END);
mrec='y';
gotoxy(1,1);
while(mrec=='y')
{
printf("

Enter the Name of the Custumer ");
scanf("%s",s.name);
printf("
Enter the Acc.no of the Custumer ");
scanf("%d",&s.accno);
printf("
Enter the Balance of the Custumer ");
scanf("%f",&s.balance);

fwrite(&s,size,1,m);
printf("
Are there more Records (Y/N)");
fflush(stdin);
mrec=getche();
} printf("Press any key to go back to menu");
cleardevice();
break;

case 2: cleardevice();
rewind(m);
gotoxy(1,1);
printf("

Name Acc.No Ammount Due
");
sr=0;
if(fread(&s,size,1,m)==1)
{ rewind(m);
while(fread(&s,size,1,m)==1)
{
printf("
%30s%12d%23.2f",s.name,s.accno,s.balance);
sr++;
}
} else
printf(" There is no record to Display");
printf("

There are %d Records",sr);
printf("

Press any key to go back to menu");
getch();
cleardevice();
break;

case 3: clearviewport();
mrec='y';
gotoxy(1,1);
while(mrec=='y')
{
printf("

Enter the name of Customer whose rec. is to be modified
");
scanf("%s",sname);
// gets(sname);
rewind(m);
while (fread(&s,size,1,m)==1)
{ sr=0;
if( strcmp (s.name,sname)==0)
{ sr=1;
// printf("
Enter new name,Acc.no,Balance ");
// scanf("%s%d%f",s.name,&s.rollno,&s.percent);
printf("

Enter the new Name of the Custumer ");
scanf("%s",s.name);
// gets(s.name);

printf("
Enter the new Acc.no of the Custumer ");
scanf("%d",&s.accno);
printf("
Enter the new Balance of the Custumer ");
scanf("%f",&s.balance);




fseek(m,-size,SEEK_CUR);
fwrite(&s,size,1,m);
break;
}
}
if(sr==0)
printf("
Record "%s" is not found",sname);
printf("
Modify more records (Y/N)");
fflush(stdin);
mrec=getche();

}
clearviewport();
break;
case 4: clearviewport();
mrec='y';
gotoxy(1,1);
while(mrec=='y')
{
printf("
Enter the name of the Customer to delete the rec ");
scanf("%s",sname);
// gets(sname);
t=fopen("C:\stemp.txt","wb");

rewind (m);
while(fread(&s,size,1,m)==1)
{
if(strcmp(s.name,sname)!=0)
fwrite(&s,size,1,t);
}
fclose(m);
fclose(t);
remove("C:\record.txt");
rename("C:\stemp.txt","C:\record.txt");

m=fopen("C:\record.txt","rb+");

printf("Delete more records (Y/N)");
fflush(stdin);
mrec=getche();
} clearviewport();
// displaymenu(menu,count,10,10);
// getch();
// choice=getresponse(menu,buffer,width,count,10,10);
break;
case 5: clearviewport();
mrec='y';
gotoxy(1,1);
while(mrec=='y')
{
printf("

Enter the name of Customer whose rec. is to be Searched
");
scanf("%s",sname);
// gets(sname);
rewind(m);
while (fread(&s,size,1,m)==1)
{ sr=0;
if( strcmp (s.name,sname)==0)
{
// printf("
Enter new name,Acc.no,Balance");
// scanf("%s%d%f",s.name,&s.rollno,&s.percent);
// fseek(m,-size,SEEK_CUR);
// fwrite(&s,size,1,m);
printf("
Record found");
printf("

Name Acc.No Ammount Due
");
printf("
%30s%12d%23.2f",s.name,s.accno,s.balance);
sr=1;
getch();
break;
}
}
if(sr==0)
printf("
Record "%s" is not found",sname);
printf("
Search more records (Y/N)");
fflush(stdin);
mrec=getche();

}
clearviewport();
break;

case 6:
fclose(m);
exit();

}
showmouseptr();
}
}

displaymenu(char **menu,int count,int x1,int y1)
{
int i,h;

h=textheight(menu[0]);

for(i=0;i
outtextxy(x1,y1+i*(h+5),menu[i]);
}

savemenu (char **menu,char **buffer,int width,int count,int x1,int y1)
{
int i,x2,yy1,yy2,area,h;

h=textheight(menu[0]);

for(i=0;i
{
x2=x1+width;
yy1=y1+i*(h+5);
yy2=y1+(i+1)*(h+5);

area=imagesize(x1,yy1,x2,yy2);
buffer[i]=malloc(area);
getimage(x1,yy1,x2,yy2,buffer[i]);

}
}

getresponse(char **menu,char **buffer,int width,int count,int x1,int
y1)
{
int choice=1,prevchoice=0,x,y,x2,y2,button;
int in,i,h;

h=textheight(menu[0]);
y2=y1+count*(h+5);
x2=x1+width;
rectangle(x1-5,y1-5,x2+5,y2+5);

while(1)
{
getmousepos(&button,&x,&y);

if (x>=x1&&x<=x2&&y>=y1&&y<=y2)
{ in=1;

for(i=1;i<=count;i++)
{
if(y<=y1+i*(h+5))
{ choice=i;
break;
}
}

if(prevchoice!=choice)
{
hidemouseptr();
highlight(buffer,choice,h,x1,y1);

if(prevchoice)
dehighlight(buffer,prevchoice,h,x1,y1);

prevchoice=choice;
showmouseptr();
}
if((button & 1)==1)
{
while ((button & 1)==1)
getmousepos(&button,&x,&y);

if(x>=x1&&x<=x2&&y>=y1&&y<=y2)
return(choice);
}
}
else
{
if( in ==1)
{
in=0;
prevchoice=0;
hidemouseptr();
dehighlight(buffer,choice,h,x1,y1);
showmouseptr();
}
}
}
}

highlight(char **buffer,int ch,int h,int x1,int y1)
{
putimage(x1,y1+(ch-1)*(h+5),buffer[ch-1],NOT_PUT);
}


dehighlight(char **buffer,int ch,int h,int x1,int y1)
{
putimage(x1,y1+(ch-1)*(h+5),buffer[ch-1],COPY_PUT);
}


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

/* displays mouse pointer */
showmouseptr()
{
i.x.ax=1;
int86(0x33,&i,&o);
}

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

/*gets mouse coordinates and button status*/

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;
}

movemouseptr(int *x,int *y)
{
i.x.ax=4;
int86(0x33,&i,&o);
o.x.cx=*x;
o.x.dx=*y;
return 0;
}

No comments: