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

📄 phonebook.cpp

📁 C++大学简明教程,解压就行没有密码。希望对大家有用
💻 CPP
字号:
// Tutorial 22: PhoneBook.cpp
// Stores and displays phone book entries using 
// overloaded operators
#include <iostream> // required to perform C++ stream I/O
#include <string>   // required to access string functions
#include <iomanip> // required for parameterized stream manipulators
#include "PhoneNumber.h" // PhoneNumber class definition

// overloaded stream insertion operator
ostream &operator<<( ostream &, PhoneNumber & );

// overloaded stream extraction operator
istream &operator>>( istream &, PhoneNumber & );

// function main begins program execution
int main()
{
   const int ARRAY_SIZE = 10; // maximum number of phone book entries

   // define variables
   int count = 0; // stores the number of entries in the phone book
   int selection = 0; // stores the user's menu selection
   PhoneNumber numbers[ ARRAY_SIZE ]; // array of PhoneNumber objects
   string names[ ARRAY_SIZE ]; // array of phone book entry names

   // repeat until the user chooses to exit
   while ( selection != 3 )
   {
      // display menu
      cout << "\nSelect one of the following options\n" << endl;
      cout << "1 - Enter new phone number" << endl;
      cout << "2 - View phone numbers" << endl;
      cout << "3 - Exit the application" << endl;
      cout << "Enter selection: ";
      cin >> selection;
      cout << endl;

      // determine which option the user selected
      switch ( selection )
      {
         // enter phone number
         case 1: 
            // ensure that there is space in the array
            if ( count < ARRAY_SIZE )
            {
               cin.ignore(); // remove newline

               // prompt user for and store name and phone number
               cout << "Enter name: ";
               getline( cin, names[ count ] ); // get name

               cout << "Enter phone number in the form (123) "
                    << "456-7890: "; // input phone number

               // use the overloaded stream extraction operator
               cin >> numbers[ count ];

               count++;
            } // end if
            else 
            {
               cout << "Error: You cannot enter any more numbers."
                    << endl;
            } // end else
            
            break;

          // view numbers
         case 2:
            
            cout << "\nListing of phone numbers" << endl;
            cout << "------------------------" << endl;

            // display each name and number
            for ( int i = 0; i < count; i++ )
            {
               // display name
               cout << "Name: " << names[ i ] << endl;

               // use the overloaded stream insertion operator
               cout << "Number: " << numbers[ i ] << endl;
               cout << "\n";
            } // end for

            break;

         // exit
         case 3: 
            cout << "Good-bye!" << endl; 
            
            break;

         default: 
            cout << "Error: Enter a valid menu selection";
      
      } // end switch

   } // end while

   return 0; // indicate that program ended successfully

} // end main

// overloaded stream-insertion operator for PhoneNumber objects
ostream &operator<<( ostream &output, PhoneNumber &number )
{
   output << "(" << number.getAreaCode() << ") "
          << number.getExchange() << "-" << number.getLine();

   return output; // enables chaining: cout << a << b << c;
} // end function operator<<

// overloaded stream-extraction operator for PhoneNumber objects
istream &operator>>( istream &input, PhoneNumber &num )
{
   // define variables
   string inputAreaCode; // area code
   string inputExchange; // exchange
   string inputLine;     // line

   // read the phone number from cin
   input.ignore(); // skip (

   // input area code
   input >> setw( 3 ) >> inputAreaCode;

   // set the area code
   num.setAreaCode( inputAreaCode );
   input.ignore( 2 ); // skip ) and space

   // input exchange
   input >> setw( 3 ) >> inputExchange;

   // set the exchange
   num.setExchange( inputExchange );
   input.ignore(); // skip dash (-)

   // input line
   input >> setw( 4 ) >> inputLine;

   // set the line
   num.setLine( inputLine );

   return input; // enables chaining: cin >> a >> b >> c;
} // end function operator>>

/**************************************************************************
 * (C) Copyright 1992-2005 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 **************************************************************************/

⌨️ 快捷键说明

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