C++ Project on Telephone Directory Management System

Submitted by Editor

Telephone Billing System

/*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
*     TELEPHONE DIRECTORY MANAGEMENT SYSTEM     *
*                                               *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
#include
#include
#include
#include
#include
#include

struct node
{
unsigned long recno;
long int pin;
char name[20];
node *link;
};
node *first,*ptr1,*ptr2,*ptr,*temp;

class person
{
private:unsigned long record_id;
char person_name[20];
char res_address[30];
long int res_pincode;
long int res_phone_no1;
char occu_pation[10];
char company_name[20];
char off_address[20];
long int off_pincode;
long int off_phone_no1;
public:
person()
  {
    record_id=0;
    res_pincode=off_pincode=0;
    res_phone_no1=0;
    off_phone_no1=0;
  }

unsigned long get_rec_no();
void get_data();
void show_data();
void add_object();
void make_index();
void sort_name();
void sort_recno();
void sort_pin();
void show_object();
void sort_print();
void del_object();
void modify_object();
void search_object();
void sort_object();
void reports();
}pers;
unsigned long person::get_rec_no()
{
  int found=0;
  unsigned long rec_no,temp_recno;
  struct node1
  {
    unsigned long recno;
    node1 *link;
    };
 node1 *start,*ptr,*ptr1,*ptr2;
 fstream infile;
 infile.open("phoneno.dat",ios::in);
 infile.seekg(0,ios::end);
 int n=infile.tellg();
 infile.close();
 if(n==0)
      rec_no=1;
 else
 {
  infile.open("phoneno.dat",ios::in);
  start=ptr=new node1;
  infile.seekg(0,ios::beg);
  infile.read((char*)&pers,sizeof(pers));
  while(!infile.eof())
  {
   ptr->recno=record_id;
   ptr->link=new node1;
   ptr=ptr->link;
   infile.read((char*)&pers,sizeof(pers));
   }
   ptr->link=NULL;
   ptr1=start;
   while(ptr1->link!=NULL)
   {
    ptr2=ptr1->link;
    while(ptr2!=NULL)
    {
    if(ptr2->recnorecno)
    {
      temp_recno=ptr2->recno;

      ptr2->recno=ptr1->recno;
      ptr1->recno=temp_recno;
      }
   ptr2=ptr2->link;
   }
   ptr2=ptr1->link;
   ptr1=ptr2;
   }
   ptr1=start;
   while(ptr1!=NULL && found!=1)
   {
    ptr2=ptr1;
    ptr1=ptr1->link;
    if((ptr2->recno)+1!=ptr1->recno)
    {
     rec_no=(ptr2->recno)+1;
     found=1;
     }
    }
    if(found!=1)rec_no=(ptr2->recno)+1;
    ptr=start;
    while(start!=NULL)
    {
     start=start->link;
     delete ptr;
     }
    }
    return rec_no;
    }
  void person::get_data()
  {
    clrscr();
    record_id=pers.get_rec_no();
    gotoxy(5,7);
    cout< <"ENTER THE NAME--------------->";
    gets(person_name);
    gotoxy(5,8);
    cout< <"RESIDENTIAL ADDRESS------------------>";
    gets(res_address);
    gotoxy(5,9);
    cout< <"ENTER RESIDENTIAL PINCODE------------>";
    cin>>res_pincode;
    gotoxy(5,10);
    cout< <"ENTER RESIDENTIAL PHONE NO----------->";
    cin>>res_phone_no1;
    gotoxy(5,11);
    cout< <"ENTER THE OCCUPATION---------------->";
    gets(occu_pation);
    gotoxy(5,12);
    cout< <"ENTER COMPANY'S NAME--------------->";
    gets(company_name);
    gotoxy(5,13);
    cout< <"ENTER COMPANY'S ADDRESS------------>";
    gets(off_address);
    gotoxy(5,14);
    cout< <"ENTER OFFICE PINCODE-------------->";
    cin>>off_pincode;
    gotoxy(5,15);
    cout< <"ENTER OFFICE PHONE NO-------------->";
    cin>>off_phone_no1;
    gotoxy(5,16);
    clrscr();
    }
  void person::show_data()
   {
     clrscr();
     gotoxy(5,2);
     cout< <"RECORD NUMBER----------------------->"< "< "< "< "< "< "< "< "< "< >-------------->";
     cin>>choice;
     }
    }
   void person::del_object()
   {
    fstream infile,outfile;
    unsigned long rec_no;
    clrscr();
    cout< <"ENTER THE RECORD ID.NO.TO BE DELETED--------->";
    cin>>rec_no;
    infile.open("phoneno.dat",ios::in);
    infile.seekg(0);
    outfile.open("tempno.dat",ios::app);
    infile.read((char*)&pers,sizeof(pers));
    while(!infile.eof())
    {
     if(pers.record_id!=rec_no)
     outfile.write((char*)&pers,sizeof(pers));
     outfile.flush();
     infile.read((char*)&pers,sizeof(pers));
     }
   infile.close();
   outfile.close();
   remove("phoneno.dat");
   rename("tempno.dat","phoneno.dat");
   }
   void person::search_object()
    {
     fstream infile;
     int search_choice;
     unsigned long rec_no;
     long int phno;
     char name[20];
     do
     {
     clrscr();
     int counter=0;
     gotoxy(22,7);
     cout< <"    SEARCH MENU    ";
     gotoxy(22,9);
     cout<<"------------------";
     gotoxy(22,11);
     cout<<"RECORD ID NO.           ..1";
     gotoxy(22,12);
     cout<<"NAME                    ..2";
     gotoxy(22,13);
     cout<<"PHONE NO.               ..3";
     gotoxy(22,14);
     cout<<"EXIT SEARCH MENU         ..4";
     gotoxy(1,20);
     cout<<"ENTER THE FIELD CHOICE ACCORDING TO WHICH A RECORD";
     cout<<"IS TO BE SEARCHED--------->";
     cin>>search_choice;
     switch(search_choice)
     {
     case 1:clrscr();
	    cout< <"\n ENTER THE RECORD ID.NO. TO BE SEARCHED----->";
	    cin>>rec_no;
	    infile.open("phoneno.dat",ios::in);
	    infile.seekg(0,ios::beg);
	    infile.read((char*)&pers,sizeof(pers));
	    while(!infile.eof())
	    {
	     if(pers.record_id==rec_no)
	     {
	      counter++;
	      pers.show_data();
	      }
	   infile.read((char*)&pers,sizeof(pers));
	  }
	infile.close();
	gotoxy(20,24);
	cout< <"RECORDS FOUND="<";
	  gets(name);
	  infile.open("phoneno.dat",ios::in);
	  infile.seekg(0,ios::beg);
	  infile.read((char*)&pers,sizeof(pers));
	  while(!infile.eof())
	  {
	   if(strcmpi(pers.person_name,name)==0)
	   {
	    counter++;
	    pers.show_data();
	   }
	   infile.read((char*)&pers,sizeof(pers));
	  }
	infile.close();
	gotoxy(20,24);
	cout< <"RECORDS FOUND="<";
	cin>>phno;
	infile.open("phoneno.dat",ios::in);
	infile.seekg(0,ios::beg);
	infile.read((char*)&pers,sizeof(pers));
	while(!infile.eof())
	{
	 if(pers.res_phone_no1==phno||pers.off_phone_no1==phno)
	 {
	  counter++;
	  pers.show_data();
	 }
	 infile.read((char*)&pers,sizeof(pers));
	}
	infile.close();
	gotoxy(20,24);
	cout< <"RECORDS FOUND="<";
    cin>>modify_choice;
    if(modify_choice!=3)
    {
     clrscr();
     gotoxy(10,15);
     cout< <"ENTER THE RECORD NO. OF THE PERSON---->";
     cin>>code;
     file.open("phoneno.dat",ios::in|ios::out);
     file.seekg(0,ios::beg);
     file.read((char*)&pers,sizeof(pers));
     int n=file.tellg();
     while(!file.eof())
     {
      if(pers.record_id==code)
      {
      switch(modify_choice)
      {
      case 1:clrscr();
	  cout< <"***** The Details of "<";
	  gets(pers.res_address);
	  cout< <"The old Pin code is :-"<";
	  cin>>pers.res_pincode;
	  cout< <"The old Phone No.is :-"<";
	  cin>>pers.res_phone_no1;
	  file.seekg(n-sizeof(pers));
	  file.write((char*)&pers,sizeof(pers));
	  file.flush();
	  break;
      case 2:clrscr();
	  cout< <"\nENTER THE OCCUPATION----------->";
	  gets(pers.occu_pation);
	  cout< <"\nENTER NEW COMPANY'S NAME------->";
	  gets(pers.company_name);
	  cout< <"\nENTER NEW OFFICE ADDRESS-------->";
	  gets(pers.off_address);
	  cout< <"\nENTER NEW OFFICE PIN CODE------>";
	  cin>>pers.off_pincode;
	  cout< <"\nENTER NEW OFFICE PHONE NO------->";
	  cin>>pers.off_phone_no1;
	  file.seekg(n-sizeof(pers));
	  file.write((char*)&pers,sizeof(pers));
	  file.flush();
	  break;
	    }
	   }
	   file.read((char*)&pers,sizeof(pers));
	   n=file.tellg();
	   }
	   file.close();
	   }
	  }
    while(modify_choice!=3);
    clrscr();
    gotoxy(22,10);
    cout< <"YOU ENDED MODIFY INFORTION SESSION";
    gotoxy(30,13);
    cout<<"THANK YOU";
    delay(700);
    }
  void ex_change()
  {
  temp=new node;
  temp->link=NULL;
  temp->recno=ptr2->recno;
  temp->pin=ptr2->pin;
  strcpy(temp->name,ptr2->name);
  ptr2->recno=ptr1->recno;
  ptr2->pin=ptr1->pin;
  strcpy(ptr2->name,ptr1->name);
  ptr1->recno=temp->recno;
  ptr1->pin=temp->pin;
  strcpy(ptr1->name,temp->name);
  delete temp;
  }
  void person::make_index()
  {
  fstream infile;
  first=new node;
  ptr=first;
  infile.open("phoneno.dat",ios::in);
  infile.seekg(0,ios::beg);
  infile.read((char*)&pers,sizeof(pers));
  while(!infile.eof())
  {
   ptr->recno=record_id;
   ptr->pin=res_pincode;
   strcpy(ptr->name,pers.person_name);
   ptr->link=new node;
   ptr=ptr->link;
   infile.read((char*)&pers,sizeof(pers));
  }
  ptr->link=NULL;
  infile.close();
  }
  void person::sort_name()
  {
   pers.make_index();
   ptr1=first;
   while(ptr1->link!=NULL)
   {
    ptr2=ptr1->link;
    while(ptr2->link!=NULL)
    {
     if(strcmpi(ptr2->name,ptr1->name)<0)
     ex_change();
     ptr2=ptr2->link;
    }
    ptr2=ptr1->link;
    ptr1=ptr2;
    }
   }
   void person::sort_recno()
   {
    pers.make_index();
    ptr1=first;
    while(ptr1->link!=NULL)
    {
     ptr2=ptr->link;
     while(ptr2!=NULL)
     {
       if(ptr2->recnorecno)
       ex_change();
       ptr2=ptr2->link;
      }
      ptr2=ptr1->link;
      ptr1=ptr2;
      }
   }
   void person::sort_pin()
   {
    pers.make_index();
    ptr1=first;
    while(ptr1->link!=NULL)
    {
     ptr2=ptr1->link;
     while(ptr2!=NULL)
     {
      if(ptr2->pinpin)
      ex_change();
      ptr2=ptr2->link;
     }
     ptr2=ptr1->link;
     ptr1=ptr2;
    }
   }
   void person::sort_print()
   {
   fstream infile;
   ptr=first;
   while(ptr!=NULL)
   {
    infile.open("phoneno.dat",ios::in);
    infile.seekg(0,ios::beg);
    infile.read((char*)&pers,sizeof(pers));
    while(!infile.eof())
    {
     if(ptr->recno==pers.record_id)
      {
      pers.show_data();
      infile.seekg(0,ios::end);
      }
    infile.read((char*)&pers,sizeof(pers));
    }
    infile.close();
    ptr=ptr->link;
    }
   }
   void del_index()
   {
   while(first!=NULL)
   {
    ptr=first;
    first=first->link;
    delete ptr;
    }
   }
   void person::sort_object()
   {
    int sort_choice;
    do
    {
    clrscr();
    gotoxy(22,7);
    cout< <"    SORT MENU    ";
    gotoxy(22,8);
    cout<<"-------------------";
    gotoxy(22,10);
    cout<<"SORTED RECORDS NOS.   ..1";
    gotoxy(22,11);
    cout<<"SORTED NAMES          ..2";
    gotoxy(22,12);
    cout<<"SORTED PINCODES NOS.  ..3";
    gotoxy(22,13);
    cout<<"EXIT SORT MENU        ..4";
    gotoxy(22,20);
    cout<<"ENTER YOUR CHOICE NO.----->";
    cin>>sort_choice;
    switch(sort_choice)
    {
    case 1:clrscr();
	  pers.sort_recno();
	  pers.sort_print();
	  del_index();
	  delay(200);
	  break;
    case 2:clrscr();
	  pers.sort_name();
	  pers.sort_print();
	  del_index();
	  delay(200);
	  break;
    case 3:clrscr();
	  pers.sort_pin();
	  pers.sort_print();
	  del_index();
	  delay(200);
	  break;
    case 4:clrscr();
	  gotoxy(22,10);
	  cout< <"YOU ENDED THE SORTED SESSION";
	  gotoxy(27,13);
	  cout<<"THANK YOU!";
	  delay(700);
	  break;
     }
     }
     while(sort_choice!=4);
     }
   void person::reports()
   {
   fstream infile;
   int report_choice;
   do
   {
    clrscr();
    gotoxy(22,7);
    cout<<"   REPORT MENU    ";
    gotoxy(22,8);
    cout<<"------------------";
    gotoxy(5,10);
    cout<<"SORTED LIST OF NAMES WITH RESIDENCE AND OFFICE PHONE NOS. ..1";
    gotoxy(5,11);
    cout<<"LIST OF NAMES WITH THIER OFFICE DETAILS.   ..2";
    gotoxy(5,12);
    cout<<"LIST OF NAMES WITH THEIR RECORD NOS.AND RESIDENTIAL ADDRESS ..3";
    gotoxy(5,13);
    cout<<"EXIT REPORT SESSION     ..4";
    gotoxy(5,14);
    cout<<"ENTER YOUR CHOICE NO.------>";
    cin>>report_choice;
    switch(report_choice)
	{
	case 1:clrscr();
	       {
               cout< <"\n NAME    RESIDENCE PHONE NO.   OFFICE PHONE NO.";
               cout<<"\n-----------------------------------------------";
	       pers.sort_name();
	       ptr=first;
	       while(ptr!=NULL)
			{
			infile.open("phoneno.dat",ios::in);
			infile.seekg(0,ios::beg);
			infile.read((char*)&pers,sizeof(pers));
			while(!infile.eof())
			    {
			    if(ptr->recno==pers.record_id)
			      {
			      cout< <"\n";
			      cout<link;
			}
	       del_index();
	       gotoxy(20,20);
	       cout< <"PRESS ANY KEY TO CONTINUE";
	       getch();
	       break;
	       }
       case 2:clrscr();
       infile.open("phoneno.dat",ios::in);
       infile.seekg(0,ios::beg);
       infile.read((char*)&pers,sizeof(pers));
       while(!infile.eof())
       {
	gotoxy(10,5);
	cout<<"NAME------------->"< "< "< "< ";
	 cin>>main_choice;

	 switch(main_choice)
	 {
	  case 1:pers.add_object();
		break;
	  case 2:pers.del_object();
		break;
	  case 3:pers.modify_object();
		break;
	  case 4:pers.search_object();
		break;
	  case 5:pers.sort_object();
	       break;
	  case 6:pers.reports();

		break;
	  case 7:clrscr();
	       gotoxy(22,10);
	  cout< <"YOU HAVE ENDED THE SESSION";
	  gotoxy(27,13);
	  cout<<"THANK YOU";
	  delay(1000);
	  break;
	  }
	 }
	 while(main_choice!=7);
	 }


Add Your Comment - Guidelines
You can express your opinion or reaction in the form below!

100 characters required

0 Comments:

Be the first one to comment!

You may also want to see:
QUOTE OF THE DAY
No one can make you feel inferior without your consent. - Eleanor Roosevelt, This is My Story
April 29th, 2024 - Monday
background

Sign in to continue