/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*                           VIDEO LIBRARY MANAGEMENT SYSTEM                      */
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#include<graphics.h>
#define PATH ".gi"
#define TBG textbackground(WHITE);textcolor(BLUE)
typedef struct customer
    {
     long id;
     char name[20];
     char pn[12];
     char address[40];
     char category;
     int doj[3];
    }cust;
typedef struct movie
    {
     long id;
     char title[25];
     int copy;
     int cponshelf;
     int issue;
     char sid[20];
     int loc;
    }mov;
typedef struct transaction
    {
     long invoice;
     int doi[3];
     int dor[3];
     char title[25];
     int fine;
     long cid;
     char cname[20];
     int copies;
     int rent;
     int tam;
    }transaction;
cust ctr;
mov mv;
transaction tran;
FILE *fc,*fm,*ft,*tmp;
long int size;
int days,k=0;
struct date d;
void main_menu()
  {
                char
*menu[]={"CUSTOMER SECTION",
                                "MOVIE
SECTION",
                                "TRANSACTION
SECTION",
                                "EXIT"};
                char
ch;
                int
gd=DETECT,gm,i,choice=0;
                initgraph(&gd,&gm,PATH);
                setfillstyle(SOLID_FILL,RED);
                bar(0,0,640,480);
                title("MAIN
MENU",180);
                status();
                box(0,menu[0]);
                box(1,menu[1]);
                box(2,menu[2]);
                box(3,menu[3]);
                selectbox(choice,menu[choice]);
                //72  up
                //80  down
                //75  left
                //77  right
                //13  enter
                //49  1
                //71  Home
                //79  End
                //73
PgUp
                //81
PgDown
                //27
Escape
                while((ch=getch())!=13)
                {
                                switch(ch)
                                {
                                case
80:
                                case
81:
                                choice++;
                                if(choice==4)
                                choice=0;
                                selectbox(choice,menu[choice]);
                                for(i=0;i<=3;i++)
                                {
                                if(i==choice)
continue;
                                box(i,menu[i]);
                                }
                                break;
                                case
72:
                                case
73:
                                choice--;
                                if(choice==-1)
                                choice=3;
                                selectbox(choice,menu[choice]);
                                for(i=0;i<=3;i++)
                                {
                                if(i==choice)
continue;
                                box(i,menu[i]);
                                }
                                }
                }
      
pressbutton(choice,menu[choice]);
       switch(choice)
                  {
                    case 0:
                                   size=sizeof(ctr);
                                   customer();
                                   break;
                    case 1:
                                   movie();
                                   break;
                    case 2:
                                   transactions();
                                   break;
                    case 3:
                                   closegraph();
                                   restorecrtmode();
                                   exit(0);
                  }
    }
customer()
{
                char
*menu[]={
                                "ADD
CUSTOMER",
                                "MODIFY
CUSTOMER",
                                "DELETE
CUSTOMER",
                                "LIST
CUSTOMER",
                                "BACK
TO MAIN MENU",
                                "EXIT"
                                };
                char
ch;
                int
gd=DETECT,gm;
                int
i,choice=0;
                initgraph(&gd,&gm,PATH);
                setfillstyle(SOLID_FILL,RED);
                bar(0,0,640,480);
                title("CUSTOMER
MENU",130);
                status();
                box(0,menu[0]);
                box(1,menu[1]);
                box(2,menu[2]);
                box(3,menu[3]);
                box(4,menu[4]);
                box(5,menu[5]);
                selectbox(choice,menu[choice]);
                //72  up
                //80  down
                //75  left
                //77  right
                //13  enter
                //49  1
                //71  Home
                //79  End
                //73
PgUp
                //81
PgDown
                //27
Escape
                while((ch=getch())!=13)
                {
                                switch(ch)
                                {
                                case
80:
                                case
81:
                                choice++;
                                if(choice==6)
                                choice=0;
                                selectbox(choice,menu[choice]);
                                for(i=0;i<=5;i++)
                                {
                                if(i==choice)
continue;
                                box(i,menu[i]);
                                }
                                break;
                                case
72:
                                case
73:
                                choice--;
                                if(choice==-1)
                                choice=5;
                                selectbox(choice,menu[choice]);
                                for(i=0;i<=5;i++)
                                {
                                if(i==choice)
continue;
                                box(i,menu[i]);
                                }
                                }
                }
                pressbutton(choice,menu[choice]);
                closegraph();
                restorecrtmode();
     clrscr();
     if((fc=fopen("c:customer.txt","rb+"))==NULL)
                fc=fopen("c:customer.txt","wb+");
     switch(choice)
                {
                 case 0:
                                addcus();
                                break;
                case 1:
                                rewind(fc);
                                modify();
                                break;
                 case 2:
                                delete();
                                break;
                 case 3:
                                listcust();
                                break;
                 case 4:
                                fclose(fc);
                                main_menu();
                                break;
                 case 5:
                                fclose(fc);
                                exit(1);
                }
}
movie()
{
                char
*menu[]={
                                "ADD
MOVIE",
                                "LIST
MOVIES",
                                "SEARCH
MOVIE",
                                "BACK
TO MAIN MENU",
                                "EXIT"
                                };
                char
ch;
                int
gd=DETECT,gm;
                int
i,choice=0;
                initgraph(&gd,&gm,PATH);
                setfillstyle(SOLID_FILL,RED);
                bar(0,0,640,480);
                title("MOVIE
MENU",165);
                status();
                box(0,menu[0]);
                box(1,menu[1]);
                box(2,menu[2]);
                box(3,menu[3]);
                box(4,menu[4]);
                selectbox(choice,menu[choice]);
                //72  up
                //80  down
                //75  left
                //77  right
                //13  enter
                //49  1
                //71  Home
                //79  End
                //73
PgUp
                //81
PgDown
                //27
Escape
                while((ch=getch())!=13)
                {
                                switch(ch)
                                {
                                case
80:
                                case
81:
                                choice++;
                                if(choice==5)
                                choice=0;
                                selectbox(choice,menu[choice]);
                                for(i=0;i<=4;i++)
                                {
                                if(i==choice)
continue;
                                box(i,menu[i]);
                                }
                                break;
                                case
72:
                                case
73:
                                choice--;
                                if(choice==-1)
                                choice=4;
                                selectbox(choice,menu[choice]);
                                for(i=0;i<=4;i++)
                                {
                                if(i==choice)
continue;
                                box(i,menu[i]);
                                }
                                }
                }
                pressbutton(choice,menu[choice]);
                closegraph();
                restorecrtmode();
     clrscr();
     /*textcolor(4);*/
    
fm=fopen("c:movie.txt","rb+");
     if(fm==NULL)
    
fm=fopen("c:movie.txt","wb+");
     switch(choice)
                {
                 case 0:
                                addmov();
                                break;
                 case 1:
                                listmov();
                                break;
                 case 2:
                                searchmov();
                                break;
                 case 3:
                                main_menu();
                                break;
                 case 4:
                                fclose(fm);
                                exit(1);
                }
}
transactions()
    {
     char *menu[]={
                                "NEW
TRANSACTION",
                                "CLOSE
TRANSACTION",
                                "LIST
TRANSACTIONS",
                                "SEARCH
MOVIE",
                                "BACK
TO MAIN MENU",
                                "EXIT"
                                };
                char
ch;
                int
gd=DETECT,gm,i,choice=0;
                initgraph(&gd,&gm,PATH);
                setfillstyle(SOLID_FILL,RED);
                bar(0,0,640,480);
                title("TRANSACTION
MENU",100);
                status();
                box(0,menu[0]);
                box(1,menu[1]);
                box(2,menu[2]);
                box(3,menu[3]);
                box(4,menu[4]);
                box(5,menu[5]);
                selectbox(choice,menu[choice]);
                //72  up
                //80  down
                //75  left
                //77  right
                //13  enter
                //49  1
                //71  Home
                //79  End
                //73 PgUp
                //81
PgDown
                //27
Escape
                while((ch=getch())!=13)
                {
                                switch(ch)
                                {
                                case
80:
                                case
81:
                                choice++;
                                if(choice==6)
                                choice=0;
                                selectbox(choice,menu[choice]);
                                for(i=0;i<=5;i++)
                                {
                                if(i==choice)
continue;
                                box(i,menu[i]);
                                }
                                break;
                                case
72:
                                case
73:
                                choice--;
                                if(choice==-1)
                                choice=5;
                                selectbox(choice,menu[choice]);
                                for(i=0;i<=5;i++)
                                {
                                if(i==choice)
continue;
                                box(i,menu[i]);
                                }
                                }
                }
                pressbutton(choice,menu[choice]);
                closegraph();
                restorecrtmode();
     clrscr();
     ft=fopen("c: ransact.txt","rb+");
     if(ft==NULL)
                ft=fopen("c:       ransact.txt","wb+");
     switch(choice)
                {
                 case 0:
                                addtran();
                                break;
                 case 1:
                                closetran();
                                break;
                 case 2:
                                listtran();
                                break;
                 case 3:
                                 fm=fopen("c:movie.txt","rb+");
                                 if(fm==NULL)
                                 fm=fopen("c:movie.txt","wb+");
                                 searchmov();
                                 break;
                 case 4:
                                main_menu();
                                break;
                 case 5:
                                exit(0);
                }
    }
addcus()
   {
    char another='y';
   
fseek(fc,0,SEEK_END);
    TBG;
   
while(another=='y'||another=='Y')
                {
                 clrscr();
                 
                 printf("********************   ADD CUSTOMER FORM ****************");
                 printf("CUSTOMER ID(NUMERIC)  :");
                 printf("CUSTOMER NAME         :");
                 printf("CUSTOMER PHONE NO     :");
                 printf("CUSTOMER ADDRESS      :");
                 printf("DATE OF JOINING       :");
                 printf("CATEGORY(H/A/C/R/S/T) :");
                 
                 gotorc(2,24);
                 customid();
                 gotorc(4,24);
                 fflush(stdin);
                 gets(ctr.name);
                 gotorc(6,24);
                 fflush(stdin);
                 gets(ctr.pn);
                 gotorc(8,24);
                 fflush(stdin);
                 gets(ctr.address);
                 gotorc(10,24);
                 fflush(stdin);
                 getdate(&d);
                 ctr.doj[0]=d.da_day;ctr.doj[1]=d.da_mon;ctr.doj[2]=d.da_year;
                 printf("%d/%d/%d",d.da_day,d.da_mon,d.da_year);
                 gotorc(12,24);
                 fflush(stdin);
                 ctr.category=getche();
                 gotorc(16,3);
                 printf("DO YOU WANT TO SUBMIT THIS FORM
(Y/N)");
                 fflush(stdin);
                 another=getch();
                 if(another=='y'||another=='Y')
                 fwrite(&ctr,size,1,fc);
                 gotorc(18,3);
                 printf("DO YOU WANT TO ADD ANOTHER
CUTOMER(Y/N)");
                 fflush(stdin);
                 another=getch();
                }
    fclose(fc);
    customer();
     }
customid()
    {
     rewind(fc);
    
if(fread(&ctr,sizeof(ctr),1,fc)!=1)
                ctr.id=1;
     else
       {
                while(fread(&ctr,sizeof(ctr),1,fc)==1);
                     ctr.id++;
                 }
       printf("%ld",ctr.id);
     }
 modify()
   {
    char
another='y',choice,name[20],flag='n';
    long id;
    TBG;
   
while(another=='y'||another=='Y')
                {
                 clrscr();
                 rewind(fc);
                 
                 printf(" SEARCH
BY NAME : PRESS 1         SEARCH BY
ID   : PRESS 2                ");
                 
                 fflush(stdin);
                 choice=getchar();
                 if(choice=='2')
                   {
                     printf("ENTER CUSTOMER ID : ");
                     scanf("%ld",&id);
                                     while(fread(&ctr,size,1,fc)==1)
                                       {
                                if(ctr.id==id)
                                 {
                                  new();
                                  flag='y';
                                  break;
                                 }
                                      }
                     }
                 if(choice=='1')
                    {
                     printf("ENTER CUSTOMER NAME :
");
                     fflush(stdin);
                     gets(name);
                     while(fread(&ctr,size,1,fc)==1)
                                {
                                   if(strcmpi(ctr.name,name)==0)
                                     {
                                       new();
                                       flag='y';
                                       break;
                                     }
                                }
                    }
                 if(flag=='n')
                 {
                 gotorc(15,3);
                 printf("CUSTOMER NOT FOUND............
!");
                 }
                 gotorc(18,3);
                 printf("DO YOU WANT TO MODIFY ANOTHER
CUTOMER(Y/N)");
                 fflush(stdin);
                 another=getch();
                }
    fclose(fc);
    customer();
     }
new()
                {
                   char another='y';
                   clrscr();
                   TBG;
                   fseek(fc,-size,SEEK_CUR);
                                printf("CUSTOMER'S
NEW NAME                      :");
                                printf("CUSTOMER'S
NEW PHONE NO                  :");
                                printf("CUSTOMER'S
NEW ADDRESS                   :");
                                printf("NEW
DATE OF JOINING (DD<-|MM<-|YYYY<-|) 
:");
                                printf("NEW
CATEGORY(H/A/C/R/S/T)               
:");
                                gotorc(1,43);
                                fflush(stdin);
                                gets(ctr.name);
                                gotorc(3,43);
                                fflush(stdin);
                                gets(ctr.pn);
                                gotorc(5,43);
                                fflush(stdin);
                                gets(ctr.address);
                                gotorc(7,43);
                                fflush(stdin);
                                scanf("%d",&ctr.doj[0]);
                                gotorc(7,45);
                                printf("%c",'/');
                                scanf("%d",&ctr.doj[1]);
                                gotorc(7,48);
                                printf("%c",'/');
                                scanf("%d",&ctr.doj[2]);
                                gotorc(9,43);
                                fflush(stdin);
                                ctr.category=getche();
                                gotorc(16,3);
                                printf("UPDATE
THE CUSTOMER RECORD (Y/N)");
                                fflush(stdin);
                                another=getch();
                                if(another=='y'||another=='Y')
                                fwrite(&ctr,size,1,fc);
                                rewind(fc);
                 }
listcust()
{
int i=1,p=4;
clrscr();
TBG;
rewind(fc);
printf("********************  CUSTOMERS LIST ************");
gotorc(2,3);
printf("ID");
gotorc(2,8);
printf("NAME");
gotorc(2,22);
printf("PHONE NO");
gotorc(2,35);
printf("ADDRESS");
gotorc(2,55);
printf("D.O.J");
gotorc(2,68);
printf("CATEGORY");
while(fread(&ctr,size,1,fc)==1)
{
                gotorc(p,3);
                printf("%ld",ctr.id);
                gotorc(p,8);
                printf("%s",strupr(ctr.name));
                gotorc(p,22);
                printf("%s",ctr.pn);
                gotorc(p,35);
                printf("%s",strupr(ctr.address));
                gotorc(p,55);
                printf("%d/%d/%d",ctr.doj[0],ctr.doj[1],ctr.doj[2]);
                gotorc(p,70);
                printf("%c",toupper(ctr.category));
                if(i%15==0)
                {
                gotorc(40,3);
                printf("PRESS
ANY KEY TO CONTINUE.....");
                getch();
                clrscr();
                p=4;
                }
                p+=2;
                i++;
                }
printf("   PRESS
ANY KEY TO BACK TO CUSTOMER MENU");
                  getch();
                  customer();
                  }
delete()
   {
    char
another='y',choice,name[20],flag='n';
    long id;
    tmp=fopen("c:              emp.txt","wb");
    rewind(fc);
    TBG;
   
while(another=='y'||another=='Y')
                {
                 clrscr();
                 printf(" DELETE
BY NAME : 1        DELETE BY ID  : 2               ");
                 fflush(stdin);
                 choice=getchar();
                 if(choice=='2')
                   {
                     printf("ENTER CUSTOMER ID : ");
                     scanf("%ld",&id);
                     clrscr();
                                     while(fread(&ctr,size,1,fc)==1)
                                       {
                                if(ctr.id!=id)
                                  fwrite(&ctr,size,1,tmp);
                                else
                                flag='y';
                                      }
                     }
                 if(choice=='1')
                    {
                     printf("
ENTER CUSTOMER NAME : ");
                     fflush(stdin);
                     gets(name);
                     clrscr();
                     while(fread(&ctr,size,1,fc)==1)
                                {
                                   if(strcmpi(ctr.name,name)!=0)
                                      fwrite(&ctr,size,1,tmp);
                                   else
                                flag='y';
                                }
                    }
                    fclose(fc);
                    fclose(tmp);
                    remove("c:customer.txt");
                    rename("c:     emp.txt","c:customer.txt");
                 if(flag=='n')
                 printf("
CUSTOMER NOT FOUND.... !");
                 printf("
DO YOU WANT TO DELETE ANOTHER CUTOMER(Y/N)");
                 fflush(stdin);
                 another=getch();
                }
    fclose(fc);
    customer();
     }
 addmov()
   {
    char another='y';
    TBG;
   
fseek(fm,0,SEEK_END);
   
while(another=='y'||another=='Y')
                {
                 clrscr();
                 printf("*****************ADD MOVIE
FORM*****************");
                 printf("MOVIE ID(NUMERIC)    :");
                 printf("MOVIE NAME           :");
                 printf("NO OF COPIES         :");
                 printf("SUPPLIER ID          :");
                 printf("LOCATION             :");
                 gotorc(1,24);
                 movid();
                 gotorc(2,24);
                 fflush(stdin);
                 gets(mv.title);
                 gotorc(3,24);
                 fflush(stdin);
                 scanf("%d",&mv.copy);
                 mv.cponshelf=mv.copy;
                 mv.issue=0;
                 gotorc(4,24);
                 fflush(stdin);
                 gets(mv.sid);
                 gotorc(5,24);
                 fflush(stdin);
                 scanf("%d",&mv.loc);
                 fwrite(&mv,sizeof(mv),1,fm);
                 printf("DO YOU WANT TO ADD ANOTHER
MOVIE(Y/N)");
                 fflush(stdin);
                 another=getch();
                }
    fclose(fm);
    printf("PRESS
ANY KEY TO BACK TO MOVIE MENU");
    movie();
     }
 movid()
    {
     rewind(fm);
    
if(fread(&mv,sizeof(mv),1,fm)!=1)
                mv.id=1;
     else
       {
                while(fread(&mv,sizeof(mv),1,fm)==1);
                     mv.id++;
                 }
      
printf("%ld",mv.id);
    }
 listmov()
                  {
                  int i=1,p=4;
                  textbackground(WHITE);
                  textcolor(BLUE);
                  clrscr();
                  rewind(fm);
                  printf("********************  MOVIE LIST *****************");
                  gotorc(2,1);
                  printf("ID");
                  gotorc(2,5);
                  printf("TITLE");
                  gotorc(2,25);
                  printf("TOT_CP");
                  gotorc(2,35);
                  printf("CP_O_SHELF");
                  gotorc(2,48);
                  printf("TOT_ISSUES");
                  gotorc(2,59);
                  printf("SUPPLIER ID");
                  gotorc(2,71);
                  printf("LOCATION");
                  while(fread(&mv,sizeof(mv),1,fm)==1)
                                {
                                gotorc(p,1);
                                printf("%ld",mv.id);
                                gotorc(p,5);
                                printf("%s",strupr(mv.title));
                                gotorc(p,28);
                                printf("%d",mv.copy);
                                gotorc(p,40);
                                printf("%d",mv.cponshelf);
                                gotorc(p,52);
                                printf("%d",mv.issue);
                                gotorc(p,59);
                                printf("%s",mv.sid);
                                gotorc(p,74);
                                printf("%d",mv.loc);
                                if(i%10==0)
                                {
                                printf("
                                                PRESS
ANY KEY TO CONTINUE.....");
                                fflush(stdin);
                                getch();
                                clrscr();
                                p=4;
                                }
                                i++;
                                p+=2;
                                }
                  printf("PRESS ANY KEY TO BACK TO MOVIE
MENU");
                  getch();
                  fclose(fm);
                  movie();
                  }
 searchmov()
                {
                 char mname[20],another;
                 TBG;
                 clrscr();
                 rewind(fm);
                 gotorc(5,5);
                 printf("ENTER MOVIE TITLE    :  
");
                 fflush(stdin);
                 gets(mname);
                 while(fread(&mv,sizeof(mv),1,fm)==1)
                                {
                                if(strcmpi(mv.title,mname)==0)
                                {
                                gotorc(7,12);
                                textcolor(0);
                                cprintf("MOVIE
FOUND..");
                                textcolor(4);
                                gotorc(9,5);
                                printf("MOVIE
TITLE            : %s",mv.title);
                                gotorc(11,5);
                                printf("TOTAL
NO OF COPIES     : %d",mv.copy);
                                gotorc(13,5);
                                printf("NO
OF COPIES AVAILABLE : %d",mv.cponshelf);
                                gotorc(15,5);
                                printf("SUPPLIER
ID            : %s",mv.sid);
                                gotorc(17,5);
                                printf("LOCATION               : %d",mv.loc);
                                gotorc(20,5);
                                printf("DO
YOU WANT TO SEARCH MORE MOVIES(Y/N)");
                                fflush(stdin);
                                another=getchar();
                                if(another=='y'||another=='Y')
                                searchmov();
                                fclose(fm);
                                movie();
                                }
                                }
                gotorc(7,5);
                textcolor(4);
                cprintf("MOVIE
NOT FOUND.....!");
                textcolor(4);
                gotorc(12,5);
                printf("DO
YOU WANT TO SEARCH MORE MOVIES(Y/N)");
                fflush(stdin);
                another=getchar();
                if(another=='y'||another=='Y')
                searchmov();
                fclose(fm);
                movie();
                }
addtran()
   {
    char
another='y',rec;
    TBG;
   
fseek(ft,0,SEEK_END);
   
while(another=='y'||another=='Y')
                {
                 clrscr();
                 printf("*****************  TRANSACTION****************");
                 printf("INVOICE NO(NUMERIC) :");
                 printf("MOVIE TITLE         :");
                 printf("COPIES AVAILABLE    :");
                 printf("CUSTOMER ID         :");
                 printf("CUSTOMER NAME       :");
                 printf("NO. OF COPIES       :");
                 printf("DATE OF ISSUE       :");
                 gotorc(2,24);
                 invoice();
                 gotorc(4,24);
                 fflush(stdin);
                 gets(tran.title);
                 gotorc(6,24);
                 avail();
                 gotorc(8,24);
                 fflush(stdin);
                 scanf("%ld",&tran.cid);
                 custcheck();
                 gotorc(12,24);
                 fflush(stdin);
                 scanf("%d",&tran.copies);
                 if(tran.copies>mv.cponshelf)
                                {
                                gotorc(18,3);
                                printf("TRANSACTION
NOT POSSIBLE : REQUIRED NO OF COPIES NOT AVAILABLE");
                                printf("PRESS
ANY KEY TO BACK TO TRANSACTION MENU");
                                getch();
                                transactions();
                                }
                 gotorc(14,24);
                 fflush(stdin);
                 getdate(&d);
                 tran.doi[0]=d.da_day;tran.doi[1]=d.da_mon;tran.doi[2]=d.da_year;
                 printf("%d/%d/%d",d.da_day,d.da_mon,d.da_year);
                 tran.dor[0]=0;
                 tran.rent=0;
                 gotorc(18,4);
                 printf("DO YOU WANT TO RECORD THIS
TRANSACTION(Y/N)");
                 rec=getchar();
                 if(rec=='y'||rec=='Y')
                                {
                                update();
                                fwrite(&tran,sizeof(tran),1,ft);
                                }
                 printf("DO YOU WANT TO ADD ANOTHER
TRANSACTION(Y/N)");
                 fflush(stdin);
                 another=getch();
                }
    fclose(ft);
    printf("PRESS
ANY KEY TO BACK TO TRANSACTION MENU");
    transactions();
     }
 custcheck()
                {
                if((fc=fopen("c:customer.txt","rb"))==NULL)
                                fc=fopen("c:customer.txt","wb+");
                rewind(fc);
                 while(fread(&ctr,sizeof(ctr),1,fc)==1)
                                {
                                   if(ctr.id==tran.cid)
                                {
                                 gotorc(10,24);
                                 printf("%s",ctr.name);
                                 strcpy(tran.cname,ctr.name);
                                 fclose(fc);
                                 return;
                                 }
                                }
                 fclose(fc);
                 gotorc(18,4);
                 printf("INVALID CUSTOMER
............!");
                 gotorc(21,4);
                 printf("PRESS ANY KEY TO BACK TO
TRANSACTION MENU");
                 getch();
                 transactions();
                 }
 invoice()
    {
     rewind(ft);
    
if(fread(&tran,sizeof(tran),1,ft)!=1)
                tran.invoice=1;
     else
       {
                while(fread(&tran,sizeof(tran),1,ft)==1);
                     tran.invoice++;
                 }
      
printf("%ld",tran.invoice);
     }
 avail()
    {
    
fm=fopen("c:movie.txt","rb+");
     if(fm==NULL)
    
fm=fopen("c:movie.txt","wb+");
    
while(fread(&mv,sizeof(mv),1,fm)==1)
                {
                if(strcmpi(tran.title,mv.title)==0)
                                {
                                printf("%d",mv.cponshelf);
                                fclose(fm);
                                return;
                                }
                }
     gotorc(18,3);
    
printf("%s","MOVIE NOT FOUND...!");
     gotorc(21,3);
    
printf("PRESS ANY KEY TO RETURN");
     getch();
     fclose(fm);
     transactions();
     }
 update()
    {
    long msize;
    msize=sizeof(mv);
    
fm=fopen("c:movie.txt","rb+");
     if(fm==NULL)
    
fm=fopen("c:movie.txt","wb+");
    
while(fread(&mv,sizeof(mv),1,fm)==1)
                {
                if(strcmpi(tran.title,mv.title)==0)
                                {
                                mv.cponshelf=mv.cponshelf-tran.copies;
                                mv.issue=mv.issue+tran.copies;
                                fseek(fm,-msize,SEEK_CUR);
                                fwrite(&mv,sizeof(mv),1,fm);
                                break;
                                }
                }
     fclose(fm);
     return;
     }
listtran()
                  {
                  int i=1;
          TBG;
          clrscr();
                  rewind(ft);
                  while(fread(&tran,sizeof(tran),1,ft)==1)
                                {
                                printf(" INVOICE NO(NUMERIC) : %ld      ",tran.invoice);
                                printf("CUSTOMER
ID         : %ld  ",tran.cid);
                                printf("CUSTOMER
NAME       : %s             ",tran.cname);
                                printf("MOVIE
TITLE         : %s      ",tran.title);
                                printf("NO.
OF COPIES       : %d   ",tran.copies);
                                printf("DATE
OF ISSUE       : %d/%d/%d   ",tran.doi[0],tran.doi[1],tran.doi[2]);
                                if(tran.dor[0]!=0)
                                {
                                printf("DATE
OF RETURN      : %d/%d/%d               ",tran.dor[0],tran.dor[1],tran.dor[2]);
                                printf("RENT                : %d            ",tran.rent);
                                printf("FINE                : %d              ",tran.fine);
                                printf("TOTAL
AMOUNT        : %d",tran.tam);
                                }
                                printf("........................................");
                                
                                if(i%2==0)
                                {
                                printf("
                                                PRESS
ANY KEY TO CONTINUE.....");
                                getch();
                                clrscr();
                                }
                                i++;
                                }
                  fclose(ft);
                  printf("
PRESS ANY KEY TO BACK TO TRANSACTION MENU");
                  getch();
                  transactions();
                  }
 closetran()
                {
                 long id,sz;
         TBG;
                 clrscr();
                 sz=sizeof(tran);
                 printf("
ENTER INVOICE NO: ");
                 scanf("%ld",&id);
                 clrscr();
                 while(fread(&tran,sz,1,ft)==1)
                                {
                                if(tran.invoice==id)
                                {
                                if(tran.dor[0]!=0)
                                {
                                gotorc(4,4);
                                printf("THIS
TRANSACTION IS ALL READY CLOSED...!");
                                gotorc(7,4);
                                printf("PRESS
ANY KEY TO BACK TO TRANSACTION MENU......");
                                getch();
                                transactions();
                                }
                                fseek(ft,-sz,1);
                                getdate(&d);
                                tran.dor[0]=d.da_day;tran.dor[1]=d.da_mon;tran.dor[2]=d.da_year;
                                difference();
                                tran.rent=tran.copies*25;
                                if(k==0)
                                tran.fine=0;
                                else
                                tran.fine=tran.copies*(k-1)*5;
                                tran.tam=tran.rent+tran.fine;
                                printf("INVOICE
NO(NUMERIC) : %ld        ",tran.invoice);
                                printf("CUSTOMER
ID         : %ld  ",tran.cid);
                                printf("CUSTOMER
NAME       : %s             ",tran.cname);
                                printf("MOVIE
TITLE         : %s      ",tran.title);
                                printf("NO.
OF COPIES       : %d   ",tran.copies);
                                printf("DATE
OF ISSUE       : %d/%d/%d   ",tran.doi[0],tran.doi[1],tran.doi[2]);
                                printf("DATE
OF RETURN      : %d/%d/%d               ",tran.dor[0],tran.dor[1],tran.dor[2]);
                                printf("RENT                : %d            ",tran.rent);
                                printf("FINE                : %d              ",tran.fine);
                                printf("TOTAL
AMOUNT        : %d               ",tran.tam);
                                updateclose();
                                fwrite(&tran,sz,1,ft);
                                fclose(ft);
                                       }
                                }
                  printf("PRESS ANY KEY TO BACK TO
TRANSACTION MENU");
                  getch();
                  transactions();
                }
difference()
    {
     int
t,m1,m2,y1,y2,d1,d2;
     d1=tran.doi[0];
     d2=tran.dor[0];
     m1=tran.doi[1];
     m2=tran.dor[1];
     y1=tran.doi[2];
     y2=tran.dor[2];
     t=m1;
     if(y2>y1)
       {
       while(y2>y1)
                {
                 while(m1<=12)
                      {
                       check(m1,y1);
                       if(m1==t)
                                  k=days-d1;
                       else
                                 k=k+days;
                       m1=m1+1;
                      }
                  m1=1;y1++;
                 }
     while(m1<m2)
       {
                check(m1,y1);
                k=k+days;
                m1++;
       }
     k=k+d2;
  }
  else
    {
     if(m1!=m2)
                {
                while(m1<m2)
                      {
                       check(m1,y1);
                       if(m1==t)
                                  k=days-d1;
                       else
                                 k=k+days;
                       m1=m1+1;
                      }
                    k=k+d2;
                 }
     else
                k=d2-d1;
    }
  }
check(int m1,int y1)
   {
   
if(m1==1||m1==3||m1==5||m1==7||m1==8||m1==10||m1==12)
       days=31;
    else
                {
                if(m1!=2)
                   days=30;
                  else
                    {
                     if(y1%4==0)
                                days=29;
                     else
                                days=28;
                     }
                 }
    }
 updateclose()
    {
     long msize;
    msize=sizeof(mv);
    
fm=fopen("c:movie.txt","rb+");
     if(fm==NULL)
    
fm=fopen("c:movie.txt","wb+");
    
while(fread(&mv,sizeof(mv),1,fm)==1)
                {
                if(strcmpi(tran.title,mv.title)==0)
                                {
                                mv.cponshelf=mv.cponshelf+tran.copies;
                                fseek(fm,-msize,SEEK_CUR);
                                fwrite(&mv,msize,1,fm);
                                break;
                                }
                }
     fclose(fm);
     return;
     }
 gotorc(int r,int c)
    {
     union REGS i,o;
     i.h.ah=2;
     i.h.bh=0;
     i.h.dh=r;
     i.h.dl=c;
    
int86(16,&i,&o);
    }
 screen1()
 {
 int gd=DETECT,gm;
 initgraph(&gd,&gm,PATH);
 setfillstyle(SOLID_FILL,RED);
 bar(0,0,640,480);
 setfillstyle(SOLID_FILL,WHITE);
 bar(15,15,625,465);
 setfillstyle(SOLID_FILL,RED);
 bar(30,30,610,450);
 settextstyle(1,0,8);
 setcolor(WHITE);
 outtextxy(190,35,"VIDEO");
 setfillstyle(SOLID_FILL,LIGHTGRAY);
 bar3d(180,140,385,130,20,20);
 outtextxy(160,150,"LIBRARY");
 bar3d(140,255,440,245,20,20);
 outtextxy(165,270,"SYSTEM");
 bar3d(145,375,440,365,20,20);
/* sleep(4);  */
getch();
 closegraph();
 restorecrtmode();
 }
 screen2()
 {
 int gd=DETECT,gm;
 initgraph(&gd,&gm,PATH);
 setfillstyle(SOLID_FILL,RED);
 bar(0,0,640,480);
 setfillstyle(SOLID_FILL,WHITE);
 bar(15,15,625,465);
 setfillstyle(SOLID_FILL,RED);
 bar(30,30,610,450);
 setfillstyle(SOLID_FILL,LIGHTGRAY);
 bar3d(180,100,420,300,25,25);
/*members bar*/
 settextstyle(1,1,10);
 setcolor(WHITE);
 outtextxy(10,55,"IIMS");
 setfillstyle(SOLID_FILL,LIGHTGRAY);
 bar3d(180,50,420,70,20,20);   /*project members bar*/
 bar3d(50,350,570,420,25,25);  /*project guide bar*/
 setcolor(BLUE);
 settextstyle(1,0,2);
 outtextxy(193,48,"PROJECT MEMBERS");
 outtextxy(193,130,"MANISH MISHRA");
 outtextxy(193,170,"VISHAL YADAV");
 outtextxy(193,210,"SHIV KUMAR RAI");
 outtextxy(193,250,"DINESH YADAV");
 outtextxy(235,351,"PROJECT GUIDE:");
 settextstyle(1,0,5);
 outtextxy(140,373,"MR. AMIT
TANEJA");
/* sleep(4);  */
getch();
 closegraph();
 restorecrtmode();
 }
 box(int i,char *p)
 {
 setfillstyle(SOLID_FILL,WHITE);
 bar(179,108+55*i,409,138+55*i);
 setfillstyle(SOLID_FILL,LIGHTGRAY);
 bar(180,110+55*i,410,140+55*i);
 setcolor(BLUE);
// setfillstyle(SOLID_FILL,BLUE);
 settextstyle(1,0,2);
 outtextxy(184,110+55*i,p);
/* getch();
 setfillstyle(SOLID_FILL,WHITE);
 bar(180,60,390,90);
 setfillstyle(SOLID_FILL,RED);
 bar(179,59,389,89);
*/
/* bar3d(180,100,420,300,-25,25);*/ /*members bar*/
/* closegraph();
 restorecrtmode(); */
 }
selectbox(int i,char *p)
 {
 setfillstyle(SOLID_FILL,WHITE);
 bar(179,108+55*i,409,138+55*i);
 setfillstyle(SOLID_FILL,9);
 bar(180,110+55*i,410,140+55*i);
 setcolor(WHITE);
// setfillstyle(SOLID_FILL,BLUE);
 settextstyle(1,0,2);
 outtextxy(184,110+55*i,p);
/* getch();
 setfillstyle(SOLID_FILL,WHITE);
 bar(180,60,390,90);
 setfillstyle(SOLID_FILL,RED);
 bar(179,59,389,89);
*/
/* bar3d(180,100,420,300,-25,25);*/ /*members bar*/
/* closegraph();
 restorecrtmode(); */
 }
pressbutton(int i,char *p)
 {
 setfillstyle(SOLID_FILL,WHITE);
 bar(180,110+55*i,410,140+55*i);
 setfillstyle(SOLID_FILL,9);
 bar(179,108+55*i,409,138+55*i);
 setcolor(CYAN);
 settextstyle(1,0,2);
 outtextxy(184,110+55*i,p);
 delay(350);
 }
 title(char *title,int
x)
 {
                setfillstyle(SOLID_FILL,9);
                bar(0,0,640,50);
                setcolor(BLACK);
                settextstyle(1,0,5);
                outtextxy(x,0,title);
 }
 status()
 {
                setfillstyle(SOLID_FILL,9);
                bar(0,450,640,480);
                setcolor(BLACK);
                settextstyle(1,0,3);
                outtextxy(30,450,"USE
UP & DOWN ARROW KEYS TO SELECT AN OPTION");
 }
 void main()
                {
                screen1();
                screen2();
                main_menu();
                }
 
 
 
 
 
 
 
 
 
No comments:
Post a Comment