//------------------------------------------------------------------- // File :course.C // Author :Alicia Thorsen // // Implementation of the Course class. //------------------------------------------------------------------- #include "course.h" #include #include #include #include using namespace std; // ------------------------------------------------------------ // Precondition :IN_FILE_NAME exists and contains student data. // Postcondion :Student data is stored in roster[] and the number of students // is updated. // ------------------------------------------------------------ void Course::getStudentData() { ifstream inputFile; string studentName; double grade; int i = 0; // Open file for reading. inputFile.open(IN_FILE_NAME); // Read first line. getline(inputFile, studentName); // Keep reading until end-of-file. while (!inputFile.eof()) { // First line is student name. roster[i].setName(studentName); // Second line is numeric grade. inputFile >> grade; roster[i].setNumericGrade(grade); // Discard newline left by >>. inputFile.ignore(); // Read next line. getline(inputFile, studentName); // Keep track of entries read. ++i; } // Close file. inputFile.close(); // Update number of students. numOfStudents = i; } // ------------------------------------------------------------ // Precondition :roster[] contains numeric grades. // Postcondion :Letter grades in roster[] are updated. // ------------------------------------------------------------ void Course::calcLetterGrades() { for (int i = 0; i < numOfStudents; ++i) roster[i].calcLetterGrade(); } // ------------------------------------------------------------ // Precondition :roster[] contains student data. // Postcondition :All student data is written to the OUT_FILE_NAME file. // ------------------------------------------------------------ void Course::outputStudentData () const { ofstream outputFile; // Open file for writing. outputFile.open(OUT_FILE_NAME); // Left align columns. outputFile.setf(ios::left); // Write headings to file: outputFile << setw(MAX_NAME_SIZE) << "Name" << setw(MAX_NUMERIC_GRADE_SIZE) << "Numeric Grade" << "Letter Grade\n\n"; // Write student data to file. for (int i = 0; i < numOfStudents; ++i) { outputFile << setw(MAX_NAME_SIZE) << roster[i].getName() << setw(MAX_NUMERIC_GRADE_SIZE) << roster[i].getNumericGrade() << roster[i].getLetterGrade() << endl; } // Close file. outputFile.close(); cout << "\nResults written to " << OUT_FILE_NAME << endl; }