Professional Documents
Culture Documents
//**********************************************************
// PROJECT VIDEO LIBRARY MANAGEMENT SYSTEM
//**********************************************************
#include<iostream.h>
#include<fstream.h>
#include<process.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
#include<dos.h>
//**********************************************************
// THIS CLASS CONTROL ALL THE FUNCTIONS IN THE MENU
//**********************************************************
class MENU
{
public :
void MAIN_MENU() ;
char *CHOICE_MENU() ;
void introduction(void) ;
void HELP(void);
private :
void EDIT_MENU() ;
void EDIT_MENU1() ;
void EDIT_MENU2() ;
void DISPLAY_MENU() ;
};
//**********************************************************
// THIS CLASS CONTROL ALL THE FUNCTIONS RELATED TO CASSETTE
//**********************************************************
class CASSETTE
{
public :
void ADDITION() ;
void MODIFICATION() ;
void DELETION();
void LIST() ;
void DISPLAY() ;
char *CASNAME(char[], int) ;
void UPDATE(char[], int, int, char) ;
protected :
int ISSUED(char[], int) ;
int FOUND_CODE(char[], int) ;
void DISPLAY_RECORD(char[], int) ;
void DISPLAY_LIST(char[]) ;
private :
int RECORDNO(char[], int) ;
void ADD_RECORD(char[], int, char[], char,int) ;
int LASTCODE(char[]) ;
void DELETE_RECORD(char[], int) ;
class CUSTOMER
{
public :
void LIST() ;
void DISPLAY() ;
char *CUSTNAME(int) ;
protected :
void ADD_RECORD(int, char[], char[], char[], int, int, int, int) ;
void DELETE_RECORD(int) ;
int FOUND_CODE(int) ;
int LASTCODE() ;
void DISPLAY_RECORD(int) ;
int FINE(int) ;
private :
int code, cassette ;
char name[26], phone[10], fname[13] ;
int dd, mm, yy ; // DATE OF RETURN
};
//**********************************************************
// THIS CLASS CONTROL ALL THE FUNCTIONS RELATED TO ISSUE &
// RETURN & CALCULATING FINE ETC.
//**********************************************************
//**********************************************************
// FUNCTION TO DISPLAY THE INTRODUCTION FOR THE PROJECT.
//**********************************************************
gotoxy(8,20);
printf("Press any key to continue..") ;
getch() ;
//**********************************************************
// THIS FUNCTION CONTROL ALL THE FUNCTIONS IN THE MAIN MENU
//**********************************************************
gotoxy(11,12) ;
cout <<"1: ISSUE CASSETTE" ;
gotoxy(11,13) ;
cout <<"2: RETURN CASSETTE" ;
gotoxy(11,14) ;
cout <<"3: DISPLAY" ;
gotoxy(11,15) ;
cout <<"4: EDIT" ;
gotoxy(11,16) ;
cout<<"5: HELP";
gotoxy(11,17);
cout <<"0: QUIT" ;
gotoxy(11,19) ;
cout <<"Enter your choice:" ;
ch = getch() ;
clrscr() ;
CASSETTE cas ;
ISSUE_RETURN ir ;
switch(ch)
{
case 27,'0' : break ;
case '1' :
ir.ISSUE() ;
break ;
case '2' :
ir.RETURN() ;
break ;
case '3' :
DISPLAY_MENU() ;
break ;
case '4' :
EDIT_MENU() ;
break ;
case '5' :
HELP();
break;
}
} while (ch != 27 && ch != '0') ;
}
//**********************************************************
// THIS FUNCTION DISPLAYS HELP MENU
//**********************************************************
void MENU :: HELP(void)
{
clrscr() ;
gotoxy(13,5) ;
cout <<"HELP" ;
gotoxy(10,7) ;
cout <<"VIDEO LIBRARY MANAGEMENT" ;
gotoxy(4,12) ;
cout <<"This program issues cassettes to" ;
gotoxy(4,13);
cout<<"people for 5 days.A fine of RS. 20";
gotoxy(4,14);
cout<<"is imposed on custumer for late ";
gotoxy(4,15);
cout<<"return.It also offers customers to ";
gotoxy(4,16);
cout<<"issue cassettes under various ";
gotoxy(4,17);
cout<<"headings. ";
getch() ;
}
//**********************************************************
// THIS FUNCTION RETURNS THE NAME OF THE FILE SELECTED
//**********************************************************
//**********************************************************
// THIS FUNCTION CONTROL ALL THE FUNCTIONS IN THE EDIT MENU FOR
CASSETTE
// (MODIFICATION, DELETION).
//**********************************************************
//**********************************************************
// THIS FUNCTION CONTROL ALL THE FUNCTIONS IN THE EDIT MENU
// (MODIFICATION, DELETION).
//**********************************************************
void MENU :: EDIT_MENU(void)
{
char ch ;
do
{
clrscr() ;
gotoxy(15,9) ;
cout <<"EDIT MENU" ;
gotoxy(10,12) ;
cout <<"1:CASSETTE" ;
gotoxy(10,14) ;
cout <<"2: CUSTUMER" ;
gotoxy(10,18);
cout <<"Enter your choice:" ;
ch = getch() ;
clrscr() ;
;
switch(ch)
{
case 27,'0' : break ;
case '1' :
EDIT_MENU1();
break ;
case '2' :
EDIT_MENU2() ;
break ;
}
} while (ch != 27 && ch != '0') ;
}
//**********************************************************
// THIS FUNCTION CONTROL ALL THE FUNCTIONS RELATED TO
// DISPLAY (LIST, ETC.)
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS THE LAST CASSETTE'S CODE
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS 0 IF THE GIVEN CODE NOT FOUND
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS RECORD NO. OF THE GIVEN CODE
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS 1 IF CASSETTE IS ISSUDE FOR THE
// GIVEN CODE
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS NAME OF THE CASSETTE FOR THE GIVEN
// CODE
//**********************************************************
//**********************************************************
// THIS FUNCTION DISPLAYS THE LIST OF THE CASSETTES
//**********************************************************
//**********************************************************
// THIS FUNCTION DISPLAYS THE LIST OF THE CASSETTES
//**********************************************************
//**********************************************************
// THIS FUNCTION DISPLAYS THE RECORD OF CASSETTE FOR THE
// GIVEN CODE
//**********************************************************
void CASSETTE :: DISPLAY_RECORD(char filename[13], int cascode)
{
CUSTOMER cust ;
fstream file ;
file.open(filename, ios::in) ;
file.seekg(0,ios::beg) ;
while (file.read((char *) this, sizeof(CASSETTE)))
{
if (code == cascode)
{
gotoxy(5,4) ;
cout <<"Cassette Code # " <<code ;
gotoxy(5,6) ;
cout <<"Cassette Name : " <<name ;
gotoxy(5,7) ;
cout <<"Status : " <<status ;
if (status == 'N' && custcode != 0)
{
gotoxy(5,9) ;
cout <<"Cassette is issued by : " <<cust.CUSTNAME(custcode) ;
}
break ;
}
}
file.close() ;
}
//**********************************************************
// THIS FUNCTION GIVES CODE TO DISPLAYS THE RECORD OF
// CASSETTE
//**********************************************************
//**********************************************************
// THIS FUNCTION UPDATE THE GIVEN DATA IN THE CASSETTE'S
// FILE
//**********************************************************
//**********************************************************
// THIS FUNCTION DELETES THE RECORD OF THE GIVEN CODE.
//**********************************************************
file.open(filename, ios::in) ;
fstream temp ;
{temp.open("temp.dat", ios::out) ;
file.seekg(0,ios::beg) ;
while (!file.eof())
{
file.read((char *) this, sizeof(CASSETTE)) ;
if (file.eof())
break ;
if (code != cascode)
temp.write((char *) this, sizeof(CASSETTE)) ;
}
file.close() ;
temp.close() ;
file.open(filename, ios::out) ;
temp.open("temp.dat", ios::in) ;
temp.seekg(0,ios::beg) ;
while ( !temp.eof() )
{
temp.read((char *) this, sizeof(CASSETTE)) ;
if ( temp.eof() )
break ;
file.write((char *) this, sizeof(CASSETTE)) ;
}
file.close() ;
temp.close() ;}
//**********************************************************
// THIS FUNCTION ADD THE GIVEN DATA IN THE CASSETTE FILE
//**********************************************************
//**********************************************************
// THIS FUNCTION GIVES DATA TO ADD RECORD IN CASSETTE FILE
//**********************************************************
//**********************************************************
// THIS FUNCTION GIVES CODE TO DELETE THE CASSETTE RECORD
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS THE LAST CUSTOMER'S CODE
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS 0 IF THE GIVEN CODE NOT FOUND
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURNS NAME OF THE CUSTOMER FOR THE GIVEN
// CODE
//**********************************************************
//**********************************************************
// THIS FUNCTION DISPLAYS THE LIST OF THE CUSTOMER
//**********************************************************
//**********************************************************
// THIS FUNCTION DISPLAYS THE RECORD OF CUSTOMER FOR THE
// GIVEN CODE
//**********************************************************
//**********************************************************
// THIS FUNCTION GIVES CODE TO DISPLAYS THE RECORD OF
// CUSTOMER
//**********************************************************
DISPLAY_RECORD(custcode) ;
gotoxy(5,24) ;
cout <<"Press any key to continue..." ;
getch() ;
}
//**********************************************************
// THIS FUNCTION DELETES THE RECORD OF THE GIVEN CODE.
//**********************************************************
//**********************************************************
// THIS FUNCTION ADDS THE GIVEN DATA IN THE CUSTOMER'S FILE
//**********************************************************
//**********************************************************
// THIS FUNCTION CALCULATE AND RETURN FINE FOR THE GIVEN
// CUSTOMER CODE.
//**********************************************************
//**********************************************************
// FUNCTION TO EXTEND GIVEN DATE BY 5 DAYS
//**********************************************************
void ISSUE_RETURN :: EXTEND_DATE(int d1, int m1, int y1, int days)
{
static int month[] = {31,29,31,30,31,30,31,31,30,31,30,31} ;
for (int i=1; i<=days; i++)
{
d1++ ;
if ((d1 > month[m1-1]) || (y1%4 != 0 && m1 == 2 && d1 > 28))
{
d1 = 1 ;
m1++ ;
}
if (m1 > 12)
{
m1 = 1 ;
y1++ ;
}
}
day = d1 ;
mon = m1 ;
year = y1 ;
}
//**********************************************************
// THIS FUNCTION RETURN THE DIFFERENCE BETWEEN TWO GIVEN
// DATES
//**********************************************************
int ISSUE_RETURN :: DIFF(int d1, int m1, int y1, int d2, int m2, int y2)
{
int days = 0 ;
if ((y2<y1) || (y2==y1 && m2<m1) || (y2==y1 && m2==m1 && d2<d1))
return days ;
static int month[] = {31,29,31,30,31,30,31,31,30,31,30,31} ;
while (d1 != d2 || m1 != m2 || y1 != y2)
{
days++ ;
d1++ ;
if ((d1 > month[m1-1]) || (y1%4 != 0 && m1 == 2 && d1 > 28))
{
d1 = 1 ;
m1++ ;
}
if (m1 > 12)
{
m1 = 1 ;
y1++ ;
}
}
return days ;
}
//**********************************************************
// THIS FUNCTION ISSUE CASSETTE TO THE CUSTOMER & GIVE DATA
// TO ADD RECORD IN CUSTOMER'S FILE
//**********************************************************
//**********************************************************
// THIS FUNCTION RETURN CASSETTE FROM THE CUSTOMER
//**********************************************************
//**********************************************************
// MAIN FUNCTION CALLING MAIN MENU
//**********************************************************
void main(void)
{
MENU menu;
menu.introduction();
menu.MAIN_MENU();
}