// @topic T061120 std::map and auto keyword
// @brief phone book demo app

#include <iostream>
#include <cstdlib>
#include <string>
#include <map>

void phone_book_content_display(std::map< std::string, int > const& phone_map);

int main()
{
    std::map< std::string, int > phone_map;

    for (;;) {
        std::string name;
        std::cout << "\nEnter name or x to continue: ";
        std::cin >> name;

        if ( name == "x" ) break;

        int phone;
        std::cout << "\nPhone # (no spaces or punctuation): ";
        std::cin >> phone;

        // store name and phone in the map:
        phone_map[ name ] = phone;
    }//for

    phone_book_content_display( phone_map );

    for (;;) {
        std::string name;
        std::cout << "\nEnter a name to lookup or x to exit: ";
        std::cin >> name;

        if ( name == "x" ) break;

        if ( phone_map.count( name ) ) {
            std::cout << "the phone is: " << phone_map[ name ] << "\n";
            std::cout << "would you like to remove this entry?\n";
            char yn;
            std::cin >> yn;
            if ( yn == 'y' || yn == 'Y' ) {
                phone_map.erase( name );
                phone_book_content_display( phone_map );
            }
        } else {
            std::cout << "no such entry exists\n";
        }
    }//for

    system("pause");
    return 0;
}

void phone_book_content_display(std::map< std::string, int > const& phone_map)
{
    std::cout << "\n---------------------------------------\n";
    for ( auto it = phone_map.begin(); it != phone_map.end(); ++it ) {
        std::cout << it->first << ": " << it->second << "\n";
    }
    std::cout << "\n---------------------------------------\n";
}