Open In App

Menu-Driven program for Phone Directory

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Problem Statement: Write a menu-driven program for using switch-case with following features:

  • Store Contact numbers of people
  • Search for the Contact numbers using their names
  • Search for the Contact numbers using their number
  • Delete a Contact number
  • Update a Contact number

Examples:

 

Approach: The idea is to use switch case for switching the case for menu-driven program for the phonebook directory and store the contact number in the hash-map and search the contact in the hash-map in O(1) time.

Below is the implementation of the above approach:

C++14




//C++14 implementation of menu driven
//Phone Book Directory
 
#include <iostream>
#include <string>
#include <map>
 
using namespace std;
 
void GFG();
// Global variable for phone book directory
map<string, string> phoneBook;
 
// List of Inputs
string inputList[] = {"1", "cool 123456789", "y", "2", "cool", "n"};
int index = -1;
 
// Function to provide sample inputs
string getInput() {
    index++;
    return inputList[index];
}
 
// Function to delete a contact
void deleteContact() {
    string name = getInput();
     
      cout<<"\nEnter the contact name to be deleted:\n";
      cout<<name<<endl;
    if (phoneBook.count(name) > 0) {
        phoneBook.erase(name);
        cout << "Contact Deleted!" << endl;
    }
    else {
        cout << "Contact not found!" << endl;
    }
     
      cout<<"Do you want to perform more operations? (y / n)\n";
    char choice = getInput()[0];
    cout<<choice<<endl;
    if (choice == 'y' || choice == 'Y') {
        GFG();
    }
}
 
// Function to update a contact number
void updateContact() {
      cout<<"\nEnter the contact name to be updated:\n";
    string name = getInput();
 
    if (phoneBook.count(name) > 0) {
          cout<<"\nEnter the new contact number:";
        string phone = getInput();
        phoneBook[name] = phone;
        cout << "Contact updated!" << endl;
    }
    else {
        cout << "Contact not found!" << endl;
    }
     
      cout<<"Do you want to perform more operations? (y / n)\n";
    char choice = getInput()[0];
    cout<<choice<<endl;
    if (choice == 'y' || choice == 'Y') {
        GFG();
    }
}
 
// Function to search a contact
void searchContact() {
      cout<<"\nEnter the name to be searched:\n";
    string name = getInput();
    cout<<name<<endl;
    if (phoneBook.count(name) > 0) {
        cout << "Contact Found! \n" << name << " " << phoneBook[name] << endl;
    }
    else {
        cout << "Contact not found!" << endl;
    }
     
      cout<<"Do you want to perform more operations? (y / n)\n";
    char choice = getInput()[0];
    cout<<choice<<endl;
    if (choice == 'y' || choice == 'Y') {
        GFG();
    }
}
 
// Function to store a contact
void storeContact() {
      cout<<"\nEnter the name and phone number separated by space - \n";
    string namePhone = getInput();
      cout<<namePhone<<endl;
    int spacePos = namePhone.find(' ');
    string name = namePhone.substr(0, spacePos);
    string phone = namePhone.substr(spacePos + 1);
 
    if (phoneBook.count(name) > 0) {
        cout << "Contact Already exists!" << endl;
    }
    else {
        phoneBook[name] = phone;
        cout << "Contact Stored!" << endl;
    }
     
      cout<<"\nDo you want to perform more operations? (y / n)\n";
    char choice = getInput()[0];
    cout<<choice<<endl;
    if (choice == 'y' || choice == 'Y') {
        GFG();
    }
}
 
// Main Function for Menu-Driven
void GFG() {
    cout << "Please choose any choice from below -" << endl;
    cout << "Store Contact number (1)" << endl;
    cout << "Search Contact number (2)" << endl;
    cout << "Update Contact number (3)" << endl;
    cout << "Delete Contact number (4)" << endl;
 
    int choice = stoi(getInput());
    cout<<choice<<endl;
   
    switch (choice) {
        case 1:
            storeContact();
            break;
        case 2:
            searchContact();
            break;
        case 3:
            updateContact();
            break;
        case 4:
            deleteContact();
            break;
        default:
            cout << "Invalid choice!" << endl;
    }
}
 
int main() {
    cout << "----------------------Welcome to GeeksforGeeks Phonebook----------------------" << endl;
    GFG();
    return 0;
}


Java




//Java implementation of menu driven
//Phone Book Directory
import java.util.*;
 
public class PhoneBook {
    public static HashMap<String, Integer> contact = new HashMap<String, Integer>();
 
    //List of Inputs
    public static List<String> inputLis = Arrays.asList("1", "cool 123456789",
            "y", "2", "cool", "n");
    public static int indi = -1;
 
    // Function to provide sample inputs
    // Remove this function to run on
    // Custom Inputs
    public static String input() {
        indi += 1;
        System.out.println(inputLis.get(indi));
        return inputLis.get(indi);
    }
 
    // Function to delete a contact
    public static void delete() {
        System.out.println("Enter the contact"
                + " name to be deleted");
 
        String name = input().strip();
 
        if (contact.containsKey(name)) {
            contact.remove(name);
            System.out.println("Contact Deleted !\n");
        } else {
            System.out.println("Contact not found !\n");
        }
 
        System.out.println("Do you want to perform more"
                + " operations? (y / n)");
 
        String choice = input().strip();
        if (choice.equals("y")) {
            main();
        }
    }
 
    // Function to update a contact number
    public static void update() {
        System.out.println("Enter the contact name"
                + " to be updated - ");
 
        String name = input().strip();
 
        if (contact.containsKey(name)) {
            System.out.println("Enter the new"
                    + " contact number - ");
            int phone = Integer.parseInt(input());
 
            contact.put(name, phone);
 
            System.out.println("Contact updated\n");
        } else {
            System.out.println("Contact not found !\n");
        }
 
        System.out.println("Do you want to perform "
                + "more operations? (y / n)");
 
        String choice = input().strip();
        if (choice.equals("y")) {
            main();
        }
    }
 
    // Function to search a contact
    public static void search() {
        System.out.println("Enter the name to be searched - ");
 
        String name = input().strip();
 
        if (contact.containsKey(name)) {
            System.out.println("Contact Found !");
            System.out.println(name + " " + contact.get(name));
        } else {
            System.out.println("Contact not found !\n");
        }
 
        System.out.println("Do you want to perform more"
                + " operations? (y / n)");
 
        String choice = input().strip();
        if (choice.equals("y")) {
            main();
        }
    }
 
    // Function to store a contact
    public static void store() {
        System.out.println("\n\nEnter the name"
                + " and phone number" +
                " separated by space - ");
 
        String[] namePhone = input().strip()
                .split(" ");
        String name = namePhone[0];
        int phone = Integer.parseInt(namePhone[1]);
 
        if (contact.containsKey(name)) {
            System.out.println("Contact Already exists !\n");
        } else {
            contact.put(name, phone);
            System.out.println("Contact Stored !");
        }
 
        System.out.println("Do you want to perform more"
                + " operations? (y / n)");
 
        String choice = input().strip();
        if (choice.equals("y")) {
            main();
        }
    }
 
    // Main Function for Menu-Driven
    public static void main() {
        System.out.println("Please choose any choice"
                + " from below -\n\n\n");
        System.out.println("Store Contact number (1)");
        System.out.println("Search Contact number (2)");
        System.out.println("Update Contact number (3)");
        System.out.println("Delete Contact number (4)");
 
        int choice = Integer.parseInt(input());
        switch (choice) {
            case 1:
                store();
                break;
            case 2:
                search();
                break;
            case 3:
                update();
                break;
            case 4:
                delete();
                break;
            default:
                break;
        }
    }
 
    public static void main(String[] args) {
        System.out.println("----------------------" +
                "Welcome to GeeksforGeeks Phonebook" +
                "----------------------");
 
        main();
    }
}


Python3




# Python implementation of menu driven
# Phone Book Directory
 
contact = {}
 
# List of Inputs
inputLis = ["1", "cool 123456789",
            "y", "2", "cool", "n"]
indi = -1
 
 
# Function to provide sample inputs
# Remove this function to run on
# Custom Inputs
def input():
    global indi
    indi += 1
    print(inputLis[indi])
    return inputLis[indi]
 
# Function to delete a contact
def delete():
    global contact
    print("Enter the contact"\
        " name to be deleted")
 
    name = input().strip()
 
    if name in contact:
        del(contact[name])
        print("Contact Deleted !\n")
    else:
        print("Contact not found !\n")
 
    print("Do you want to perform more"\
        " operations? (y / n)")
 
    choice = input().strip()
    if choice == "y":
        main()
 
# Function to update a contact number
def update():
    global contact
    print("Enter the contact name"\
        " to be updated - ")
 
    name = input().strip()
 
    if name in contact:
        print("Enter the new"\
            " contact number - ")
        phone = int(input())
 
        contact[name] = phone
 
        print("Contact updated\n")
    else:
        print("Contact not found !\n")
 
    print("Do you want to perform "\
        "more operations? (y / n)")
 
    choice = input().strip()
    if choice == "y":
        main()
 
# Function to search a contact
def search():
    global contact
    print("Enter the name to be searched - ")
 
    name = input().strip()
 
    if name in contact:
        print("Contact Found !")
        print(name, contact[name])
    else:
        print("Contact not found !\n")
 
 
    print("Do you want to perform more"\
        " operations? (y / n)")
 
    choice = input().strip()
    if choice == "y":
        main()
 
# Function to store a contact
def store():
    print("\n\nEnter the name"\
        " and phone number"+\
        " separated by space - ")
 
    name, phone = map(str, \
                    input().strip()\
                            .split(" "))
 
    global contact
    if name in contact:
        print("Contact Already exists !\n")
    else:
        contact[name] = phone
        print("Contact Stored !")
 
    print("Do you want to perform more"\
        " operations? (y / n)")
 
    choice = input().strip()
    if choice == "y":
        main()
 
# Main Function for Menu-Driven
def main():
    print("Please choose any choice"\
        " from below -\n\n\n")
    print("Store Contact number (1)")
    print("Search Contact number (2)")
    print("Update Contact number (3)")
    print("Delete Contact number (4)")
 
    choice = int(input())
 
    choice_dict = {
        1: store,
        2: search,
        3: update,
        4: delete
    }
 
    choice_dict[choice]()
 
 
if __name__ == "__main__":
    print("----------------------"+\
        "Welcome to GeeksforGeeks Phonebook"+\
        "----------------------")
 
main()


C#




//C# implementation of menu driven
//Phone Book Directory
using System;
using System.Collections.Generic;
 
public class PhoneBook
{
    public static Dictionary<string, int> contact = new Dictionary<string, int>();
 
    //List of Inputs
    public static List<string> inputLis = new List<string>(){"1", "cool 123456789",
            "y", "2", "cool", "n"};
    public static int indi = -1;
 
    // Function to provide sample inputs
    // Remove this function to run on
    // Custom Inputs
    public static string input()
    {
        indi += 1;
        Console.WriteLine(inputLis[indi]);
        return inputLis[indi];
    }
 
    // Function to delete a contact
    public static void delete()
    {
        Console.WriteLine("Enter the contact"
                + " name to be deleted");
 
        string name = input().Trim();
 
        if (contact.ContainsKey(name))
        {
            contact.Remove(name);
            Console.WriteLine("Contact Deleted !\n");
        }
        else
        {
            Console.WriteLine("Contact not found !\n");
        }
 
        Console.WriteLine("Do you want to perform more"
                + " operations? (y / n)");
 
        string choice = input().Trim();
        if (choice.Equals("y"))
        {
            main();
        }
    }
 
    // Function to update a contact number
    public static void update()
    {
        Console.WriteLine("Enter the contact name"
                + " to be updated - ");
 
        string name = input().Trim();
 
        if (contact.ContainsKey(name))
        {
            Console.WriteLine("Enter the new"
                    + " contact number - ");
            int phone = Int32.Parse(input());
 
            contact[name] = phone;
 
            Console.WriteLine("Contact updated\n");
        }
        else
        {
            Console.WriteLine("Contact not found !\n");
        }
 
        Console.WriteLine("Do you want to perform "
                + "more operations? (y / n)");
 
        string choice = input().Trim();
        if (choice.Equals("y"))
        {
            main();
        }
    }
 
    // Function to search a contact
    public static void search()
    {
        Console.WriteLine("Enter the name to be searched - ");
 
        string name = input().Trim();
 
        if (contact.ContainsKey(name))
        {
            Console.WriteLine("Contact Found !");
            Console.WriteLine(name + " " + contact[name]);
        }
        else
        {
            Console.WriteLine("Contact not found !\n");
        }
 
        Console.WriteLine("Do you want to perform more"
                + " operations? (y / n)");
 
        string choice = input().Trim();
        if (choice.Equals("y"))
        {
            main();
        }
    }
 
    // Function to store a contact
    public static void store()
    {
        Console.WriteLine("\n\nEnter the name"
                + " and phone number" +
                " separated by space - ");
 
        string[] namePhone = input().Trim().Split(" ");
        string name = namePhone[0];
        int phone = Int32.Parse(namePhone[1]);
 
        if (contact.ContainsKey(name))
        {
            Console.WriteLine("Contact Already exists !\n");
        }
        else
        {
            contact.Add(name, phone);
            Console.WriteLine("Contact Stored !");
        }
 
        Console.WriteLine("Do you want to perform more"
                + " operations? (y / n)");
 
        string choice = input().Trim();
        if (choice.Equals("y"))
        {
            main();
        }
    }
 
    // Main Function for Menu-Driven
    public static void main()
    {
        Console.WriteLine("Please choose any choice"
                + " from below -\n\n\n");
        Console.WriteLine("Store Contact number (1)");
        Console.WriteLine("Search Contact number (2)");
        Console.WriteLine("Update Contact number (3)");
        Console.WriteLine("Delete Contact number (4)");
 
        int choice = Int32.Parse(input());
        switch (choice)
        {
            case 1:
                store();
                break;
            case 2:
                search();
                break;
            case 3:
                update();
                break;
            case 4:
                delete();
                break;
            default:
                break;
        }
    }
 
    public static void Main(string[] args)
    {
        Console.WriteLine("----------------------" +
                "Welcome to GeeksforGeeks Phonebook" +
                "----------------------");
 
        main();
    }
}


Output:



Last Updated : 23 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads