After a bit of refactoring and fixing bugs, here it is:
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
class Student
{
public:
std::string name;
std::string email;
std::string number;
int grade1, grade2, grade3, grade4, totalGrade;
float percentage1, percentage2, percentage3, percentage4, totalPercentage;
public:
static void addStudent( std::vector<Student>& students )
{
std::cout << "\nEnter the number of students: ";
std::size_t count { };
std::cin >> count;
std::cout << '\n';
for ( std::size_t idx { }; idx < count; ++idx )
{
std::cout << "Enter the details of student #" << idx + 1 << ":\n";
students.resize( students.size( ) + 1 );
students.back( ).inputStudentDetails( );
std::cout << '\n';
}
std::cout << '\n';
}
void inputStudentDetails( )
{
std::cout << "Enter Student name: ";
std::cin >> name;
std::cout << "Enter student number: ";
std::cin >> number;
std::cout << "Enter student email: ";
std::cin >> email;
std::cout << "Enter grade for test1: ";
std::cin >> grade1;
std::cout << "Enter grade for test2: ";
std::cin >> grade2;
std::cout << "Enter grade for test3: ";
std::cin >> grade3;
std::cout << "Enter grade for test4: ";
std::cin >> grade4;
percentage1 = static_cast<float>( grade1 );
percentage2 = static_cast<float>( grade2 );
percentage3 = static_cast<float>( grade3 );
percentage4 = static_cast<float>( grade4 );
totalPercentage = percentage1 + percentage2 + percentage3 + percentage4;
}
void printStudentDetails( ) const
{
std::cout << "Student Name: " << name << "\nStudent Number: " << number
<< "\nStudent email: " << email << "\ngrade1: " << grade1
<< "\ngrade2: " << grade2 << "\ngrade3: " << grade3
<< "\ngrade4: " << grade4 << "\ntotal " << totalPercentage << " out of 400\n";
}
static void printAllStudentsDetails( const std::vector<Student>& students )
{
std::size_t idx { };
for ( const Student& stud : students )
{
std::cout << "\nDetails of student #" << ++idx << ":\n";
stud.printStudentDetails( );
std::cout << std::setfill( '-' ) << std::setw( 28 ) << '\n';
}
}
};
int main( )
{
std::vector<Student> students;
while ( true )
{
std::cout << "\t\tMENU\n" << std::setfill( '_' ) << std::setw( 36 ) << "\n\n";
std::cout << "1: Enter student details\n";
std::cout << "2: Display all students' details\n";
std::cout << "3: Exit the Application\n";
char select { };
std::cin >> select;
switch ( select )
{
case '1' : Student::addStudent( students ); break;
case '2' : Student::printAllStudentsDetails( students ); break;
case '3' : return 0;
default : std::cout << "Invalid Input!\n";
}
}
}