Sunday, April 8, 2012

stortoll

There are 2 files :
1. Source Code copy (STORETOLL.C). Open this in your Turbo C.
2. Database file (MHN.TXT). This is after the source code in the box below.

After running the program, there will be three menus:

1. Process bill,
2. Print bill,
3. Management

On processbill menu, click billprocess. Then give the item code between 101 to 105.

To exit from billprocess, give 1 and press enter.


//////// FILE 1 - STORETOLL.C /////////////////
//////// LOOK BELOW FOR THE DATABASE FILE /////


#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<time.h>
#include<stdlib.h>


#define NO 0
#define YES 1
#define NONE -1

//in a menu there can be three items

#define MAX_MENU 6


int x,y;
int selection;
int button,x,y;
void *p;
size_t area;

int validate(int);


FILE *date;
FILE *f2;
FILE *fop;
FILE *today;
  char todaydate[15];
FILE *day;
  char salebydate[10];
FILE *itemtoday;
FILE *itembydate;
  char str[10];
int customer;






struct MENU
{
int x;
int y;
int x1;
int y1;
unsigned char Active[MAX_MENU];
char *head;
};


int mouseon(struct MENU *t);
void process();
void xorbar(int sx,int sy,int ex,int ey,int c);
void show();
void hide();
void status();

        //position of the billprocess menu

    struct MENU Billprocess = {0,0,80,20};

        //position of the print menu

    struct MENU Print = {90,0,165,20};

    struct MENU Management = {175,0,260,20};

void main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"f:\tcpp");
selection=NONE;

for(gd=0;gd<MAX_MENU;gd++)

{
       //gd=3

Billprocess.Active[gd]=YES;

    //gd=1
Print.Active[gd]=YES;

Management.Active[gd]=YES;
}

     //head that is printed on msg

Billprocess.head="processbill";
Print.head="Print";
Management.head="management";
      //allocation for image memory

area=imagesize(0,0,150,150);
p=malloc(area);


if(p==NULL)
{
closegraph();
restorecrtmode();
printf("not enough memory");
exit(1);
}


//style of the menu
setfillstyle(1,7);

//full window
bar(0,0,660,650);

welcomescreen();

x=2;
y=2;
process();
//end();
closegraph();
getch();
}




void process()
{
     //menu items in billprocess menu

char *bp[]={"Processbill","Openbill","Exit"};


    //menu item in print menu
char *pr[]={"Printbill"};

char *mgt[]={"SalesToday","SalesBydate","Itemsoldtoday","Itemsoldbydate"};

char KEY;

  //menu bar position
win(0,0,660,20);

   //drawing button for menu items

drawbtn(&Billprocess,"Billprocess");

drawbtn(&Print,"Print");

drawbtn(&Management,"Management");

settextstyle(0,0,0);

//outtextxy(close(x+y),close(y+7),"x");




show();

   //instantly menus are idle

Billprocess.Active[3]=NO;
Print.Active[1]=NO;
Management.Active[4]=NO;

while(1)
{
if(kbhit())

{
KEY=getch();

//way to exit press esc or -
if(KEY==27 || KEY==45)
break;
}

status();



if(button==1)
{
//if(mouseon(&close))
//break;
if(mouseon(&Billprocess))
{
pullmenudown(bp,3,&Billprocess);

if(selection==NONE)

msg("no selection");

if(selection==0)
{

char str[3];

struct dosdate_t d;
  char todaydate[15];
  char month[5],year[5];




        // initalization of customerid

    int customerid;

    // macro to generate customerid in random

    randomize();

    customerid= rand() % 1000;

    customer=customerid;

    itoa(customerid,str,10);


      _dos_getdate(&d);
          itoa(d.day,todaydate,10);
          itoa(d.month,month,10);
          itoa(d.year,year,10);
          strcat(todaydate,month);
          strcat(todaydate,year);

       date=fopen(todaydate,"a+");

    f2=fopen(str,"w");



          //user defined function for page design
         pagedesign();


         gotoxy(6,4);


         printf("CUSTOMERID : %d",customerid);

    fprintf(f2,"%d",customerid);


          //user defined method call for time zone to which customer arrives to bill
        entertime();

          //user defined function for database acess

        getdatabaseacess();

    }


    if(selection==1)
    {
    char str[3];

        setfillstyle(1,0);


    bar(5,25,635,448);

gotoxy(10,8);

printf("ENTER THE CUSTOMERID TO OPEN  ");

scanf("%s",str);



fop=fopen(str,"r");

if(!fop)
{
 gotoxy(10,12);
printf("no customer is  available");

}

else

{

  pagedesign();

  openbill();

      }


  }


    if(selection==2)
    {
    exit(0);
    }
      }

if(mouseon(&Print))

{

pullmenudown(pr,1,&Print);

if(selection==NONE)

msg("noselection");


        if(selection==0)
    {
    char str[3];

        setfillstyle(1,0);


    bar(5,25,635,448);
         itoa(customer,str,10);



fop=fopen(str,"r");

if(!fop)
{
 gotoxy(10,12);
printf("no customer is  available");

}

else

{
      printbill();

      }


  }


}

if(mouseon(&Management))

{

pullmenudown(mgt,4,&Management);

if(selection==NONE)

msg("noselection");

if(selection==0)
{

struct dosdate_t d;
  char month[5],year[5];

 _dos_getdate(&d);
          itoa(d.day,todaydate,10);
          itoa(d.month,month,10);
          itoa(d.year,year,10);
          strcat(todaydate,month);
          strcat(todaydate,year);

       today=fopen(todaydate,"r");


        setfillstyle(1,0);


    bar(5,25,635,448);


if(!today)
{

gotoxy(15,12);
printf("NO DATABASE IS AVAILABLE");

}

else

{

  todaysales();

      }


  }


  if(selection==1)
  {

        setfillstyle(1,0);


    bar(5,25,635,448);



gotoxy(10,8);

printf("ENTER THE DATE TO OPEN  ");

scanf("%s",salebydate);


day=fopen(salebydate,"r");



if(!day)
{
gotoxy(10,10);


printf("NO DATABASE AVAILABLE");

}

else

{

  totalsalebydate();

      }



  }

  if(selection==2)
  {

struct dosdate_t d;
  char month[5],year[5];





 _dos_getdate(&d);
          itoa(d.day,todaydate,10);
          itoa(d.month,month,10);
          itoa(d.year,year,10);
          strcat(todaydate,month);
          strcat(todaydate,year);

       itemtoday=fopen(todaydate,"r");


        setfillstyle(1,0);


    bar(5,25,635,448);


if(!itemtoday)
{

gotoxy(25,12);
printf("NO DATABASE IS AVAILABLE");

}

else

{

  itemtodayretrive();

      }



  }

  if(selection==3)
  {


  setfillstyle(1,0);


    bar(5,25,635,448);


gotoxy(10,8);

printf("ENTER THE DATE TO OPEN  ");

scanf("%s",str);


itembydate=fopen(str,"r");

if(!itembydate)
{
gotoxy(10,10);
printf("no database is  available");

}

else

{

  retriveitembydate();

      }


  }



}

}

else

{
if(mouseon(&Billprocess))

Hlight(&Billprocess);



if(mouseon(&Print))

Hlight(&Print);

if(mouseon(&Management))

Hlight(&Management);


}

}


}




drawbtn(struct MENU *tm,char *txt)

{

setcolor(0);

settextstyle(2,0,4);

   //position that name of the menu is written

outtextxy(tm->x+15,tm->y+4,txt);

}


Hlight(struct MENU *t)
{

winp(t,0);

msg(t->head);

while(mouseon(t))

{

status();

if(button!=0)

break;

if(kbhit())

break;

}

setcolor(7);

hide();

//MESSAGE WINDOW

rectangle(t->x,t->y,t->x1,t->y1);

msg("WELCOME TO STORE-TOLL");

show();



}


        //mouse placement

int mouseon(struct MENU *t)
{

int flag;

flag=0;

if(x>=t->x && x<=t->x1 && y>=t->y && y<=t->y1)

flag=1;

return flag;
}

//MENU ITEM DISPAY

void xorbar(int sx,int sy,int ex, int ey, int c)
{
int i;
setwritemode(1);
setcolor(4);
hide();
for(i=sy;i<=ey;i++)
line(sx,i,ex,i);
show();
setwritemode(0);
}



push(struct MENU *tm)
{
winp(tm,1);
while(button==1)
{
status();
if(kbhit())
break;
}
}

up(struct MENU *tm)
{
setcolor(7);
hide();
rectangle(tm->x,tm->y,tm->x1,tm->y1);
show();
while(button==1)
{
status();
if(kbhit())
break;
}
}


pullmenudown(char *h[],int n,struct MENU *tm)
{
int i;
i=n*20;
push(tm);
hide();
getimage(tm->x+1, tm->y1+2,tm->x+100,tm->y1+i+5,p);
win(tm->x+1,tm->y1+2,tm->x+100,tm->y1+i+5);
setcolor(5);
settextstyle(2,0,4);
for(i=0;i<n;i++)
{
if(!tm->Active[i])
{
setcolor(15);
outtextxy(tm->x+15,tm->y1+9+i*20,h[i]);
setcolor(0);
outtextxy(tm->x+14,tm->y1+8+i*20,h[i]);
}
else
{

//position to write menu items
outtextxy(tm->x+14,tm->y1+8+i*20,h[i]);
}
}
show();
while(button==1)
status();
handlemenu(n,tm);
}



pullmenuup(struct MENU *tm)
{
int i;
hide();
putimage(tm->x+1,tm->y1+2,p,COPY_PUT);
show();
up(tm);
}



handlemenu(int n,struct MENU *tm)
{
int i;
char key;
setcolor(0);
selection=NONE;
i=0;
while(1)
{
status();
if(button==1)
break;

for(i=0;i<n;i++)
{
status();

if(mouseon1(tm->x+4, tm->y1+6+i*20, tm->x+99, tm->y1+22+i*20))
{
xorbar(tm->x+3,tm->y1+6+i*20,tm->x+97,tm->y1+22+i*20,14);

while(mouseon1(tm->x+4,tm->y1+8+i*20,tm->x+97,tm->y1+22+i*20))
{
status();
if(button==1)
{
if(tm->Active[i]==YES)
{
selection=i;
break;
}
else
{
selection=NONE;
}
}
if(kbhit())
break;
}
xorbar(tm->x+3,tm->y1+6+i*20,tm->x+97,tm->y1+22+i*20,14);
}
}
}

pullmenuup(tm);
}


mouseon1(int cx, int cy, int cx1, int cy1)
{
int flag;
flag=0;
if(x>=cx && y>=cy && x<=cx1 && y<=cy1)
flag=1;
return flag;
}



union REGS i,o;
struct SREGS ss;
void show()
{
i.x.ax=1;
int86(0x33,&i,&o);
}

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

void status()
{
i.x.ax=3;
int86(0x33,&i,&o);
button=o.x.bx;
x=o.x.cx;
y=o.x.dx;
}
              //state of the menu
winp(struct MENU *t ,int state)
{
hide();
if(state==1)
{
setcolor(0);

line(t->x,t->y,t->x,t->y1);
line(t->x,t->y,t->x1,t->y);
setcolor(15);
line(t->x1,t->y,t->x1,t->y1);
line(t->x,t->y1,t->x1,t->y1);
}
else
{
setcolor(5);
line(t->x,t->y,t->x,t->y1);
line(t->x,t->y,t->x1,t->y);
setcolor(5);
line(t->x1,t->y,t->x1,t->y1);
line(t->x,t->y1,t->x1,t->y1);
}
show();

}
     //pull down menu design
win(int sx, int sy, int ex,int ey)
{
hide();
setfillstyle(1,7);
bar(sx,sy,ex,ey);
setcolor(15);
line(sx,sy,sx,ey);
line(sx,sy,ex,sy);
setcolor(0);
line(ex,sy,ex,ey);
line(sx,ey,ex,ey);
show();

}


msg(char *m)
{
int l;
setcolor(14);
rectangle(5,25,635,477);
setfillstyle(1,0);
bar(20,455,620,475);
settextstyle(2,0,6);
setcolor(3);
l=textwidth(m)/2;
outtextxy(320-l,455,m);
outtextxy(321-l,456,m);

}

welcomescreen()
{
setfillstyle(1,0);

bar(5,25,635,425);

settextstyle(4,0,3);

setcolor(2);

outtextxy(210,120,"STORE TOLL");


settextstyle(4,0,3);

setcolor(3);

outtextxy(220,160,"WELCOMES");


settextstyle(4,0,3);

setcolor(5);

outtextxy(265,200,"YOU");
}


pagedesign()
{
    //setting text color

    setcolor(2);

        //full outline
        setfillstyle(1,0);


    bar(5,25,635,448);

        //text style

    settextstyle(4,0,3);

         //name of SHOP

    outtextxy(200,25,"STORE-TOLL");

        //first horizontal line

    line(0,65,650,65);

        //second horizontal line

    line(0,78,650,78);

        //first vertical line

    line(120,65,120,450);

       //second vertical line

    line(275,65,275,450);

      //third vertical line

    line(350,65,350,450);

      //fourth vertical line

    line(450,65,450,450);

     //fifth vertical line

    line(530,65,530,450);

     //text style

    settextstyle(2,0,5);

    outtextxy(10,65,"ITEM CODE");


    outtextxy(140,65,"ITEM NAME");


    outtextxy(280,65,"kg/gm");


    outtextxy(375,65,"PRICE");


    outtextxy(465,65,"NUMBER");


    outtextxy(555,65,"AMOUNT");


        //line for total at bottom

    line(450,430,650,430);


    outtextxy(470,430,"TOTAL");


      return(0);

 }



entertime(void)
{
    time_t timer;


        struct tm *tblock;

    /* gets time of day */

    timer = time(NULL);

    /* converts date/time to a structure */

    tblock = localtime(&timer);

    //position for time display

        gotoxy(55,4);


            printf("%s", asctime(tblock));


            fprintf(f2,"        %s", asctime(tblock));

       return(0);

}

getdatabaseacess()
{
 FILE *file;

    int code,itemcode,num,yax,quantity,i=0,curY;

    char itemname[30];
    char buf[6],ip;
    int counter=0;

    float rate,sum,total=0.0;

    //first y axis position

    yax=5;


    file=fopen("mhn.txt","r");

    while(i<20)

    {
           msg("BILL ON PROCESS");


//x,y position to get code

        gotoxy(6,++yax);

        //get code input

        msg("GET ITEM CODE");

        curY= wherey();

        printf("|");
        ip=getch();
        while(ip!='
')
          {
            if(isdigit(ip))
               {
             printf("%c",ip);
             buf[counter++]=ip;
               }
            ip=getch();
            if(counter>=5)
            break;
          }
        buf[counter]='

No comments:

Post a Comment