TELEPHONE DIRECTORY SYSTEM
C++ Project on Telephone directory System. This project is completely design on C++ and here i will give you link to download this project.
SOURCE CODE
//**********************************************************
// PROJECT TELEPHONE DIRECTORY
//**********************************************************
//**********************************************************
// INCLUDED HEADER FILES
//**********************************************************
#include <iostream.h>
#include <conio.h>
#include <dos.h>
#include <string.h>
#include <fstream.h>
#include <process.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
//**********************************************************
// CLASS NAME : MENU
// DETAILS : IT CONTROLLS OVER ALL THE FUNCTIONS
//**********************************************************
class menu
{
public :
void main_menu(void) ;
void startup(void) ;
void box(void) ;
void line_hor (int, int, int, char) ;
void line_ver (int, int, int, char) ;
} ;
//**********************************************************
// CLASS NAME : DIRECTORY
// DETAILS : IT CONTROLLS OVER ALL THE FUNCTIONS
// RELATED TO DIRECTORY
//**********************************************************
class directory
{
public :
directory(void) ;
~directory(void) ;
void add(void) ;
void modify(void) ;
void deletion(void) ;
void show(void) ;
private :
void sort(void) ;
void display_record(int) ;
int found_record(int) ;
void delete_record(int) ;
void modify_record(int) ;
int recordno(int) ;
int last_code(void) ;
int code ;
char name[20], phone1[10], phone2[10], phone3[10], phone4[10],
address[45] ;
} ;
//**********************************************************
// CLASS NAME : MENU
// FUNCTION NAME : LINE_HOR
// DETAILS : IT ACCEPTS THE ROWS AND COLUMNS AND
// DRAW THE HORIZONTAL LINE
//**********************************************************
void menu :: line_hor(int column1, int column2, int row, char c)
{
for ( column1; column1<=column2; column1++ )
{
gotoxy(column1,row) ;
cout <<c ;
}
}
//**********************************************************
// CLASS NAME : MENU
// FUNCTION NAME : LINE_VER
// DETAILS : IT ACCEPTS THE ROWS AND COLUMNS AND
// DRAW THE VERTICAL LINE
//**********************************************************
void menu :: line_ver(int row1, int row2, int column, char c)
{
for ( row1; row1<=row2; row1++ )
{
gotoxy(column,row1) ;
cout <<c ;
}
}
//**********************************************************
// CLASS NAME : MENU
// FUNCTION NAME : STARTUP
// DETAILS : IT CREATS THE STARTING SCREEN
//**********************************************************
void menu :: startup(void)
{
clrscr() ;
int i, j, s ;
char a[]="T E L E P H O N E" ;
char b[]="D I R E C T O R Y" ;
for (i=1; i<=79; i++)
line_ver(1,25,i,179) ;
gotoxy(1,11) ; clreol() ;
gotoxy(1,13) ; clreol() ;
j = 63 ;
s = 100 ;
for (i=1; i<=43; i++)
{
sound(s) ;
s = s + 20 ;
delay(50) ;
gotoxy(1,12) ;
clreol() ;
gotoxy(i,12) ;
cout <<b ;
gotoxy(j,12) ;
cout <<a ;
j-- ;
gotoxy(1,1) ;
}
nosound() ;
delay(100) ;
char ch=219 ;
s = 500 ;
for (i=1; i<=79; i++)
{
sound(s) ;
s = s + 10 ;
gotoxy(i,10) ;
cout <<ch ;
delay(5) ;
}
nosound() ;
delay(200) ;
ch=219 ;
s = 1290 ;
for (i=79; i>=1; i--)
{
sound(s) ;
s = s - 10 ;
gotoxy(i,14) ;
cout <<ch ;
delay(5) ;
}
nosound() ;
delay(1000) ;
}
//**********************************************************
// CLASS NAME : MENU
// FUNCTION NAME : BOX
// DETAILS : IT CREATS BOX FOR THE MENU
//**********************************************************
void menu :: box(void)
{
line_hor(2,39,1,219) ;
line_hor(2,39,24,219) ;
line_ver(1,24,2,219) ;
line_ver(1,24,39,219) ;
}
//**********************************************************
// CLASS NAME : MENU
// FUNCTION NAME : MAIN_MENU
// DETAILS : IT CREATS MENU AND CONTROL OTHER
// FUNCTIONS
//**********************************************************
void menu :: main_menu(void)
{
char ch ;
while(1)
{
clrscr() ;
textmode(C40) ;
clrscr() ;
box() ;
gotoxy(12,5) ;
cout <<"TELEPHONE DIRECTORY" ;
gotoxy(12,6) ;
cout <<"---------------" ;
gotoxy(12,10) ;
cout <<"1: TO ADD" ;
gotoxy(12,11) ;
cout <<"2: TO SHOW" ;
gotoxy(12,12) ;
cout <<"3: TO DELETE" ;
gotoxy(12,13) ;
cout <<"4: TO MODIFY" ;
gotoxy(12,14) ;
cout <<"0: QUIT" ;
gotoxy(11,18) ;
cout <<"Enter your choice:" ;
ch = getch() ;
textmode(C80) ;
clrscr() ;
if (ch == '1')
{
directory d ;
d.add() ;
}
else
if (ch == '2')
{
directory d ;
d.show() ;
}
else
if (ch == '3')
{
directory d ;
d.deletion() ;
}
else
if (ch == '4')
{
directory d ;
d.modify() ;
}
else
if (ch == '0')
break ;
}
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : DIRECTORY (CONSTRUCTOR)
// DETAILS : IT IS CONSTRUCTOR FUNCTION, GIVING
// DEFAULT VALUES
//**********************************************************
directory :: directory(void)
{
code = 0 ;
name[0] = '\0' ;
phone1[0] = '\0' ;
phone2[0] = '\0' ;
phone3[0] = '\0' ;
phone4[0] = '\0' ;
address[0] = '\0' ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : ~DIRECTORY (DISTRUCTOR)
// DETAILS : IT IS DISTRUCTOR FUNCTION
//**********************************************************
directory :: ~directory(void)
{
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : DISPLAY_LIST
// DETAILS : IT DISPLAYS LIST OF THE PERSON'S
// RECORDS
//**********************************************************
void directory :: show(void)
{
clrscr() ;
menu m ;
char t_name[20], t1_name[20] ;
gotoxy(3,5) ;
cout <<"Enter character(s) for selective list" ;
gotoxy(3,6) ;
cout <<"or press <ENTER> for whole list or `0' for exit : " ;
gets(t_name) ;
if (t_name[0] == '0')
return ;
int len = strlen(t_name) ;
clrscr() ;
fstream file ;
file.open("TDIRECTORY.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
int row = 4 ;
int found = 0 ;
int pageno = 1 ;
int flag = 1 ;
char ch ;
gotoxy(1,2) ;
cout <<" CODE NAME " ;
m.line_hor(1,79,3,196) ;
m.line_hor(1,79,24,196) ;
while (file.read((char *) this, sizeof(directory)))
{
flag = 1 ;
for (int i=0; i<len; i++)
t1_name[i] = name[i] ;
t1_name[len] = '\0' ;
if (strcmpi(t_name,t1_name)==0)
{
delay(20) ;
found = 1 ;
gotoxy(1,row) ;
cout <<code ;
gotoxy(7,row) ;
puts(name) ;
gotoxy(27,row) ;
cout <<"PHONE : " <<phone1 <<", " <<phone2 <<", " <<phone3 <<", "
<<phone4 ;
gotoxy(27,row+1) ;
cout <<"ADDRESS: " ;
puts(address) ;
if ( row == 22 )
{
flag = 0 ;
row = 4 ;
gotoxy(66,1) ;
cout <<"Page no. : " <<pageno ;
pageno++ ;
gotoxy(1,25) ;
cout <<"Press <ESC> to exit or any other key to continue..." ;
ch = getch() ;
if (ch == 27)
return ;
clrscr() ;
gotoxy(1,2) ;
cout <<" CODE NAME " ;
m.line_hor(1,79,3,196) ;
m.line_hor(1,79,24,196) ;
}
else
row = row + 2 ;
}
}
if ( !found )
{
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,5) ;
cout <<"Records not found" ;
}
if (flag)
{
gotoxy(66,1) ;
cout <<"Page no. : " <<pageno ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
}
file.close() ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : DISPLAY_RECORD
// DETAILS : IT DISPLAYS SINGLE RECORD FOR THE
// GIVEN RECORD
//**********************************************************
void directory :: display_record(int t_code)
{
fstream file ;
file.open("TDIRECTORY.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
while (file.read((char *) this, sizeof(directory)))
{
if (t_code == code)
{
gotoxy(3,3) ;
cout <<"Code # " <<code ;
gotoxy(3,5) ;
cout <<"Name : " ;
puts(name) ;
gotoxy(3,6) ;
cout <<"Phone 1 : " <<phone1 ;
gotoxy(3,7) ;
cout <<"Phone 2 : " <<phone2 ;
gotoxy(3,8) ;
cout <<"Phone 3 : " <<phone3 ;
gotoxy(3,9) ;
cout <<"Phone 4 : " <<phone4 ;
gotoxy(3,10) ;
cout <<"Address : " ;
puts(address) ;
break ;
}
}
file.close() ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : LAST_CODE
// DETAILS : IT COUNTS THE RECORD IN THE FILE AND
// RETURN THE LAST CODE NO.
//**********************************************************
int directory :: last_code()
{
fstream file ;
file.open("TDIRECTORY.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
int t=0 ;
while (file.read((char *) this, sizeof(directory)))
t++ ;
file.close() ;
return t ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : FOUND_RECORD
// DETAILS : IT RETURNS THAT RECORD IS FOUND FOR
// THE GIVEN CODE NO. OR NOT
//**********************************************************
int directory :: found_record(int t_code)
{
fstream file ;
file.open("TDIRECTORY.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
int found=0 ;
while (file.read((char *) this, sizeof(directory)))
{
if (t_code == code)
{
found++ ;
break ;
}
}
file.close() ;
return found ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : ADD
// DETAILS : IT ADDS THE RECORDS IN THE DIRECTORY'S
// FILE (TDIRECTORY.DAT)
//**********************************************************
void directory :: add(void)
{
menu m ;
int valid, saved=0 ;
int t_code ;
t_code = last_code() ;
t_code++ ;
if (t_code == 1)
{
code = t_code ;
strcpy(name,"abc") ;
strcpy(phone1,"-") ;
strcpy(phone2,"-") ;
strcpy(phone3,"-") ;
strcpy(phone4,"-") ;
strcpy(address,"xyz") ;
fstream file ;
file.open("TDIRECTORY.DAT", ios::out | ios::app ) ;
file.write((char *) this, sizeof(directory)) ;
file.close() ;
delete_record(t_code) ;
}
char ch ;
do
{
clrscr() ;
gotoxy(3,3) ;
cout <<"Code # " <<t_code ;
gotoxy(3,5) ;
cout <<"Name : " ;
gotoxy(3,6) ;
cout <<"Phone 1 : " ;
gotoxy(3,7) ;
cout <<"Phone 2 : " ;
gotoxy(3,8) ;
cout <<"Phone 3 : " ;
gotoxy(3,9) ;
cout <<"Phone 4 : " ;
gotoxy(3,10) ;
cout <<"Address : " ;
m.line_hor(1,79,23,196) ;
do
{
valid = 1 ;
gotoxy(1,25) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER NAME OF THE PERSON" ;
gotoxy(13,5) ;
gets(name) ;
strupr(name) ;
if (strlen(name) > 19 || strlen(name) == 0)
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT BLANK OR GREATER THAN 19" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,5) ; clreol() ;
}
} while ( !valid ) ;
do
{
valid = 1 ;
gotoxy(1,25) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER THE PHONE NO. OF THE CUSTOMER, <ENTER> FOR BLANK" ;
gotoxy(13,6) ;
gets(phone1) ;
if ((strlen(phone1) < 7 && strlen(phone1) > 0) || (strlen(phone1) >
9))
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT GREATER THAN 10 OR LESS THAN 7" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,6) ; clreol() ;
}
} while ( !valid ) ;
if (strlen(phone1) == 0)
strcpy(phone1,"-") ;
do
{
valid = 1 ;
gotoxy(1,25) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER THE PHONE NO. OF THE CUSTOMER, <ENTER> FOR BLANK" ;
gotoxy(13,7) ;
gets(phone2) ;
if ((strlen(phone2) < 7 && strlen(phone2) > 0) || (strlen(phone2) >
9))
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT GREATER THAN 9 OR LESS THAN 7" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,7) ; clreol() ;
}
} while ( !valid ) ;
if (strlen(phone2) == 0)
strcpy(phone2,"-") ;
do
{
valid = 1 ;
gotoxy(1,25) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER THE PHONE NO. OF THE CUSTOMER, <ENTER> FOR BLANK" ;
gotoxy(13,8) ;
gets(phone3) ;
if ((strlen(phone3) < 7 && strlen(phone3) > 0) || (strlen(phone3) >
9))
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT GREATER THAN 9 OR LESS THAN 7" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,8) ; clreol() ;
}
} while ( !valid ) ;
if (strlen(phone3) == 0)
strcpy(phone3,"-") ;
do
{
valid = 1 ;
gotoxy(1,25) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER THE PHONE NO. OF THE CUSTOMER, <ENTER> FOR BLANK" ;
gotoxy(13,9) ;
gets(phone4) ;
if ((strlen(phone4) < 7 && strlen(phone4) > 0) || (strlen(phone4) >
9))
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT GREATER THAN 9 OR LESS THAN 7" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,9) ; clreol() ;
}
} while ( !valid ) ;
if (strlen(phone4) == 0)
strcpy(phone4,"-") ;
do
{
valid = 1 ;
gotoxy(1,25) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER ADDRESS OF THE PERSON" ;
gotoxy(13,10) ;
gets(address) ;
strupr(address) ;
if (strlen(address) > 43 || strlen(address) == 0)
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"SHOULD NOT BLANK OR GREATER THAN 48" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,10) ; clreol() ;
}
} while ( !valid ) ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,23) ; clreol() ;
gotoxy(1,13) ;
cout <<"Do you want to save the record (y/n) : " ;
do
{
valid = 1 ;
gotoxy(41,13) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(41,13) ; clreol() ;
}
} while ( !valid ) ;
if (ch == 'Y')
{
saved = 1 ;
code = t_code ;
fstream file ;
file.open("TDIRECTORY.DAT", ios::out | ios::app ) ;
file.write((char *) this, sizeof(directory)) ;
file.close() ;
t_code++ ;
}
gotoxy(1,14) ;
cout <<"Do you want to add more records (y/n) : " ;
do
{
valid = 1 ;
gotoxy(41,14) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(41,14) ; clreol() ;
}
} while ( !valid ) ;
} while (ch == 'Y') ;
if (saved)
sort() ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : DELETE_RECORD
// DETAILS : IT DELETES THE RECORD IN THE DIRECTORY'S
// FILE (TDIRECTORY.DAT) FOR THE GIVEN CODE
//**********************************************************
void directory :: delete_record(int t_code)
{
fstream file ;
file.open("TDIRECTORY.DAT", ios::in) ;
fstream temp ;
temp.open("temp.dat", ios::out) ;
file.seekg(0,ios::beg) ;
while ( !file.eof() )
{
file.read((char *) this, sizeof(directory)) ;
if ( file.eof() )
break ;
if ( code != t_code )
temp.write((char *) this, sizeof(directory)) ;
}
file.close() ;
temp.close() ;
file.open("TDIRECTORY.DAT", ios::out) ;
temp.open("temp.dat", ios::in) ;
temp.seekg(0,ios::beg) ;
t_code = 1 ;
while ( !temp.eof() )
{
temp.read((char *) this, sizeof(directory)) ;
code = t_code ;
if ( temp.eof() )
break ;
file.write((char *) this, sizeof(directory)) ;
t_code++ ;
}
file.close() ;
temp.close() ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : DELETION
// DETAILS : IT GIVES THE CODE NO. TO DELETE THE
// RECORD IN DIRECTORY'S FILE (TDIRECTORY.DAT)
//**********************************************************
void directory :: deletion(void)
{
menu m ;
clrscr() ;
int valid ;
int t_code=0, t;
char t1_code[5], t2_code[5] ;
char ch ;
gotoxy(3,3) ;
cout <<"Enter Code no. of the record to be deleted " ;
gotoxy(3,4) ;
cout <<"or Press <ENTER> to see from the list or `0' to exit : " ;
gets(t1_code) ;
t = atoi(t1_code) ;
t_code = t ;
if (t1_code[0] == '0')
return ;
if (t1_code[0] != '\0')
{
clrscr() ;
if (!found_record(t_code))
{
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(3,15) ;
cout <<"Record not found" ;
m.line_hor(1,79,24,196) ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
return ;
}
display_record(t_code) ;
gotoxy(3,12) ;
cout <<"Do you want to delete this Record (y/n) : " ;
do
{
valid = 1 ;
gotoxy(45,12) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(45,12) ; clreol() ;
}
} while (!valid ) ;
if (ch == 'N')
return ;
gotoxy(1,25) ;
cout <<"Wait..." ;
delete_record(t_code) ;
clrscr() ;
gotoxy(1,14) ;
cout <<"Record Deleted\n" ;
m.line_hor(1,79,24,196) ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
return ;
}
show() ;
gotoxy(1,25) ;
clreol() ;
gotoxy(3,25) ;
cout <<"Enter Code no. of the record or <ENTER> to exit " ;
gets(t2_code) ;
t = atoi(t2_code) ;
t_code = t ;
if (t2_code[0] == '\0')
return ;
clrscr() ;
if (!found_record(t_code))
{
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(3,15) ;
cout <<"Record not found" ;
m.line_hor(1,79,24,196) ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
return ;
}
display_record(t_code) ;
gotoxy(3,12) ;
cout <<"Do you want to delete this Record (y/n) : " ;
do
{
valid = 1 ;
gotoxy(45,12) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(45,12) ; clreol() ;
}
} while (!valid ) ;
if (ch == 'N')
return ;
gotoxy(1,25) ;
cout <<"Wait..." ;
delete_record(t_code) ;
clrscr() ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(3,14) ;
cout <<"Record Deleted" ;
m.line_hor(1,79,24,196) ;
gotoxy(1,25) ;
cout <<"Press any key to continue...." ;
getch() ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : MODIFY_RECORD
// DETAILS : IT MODIFIES THE RECORD IN THE DIRECTORY'S
// FILE (TDIRECTORY.DAT) FOR THE GIVEN CODE
//**********************************************************
void directory :: modify_record(int t_code)
{
menu m ;
int valid, modified=0 ;
char ch ;
m.line_hor(1,79,12,196) ;
gotoxy(3,14) ;
cout <<"Code # " <<t_code ;
gotoxy(3,16) ;
cout <<"Name : " ;
gotoxy(3,17) ;
cout <<"Phone 1 : " ;
gotoxy(3,18) ;
cout <<"Phone 2 : " ;
gotoxy(3,19) ;
cout <<"Phone 3 : " ;
gotoxy(3,20) ;
cout <<"Phone 4 : " ;
gotoxy(3,21) ;
cout <<"Address : " ;
gotoxy(1,25) ; clreol() ;
m.line_hor(1,79,23,196) ;
gotoxy(13,16) ;
cout <<"Change (y/n) : " ;
do
{
valid = 1 ;
gotoxy(28,16) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(28,16) ; clreol() ;
}
} while (!valid) ;
valid = 0 ;
while (!valid && ch == 'Y')
{
modified = 1 ;
valid = 1 ;
gotoxy(13,16) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER NAME OF THE PERSON" ;
gotoxy(13,16) ;
gets(name) ;
strupr(name) ;
if (strlen(name) > 19 || strlen(name) == 0)
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT BLANK OR GREATER THAN 19" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,16) ; clreol() ;
}
}
gotoxy(1,25) ; clreol() ;
gotoxy(13,17) ;
cout <<"Change (y/n) : " ;
do
{
valid = 1 ;
gotoxy(28,17) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(28,17) ; clreol() ;
}
} while (!valid) ;
valid = 0 ;
while (!valid && ch == 'Y')
{
modified = 1 ;
valid = 1 ;
gotoxy(13,17) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER THE PHONE NO. OF THE CUSTOMER, <ENTER> FOR BLANK" ;
gotoxy(13,17) ;
gets(phone1) ;
if ((strlen(phone1) < 7 && strlen(phone1) > 0) || (strlen(phone1) >
9))
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT GREATER THAN 9 OR LESS THAN 7" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,17) ; clreol() ;
}
if (strlen(phone1) == 0)
strcpy(phone1,"-") ;
}
gotoxy(1,25) ; clreol() ;
gotoxy(13,18) ;
cout <<"Change (y/n) : " ;
do
{
valid = 1 ;
gotoxy(28,18) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(28,18) ; clreol() ;
}
} while (!valid) ;
valid = 0 ;
while (!valid && ch == 'Y')
{
modified = 1 ;
valid = 1 ;
gotoxy(13,18) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER THE PHONE NO. OF THE CUSTOMER, <ENTER> FOR BLANK" ;
gotoxy(13,18) ;
gets(phone2) ;
if ((strlen(phone2) < 7 && strlen(phone2) > 0) || (strlen(phone2) >
9))
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT GREATER THAN 9 OR LESS THAN 7" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,18) ; clreol() ;
}
if (strlen(phone2) == 0)
strcpy(phone2,"-") ;
}
gotoxy(1,25) ; clreol() ;
gotoxy(13,19) ;
cout <<"Change (y/n) : " ;
do
{
valid = 1 ;
gotoxy(28,19) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(28,19) ; clreol() ;
}
} while (!valid) ;
valid = 0 ;
while (!valid && ch == 'Y')
{
modified = 1 ;
valid = 1 ;
gotoxy(13,19) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER THE PHONE NO. OF THE CUSTOMER, <ENTER> FOR BLANK" ;
gotoxy(13,19) ;
gets(phone3) ;
if ((strlen(phone3) < 7 && strlen(phone3) > 0) || (strlen(phone3) >
9))
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT GREATER THAN 9 OR LESS THAN 7" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,19) ; clreol() ;
}
if (strlen(phone3) == 0)
strcpy(phone3,"-") ;
}
gotoxy(1,25) ; clreol() ;
gotoxy(13,20) ;
cout <<"Change (y/n) : " ;
do
{
valid = 1 ;
gotoxy(28,20) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(28,20) ; clreol() ;
}
} while (!valid) ;
valid = 0 ;
while (!valid && ch == 'Y')
{
modified = 1 ;
valid = 1 ;
gotoxy(13,20) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER THE PHONE NO. OF THE CUSTOMER, <ENTER> FOR BLANK" ;
gotoxy(13,20) ;
gets(phone4) ;
if ((strlen(phone4) < 7 && strlen(phone4) > 0) || (strlen(phone4) >
9))
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"LENGTH SHOULD NOT GREATER THAN 9 OR LESS THAN 7" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,20) ; clreol() ;
}
if (strlen(phone4) == 0)
strcpy(phone4,"-") ;
}
gotoxy(1,25) ; clreol() ;
gotoxy(13,21) ;
cout <<"Change (y/n) : " ;
do
{
valid = 1 ;
gotoxy(28,21) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(28,21) ; clreol() ;
}
} while (!valid) ;
valid = 0 ;
while (!valid && ch == 'Y')
{
modified = 1 ;
valid = 1 ;
gotoxy(13,21) ; clreol() ;
gotoxy(3,25) ;
cout <<"ENTER ADDRESS OF THE PERSON" ;
gotoxy(13,21) ;
gets(address) ;
strupr(address) ;
if (strlen(address) > 43 || strlen(address) == 0)
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,24) ;
cout <<"SHOULD NOT BLANK OR GREATER THAN 48" ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
gotoxy(1,24) ; clreol() ;
gotoxy(1,25) ; clreol() ;
gotoxy(13,21) ; clreol() ;
}
}
if (!modified)
return ;
gotoxy(1,25) ; clreol() ;
gotoxy(1,23) ; clreol() ;
gotoxy(1,23) ;
cout <<"Do you want to save the record (y/n) : " ;
do
{
valid = 1 ;
gotoxy(41,23) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(41,23) ; clreol() ;
}
} while ( !valid ) ;
if (ch == 'N')
return ;
fstream file ;
file.open("TDIRECTORY.DAT", ios::out | ios::ate) ;
int recno ;
recno = t_code ;
int location ;
location = (recno-1) * sizeof(directory) ;
file.seekp(location) ;
file.write((char *) this, sizeof(directory)) ;
file.close() ;
sort() ;
clrscr() ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(1,14) ;
cout <<"Record Modified" ;
m.line_hor(1,79,24,196) ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : MODIFY
// DETAILS : IT GIVES THE CODE NO. TO MODIFY THE
// RECORD IN DIRECTORY'S FILE (TDIRECTORY.DAT)
//**********************************************************
void directory :: modify(void)
{
menu m ;
clrscr() ;
int valid ;
int t_code=0, t;
char t1_code[5], t2_code[5] ;
char ch ;
gotoxy(3,3) ;
cout <<"Enter Code no. of the record to be modify " ;
gotoxy(3,4) ;
cout <<"or Press <ENTER> to see from the list or `0' to exit : " ;
gets(t1_code) ;
t = atoi(t1_code) ;
t_code = t ;
if (t1_code[0] == '0')
return ;
if (t1_code[0] != '\0')
{
clrscr() ;
if (!found_record(t_code))
{
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(3,15) ;
cout <<"Record not found" ;
m.line_hor(1,79,24,196) ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
return ;
}
display_record(t_code) ;
gotoxy(3,12) ;
cout <<"Do you want to modify this Record (y/n) : " ;
do
{
valid = 1 ;
gotoxy(45,12) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(45,12) ; clreol() ;
}
} while (!valid ) ;
if (ch == 'N')
return ;
modify_record(t_code) ;
return ;
}
show() ;
gotoxy(1,25) ;
clreol() ;
gotoxy(3,25) ;
cout <<"Enter Code no. of the record or <ENTER> to exit " ;
gets(t2_code) ;
t = atoi(t2_code) ;
t_code = t ;
if (t2_code[0] == '\0')
return ;
clrscr() ;
if (!found_record(t_code))
{
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(3,15) ;
cout <<"Record not found" ;
m.line_hor(1,79,24,196) ;
gotoxy(1,25) ;
cout <<"Press any key to continue..." ;
getch() ;
return ;
}
display_record(t_code) ;
gotoxy(3,12) ;
cout <<"Do you want to modify this Record (y/n) : " ;
do
{
valid = 1 ;
gotoxy(45,12) ;
ch = getche() ;
ch = toupper(ch) ;
if (ch != 'Y' && ch != 'N')
{
valid = 0 ;
sound(500) ;
delay(100) ;
nosound() ;
gotoxy(45,12) ; clreol() ;
}
} while (!valid ) ;
if (ch == 'N')
return ;
modify_record(t_code) ;
}
//**********************************************************
// CLASS NAME : DIRECTORY
// FUNCTION NAME : SORT
// DETAILS : IT SORTS THE RECORD IN THE DIRECTORY'S
// FILE (TDIRECTORY.DAT)
//**********************************************************
void directory :: sort(void)
{
int i=0,j ;
directory arr[100] ;
directory temp ;
fstream file ;
file.open("TDIRECTORY.DAT", ios::in) ;
file.seekg(0,ios::beg) ;
while (file.read((char *) &arr[i], sizeof(directory)))
i++ ;
int size ;
size = i ;
file.close() ;
for (i=1; i<size; i++)
for (j=0; j<size-i; j++)
{
if (strcmp(arr[j].name,arr[j+1].name) > 0)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
int t_code = 1 ;
for (i=0; i<size; i++)
{
arr[i].code = t_code ;
t_code++ ;
}
file.open("TDIRECTORY.DAT", ios::out) ;
for (i=0; i<size; i++)
file.write((char *) &arr[i], sizeof(directory)) ;
file.close() ;
}
//**********************************************************
// FUNCTION NAME : MAIN
// DETAILS : IT CALLS THE STARTUP FUNCTION AND
// MENU FUNCTION.
//**********************************************************
void main(void)
{
menu m ;
m.startup() ;
m.main_menu() ;
}
I hope its helpful for you, if you want to Documentation of this projects please write comment below, we provides full documentation soon as possible.
.png)
.png)
.png)
.png)
.png)
.png)
No comments :
Post a Comment