#include <iostream>
#include <iomanip>
class Student {
public:
Student() {};
Student(std::string _name, std::string _subject, float _prelim, float _midterm, float _endterm) : name(_name), prelim(_prelim), midterm(_midterm), endterm(_endterm) {
std::cout << "Creating record for student: " << name << std::endl;
num_students++;
}
void set_data(std::string _name, std::string _subject, float _prelim, float _midterm, float _endterm) {
name = _name;
subject = _subject;
prelim = _prelim;
midterm = _midterm;
endterm = _endterm;
}
float get_avg() {
return ((prelim+midterm+endterm)/3);
}
void get_remarks() {
float avg = get_avg();
std::ios_base::fmtflags prev = std::cout.flags();
std::cout.setf(std::cout.left);
std::cout << " " << std::setw(19) << name;
std::cout << std::setw(16) << subject;
std::cout << std::setw(14) << avg;
if (avg >= 5.00) {
std::cout << std::setw(14) << "PASSED" << std::endl;
}
else {
std::cout << std::setw(14) << "FAILED!" << std::endl;
}
std::cout.flags(prev);
}
protected:
static unsigned int num_students;
std::string name, subject;
float prelim, midterm, endterm;
};
unsigned int Student::num_students {0};
int main(void) {
unsigned short num_students {0};
std::cout << "\nProgram that computes student's grades" << std::endl;
std::cout << "--------------------------------------\n" << std::endl;
std::cout << "Enter number of students: ";
std::cin >> num_students;
std::cin.ignore();
Student student[num_students];
for (int i=0; i<num_students; i++) {
std::string _name, _subject;
float _prelim, _midterm, _endterm;
std::cout << "\nEnter student name: ";
std::getline(std::cin, _name);
std::cout << "Enter subject: ";
std::getline(std::cin, _subject);
std::cout << "Enter prelim grade: ";
std::cin >> _prelim;
std::cout << "Enter midterm grade: ";
std::cin >> _midterm;
std::cout << "Enter endterm grade: ";
std::cin >> _endterm;
std::cin.ignore();
student[i].set_data(_name, _subject, _prelim, _midterm, _endterm);
}
std::ios_base::fmtflags prev = std::cout.flags();
std::cout.setf(std::cout.left);
std::cout << "\n---------------------------------------------------------" << std::endl;
std::cout << std::setw(20) << " STUDENT NAME";
std::cout << std::setw(16) << "SUBJECT";
std::cout << std::setw(14) << "FINAL GRADE";
std::cout << "REMARKS" << std::endl;
std::cout << "---------------------------------------------------------" << std::endl;
std::cout.flags(prev);
for (int i=0; i<num_students; i++) {
student[i].get_remarks();
}
std::cout << std::endl;
return 0;
}