Address Book program in C++

2
3241
Overloading Subtraction Operator in C++
Area of Geometric Shapes in C++

In C++ we can write an address book program that can store a person’s name and other related data, In this given source code, we are not using any file handling or database to save the data of our address book, we are keeping in just a simple Linked List just for temporary use. You can implement this address book for a database or for a file handling system easily, you just have to change the main function. The Source code is given Below:

    //address book program in c++ using linked lists
    #include <iostream>
    #include<string>
    #include<windows.h>
    using namespace std;
    void gotoxy(int x, int y)    //move the cursor to x y coordinate
    {
        HANDLE hConsoleOutput;
        COORD Cursor = {x,y};
        hConsoleOutput = GetStdHandle (STD_OUTPUT_HANDLE);
        SetConsoleCursorPosition(hConsoleOutput, Cursor);
    }
    class Node 
    {    public:
        string name,email,address,off_address ;
        int phone_no,cell_no;
        Node *next;
    };
    char y;
    void Link_List_Input(Node *&head, Node*&tail) {
     
        Node *current = new Node;
        cout << " Enter following contents : ";
        cout<<"NAME : ";
        cin >> current->name;
        cout<<"PHONE NUMBER : ";
        cin >> current->phone_no;
        cout<<"CELL NUMBER : ";
        cin >> current->cell_no;
        cout<<"EMAIL : ";
        cin >> current->email;
        cout<<"ADDRESS : ";
        cin >> current->address;
        cout<<"OFFICE ADDRESS : ";
        cin >> current->off_address;
     
        if (head == NULL >> tail == NULL) 
                {
            head = current; 
            tail = current; tail->next=NULL;
        } else {
            current->next = head;head = current;
        }
    }
     
    void Print_Link_List(Node *&head, Node*&tail)
    {
        if (head == NULL >> tail == NULL) 
        {
            cout << "n List is empty";
            return;
        }
     
        Node *current = head; 
        
        int count = 0;
    do 
    { 
        cout << "n Node Number = " << ++count << " Has Content : "
        <<current->name<<endl
        <<current->phone_no<<endl
        <<current->cell_no<<endl
        <<current->email<<endl
        <<current->address<<endl
        <<current->off_address<<endl;
     
        current = current->next; 
    }
    while (current != 0); }
     
    void DeleteAll(Node *&head,Node *&tail)
    {
        system("cls");
        gotoxy(30,10);
        cout<<"Erasing Complete Data :";
     
           for(int i=0;i<16;i++)
      {     
        gotoxy(8+i,14);
        cout<<"ntttt ________________";
        gotoxy(32,16);
        cout<<char(179);
        gotoxy(33+i,16);
        cout<<char(178);
        gotoxy(23+i,16);
        cout<<"ntttt ================";
        gotoxy(49,16);
        cout<<char(179);
        Sleep(100);
        }
     
        system("cls");
        cout<<"nnnnnttttNO DATA LEFT :";
        Sleep(1000);
        system("cls");
        cout<<"nnnnnntttReturning to Menu ";
        for(int i=0;i<7;i++)
        {
            Sleep(600);
            cout<<".";}
            system("cls");
            for (int j=0;head!=NULL;j++)
            {
                Node *ptr=head;
                head=head->next;
                delete ptr ;
            }
            return ;
    }
    void Search_In_List(Node *&head,Node *&tail)
    {
        Node *current = head;
        string Name;
        cout<<"Enter the string here ";
        cin>>Name;
        while (current!=NULL)
        {
            if (current->name.compare(0,Name.length(),Name)==0)
            {    
                cout<<"Matching results :n";
                cout<<"NAME: "<<current->name<<endl<<"PHONE NUMBER : "<<current->phone_no<<endl<<"CELL NUMBER : "<<current->cell_no<<endl
                    <<"EMAIL: "<<current->email<<endl<<"ADRESS : "<<current->address<<endl<<"Office Adress  :"<<current->off_address<<endl;
                current=current->next;
            }
            else
            {
                cout<<"Moving Next :";
                current=current->next;
            }
        }
    }
     
    int Delete_Node_Contents(Node*&head)
    {
        string name;
        cout<<"Enter the name for deleting : ";
        cin>>name;
        Node *current,*previous;
        current=head;
        if (head==NULL)
        {
            cout<<"list empty  not possible"<<endl;
        }
        else
        {
        if(head->name.compare(0,name.length(),name)==0)  //deleting head
            {
                Node *delhead=head;                                
                cout<<"Node Contains :n"<<head->name<<endl<<head->phone_no<<endl<<head->cell_no<<endl<<endl<<head->email<<endl<<head->address<<endl<<endl<<head->off_address;
                cout<<"Press Y to delete n OR Press any other key for menue ";
                cin>>y;
                if (char(98)==y||char(121)==y)
                {
                head = head->next;delete delhead;
                cout<<"required data has been deleted";return 0;
                }
                else {cout<<"Next attempt :";
                return Delete_Node_Contents(head->next);}
                
            }
            else
            {
                while (head->name.compare(0,name.length(),name)<=0 || current->next!=NULL)
                { 
                    if(current->next==NULL)
                    {    
                        cout<<"not found";
                        return -1;
                    }
                    else
                    {
                        previous=current;
                        current=current->next;
                    }
                }
                previous->next=current->next;
                delete current;
                cout<<"required data has been deleted"<<endl;}                
         }
    return 0;
    }
     
    int main() 
    {
        Node *head, *tail;
        head = NULL;
        tail = NULL; 
        int choice = 0;
        while (1) { Sleep(2000);system("cls");
            cout << "n ***************** MAIN MENU *****************" << endl
                << " Press 1. Enter new entry " << endl
                << " Press 2. view all entry " << endl
                << " Press 3. Delete an entry " << endl
                << " Press 4. Search the entry " << endl
                << " Press 5. delete all entries " << endl
                << " Press 6: To Exit" 
                << "n --------------------------------------------- " << endl
                << "Your Choice :";
            cin >> choice;
        
    switch (choice) 
    {
            case 1:
                Link_List_Input(head, tail);
                cout<<"nnttSaving Data ";
                {Sleep(1000);
                cout<<" .";}
                break;
            case 2:
                Print_Link_List(head,tail);
            break;
            case 3:
                Delete_Node_Contents(head);
            break;
            case 4:        
            Search_In_List(head,tail);
            break;
            case 5:
            DeleteAll(head,tail);
            break;
            case 6:
            cout << " n Exiting .... " << endl;
            return 0;
            default:
            cout << "n Invalid Option, Please use any of the listed options"
            << endl;
            }
        }
    }

In the above code the functions with their understandable names are given and mentioned in the comments, that which task is done by which function, this address book program will store the data upto when the program Is running and will execute its functions as ordered by the user, the interface and authority to the user is given in the main() function of the program.

Overloading Subtraction Operator in C++
Area of Geometric Shapes in C++

2 COMMENTS

Leave a Reply