Home > C++ > C++ Project on CD Cafe

C++ Project on CD Cafe

Download Project
Share Facebook Twitter Orkut SMS

CD CAFE

This is the project where you can maintain records of CDS and MEMBERS.
One member can issue one cd at a time. If he/she does not return cd within 15 days he/she have to pay fine of Rs.20/- per day.

 
//**********************************************************
//	PROJECT CD CAFE
//**********************************************************
 
# 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>
void edit_cd(void) ;
void edit_member(void) ;
void edit_menu(void);
void entry_menu(void) ;
void list_menu(void) ;
void cd_records(void) ;
void introduction(void) ;
void introduction(void)
{
	clrscr() ;
	gotoxy(31,5) ;cout < <"Welcome to Project" ;
	textcolor(RED+BLINK) ; textbackground(WHITE) ;
	gotoxy(33,7) ;cprintf(" CD CAFE") ;
	textcolor(LIGHTGRAY) ; textbackground(BLACK) ;
	gotoxy(15,10) ;cout <<"This is the project where you can maintain records" ;
	gotoxy(15,11) ;cout <<"of CDS and MEMBERS." ;
	gotoxy(15,13) ;cout <<"One member can issue one cd at a time. If he/she" ;
	gotoxy(15,14) ;cout <<"does  not return cd within 15 days he/she have  to" ;
	gotoxy(15,15) ;cout <<"pay fine of Rs.20/- per day." ;
	//textcolor(LIGHTGRAY+BLINK) ;
	gotoxy(27,24) ;cprintf("Press any key to continue") ;
       //	textcolor(RED) ;
	getch() ;
}
//**********************************************************
// THIS CLASS CONTROL ALL THE FUNCTIONS IN THE MENU
//**********************************************************
 
class MENU
{
	public :
			void main_menu(void) ;
 
 
} ;
class CD
{
	public :
			void list(void) ;
			char *cdname(int) ;
	protected :void add_new_cd(int, char tname[33], char tcatagory[6], float, int, int);
			void update_copies(int, int, int) ;
			void modify(int, char[], char[], float) ;
			void deletion(void) ;
			int  cd_found(int) ;
			int  cdname_found(char []) ;
			int  recordno(int) ;
			int  available(int) ;
			char *cat_class(int) ;
			float cdprice(int) ;
			int  no_of_copies(int) ;
			int  cdcodeof(char[]) ;
			void display(int) ;
			int  reccount(void) ;
			void delete_rec(int) ;
	private :
			int   cdcode, copies ;
			char  name[33], catagory[6] ;
			float price ;
			int   avail ;
} ;
class MEMBER
{
	public :
			void list(void) ;
	protected :
	void add_mem(int, int, char [], char [], char[], int, int, int) ;
			void modify(int, char[], char[], char[]) ;
			void deletion(void) ;
			int  member_found(int) ;
			void update_cd(int, int, int, int, int) ;
 
			char *membername(int) ;
			char *memberphone(int) ;
			char *memberaddress(int) ;
			int  recordno(int) ;
			int  lastcode(void) ;
			int  issued(int) ;
			int  fine(int) ;
			void display(int) ;
			void delete_rec(int) ;
	private :
			int  memcode, cdcode ;
			char name[26], phone[10], address[33] ;
			int  dd, mm, yy ;// DATE OF RETURNING THE CD //
} ;
class WORKING : public CD, public MEMBER
{
 
	public :
			void issuecd(void) ;
			void returncd(void) ;
			void add_cd(void) ;
			void add_member(void) ;
			void modify_cd(void) ;
			void modify_member(void) ;
			void delete_cd(void) ;
			void delete_member(void) ;
} ;
class DATE
{
	public :
			void extend_date(int,int,int,int) ;
			int  diff(int, int, int, int, int, int) ;
			int  day, mon, year ;
} ;
void DATE :: 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 ;
}
int DATE :: 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 ;
}
void MENU:: main_menu(void)
{
	char ch ;
	while (1)
	{
		clrscr() ;
		gotoxy(29,6) ;cout < <"C D    C A F E " ;
		gotoxy(29,7) ;cout <<"~~~~~~~~~~~~~~~~~~~~~~" ;
		gotoxy(30,10) ;cout <<"1. ADD NEW ENTRY" ;
		gotoxy(30,12) ;cout <<"2. LIST      " ;
		gotoxy(30,14) ;cout <<"3. EDIT      " ;
		gotoxy(30,16) ;cout <<"4. CD RECORDS" ;
		gotoxy(30,18) ;cout <<"5. HELP      " ;
		gotoxy(30,20) ;cout <<"0. QUIT      " ;
		gotoxy(30,22) ;cout <<"Enter your choice : " ;
		ch = getche() ;
		if (ch == 27)
			break ;
		else
		if (ch == '1')
			entry_menu();
		else
		if (ch == '2')
		     {
			list_menu();
		      }
		else
		if (ch == '3')
		    {
			edit_menu();
		     }
		else
		if (ch == '4')
		    {
 
			cd_records() ;
		    }
		else
		if (ch == '5')
		    {
			introduction() ;
		    }
		else
		if (ch == '0')
		      {
			clrscr();
			cout<<"\n \n \n \n \n \n \n \t \t \t \t" ;
			cout<<"Thanks for"<<"\n \t\t\t\t  working"<<"\n \t\t\t\t  with US!";
			cout<<"\n \n \t \t \t*****HAVE A VERY NICE DAY*****";
			break ;
		      }
	}
}
void edit_menu(void)
{
 
 
 
	char ch ;
	while (1)
	{
		clrscr() ;
		gotoxy(32,9) ;cout <<"E D I T  M E N U";
		gotoxy(32,10) ;cout <<"~~~~~~~~~~~~~~~~" ;
		gotoxy(34,13) ;cout <<"1. CDS" ;
		gotoxy(34,14) ;cout <<"2. MEMBERS" ;
		gotoxy(34,15) ;cout <<"0. EXIT" ;
		gotoxy(31,17) ;cout <<"Enter your choice : " ;
		ch = getche() ;
		if (ch == 27)
			break ;
		else
		if (ch =='1')
			edit_cd() ;
		else
		if (ch == '2')
 
			edit_member() ;
		else
		if (ch == '0')
			break ;
	}
 
 
}
void entry_menu(void)
{
	char ch ;
	while (1)
	{
		clrscr() ;
		gotoxy(32,9) ;cout <<"E N T R Y   M E N U";
		gotoxy(32,10) ;cout <<"~~~~~~~~~~~~~~~~" ;
		gotoxy(34,13) ;cout <<"1. MEMBERS"  ;
		gotoxy(34,14) ;cout <<"2. CDS";
		gotoxy(34,15) ;cout <<"0. EXIT" ;
		gotoxy(31,17) ;cout <<"Enter your choice : " ;
		ch = getche() ;
		if (ch == 27)
			break ;
		else
		if (ch =='1')
		      {
			WORKING W;
			W.add_member();
		      }
		if (ch == '2')
		    {
		    WORKING W;
		    W.add_cd() ;
		   }
		if (ch == '0')
			break ;
	}
}
void list_menu(void)
{
	char ch ;
	while (1)
	{
		clrscr() ;
		gotoxy(32,9) ;cout <<" L I S T   M E N U";
		gotoxy(32,10) ;cout <<"~~~~~~~~~~~~~~~~" ;
		gotoxy(34,13) ;cout <<"1. CDS" ;
		gotoxy(34,14) ;cout <<"2. MEMBERS" ;
		gotoxy(34,15) ;cout <<"0. EXIT" ;
		gotoxy(31,17) ;cout <<"Enter your choice : " ;
		ch = getche() ;
		if (ch == 27)
			break ;
		else
		if (ch =='1')
		 {	CD C;
		       C.list() ;
		}
		else
		if (ch == '2')
		    {
			MEMBER M;
			M.list() ;
		    }
		if (ch == '0')
			break ;
	}
}
void cd_records(void)
{
	char ch ;
	while (1)
	{
		clrscr() ;
		gotoxy(32,9) ;cout <<"CD R E C O R D S  M E N U";
		gotoxy(32,10) ;cout <<"~~~~~~~~~~~~~~~~" ;
		gotoxy(34,13) ;cout <<"1. ISSUE CDS" ;
		gotoxy(34,14) ;cout <<"2. RETURNS CDS" ;
		gotoxy(34,15) ;cout <<"0. EXIT" ;
		gotoxy(31,17) ;cout <<"Enter your choice : " ;
		ch = getche() ;
		if (ch == 27)
			break ;
		else
		if (ch =='1')
		    {
			WORKING W;
			W.issuecd() ;
		    }
		if (ch == '2')
		     {
			WORKING W;
			W.returncd() ;
		     }
		if (ch == '0')
			break ;
	}
}
void edit_cd(void)
{
	char ch ;
	while (1)
	{
		clrscr() ;
		gotoxy(31,9) ;cout <<"E D I T  C D S";
		gotoxy(31,10) ;cout <<"~~~~~~~~~~~~~~~~~~" ;
		gotoxy(34,13) ;cout <<"1. MODIFY" ;
		gotoxy(34,14) ;cout <<"2. DELETE" ;
		gotoxy(34,15) ;cout <<"0. EXIT" ;
		gotoxy(31,17) ;cout <<"Enter your choice : " ;
		ch = getche() ;
		if (ch == 27)
			break ;
		else
		if (ch == '1')
		{
			WORKING W ;
			W.modify_cd() ;
		}
		else
		if (ch == '2')
		{
			WORKING W ;
			W.delete_cd() ;
		}
		else
		if (ch == '0')
			break ;
	}
}
void edit_member(void)
{
	char ch ;
	while (1)
	{
		clrscr() ;
		gotoxy(29,9) ;cout <<"E D I T  M E M B E R S";
		gotoxy(29,10) ;cout <<"~~~~~~~~~~~~~~~~~~~~~~" ;
		gotoxy(34,13) ;cout <<"1. MODIFY" ;
		gotoxy(34,14) ;cout <<"2. DELETE" ;
		gotoxy(34,15) ;cout <<"0. EXIT" ;
		gotoxy(29,17) ;cout <<"Enter your choice : " ;
		ch = getche() ;
		if (ch == 27)
			break ;
		else
		if (ch == '1')
		{
			WORKING W ;
			W.modify_member() ;
		}
		else
		if (ch == '2')
		{
			WORKING W ;
			W.delete_member() ;
		}
		else
		if (ch == '0')
			break ;
	}
}
int CD :: cd_found(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int found=0 ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (cdcode == tcode)
		{
			found = 1 ;
			break ;
		}
	}
	file.close() ;
	return found ;
}
int CD :: cdname_found(char t1code[33])
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int found=0 ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (!strcmpi(name,t1code))
		{
			found = 1 ;
			break ;
		}
	}
	file.close() ;
	return found ;
}
int CD :: recordno(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int count=0 ;
	while (file.read((char *) this, sizeof(CD)))
	{
		count++ ;
		if (cdcode == tcode)
			break ;
	}
	file.close() ;
	return count ;
}
int CD :: available(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int tavail=0 ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (cdcode == tcode)
		{
			tavail = avail ;
			break ;
		}
	}
	file.close() ;
	return tavail ;
}
int CD :: no_of_copies(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int tcopies=0 ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (cdcode == tcode)
		{
			tcopies = copies ;
			break ;
		}
	}
	file.close() ;
	return tcopies ;
}
char *CD :: cdname(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	char tname[33] ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (cdcode == tcode)
		{
			strcpy(tname,name) ;
			break ;
		}
	}
	file.close() ;
	return tname ;
}
char *CD :: cat_class(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	char tcatagory[6] ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (cdcode == tcode)
		{
			strcpy(tcatagory,catagory) ;
			break ;
		}
	}
	file.close() ;
	return tcatagory ;
}
float CD :: cdprice(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	float tprice=0.0 ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (cdcode == tcode)
		{
			tprice = price ;
			break ;
		}
	}
	file.close() ;
	return tprice ;
}
 
int CD :: cdcodeof(char t1code[33])
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int tcode=0 ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (!strcmpi(name,t1code))
		{
			tcode = cdcode ;
			break ;
		}
	}
	file.close() ;
	return tcode ;
}
int CD :: reccount(void)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int count=0 ;
	while (file.read((char *) this, sizeof(CD)))
		count++ ;
	file.close() ;
	return count ;
}
void CD :: delete_rec(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	fstream temp ;
	temp.open("temp.dat", ios::out) ;
	file.seekg(0,ios::beg) ;
	while ( !file.eof() )
	{
		file.read((char *) this, sizeof(CD)) ;
		if ( file.eof() )
			break ;
		if ( cdcode != tcode )
			temp.write((char *) this, sizeof(CD)) ;
	}
	file.close() ;
	temp.close() ;
	file.open("CD.DAT", ios::out) ;
	temp.open("temp.dat", ios::in) ;
	temp.seekg(0,ios::beg) ;
	while ( !temp.eof() )
	{
		temp.read((char *) this, sizeof(CD)) ;
		if ( temp.eof() )
			break ;
		file.write((char *) this, sizeof(CD)) ;
	}
	file.close() ;
	temp.close() ;
}
void CD :: add_new_cd(int tcode,char tname[33], char tcatagory[6],
 float tprice, int tcopies, int tavail)
{
	fstream file ;
	file.open("CD.DAT", ios::app) ;
	cdcode = tcode ;
	strcpy(name,tname) ;
	strcpy(catagory,tcatagory) ;
	price = tprice ;
	copies = tcopies ;
	avail = tavail ;
	file.write((char *) this, sizeof(CD)) ;
	file.close() ;
}
void CD :: update_copies(int tcode, int tcopies, int tavail)
{
	int recno ;
	recno = recordno(tcode) ;
	fstream file ;
	file.open("CD.DAT", ios::out | ios::ate) ;
	copies = tcopies ;
	avail = tavail ;
	int location ;
	location = (recno-1) * sizeof(CD) ;
	file.seekp(location) ;
	file.write((char *) this, sizeof(CD)) ;
	file.close() ;
}
//*************************************************************************
// THIS FUNCTION MODIFY THE RECORD IN THE CD FILE FOR THE GIVEN CD CODE
//**************************************************************************
void CD :: modify(int tcode, char tname[33],
 char tcatagory[6], float tprice)
{
	int recno ;
	recno = recordno(tcode) ;
	fstream file ;
	file.open("CD.DAT", ios::out | ios::ate) ;
	strcpy(name,tname) ;
	strcpy(catagory,tcatagory) ;
	price = tprice ;
	int location ;
	location = (recno-1) * sizeof(CD) ;
	file.seekp(location) ;
	file.write((char *) this, sizeof(CD)) ;
	file.close() ;
}
void CD :: display(int tcode)
{
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	while (file.read((char *) this, sizeof(CD)))
	{
		if (cdcode == tcode)
		{
			gotoxy(5,5) ;cout <<"cd Code   : " <<cdcode ;
			gotoxy(5,7) ;cout <<"cd Name   : " <<name ;
			gotoxy(5,8) ;cout <<"catagory : " <<catagory ;
			gotoxy(5,9) ;cout <<"Price       : Rs." <<price ;
			gotoxy(5,10) ;cout <<"Copies      : " <<price ;
			gotoxy(5,11) ;cout <<"Available   : " <<avail ;
			break ;
		}
	}
	file.close() ;
}
void CD :: list(void)
{
	clrscr() ;
	int row = 6 , found=0, flag=0 ;
	char ch ;
	gotoxy(33,2) ;cout <<"LIST OF CDS" ;
	gotoxy(32,3) ;cout <<"~~~~~~~~~~~~~~~" ;
	gotoxy(1,4) ;cout <<"CODE  CD NAME                         CATAGORY                  PRICE   COPIES" ;
	gotoxy(1,5) ;cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ;
	fstream file ;
	file.open("CD.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	while (file.read((char *) this, sizeof(CD)))
	{
		flag = 0 ;
		delay(20) ;
		found = 1 ;
		gotoxy(2,row) ;
		cout <<cdcode ;
		gotoxy(7,row) ;
		cout <<name ;
		gotoxy(40,row) ;
		cout <<catagory ;
		gotoxy(66,row) ;
		cout <<price ;
		gotoxy(73,row) ;
		cout <<copies ;
	       //	textbackground(WHITE) ; textcolor(RED) ;
		gotoxy(40,row+1) ;
		cprintf("STATUS: ") ;
	       //	textcolor(BLACK+BLINK) ;
		cprintf("%d copies available",avail) ;
	       //	textbackground(BLACK) ; textcolor(LIGHTGRAY) ;
		if ( row == 22 )
		{
			flag = 1 ;
			row = 6 ;
			gotoxy(1,25) ;cout <<"Press any key to continue or Press <ESC> to exit" ;
			ch = getch() ;
			if (ch == 27)
				break ;
			clrscr() ;
			gotoxy(33,2) ;cout < <"LIST OF CDS" ;
			gotoxy(32,3) ;cout <<"~~~~~~~~~~~~~~~" ;
			gotoxy(1,4) ;cout <<"CODE  CD NAME    CATAGORY   PRICE  COPIES" ;
			gotoxy(1,5) ;cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ;
		}
		else
			row = row + 2 ;
	}
	if (!found)
	{
		gotoxy(5,10) ;cout <<"\7Records not found" ;
	}
	if (!flag)
	{
		gotoxy(1,25) ;cout <<"Press any key to continue..." ;
		getche() ;
	}
	file.close () ;
}
int MEMBER :: member_found(int mcode)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int found=0 ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		if (memcode == mcode)
		{
			found = 1 ;
			break ;
		}
	}
	file.close() ;
	return found ;
}
int MEMBER :: issued(int mcode)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int missue=0 ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		if (memcode == mcode)
		{
			missue = cdcode ;
			break ;
		}
	}
	file.close() ;
	return missue ;
}
int MEMBER :: fine(int mcode)
{
	DATE D ;
	int d1, m1, y1 ;
	struct date d;
	getdate(&d);
	d1 = d.da_day ;
	m1 = d.da_mon ;
	y1 = d.da_year ;
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int days, t_fine ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		if (memcode == mcode)
		{
			days = D.diff(dd,mm,yy,d1,m1,y1) ;
			t_fine = days * 20 ;
			break ;
		}
	}
	file.close() ;
	return t_fine ;
}
int MEMBER :: lastcode(void)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int mcode=0 ;
	while (file.read((char *) this, sizeof(MEMBER)))
		mcode = memcode ;
	file.close() ;
	return mcode ;
}
char *MEMBER :: membername(int mcode)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	char mname[26] ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		if (memcode == mcode)
		{
			strcpy(mname,name) ;
			break ;
		}
	}
	file.close() ;
	return mname ;
}
char *MEMBER :: memberphone(int mcode)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	char mphone[10] ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		if (memcode == mcode)
		{
			strcpy(mphone,phone) ;
			break ;
		}
	}
	file.close() ;
	return mphone ;
}
char *MEMBER :: memberaddress(int mcode)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	char maddress[33] ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		if (memcode == mcode)
		{
			strcpy(maddress,address) ;
			break ;
		}
	}
	file.close() ;
	return maddress ;
}
int MEMBER :: recordno(int mcode)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	int count=0 ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		count++ ;
		if (memcode == mcode)
			break ;
	}
	file.close() ;
	return count ;
}
void MEMBER :: delete_rec(int mcode)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	fstream temp ;
	temp.open("temp.dat", ios::out) ;
	file.seekg(0,ios::beg) ;
	while ( !file.eof() )
	{
		file.read((char *) this, sizeof(MEMBER)) ;
		if ( file.eof() )
			break ;
		if ( memcode != mcode )
			temp.write((char *) this, sizeof(MEMBER)) ;
	}
	file.close() ;
	temp.close() ;
	file.open("MEMBER.DAT", ios::out) ;
	temp.open("temp.dat", ios::in) ;
	temp.seekg(0,ios::beg) ;
	while ( !temp.eof() )
	{
		temp.read((char *) this, sizeof(MEMBER)) ;
		if ( temp.eof() )
			break ;
		file.write((char *) this, sizeof(MEMBER)) ;
	}
	file.close() ;
	temp.close() ;
}
void MEMBER :: update_cd(int mcode, int tcode, int d1, int m1, int y1)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	fstream temp ;
	temp.open("temp.dat", ios::out) ;
	file.seekg(0,ios::beg) ;
	while ( !file.eof() )
	{
		file.read((char *) this, sizeof(MEMBER)) ;
		if ( file.eof() )
			break ;
		if ( memcode == mcode )
		{
			cdcode = tcode ;
			dd = d1 ;
			mm = m1 ;
			yy = y1 ;
			temp.write((char *) this, sizeof(MEMBER)) ;
		}
		else
			temp.write((char *) this, sizeof(MEMBER)) ;
	}
	file.close() ;
	temp.close() ;
	file.open("MEMBER.DAT", ios::out) ;
	temp.open("temp.dat", ios::in) ;
	temp.seekg(0,ios::beg) ;
	while ( !temp.eof() )
	{
		temp.read((char *) this, sizeof(MEMBER)) ;
		if ( temp.eof() )
			break ;
		file.write((char *) this, sizeof(MEMBER)) ;
	}
	file.close() ;
	temp.close() ;
}
void MEMBER :: modify(int mcode, char mname[26], char mphone[10],
 char maddress[33])
{
	int recno ;
	recno = recordno(mcode) ;
	fstream file ;
	file.open("MEMBER.DAT", ios::out | ios::ate) ;
	strcpy(name,mname) ;
	strcpy(phone,mphone) ;
	strcpy(address,maddress) ;
	int location ;
	location = (recno-1) * sizeof(MEMBER) ;
	file.seekp(location) ;
	file.write((char *) this, sizeof(MEMBER)) ;
	file.close() ;
}
void MEMBER :: add_mem(int mcode, int ccode,
char mname[26], char maddress[33], char mphone[10],
 int d1, int m1, int y1)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::app) ;
	memcode = mcode ;
	cdcode = ccode ;
	strcpy(name,mname) ;
	strcpy(address,maddress) ;
	strcpy(phone,mphone) ;
	dd = d1 ;
	mm = m1 ;
	yy = y1 ;
	file.write((char *) this, sizeof(MEMBER)) ;
	file.close() ;
}
void MEMBER :: display(int mcode)
{
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		if (memcode == mcode)
		{
			gotoxy(5,3) ;cout <<"Member Code # " <<mcode ;
			gotoxy(5,4) ;cout <<"~~~~~~~~~~~~~~~~~" ;
			gotoxy(5,6) ;cout <<"Name    : " <<name ;
			gotoxy(5,7) ;cout <<"Phone   : " <<phone ;
			gotoxy(5,8) ;cout <<"Address : " <<address ;
			break ;
		}
	}
	file.close() ;
}
void MEMBER :: list(void)
{
	clrscr() ;
	CD C ;
	int row = 6 , found=0, flag=0 ;
	char ch ;
	gotoxy(32,2) ;cout <<"LIST OF MEMBERS" ;
	gotoxy(31,3) ;cout <<"~~~~~~~~~~~~~~~~~" ;
	gotoxy(1,4) ;cout <<"CODE  CD CODE     NAME                PHONE        ADDRESS" ;
	gotoxy(1,5) ;cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ;
	fstream file ;
	file.open("MEMBER.DAT", ios::in) ;
	file.seekg(0,ios::beg) ;
	while (file.read((char *) this, sizeof(MEMBER)))
	{
		flag = 0 ;
		delay(20) ;
		found = 1 ;
		gotoxy(2,row) ;cout <<memcode ;
		gotoxy(10,row) ;cout <<cdcode ;
		gotoxy(19,row) ;cout <<name ;
		gotoxy(38,row) ;cout <<phone ;
		gotoxy(50,row);cout<<address;
	      //	textbackground(WHITE) ; textcolor(BLACK) ;
		gotoxy(7,row+1) ;
		if (cdcode == 0)
			cprintf("CD NAME: (Not Issued)") ;
		else
		{
			cprintf("CD NAME: %s",C.cdname(cdcode)) ;
			gotoxy(42,row+1) ;cprintf("Date of return: ") ;
			textcolor(BLACK+BLINK) ;
			cprintf("%d/%d/%d",dd,mm,yy) ;
		}
		//	textbackground(BLACK) ; textcolor(LIGHTGRAY) ;
		if ( row == 22 )
		{
			flag = 1 ;
			row = 6 ;
			gotoxy(1,25) ;cout <<"Press any key to continue or Press <ESC>"< <"to exit" ;
			ch = getch() ;
			if (ch == 27)
				break ;
			clrscr() ;
			gotoxy(32,2) ;cout <<"LIST OF MEMBERS" ;
			gotoxy(31,3) ;cout <<"~~~~~~~~~~~~~~~~~" ;
			gotoxy(1,4) ;cout <<"CODE  CD CODE   NAME                         PHONE" ;
			gotoxy(1,5) ;cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" ;
		}
		else
			row = row + 2 ;
	}
	if (!found)
	{
		gotoxy(5,10) ;cout <<"\7Records not found" ;
	}
	if (!flag)
	{
		gotoxy(1,25) ;cout <<"Press any key to continue..." ;
		getche() ;
	}
	file.close () ;
}
void WORKING :: add_cd(void)
{
	if (!reccount())  // MEMBER FUNCTION OF CD
	{
		add_new_cd(0,"null","null",0.0,0,0) ;
		CD::delete_rec(0) ;
	}
	char ch ;
	int tcode, tcopies, tavail ;
	char tname[33], tcatagory[6] ;
	float tprice=0.0 ;
	do
	{
		int found=0, valid=0 ;
		int tc ;
		float t2=0.0 ;
		char t[10], t1[10] ;
		clrscr() ;
		gotoxy(29,3) ;cout <<"ADDITION OF THE CDS" ;
		gotoxy(29,4) ;cout <<"~~~~~~~~~~~~~~~~~~~~~" ;
		gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
		gotoxy(5,25) ;cout < <"Enter code no. of the cd" ;
		gotoxy(5,5) ;cout <<"Code no. " ;
		gets(t) ;
		tc = atoi(t) ;
		tcode = tc ;
		if (tcode == 0)
			return ;
		if (cd_found(tcode))
		{
			found = 1 ;
			gotoxy(19,8) ;cout <<cdname(tcode) ;
			gotoxy(19,9) ;cout <<cat_class(tcode) ;
			gotoxy(22,10) ;cout <<cdprice(tcode) ;
		}
		gotoxy(5,8) ;cout <<"Cd Name   : " ;
		gotoxy(5,9) ;cout <<"type : " ;
		gotoxy(5,10) ;cout <<"Price       : Rs." ;
		gotoxy(5,12) ;cout <<"Copies      : " ;
		valid = 0 ;
		while (!valid && !found)
		{
			valid = 1 ;
			gotoxy(5,25) ; clreol() ;
			cout <<"Enter the name of the cd" ;
			gotoxy(19,8) ; clreol() ;
			gets(tname) ;
			strupr(tname) ;
			if (tname[0] == '0')
				return ;
			if (strlen(tname) < 1 || strlen(tname) > 32)
			{
				valid = 0 ;
				gotoxy(5,25) ; clreol() ;
				cout < <"\7Enter correctly (Range: 1..32)" ;
				getch() ;
			}
		}
		valid = 0 ;
		while (!valid && !found)
		{
			valid = 1 ;
			gotoxy(5,25) ; clreol() ;
			cout <<"Enter the type of the cd" ;
			gotoxy(19,9) ; clreol() ;
			gets(tcatagory) ;
			strupr(tcatagory) ;
			if (tcatagory[0] == '0')
				return ;
			if (strlen(tcatagory) < 1 || strlen(tcatagory) > 25)
			{
				valid = 0 ;
				gotoxy(5,25) ; clreol() ;
				cout < <"\7Enter correctly (Range: 1..25)" ;
				getch() ;
			}
		}
		valid = 0 ;
		while (!valid && !found)
		{
			valid = 1 ;
			gotoxy(5,25) ; clreol() ;
			cout <<"Enter the price of the cd" ;
			gotoxy(22,10) ; clreol() ;
			gets(t1) ;
			t2 = atof(t1) ;
			tprice = t2 ;
			if (t1[0] == '0')
				return ;
			if (tprice < 1 || tprice > 9999)
			{
				valid = 0 ;
				gotoxy(5,25) ; clreol() ;
				cout < <"\7Enter correctly" ;
				getch() ;
			}
		}
		valid = 0 ;
		while (!valid)
		{
			valid = 1 ;
			gotoxy(5,25) ; clreol() ;
			cout <<"Enter no. of copies of cd to be added" ;
			gotoxy(19,12) ; clreol() ;
			gets(t) ;
			tc = atoi(t) ;
			tcopies = tc ;
			if (t[0] == '0')
				return ;
			if (tcopies < 1 || tcopies > 50)
			{
				valid = 0 ;
				gotoxy(5,25) ; clreol() ;
				cout < <"\7Enter correctly" ;
				getch() ;
			}
		}
		tavail = available(tcode) + tcopies ;
		tcopies = no_of_copies(tcode) + tcopies ;
		gotoxy(5,25) ; clreol() ;
		do
		{
			gotoxy(5,15) ; clreol() ;
			cout <<"Do you want to save (y/n) : " ;
			ch = getche() ;
			ch = toupper(ch) ;
		} while (ch != 'Y' && ch != 'N') ;
 
		if (ch == 'Y')
		{
			if (found)
				update_copies(tcode,tcopies,tavail) ;
			else
	add_new_cd(tcode,tname,tcatagory,tprice,tcopies,tavail) ;
		}
		do
		{
			gotoxy(5,17) ; clreol() ;
			cout <<"Do you want to add more (y/n) : " ;
			ch = getche() ;
			ch = toupper(ch) ;
		} while (ch != 'Y' && ch != 'N') ;
	} while (ch == 'Y') ;
}
void WORKING :: add_member(void)
{
	char ch ;
	int mcode, ccode ;
	char mname[26], mphone[10], maddress[33] ;
	int d1, m1, y1 ;
	mcode = lastcode() ;
	mcode++ ;
	do
	{
		int valid=0 ;
		clrscr() ;
		gotoxy(28,3) ;cout <<"ADDITION OF THE MEMBERS" ;
		gotoxy(28,4) ;cout <<"~~~~~~~~~~~~~~~~~~~~~~~" ;
		gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
		gotoxy(5,7) ;cout < <"Member Code # " <<mcode ;
		gotoxy(5,8) ;cout <<"~~~~~~~~~~~~~~~~~" ;
		gotoxy(5,10) ;cout <<"Name    : " ;
		gotoxy(5,12) ;cout <<"Phone   : " ;
		gotoxy(5,14) ;cout <<"Address : " ;
		do
		{
			valid = 1 ;
			gotoxy(5,25) ; clreol() ;
			cout <<"Enter the name of the New Member" ;
			gotoxy(15,10) ; clreol() ;
			gets(mname) ;
			strupr(mname) ;
			if (mname[0] == '0')
				return ;
			if (strlen(mname) < 1 || strlen(mname) > 25)
			{
				valid = 0 ;
				gotoxy(5,25) ; clreol() ;
			cout < <"\7Enter correctly (Range: 1..25)" ;
				getch() ;
			}
		} while (!valid) ;
		do
		{
			valid = 1 ;
			gotoxy(5,25) ; clreol() ;
			cout <<"Enter Phone no. of the Member or Press <ENTER> for none" ;
			gotoxy(15,12) ; clreol() ;
			gets(mphone) ;
			if (mphone[0] == '0')
				return ;
			if ((strlen(mphone) < 7 && strlen(mphone) > 0) || (strlen(mphone) > 9))
			{
				valid = 0 ;
				gotoxy(5,25) ; clreol() ;
				cout < <"\7Enter correctly" ;
				getch() ;
			}
		} while (!valid) ;
		if (strlen(mphone) == 0)
			strcpy(mphone,"-") ;
		do
		{
			valid = 1 ;
			gotoxy(5,25) ; clreol() ;
			cout <<"Enter the address of the New Member" ;
			gotoxy(15,14) ; clreol() ;
			gets(maddress) ;
			strupr(maddress) ;
			if (maddress[0] == '0')
				return ;
			if (strlen(maddress) < 1 || strlen(maddress) > 32)
			{
				valid = 0 ;
				gotoxy(5,25) ; clreol() ;
				cout < <"\7Enter correctly (Range: 1..32)" ;
				getch() ;
			}
		} while (!valid) ;
		gotoxy(5,25) ; clreol() ;
		do
		{
			gotoxy(5,17) ; clreol() ;
			cout <<"Do you want to save (y/n) : " ;
			ch = getche() ;
			ch = toupper(ch) ;
			if (ch == '0')
				return ;
		} while (ch != 'Y' && ch != 'N') ;
		if (ch == 'Y')
		{
			ccode = 0 ;
			d1 = 0 ;
			m1 = 0 ;
			y1 = 0 ;
			add_mem(mcode,ccode,mname,maddress,mphone,d1,m1,y1) ;
			mcode++ ;
		}
		do
		{
			gotoxy(5,19) ; clreol() ;
			cout <<"Do you want to add more (y/n) : " ;
			ch = getche() ;
			ch = toupper(ch) ;
			if (ch == '0')
				return ;
		} while (ch != 'Y' && ch != 'N') ;
	} while (ch == 'Y') ;
}
void WORKING :: issuecd(void)
{
	CD C ;
	MEMBER M ;
	DATE D ;
	char t1code[33], ch ;
	int t2code=0, tcode=0, mcode=0 ;
	int valid ;
	int d1, m1, y1 ;
	struct date d;
	getdate(&d);
	d1 = d.da_day ;
	m1 = d.da_mon ;
	y1 = d.da_year ;
	do
	{
		valid = 1 ;
		while (1)
		{
			clrscr() ;
			gotoxy(5,2) ;cout <<"Date : " <<d1 <<"/" <<m1 <<"/" <<y1 ;
			gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
			gotoxy(5,5) ;cout < <"Enter Code or Name of the cd to be issued" ;
			gotoxy(5,6) ;cout <<"                  or                       " ;
			gotoxy(5,7) ;cout <<"Press <ENTER> for help  " ;
			gets(t1code) ;
			if (t1code[0] == '0')
				return ;
			if (strlen(t1code) == 0)
				C.list() ;
			else
				break ;
		}
		t2code = atoi(t1code) ;
		tcode = t2code ;
		if((tcode==0&&!cdname_found(t1code))||(tcode!=0&&!cd_found(tcode)))
		{
			valid = 0 ;
			gotoxy(5,10) ;cout < <"\7Record not found" ;
			gotoxy(5,11) ;cout <<"Press <ESC> to exit or any other key to continue..." ;
			ch = getch() ;
			if (ch == 27)
				return ;
		}
	} while (!valid) ;
	if (tcode == 0)
		tcode = cdcodeof(t1code) ;
	if (!available(tcode))
	{
		gotoxy(5,10) ;cout < <"\7Sorry! cd (" <<cdname(tcode) <<") is not available" ;
		gotoxy(5,11) ;cout <<"Kindly issue any other cd" ;
		gotoxy(5,12) ;cout <<"See List of cds" ;
		getch() ;
		return ;
	}
	do
	{
		valid = 1 ;
		while (1)
		{
			clrscr() ;
			gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
			gotoxy(5,2) ;cout < <"Date : " <<d1 <<"/" <<m1 <<"/" <<y1 ;
			gotoxy(5,5) ;cout <<"cd Name: " <<cdname(tcode) ;
			gotoxy(5,7) ;cout <<"Enter Code no. of the Member" ;
			gotoxy(5,8) ;cout <<"            or              " ;
			gotoxy(5,9) ;cout <<"Press <ENTER> for help  " ;
			gets(t1code) ;
			if (t1code[0] == '0')
				return ;
			if (strlen(t1code) == 0)
				M.list() ;
			else
				break ;
		}
		t2code = atoi(t1code) ;
		mcode = t2code ;
		if (mcode == 0)
		{
			valid = 0 ;
			gotoxy(5,25) ;cout < <"\7Enter Correctly" ;
			getch() ;
		}
		if (!member_found(mcode) && valid)
		{
			valid = 0 ;
			gotoxy(5,13) ;cout <<"\7Record not found" ;
			gotoxy(5,14) ;cout <<"Press <ESC> to exit or any other key to continue..." ;
			ch = getch() ;
			if (ch == 27)
				return ;
		}
	} while (!valid) ;
	int tcopies, tavail ;
	tcopies = no_of_copies(tcode) ;  // member function of BOOK
	tavail  = available(tcode) - 1 ;  // member function of BOOK
	update_copies(tcode,tcopies,tavail) ;  // member function of BOOK
	D.extend_date(d1,m1,y1,15) ;
	d1 = D.day ;
	m1 = D.mon ;
	y1 = D.year ;
	update_cd(mcode,tcode,d1,m1,y1) ;  // member function of MEMBER
	gotoxy(5,13) ;cout < <"\7cd is issued to " <<membername(mcode) ;
	gotoxy(5,15) ;cout <<"Date of Return : " <<d1 <<"/" <<m1 <<"/" <<y1 ;
	getch() ;
}
void WORKING :: returncd(void)
{
	MEMBER M ;
	char t1code[5], ch ;
	int t2code=0, mcode=0, valid ;
	int d1, m1, y1 ;
	struct date d;
	getdate(&d);
	d1 = d.da_day ;
	m1 = d.da_mon ;
	y1 = d.da_year ;
	do
	{
		valid = 1 ;
		while (1)
		{
			clrscr() ;
			gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
			gotoxy(5,2) ;cout < <"Date : " <<d1 <<"/" <<m1 <<"/" <<y1 ;
			gotoxy(5,7) ;cout <<"Enter Code no. of the Member who wants to return cd" ;
			gotoxy(5,8) ;cout <<"                        or              " ;
			gotoxy(5,9) ;cout <<"Press <ENTER> for help  " ;
			gets(t1code) ;
			if (t1code[0] == '0')
				return ;
			if (strlen(t1code) == 0)
				M.list() ;
			else
				break ;
		}
		t2code = atoi(t1code) ;
		mcode = t2code ;
		if (mcode == 0)
		{
			valid = 0 ;
			gotoxy(5,25) ;cout < <"\7Enter Correctly" ;
			getch() ;
		}
		if (!member_found(mcode) && valid)
		{
			valid = 0 ;
			gotoxy(5,13) ;cout <<"\7Record not found" ;
			gotoxy(5,14) ;cout <<"Press <ESC> to exit or any other key to continue..." ;
			ch = getch() ;
			if (ch == 27)
				return ;
		}
		if (!issued(mcode) && valid)
		{
			valid = 0 ;
			gotoxy(5,13) ;cout < <"\7Member have no cd to return" ;
			gotoxy(5,14) ;cout <<"Press <ESC> to exit or any other key to continue..." ;
			ch = getch() ;
			if (ch == 27)
				return ;
		}
	} while (!valid) ;
	int ccode, tcopies, tavail ;
	ccode = issued(mcode) ;
	gotoxy(5,13) ;cout < <"cd Code : " <<ccode ;
	gotoxy(5,14) ;cout <<"cd Name : " <<cdname(ccode) ;
	tcopies = no_of_copies(ccode) ;
	tavail = available(ccode) + 1 ;
	long int f ;
	f = fine(mcode) ;
	if (f != 0)
	{
		gotoxy(5,16) ;cout <<"You have to pay a fine of Rs." <<f ;
		gotoxy(5,17) ;cout <<"Please do not delay the Return of cd again" ;
	}
	update_copies(ccode,tcopies,tavail) ;
	update_cd(mcode,0,0,0,0) ;
	gotoxy(5,19) ;cout <<"\7cd has been returned" ;
	getch() ;
}
void WORKING :: modify_cd(void)
{
	CD C ;
	char t1code[5], tname[33], tcatagory[6], *t1, ch ;
	int t2code=0, tcode=0 ;
	float t2=0.0, tprice=0.0 ;
	int valid ;
	do
	{
		valid = 1 ;
		while (1)
		{
			clrscr() ;
			gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
			gotoxy(5,5) ;cout < <"Enter Code or Name of the cd to be modified" ;
			gotoxy(5,6) ;cout <<"                  or                       " ;
			gotoxy(5,7) ;cout <<"Press <ENTER> for help  " ;
			gets(t1code) ;
			if (t1code[0] == '0')
				return ;
			if (strlen(t1code) == 0)
				C.list() ;
			else
				break ;
		}
		t2code = atoi(t1code) ;
		tcode = t2code ;
		if((tcode==0&&!cdname_found(t1code))||(tcode!=0&&!cd_found(tcode)))
		{
			valid = 0 ;
			gotoxy(5,10) ;cout < <"\7Record not found" ;
			gotoxy(5,11) ;cout <<"Press <ESC> to exit or any other key to continue..." ;
			ch = getch() ;
			if (ch == 27)
				return ;
		}
	} while (!valid) ;
	if (tcode == 0)
		tcode = cdcodeof(t1code) ;
	clrscr() ;
	gotoxy(72,1) ;cout < <"&lt;0>=Exit" ;
	CD::display(tcode) ;
	do
	{
		gotoxy(5,13) ; clreol() ;
		cout < <"Do you want to modify this record (y/n) : " ;
		ch = getche() ;
		ch = toupper(ch) ;
		if (ch == '0')
			return ;
	} while (ch != 'Y' && ch != 'N') ;
	if (ch == 'N')
		return ;
	gotoxy(5,16) ;cout <<"CD Name   : " ;
	gotoxy(5,17) ;cout <<"type : " ;
	gotoxy(5,18) ;cout <<"Price       : Rs." ;
	do
	{
		valid = 1 ;
		gotoxy(5,25) ; clreol() ;
		cout <<"Enter the name of the cd or <ENTER> for no change" ;
		gotoxy(19,16) ; clreol() ;
		gets(tname) ;
		strupr(tname) ;
		if (tname[0] == '0')
			return ;
		if (strlen(tname) > 32)
		{
			valid = 0 ;
			gotoxy(5,25) ; clreol() ;
			cout < <"\7Enter correctly (Range: 1..32)" ;
			getch() ;
		}
	} while (!valid) ;
	if (strlen(tname) == 0)
		strcpy(tname,cdname(tcode)) ;
	do
	{
		valid = 1 ;
		gotoxy(5,25) ; clreol() ;
		cout <<"Enter the type or <ENTER> for no change" ;
		gotoxy(19,17) ; clreol() ;
		gets(tcatagory) ;
		strupr(tcatagory) ;
		if (tcatagory[0] == '0')
			return ;
		if (strlen(tcatagory) > 25)
		{
			valid = 0 ;
			gotoxy(5,25) ; clreol() ;
			cout < <"\7Enter correctly (Range: 1..25)" ;
			getch() ;
		}
	} while (!valid) ;
	if (strlen(tcatagory) == 0)
		strcpy(tcatagory,cat_class(tcode)) ;
	do
	{
		valid = 1 ;
		gotoxy(5,25) ; clreol() ;
		cout <<"Enter price or <ENTER> for no change" ;
		gotoxy(22,18) ; clreol() ;
		gets(t1) ;
		t2 = atof(t1) ;
		tprice = t2 ;
		if (t1[0] == '0')
			return ;
		if (strlen(t1) == 0)
			break ;
		if (tprice < 1 || tprice > 9999)
		{
			valid = 0 ;
			gotoxy(5,25) ; clreol() ;
			cout < <"\7Enter correctly" ;
			getch() ;
		}
	} while (!valid) ;
	if (strlen(t1) == 0)
		tprice = cdprice(tcode) ;
	gotoxy(5,25) ; clreol() ;
	do
	{
		gotoxy(5,20) ; clreol() ;
		cout <<"Do you want to save changes (y/n) : " ;
		ch = getche() ;
		ch = toupper(ch) ;
		if (ch == '0')
			return ;
	} while (ch != 'Y' && ch != 'N') ;
	if (ch == 'N')
		return ;
	CD::modify(tcode,tname,tcatagory,tprice) ;
	gotoxy(5,23) ;cout <<"\7Record Modified" ;
	getch() ;
}
void WORKING :: modify_member(void)
{
	MEMBER M ;
	char m1code[10], mname[26], mphone[10], maddress[33], ch ;
	int m2code=0, mcode=0 ;
	int valid ;
	do
	{
		valid = 1 ;
		while (1)
		{
			clrscr() ;
			gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
			gotoxy(5,7) ;cout < <"Enter Code no. of the Member to be Modify" ;
			gotoxy(5,8) ;cout <<"                        or              " ;
			gotoxy(5,9) ;cout <<"Press <ENTER> for help  " ;
			gets(m1code) ;
			m2code = atoi(m1code) ;
			mcode = m2code ;
			if (m1code[0] == '0')
				return ;
			if (strlen(m1code) == 0)
				M.list() ;
			else
				break ;
		}
		if (mcode == 0)
		{
			valid = 0 ;
			gotoxy(5,25) ;cout < <"\7Enter Correctly" ;
			getch() ;
		}
		if (valid && !member_found(mcode))
		{
			valid = 0 ;
			gotoxy(5,13) ;cout <<"\7Record not found" ;
			gotoxy(5,14) ;cout <<"Press <ESC> to exit or any other key to continue..." ;
			ch = getch() ;
			if (ch == 27)
				return ;
		}
	} while (!valid) ;
	clrscr() ;
	gotoxy(72,1) ;cout < <"&lt;0>=Exit" ;
	MEMBER::display(mcode) ;
	do
	{
		gotoxy(5,10) ; clreol() ;
		cout < <"Do you want to modify this record (y/n) : " ;
		ch = getche() ;
		ch = toupper(ch) ;
		if (ch == '0')
			return ;
	} while (ch != 'Y' && ch != 'N') ;
	if (ch == 'N')
		return ;
	gotoxy(5,13) ;cout <<"Name    : " ;
	gotoxy(5,14) ;cout <<"Phone   : " ;
	gotoxy(5,15) ;cout <<"Address : " ;
	do
	{
		valid = 1 ;
		gotoxy(5,25) ; clreol() ;
		cout <<"Enter the name of the member or <ENTER> for no change" ;
		gotoxy(19,13) ; clreol() ;
		gets(mname) ;
		strupr(mname) ;
		if (mname[0] == '0')
			return ;
		if (strlen(mname) > 25)
		{
			valid = 0 ;
			gotoxy(5,25) ; clreol() ;
			cout < <"\7Enter correctly (Range: 1..25)" ;
			getch() ;
		}
	} while (!valid) ;
	if (strlen(mname) == 0)
		strcpy(mname,membername(mcode)) ;
	do
	{
		valid = 1 ;
		gotoxy(5,25) ; clreol() ;
		cout <<"Enter the Phone no. of Member or <ENTER> for no change" ;
		gotoxy(19,14) ; clreol() ;
		gets(mphone) ;
		if (mphone[0] == '0')
			return ;
		if((strlen(mphone)&lt;7&&strlen(mphone)>0)||(strlen(mphone)>9))
		{
			valid = 0 ;
			gotoxy(5,25) ; clreol() ;
			cout < <"\7Enter correctly" ;
			getch() ;
		}
	} while (!valid) ;
	if (strlen(mphone) == 0)
		strcpy(mphone,memberphone(mcode)) ;
	do
	{
		valid = 1 ;
		gotoxy(5,25) ; clreol() ;
		cout <<"Enter the address of the member or <ENTER> for no change" ;
		gotoxy(19,15) ; clreol() ;
		gets(maddress) ;
		strupr(maddress) ;
		if (maddress[0] == '0')
			return ;
		if (strlen(maddress) > 32)
		{
			valid = 0 ;
			gotoxy(5,25) ; clreol() ;
			cout < <"\7Enter correctly (Range: 1..32)" ;
			getch() ;
		}
	} while (!valid) ;
	if (strlen(maddress) == 0)
		strcpy(maddress,memberaddress(mcode)) ;
	gotoxy(5,25) ; clreol() ;
	do
	{
		gotoxy(5,18) ; clreol() ;
		cout <<"Do you want to save changes (y/n) : " ;
		ch = getche() ;
		ch = toupper(ch) ;
		if (ch == '0')
			return ;
	} while (ch != 'Y' && ch != 'N') ;
	if (ch == 'N')
		return ;
	MEMBER::modify(mcode,mname,mphone,maddress) ;
	gotoxy(5,23) ;cout <<"\7Record Modified" ;
	getch() ;
}
void WORKING :: delete_cd(void)
{
	CD C ;
	char t1code[5], tname[33], tcatagory[6], ch ;
	int t2code=0, tcode=0 ;
	int valid ;
	do
	{
		valid = 1 ;
		while (1)
		{
			clrscr() ;
			gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
			gotoxy(5,5) ;cout < <"Enter Code or Name of the cd to be Deleted" ;
			gotoxy(5,6) ;cout <<"                  or                       " ;
			gotoxy(5,7) ;cout <<"Press <ENTER> for help  " ;
			gets(t1code) ;
			if (t1code[0] == '0')
				return ;
			if (strlen(t1code) == 0)
				C.list() ;
			else
				break ;
		}
		t2code = atoi(t1code) ;
		tcode = t2code ;
		if((tcode==0&&!cdname_found(t1code))||(tcode!=0&&!cd_found(tcode)))
		{
			valid = 0 ;
			gotoxy(5,10) ;cout < <"\7Record not found" ;
			gotoxy(5,11) ;cout <<"Press <ESC> to exit or any other key to continue..." ;
			ch = getch() ;
			if (ch == 27)
				return ;
		}
	} while (!valid) ;
	if (tcode == 0)
		tcode = cdcodeof(t1code) ;
	clrscr() ;
	gotoxy(72,1) ;cout < <"&lt;0>=Exit" ;
	CD::display(tcode) ;
	do
	{
		gotoxy(5,13) ; clreol() ;
		cout < <"Do you want to delete this record (y/n) : " ;
		ch = getche() ;
		ch = toupper(ch) ;
		if (ch == '0')
			return ;
	} while (ch != 'Y' && ch != 'N') ;
	if (ch == 'N')
		return ;
	int tavail, tcopies ;
	tavail = available(tcode) ;
	tcopies = no_of_copies(tcode) ;
	if (tavail != tcopies)
	{
		gotoxy(5,15) ;cout <<"\7Record cannot be deleted. This cd is issued." ;
		getch() ;
		return ;
	}
	CD::delete_rec(tcode) ;
	gotoxy(5,23) ;cout <<"\7Record Deleted" ;
	getch() ;
}
void WORKING :: delete_member(void)
{
	MEMBER M ;
	char m1code[5], mname[26], mphone[10], maddress[33], ch ;
	int m2code=0, mcode=0 ;
	int valid ;
	do
	{
		valid = 1 ;
		while (1)
		{
			clrscr() ;
			gotoxy(72,1) ;cout <<"&lt;0>=Exit" ;
			gotoxy(5,7) ;cout < <"Enter Code no. of the Member to be Deleted" ;
			gotoxy(5,8) ;cout <<"                        or              " ;
			gotoxy(5,9) ;cout <<"Press <ENTER> for help  " ;
			gets(m1code) ;
			m2code = atoi(m1code) ;
			mcode = m2code ;
			if (m1code[0] == '0')
				return ;
			if (strlen(m1code) == 0)
				M.list() ;
			else
				break ;
		}
		if (mcode == 0)
		{
			valid = 0 ;
			gotoxy(5,25) ;cout < <"\7Enter Correctly" ;
			getch() ;
		}
		if (valid && !member_found(mcode))
		{
			valid = 0 ;
			gotoxy(5,13) ;cout <<"\7Record not found" ;
			gotoxy(5,14) ;cout <<"Press <ESC> to exit or any other key to continue..." ;
			ch = getch() ;
			if (ch == 27)
				return ;
		}
	} while (!valid) ;
	clrscr() ;
	gotoxy(72,1) ;cout < <"&lt;0>=Exit" ;
	MEMBER::display(mcode) ;
	do
	{
		gotoxy(5,10) ; clreol() ;
		cout < <"Do you want to Delete this record (y/n) : " ;
		ch = getche() ;
		ch = toupper(ch) ;
		if (ch == '0')
			return ;
	} while (ch != 'Y' && ch != 'N') ;
	if (ch == 'N')
		return ;
	if (issued(mcode))
	{
		gotoxy(5,15) ;cout <<"\7Record cannot be delete. Member has a cd" ;
		getch() ;
		return ;
	}
	MEMBER::delete_rec(mcode) ;
	gotoxy(5,23) ;cout <<"\7Record Modified" ;
	getch() ;
}
void main()
{
	introduction() ;
	MENU menu ;
	menu.main_menu() ;
	getch();
}

  1. No comments yet.
  1. No trackbacks yet.