Professor Albus Dumbledore, headmaster of Hogwarts School of Witchcraft and Wizardry is interested in introducing his faculty and students to one of the newest discovered branches of the magical arts. That is Computational Magic. It was discovered when representatives from the Division of Magical Research of the Ministry of Magic found that many Muggle computer programmers were actually unknown witches and wizards who were creating new spells and working magic through their code.
As a first step Professor Dumbledore has requested that a Computational Magic device be created that will allow the school to transfer all their student records from the old parchment and quill system to a computerized system. In this assignment a C++ class will be created that will store all information on one student.
2.0 Requirements
The student shall define, develop, document, prototype, test, and modify as required the software system.
2.1 This software system shall define a student record class called Student (file names shall be Student.h and Student.cpp) which contains all information on one student enrolled at Hogwarts.
2.1.1 The Student class shall contain private variables as described below:
2.1.1.1 An integer variable, called m_iStudentID which shall hold a student's ID number.
2.1.1.2 Two character arrays, called m_sMagicalName and m_sWizardFamilyName each capable of holding a string of up to 64 characters.
2.1.1.3 A character array, called m_sHouse capable of holding a string of up to 64 characters. This will hold the name of the house a student is assigned to; Griffindore, Ravenclaw, Hufflepuff, or Slytherin
2.1.1.4 An array of eight pointers to characters, called m_sClasses each of which can be set pointing to a character array holding the name of a class a student is taking.
2.1.1.5 An array of eight integers called m_iGrades which shall hold a student's numerical grades in each class.
2.1.2 The Student class shall contain public functions as described below:
2.1.2.1 Two constructor functions. The first shall be a default constructor which takes no arguments (Student()). The second constructor shall take four arguments (Student(int iID, char *mName, char *wName, char *hName)) an int giving the student's ID, and three character arrays giving the student's first name, family name, and the name of the student's house.
2.1.2.2 A destructor function which shall clear all externally allocated memory before terminating.
2.1.2.3 Get/Set functions There will be a getVariable() and a setVariable() designed to return the value stored in or set the value stored in a student's data. Specifically these functions shall be prototyped as:
2.1.2.3.1 int getStudentID(), void setStudentID(int iID) - Get and set the student's ID.
2.1.2.3.2 void getName(char *mName, char *wName), void setName(char *mName, char *wName) - Get and set the student's name and wizarding family name.
2.1.2.3.3 void getHouse(char *hName), void setHouse(char *hName) - Get and set the student's house name.
2.1.2.3.3 void getClass(int idx, char *className), void setClass(int idx, char *className) - Get and set a class name. The integer argument idx given the index in the class name array for the class.
2.1.2.3.4 void getGrade(int idx, int &iGrade, char &cGrade), void setGrade(int idx, int grade) - Get and set a grade. The getGrade function shall be a reference function and shall return in the cGrade argument a letter grade based on the current Hogwarts grading system (95-100=Outstanding (O), 90-94=Exceeds Expectations (E), 80-89=Acceptable (A), 70-79=Poor (P), 60-69=Dreadful (D), <60=Troll (T)). It shall also return a numeric grade in the iGrade argument.
2.1.2.3.5 void printStudentInfo() - Print all information on this student. This includes, student ID, first and last names, the list of classes, and the current grade.
2.3 The class file and its' associated header file must be capable of being compiled and linked in with the instructor's driver program (main(), found in a separate file) for testing.