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

📄 gradebookmanager.cpp

📁 C++大学简明教程,解压就行没有密码。希望对大家有用
💻 CPP
字号:
// Tutorial 21: GradeBookManager.cpp
// This application stores and processes student grades as ints or
// doubles by using templates
#include <iostream> // required to perform C++ stream I/O
#include <string> // required to access string functions
#include <iomanip> // required for parameterized stream manipulation

#include "GradeBook.h" // GradeBook class definition
#include "GradeBook.cpp" // GradeBook implementation

using namespace std; // for accessing C++ Standard Library members

// function prototype
template< class T >
void processGrades( GradeBook< T > );

// function main begins program execution
int main()
{
   // define variables
   int students; // number of students in the course
   string courseName; // name of the course
   
   // determines whether grades are stored as ints or doubles
   int selection; // 1 = ints, 2 = doubles
   
   // format the output to one digit of precision
   cout << fixed << setprecision( 1 );

   // prompt the user for and input number of students
   cout << "\nEnter the number of students: ";
   cin >> students; // get number of students

   // repeat if the user enters an invalid number of students
   while ( students <= 0 ) 
   {
      cout << "\nError: Must have a positive number of students";
      cout << "\nEnter the number of students: ";
      cin >> students;
   } // end while

   // prompt user to choose to process grades as ints or doubles
   cout << "\nSelect the grade type:" << endl;
   cout << "1 - Integer" << endl;
   cout << "2 - Floating-point" << endl;
   cout << "Enter selection: ";
   cin >> selection;

   // repeat until the user selects a valid option
   while ( selection != 1 && selection != 2 )
   {
      cout << "\nError: Invalid choice" << endl;
      cout << "\nSelect the grade type:" << endl;
      cout << "1 - Integer" << endl;
      cout << "2 - Floating-point" << endl;
      cout << "Enter selection: ";
      cin >> selection; 
   } // end while

   // create a GradeBook of ints if user selects integer grades
   if ( selection == 1 )
   {
      // create class-template specialization for int grades
      GradeBook< int > myIntGradeBook( students );

      // input grades and display statistics
      processGrades( myIntGradeBook );

   } // end if
   
   // create a GradeBook of doubles if user selects 
   // floating-point grades
   else 
   {
      // create class-template specialization for double grades
      GradeBook< double > myDoubleGradeBook( students );

      // input grades and display statistics
      processGrades( myDoubleGradeBook );

   } // end else

   cout << endl;

   return 0; // indicates successful termination

} // end function main

// function template that prompts the user for and inputs grades,
// then outputs grades and statistics
template< class T >
void processGrades( GradeBook< T > myGrades )
{
   // define variable    
   T grade; // grade that the user inputs

   cout << endl;

   // prompt the user for and input each student's grade
   for ( int count = 0; count < myGrades.getClassSize(); count++ )
   {
      cout << "Enter student " << count + 1
           << "'s grade (0-100): ";
      cin >> grade; // input grade
         
      // repeat while the user has entered an invalid grade
      while ( grade < 0 || grade > 100 ) 
      {
         cout << "\nError: Invalid grade" << endl;
         cout << "Enter student " << count + 1
              << "'s grade (0-100): ";
         
         cin >> grade;
      } // end while

      // insert grade into GradeBook object
      myGrades.setGrade( grade, count ); 

   } // end for

   // display grade information
   cout << "\nGrade Report" << endl;
   cout << "------------" << endl << endl;

   myGrades.displayGrades(); // display each grade
   myGrades.displayStatistics(); // display statistics

} // end function template processGrades

/**************************************************************************
 * (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 + -