Hey all! I have this assignment for my school project to create a simple address book using classes that do the routine stuff like adding a contact, searching it, modifying it, deleting it...
Here is the code but it won't run properly. I tried but couldn't figure it out. It'd be a huge help for me if you guys could have a look at it and tell me what and where the problem is...
Thank you! :)
#include<fstream.h>
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<iomanip.h>
#include<process.h>
#include<ctype.h>
class contact
{ char fname[15];
char lname[20];
char r_add[20];
char o_add[20];
int phone, mobile, office_ph, fax;
char mail_ID[15];
public :
int record;
void enter();
void display();
void menu();
void search();
void modify();
int no_of_records();
void display_all();
} A;
void contact :: enter()
{ cout<<"Enter First Name : ";
gets(fname);
cout<<'\n'<<"Enter Last Name : ";
gets(lname);
cout<<'\n'<<"Enter Address (residence) : ";
gets(r_add);
cout<<'\n'<<"Enter Address (office) : ";
gets(o_add);
cout<<'\n'<<"Enter Phone No. (residence) : ";
cin>>phone;
cout<<'\n'<<"Enter Mobile No. : ";
cin>>mobile;
cout<<'\n'<<"Enter Phone No. (office) : ";
cin>>office_ph;
cout<<'\n'<<"Enter Fax No. : ";
cin>>fax;
cout<<'\n'<<"Enter E-Mail ID : ";
gets(mail_ID);
char ch;
cin.get(ch);
}
void contact :: display()
{ clrscr();
cout<<"Name : ";
puts(fname);
cout<<'\t';
puts(lname);
cout<<'\n'<<"Address (Residence) : ";
puts(r_add);
cout<<'\n'<<"Address (Office) : ";
puts(o_add);
cout<<'\n'<<"Phone (residence): "<<phone;
cout<<'\n'<<"Mobile : "<<mobile;
cout<<'\n'<<"Phone (office): "<<office_ph;
cout<<'\n'<<"Fax : "<<fax;
cout<<'\n'<<"E-Mail ID : ";
puts(mail_ID);
}
int contact :: no_of_records()
{ ifstream fin;
fin.open("ADDBOOK.DAT");
fin.seekg(0, ios::end);
int n;
n = fin.tellg()/sizeof(A);
cout<<'\n'<<"NUMBER OF RECORDS = "<<n ;
return n;
}
void contact :: menu()
{ clrscr();
int ch, ch1;
do { clrscr();
cout<<"\t\t\t"<<"***** MAIN MENU *****";
cout<<'\n'<<"1.Add contact(s)";
cout<<'\n'<<"2.Display all contacts";
cout<<'\n'<<"3.Modify";
cout<<'\n'<<"4.Search";
cout<<'\n'<<"5.EXIT";
cout<<'\n'<<'\n'<<"Enter your choice : ";
cin>>ch;
switch(ch)
{ case 1 : clrscr();
fstream fout;
fout.open("ADDBOOK.DAT", ios::out);
char x = 'y';
while (x == 'y' || x == 'Y')
{ A.enter();
fout.write((char*)& A, sizeof (A));
cout<<'\n'<<"Enter more contacts (Y/N)... ";
cin>>x;
}
fout.close();
break;
case 2 : clrscr();
fstream fin;
fin.open("ADDBOOK.DAT", ios::in | ios::app);
int z = no_of_records();
for(int i=0; i<z; i++)
{ fin.read((char*)& A, sizeof(A));
A.display();
}
fin.close();
getch();
break;
case 3 : clrscr();
A.modify();
break;
case 4 : clrscr();
A.search();
break;
case 5 : clrscr();
cout<<'\n'<<'\t'<<" ******** EXITING... ********";
exit(1);
break;
} }while (ch1!=5); }
void contact :: modify()
{ int l=0,flag=0;
fstream infile,outfile;
char fname1[20];
char lname1[20];
int ch2;
do
{ int i; clrscr();
cout<<"\nMODIFY";
cout<<"\n\n1.RESIDENCIAL ADDRESS";
cout<<"\n\n2.OFFICIAL ADDRESS";
cout<<"\n\n3.RESIDENCTIAL TELEPHONE NUMBER";
cout<<"\n\n4.OFFICIAL TELEPHONE NUMBER";
cout<<"\n\n5.MOBILE NUMBER";
cout<<"\n\n6.FAX NO";
cout<<"\n\n7.EMAIL ID";
cout<<"\n\n8.EXIT";
cout<<"\n\nENTER YOUR CHOICE:";
cin>>ch2;
//switch....
switch(ch2)
{
case 1:
//MODIFY RESIDENCIAL ADDRESS
cout<<"\nENTER FIRST NAME:";gets(fname1);
gets(fname1);
l=strlen(fname1);
for(i=0;i<l;i++)
{ fname1[i]=toupper(fname1[i]); }
cout<<"\nENTER LAST NAME:";gets(lname1);
l=strlen(lname1);
for(i=0;i<l;i++)
{lname[i]=toupper(lname1[i]);}
infile.open("ADDBOOK.DAT", ios::in|ios::beg);
outfile.open("temp.dat",ios::out);
if(!infile)
{
cout<<"\nERROR";
exit(0);
}
while((!infile.eof())&&(flag==0))
{
infile.read((char*)& A, sizeof (A));
if((strcmp(fname,fname1)==0) && (strcmp(lname,lname1)==0))
{
cout<<"\nENTER THE NEW ADDRESS";
gets(r_add);
outfile.write((char*)& A, sizeof (A));
flag=1;
}
else
outfile.write((char*)& A,sizeof (A));
}
infile.close();
outfile.close();
remove("ADDBOOK.DAT");
rename("temp.dat", "ADDBOOK.DAT");
break;
case 2:
//MODIFY OFFICIAL ADDRESS
cout<<"\nENTER FIRST NAME:";gets(fname1);
l=strlen(fname1);
for(i=0;i<l;i++)
{fname1[i]=toupper(fname1[i]);}
cout<<"\nENTER LAST NAME:";gets(lname1);
l=strlen(lname1);
for(i=0;i<l;i++)
{lname1[i]=toupper(lname1[i]);}
infile.open("ADDBOOK.DAT", ios::in|ios::beg);
outfile.open("temp.dat",ios::out);
while(!infile)
{
cout<<"\nERROR";
exit(0);
}
while((!infile.eof())&&(flag==0))
{
infile.read((char*)& A,sizeof (A));
if((strcmp(fname,fname1)==0) && (strcmp(lname,lname1)==0))
{
cout<<"\nENTER THE NEW ADDRESS";
gets(o_add);
outfile.write((char*)& A,sizeof (A));
flag=1;
}
else
outfile.write((char*)& A,sizeof (A));
}
infile.close();
outfile.close();
remove("ADDBOOK.DAT");
rename("temp.dat","ADDBOOK.DAT");
break;
case 3:
//MODIFY RESIDENCTIAL TELEPHONE NUMBER
cout<<"\nENTER FIRST NAME:";gets(fname1);
l=strlen(fname1);
for(i=0;i<l;i++)
{fname1[i]=toupper(fname1[i]);};
cout<<"\nENTER LAST NAME:";gets(lname1);
l=strlen(lname1);
for(i=0;i<l;i++)
{lname1[i]=toupper(lname1[i]);}
infile.open("ADDBOOK.DAT", ios::in|ios::beg);
outfile.open("temp.dat",ios::out);
while(!infile)
{
cout<<"\nERROR";
exit(0);
}
while((!infile.eof())&&(flag==0))
{
infile.read((char*)& A,sizeof (A));
if((strcmp(fname,fname1)==0) && (strcmp(lname,lname1)==0))
{
cout<<"\nENTER THE NEW TELEPHONE NUMBER";
cin>>phone;
outfile.write((char*)& A,sizeof (A));
flag=1;
}
else
outfile.write((char*)& A,sizeof (A));
}
infile.close();
outfile.close();
remove("ADDBOOK.DAT");
rename("temp.dat","ADDBOOK.DAT");
break;
case 4:
//MODIFY OFFICIAL TELEPHONE NUMBER
cout<<"\nENTER FIRST NAME:";gets(fname1);
l=strlen(fname1);
for(i=0;i<l;i++)
{fname1[i]=toupper(fname1[i]);}
cout<<"\nENTER LAST NAME:";gets(lname1);
l=strlen(lname1);
for(i=0;i<l;i++)
{lname[i]=toupper(lname1[i]);}
infile.open("ADDBOOK.DAT",ios::in|ios::beg);
outfile.open("temp.dat",ios::out);
while(!infile)
{
cout<<"\nERROR";
exit(0);
}
while((!infile.eof())&&(flag==0))
{
infile.read((char*)& A,sizeof (A));
if((strcmp(fname,fname1)==0) && (strcmp(lname,lname1)==0))
{
cout<<"\nENTER THE NEW TELEPHONE NUMBER";
cin>>office_ph;
outfile.write((char*)& A,sizeof (A));
flag=1;
}
else
outfile.write((char*)& A,sizeof(A));
}
infile.close();
outfile.close();
remove("ADDBOOK.DAT");
rename("temp.dat","ADDBOOK.DAT");
break;
case 5:
//MODIFY MOBILE NUMBER
cout<<"\nENTER FIRST NAME:";gets(fname1);
l=strlen(fname1);
for(i=0;i<l;i++)
{fname1[i]=toupper(fname1[i]);}
cout<<"\nENTER LAST NAME:";gets(lname1);
l=strlen(lname1);
for(i=0;i<l;i++)
{lname1[i]=toupper(lname1[i]);}
infile.open("ADDBOOK.DAT", ios::in|ios::beg);
outfile.open("temp.dat",ios::out);
while(!infile)
{
cout<<"\nERROR";
exit(0);
}
while((!infile.eof())&&(flag==0))
{
infile.read((char*)& A,sizeof (A));
if((strcmp(fname,fname1)==0) && (strcmp(lname,lname1)==0))
{
cout<<"\nENTER THE NEW TELEPHONE NUMBER";
cin>>mobile;
outfile.write((char*)& A, sizeof (A));
flag=1;
}
else
outfile.write((char*)& A,sizeof (A));
}
infile.close();
outfile.close();
remove("ADDBOOK.DAT");
rename("temp.dat","ADDBOOK.DAT");
break;
case 6:
//MODIFY FAX NUMBER
cout<<"\nENTER FIRST NAME:";gets(fname1);
l=strlen(fname1);
for(i=0;i<l;i++)
{fname1[i]=toupper(fname1[i]);}
cout<<"\nENTER LAST NAME:";gets(lname1);
l=strlen(lname1);
for(i=0;i<l;i++)
{lname1[i]=toupper(lname1[i]);}
infile.open("ADDBOOK.DAT",ios::in|ios::beg);
outfile.open("temp.dat",ios::out);
while(!infile)
{
cout<<"\nERROR";
exit(0);
}
while((!infile.eof())&&(flag==0))
{
infile.read((char*)& A,sizeof (A));
if((strcmp(fname,fname1)==0) && (strcmp(lname,lname1)==0))
{
cout<<"\nENTER THE NEW TELEPHONE NUMBER";
cin>>fax;
outfile.write((char*)& A, sizeof (A));
flag=1;
}
else
outfile.write((char*)& A,sizeof (A));
}
infile.close();
outfile.close();
remove("ADDBOOK.DAT");
rename("temp.dat","ADDBOOK.DAT");
break;
case 7:
//MODIFY THE EMAIL ADDRESS
cout<<"\nENTER FIRST NAME:";gets(fname1);
l=strlen(fname1);
for(i=0;i<l;i++)
{fname1[i]=toupper(fname1[i]);}
cout<<"\nENTER LAST NAME:";gets(lname1);
l=strlen(lname1);
for(i=0;i<l;i++)
{lname1[i]=toupper(lname1[i]);}
infile.open("ADDBOOK.DAT", ios::in|ios::beg);
outfile.open("temp.dat",ios::out);
while(!infile)
{
cout<<"\nERROR";
exit(0);
}
while((!infile.eof())&&(flag==0))
{
infile.read((char*)& A,sizeof (A));
if((strcmp(fname,fname1)==0) && (strcmp(lname,lname1)==0))
{
cout<<"\nENTER THE NEW EMAIL ID:";
gets(mail_ID);
outfile.write((char*)& A,sizeof (A));
flag=1;
}
else
outfile.write((char*)& A,sizeof (A));
}
infile.close();
outfile.close();
remove("ADDBOOK.DAT");
rename("temp.dat","ADDBOOK.DAT");
break;
} } while(ch2!=8);
}
//FUNCTION TO SEARCH FOR A CONTACT
void contact :: search()
{
int l;
ifstream infile;
char fname1[20];
char lname1[20];
cout<<"\nENTER FIRST NAME:";
gets(fname1);
l=strlen(fname1);
for(int i=0;i<l;i++)
{ fname1[i]=toupper(fname1[i]); }
cout<<"\nENTER LAST NAME:";
gets(lname1);
int counter;
l=strlen(lname1);
for(i=0;i<l;i++)
{ lname1[i]=toupper(lname1[i]); }
infile.open("ADDBOOK.DAT",ios::in);
if(!infile)
{
cout<<"\nERROR";
exit(0);
}
infile.seekg(0,ios::beg);
infile.read((char*)& A, sizeof (A));
while (!infile.eof())
{
if((strcmp(fname,fname1)==0) )
{
clrscr();
++counter;
A.display();
getch();
}
infile.read((char*)& A, sizeof (A));
}
infile.close();
cout<<"\nTHE NUMBER OF CONTACTS FOUND="<<counter;
}
int login ()
{
char loginID[8],ch;
char loginID1[]="preeti";
int i=0,k=0;
char a,b[8],c[]="everest";
cout<<"\n\n\n\n\n\n\n\n\n\n";
cout<<"***************************************************************";
cout<<"\n\nEnter LoginID:";
gets(loginID);
cout<<"\n\nEnter password:";
fflush(stdin);
do
{
ch=getch();
if(isalnum(ch))
{
b[i]=ch;
cout<<"*";
i++;
}
else
if(ch=='\r')
b[i]='\0';
else if(ch=='\b')
{
i--;
cout<<"\b\b";
}
}
while(ch!='\r');
b[i]='\0';
fflush(stdin);
cout<<"\n";
cout<<"************************************************************";
cout<<"\n\n\n\n\n\n";
getch();
if((strcmp(b,c)==0)&&(strcmp(loginID1,loginID)==0))
{
cout<<"\n\n\nYou have entered successfully\n\n\n";
getch();
return(1);
}
else
{
k++;
cout<<"\tSorry!!! Wrong ID or Password";
cout<<"\n\n\n";
return(0);
}
}
void main()
{
clrscr();
int val,ch;
a: val=login();
if (val==0)
{
cout<<"WOULD YOU LIKE TO \n";
cout<<"\t1.TRY AGAIN ";
cout<<"\n\t2.EXIT";
cout<<"\n\nENTER YOUR CHOICE : ";
cin>>ch;
if (ch==1)
goto a;
else
exit(0);
}
A.menu();
}