A class using an enumerator

Header File: Students.h

#ifndef StudentsH
#define StudentsH

#include <string> 
using namespace std;

namespace Students
{

enum StudentGender { sgUnspecified, sgMale, sgFemale };

namespace Registration
{
class Student
{
public:
	Student();
	Student(string fn, string ln);
	Student(string F, string L, int g);
	~Student();

	void setFirstName(const string FN) { FirstName = FN; }
    string getFirstName() { return FirstName; }
	void setLastName(const string LN) { LastName = LN; }
    string getLastName() { return LastName; }
	void setFullName(const string FN, const string LN);
	string getFullName();
	
	void setGender(const int g) { Gender = g; }
	string getGender() const;
    
private:
    string FirstName;
    string LastName;
	int Gender;
};

}	// namespace Registration
}	// namespace Students   

#endif	// StudentsH

Source File: Students.cpp

#include "Students.h"

namespace Students
{
namespace Registration
{
Student::Student()
	: FirstName("John"),
	  LastName("Doe"),
	  Gender(0)
{
}

Student::Student(string fn, string ln)
	: FirstName(fn),
	  LastName(ln),
	  Gender(0)
{
}

Student::Student(string F, string L, int g)
	: FirstName(F),
	  LastName(L),
	  Gender(g)
{
}

Student::~Student()
{
}

void Student::setFullName(const string FN, const string LN)
{
	setFirstName(FN);
	setLastName(LN);
}

string Student::getFullName()
{
	return getFirstName() + " " + getLastName();
}

string Student::getGender() const
{
    if( Gender == sgMale )
        return "Male";
    else if( Gender == sgFemale )
        return "Female";
    else
        return "Unspecified";
}

}	// namespace Registration
}	// namespace Students    

Header File: Grades.h

#ifndef GradesH
#define GradesH

namespace Students
{
class Grades
{
public:
    Grades();
    Grades(double e, double s, double h,
            double g, double c, double o,
            double m, double p, double r, double t);
    ~Grades();

    void setEnglish(const double e) { English = e; }
    double getEnglish() const { return English; }
    void setSecondLng(const double s) { SecondLng = s; }
    double getSecondLng() const { return SecondLng; }
    void setHistory(const double h) { History = h; }
    double getHistory() const { return History; }
    void setGeography(const double g) { Geography = g; }
    double getGeography() const { return Geography; }
    void setChemistry(const double c) { Chemistry = c; }
    double getChemistry() const { return Chemistry; }
    void setSociology(const double o) { Sociology = o; }
    double getSociology() const { return Sociology; }
    void setMath(const double m) { Math = m; }
    double getMath() const { return Math; }
    void setCompSc(const double p) { CompSc = p; }
    double getCompSc() const { return CompSc; }
    void setMorale(const double a) { Morale = a; }
    double getMorale() const { return Morale; }
    void setSports(const double t) { Sports = t; }
    double getSports() const { return Sports; }

private:
    double English;
    double SecondLng;
    double History;
    double Geography;
    double Chemistry;
    double Sociology;
    double Math;
    double CompSc;
    double Morale;
    double Sports;
};
}	// namespace Students

#endif

Source File: Grades.cpp

#include "Grades.h"

namespace Students
{
Grades::Grades()
{
    English = 0.00;
    SecondLng = 0.00;
    History = 0.00;
    Geography = 0.00;
    Chemistry = 0.00;
    Sociology = 0.00;
    Math = 0.00;
    CompSc = 0.00;
    Morale = 0.00;
    Sports = 0.00;
}

Grades::Grades(double e, double s, double h,
                 double g, double c, double o,
                 double m, double p, double r, double t)
{
    English = e;
    SecondLng = s;
    History = h;
    Geography = g;
    Chemistry = c;
    Sociology = o;
    Math = m;
    CompSc = p;
    Morale = r;
    Sports = t;
}

Grades::~Grades()
{
}

}	// namespace Students

Header File: StudentsIssues.h

#ifndef StudentsIssuesH
#define StudentsIssuesH

#include "Students.h"
#include "Grades.h"

using namespace Students::Registration;

namespace Students
{
class StudentsIssues
{
public:
	StudentsIssues();
	~StudentsIssues();
	void RegisterStudent();
	void ProcessGrades();
	void ProcessStudent();
	void ShowStudentIdentification();
	void ShowStudentGrades();
	void DisplayReport();
private:
	double CalculateTotal() const;
	double CalculateMean() const;
	Student Pupil;
	Grades  Marks;
	double TotalGrades;
	double AverageGrades;
};

}	// namespace Students

#endif	// StudentsIssuesH

Source File: StudentsIssues.cpp

#include <iostream>
#include <iomanip>
#include "StudentsIssues.h"

using namespace std;

namespace Students
{

StudentsIssues::StudentsIssues()
{
}

StudentsIssues::~StudentsIssues()
{
}

// This method is use to register one student
void StudentsIssues::RegisterStudent()
{
    string FN, LN;
    int Gdr;

	cout << " - = - Red Oak High School - = -";
	cout << "\nPlease register the student\n";
    cout << "\nEnter the student's information\n";
    cout << "First Name: "; cin >> FN;
    cout << "Last Name: "; cin >> LN;
    cout << "Gender: ";
    cout << "\n1 - Male"
         << "\n2 - Female"
         << "\n3 - Unspecified"
         << "\nYour Choice: ";
    cin >> Gdr;

	Pupil.setFullName(FN, LN);
	Pupil.setGender(Gdr);
}

// This method is used to enter grades for a student
void StudentsIssues::ProcessGrades()
{
	double Language1, Language2, Hist, Geog,
		   Chem, Soc, Math, CompSc, Mor, Sport;

	cout << "\nEnter student's grades\n";
    cout << "English: "; cin >> Language1;
    cout << "2nd Language: "; cin >> Language2;
    cout << "History: "; cin >> Hist;
    cout << "Geography: "; cin >> Geog;
    cout << "Chemistry: "; cin >> Chem;
    cout << "Sociology: "; cin >> Soc;
    cout << "Mathematics: "; cin >> Math;
    cout << "Comp Sciences: "; cin >> CompSc;
    cout << "Morale: "; cin >> Mor;
    cout << "Sports: "; cin >> Sport;

	Marks.setEnglish(Language1);
	Marks.setSecondLng(Language2);
	Marks.setHistory(Hist);
	Marks.setGeography(Geog);
	Marks.setChemistry(Chem);
	Marks.setSociology(Soc);
	Marks.setMath(Math);
	Marks.setCompSc(CompSc);
	Marks.setMorale(Mor);
	Marks.setSports(Sport);
}

double StudentsIssues::CalculateTotal() const
{
    double Total = Marks.getEnglish()   + Marks.getSecondLng() + 
				   Marks.getHistory()   + Marks.getGeography() +
				   Marks.getChemistry() + Marks.getSociology() +
                   Marks.getMath()      + Marks.getCompSc()    +
				   Marks.getMorale()    + Marks.getSports();

    return Total;
}

double StudentsIssues::CalculateMean() const
{
    return TotalGrades / 10;
}

// This method is used to display information about a student
void StudentsIssues::ShowStudentIdentification()
{
    cout << "\n=======================================";
	cout << "\n - = - Red Oak High School - = -";
    cout << "\n=======================================";
    cout << "\nStudent Identification";
    cout << "\nFull Name: "
         << Pupil.getFirstName() << " "
         << Pupil.getLastName();
    cout << "\nGender:    " << Pupil.getGender() << endl;
}

// This method is used to display grades for a student
void StudentsIssues::ShowStudentGrades()
{
	TotalGrades = CalculateTotal();
	AverageGrades = CalculateMean();

	
    cout << "=======================================\n";
	cout << "\tStudent's Grades";
    cout << "\n---------------------------------------";
    cout << setiosflags(ios::fixed) << setprecision(2);
    cout << "\n\tEnglish:       " << Marks.getEnglish();
    cout << "\n\tLanguage 2:    " << Marks.getSecondLng();
    cout << "\n\tHistory:       " << Marks.getHistory();
    cout << "\n\tGeography:     " << Marks.getGeography();
    cout << "\n\tChemistry:     " << Marks.getChemistry();
    cout << "\n\tSociology:     " << Marks.getSociology();
    cout << "\n\tMathematics:   " << Marks.getMath();
    cout << "\n\tComp Sciences: " << Marks.getCompSc();
    cout << "\n\tMorale:        " << Marks.getMorale();
    cout << "\n\tSports:        " << Marks.getSports();
    cout << "\n---------------------------------------";
    cout << "\n\tTotal: " << TotalGrades
         << "\tMean: " << AverageGrades;
    cout << "\n=======================================\n\n";
}

// This method is used to both register a student
// and enter his or her grades in one step
void StudentsIssues::ProcessStudent()
{
	RegisterStudent();
	ProcessGrades();
}

// This method is used to display all information
// related to a student: personal information and grades
void StudentsIssues::DisplayReport()
{
	ShowStudentIdentification();
	ShowStudentGrades();
}

}	// namespace Students

Source File: Main.cpp

#include "StudentsIssues.h"

using namespace Students;

int main()
{
	StudentsIssues First;

	First.ProcessStudent();
	First.DisplayReport();

    return 0;
}