⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex10_16.cpp

📁 This rar contains code from every chapter of Wrox.Ivor.Hortons.Beginning.Visual.C.Plus.Plus.2008.Mar
💻 CPP
字号:
// Ex10_16.cpp
// Storing phone numbers in a map
#include "Person.h"
#include <cliext/map>

using namespace System;
using namespace cliext;

// Read a person from standard input
Person^ getPerson()
{
  String^ first;
  String^ second;
  Console::Write(L"Enter a first name: ") ;
  first = Console::ReadLine();
  Console::Write(L"Enter a second name: ") ;
  second = Console::ReadLine();
  return gcnew Person(first->Trim(), second->Trim());
}

// Add a new entry to a phone book
void addEntry(map<Person^, String^>^ book)
{
  map<Person^, String^>::value_type entry;              // Stores a phone book entry
  String^ number;
  Person^ person = getPerson();

  Console::Write(L"Enter the phone number for {0}: ", person);
  number = Console::ReadLine()->Trim();

  entry = book->make_value(person, number);
  map<Person^,String^>::pair_iter_bool pr = book->insert(entry);
    if(pr.second)
      Console::WriteLine(L"Entry successful.");
    else
      Console::WriteLine(L"Entry exists for {0}. The number is {1}",
                                      person, pr.first->second);
}

// List the contents of a phone book
void listEntries(map<Person^, String^>^ book)
{
  if(book->empty())
  {
    Console::WriteLine(L"The phone book is empty.");
    return;
  }
  map<Person^, String^>::iterator iter;
  for(iter = book->begin() ; iter != book->end() ; iter++)
    Console::WriteLine(L"{0, -30}{1,-12}",
                    iter->first, iter->second); 
}

// Retrieve an entry from a phone book
void getEntry(map<Person^, String^>^ book)
{
  Person^ person = getPerson();
  map<Person^, String^>::const_iterator iter = book->find(person);
  if(iter == book->end())
    Console::WriteLine(L"No entry found for {0}", person);
  else
    Console::WriteLine(L"The number for {0} is {1}",
                                          person, iter->second);
}

// Delete an entry from a phone book
void deleteEntry(map<Person^, String^>^ book)
{
  Person^ person = getPerson();
  map<Person^, String^>::iterator iter = book->find(person);
  if(iter == book->end())
    Console::WriteLine(L"No entry found for {0}", person);
  else
  {
    book->erase(iter);
    Console::WriteLine(L"{0} erased.", person);
  }
}

int main(array<System::String ^> ^args)
{
  map<Person^, String^>^ phonebook = gcnew map<Person^, String^>();
  String^ answer;

  while(true)
  {
    Console::Write(L"Do you want to enter a phone book entry(Y or N): ") ;
    answer = Console::ReadLine()->Trim();
    if(Char::ToUpper(answer[0]) == L'N')
      break;
    addEntry(phonebook);
  }

  // Query the phonebook
  while(true)
  {
    Console::WriteLine(L"\nChoose from the following options:");
    Console::WriteLine(L"A  Add an entry   D Delete an entry   G  Get an entry");
    Console::WriteLine(L"L  List entries   Q  Quit"); 
    answer = Console::ReadLine()->Trim();
    
    switch(Char::ToUpper(answer[0]))
    {
      case L'A':
        addEntry(phonebook);
        break;
      case L'G':
        getEntry(phonebook);
        break;
      case L'D':
        deleteEntry(phonebook);
        break;
      case L'L':
        listEntries(phonebook);
        break;
      case L'Q':
        return 0;
      default:
        Console::WriteLine(L"Invalid selection. Try again.");
        break;
    }
  }
  
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -