What You're Being Asked For

The project requires you to deliver 6 C++ files, three .h or Header files and three .cpp or Source Code files. These are;

Main.cpp
Roster.cpp
Roster.h
Student.cpp
Student.h
Degree.h
Now the names may differ, but the contents and requirements for each file are generally the same. In this next leg of the post, I'm going to summarize what each file should include and what topics these might be covered under if not already stated.


Main.cpp

This file you can think of as the base of operations for your project. It will include your main() function and all of the function calls you'll require for this project will be included in this source file. You'll also want to make sure to add the correct includes (such as the .h files you made) at the top.

These are the tasks the Main.cpp file should be performing;

You should have your string of data to be parsed included here (make sure your information is included in A5).
You should have code that outputs your personal information (Course Title, Language Used, Student ID, and Name)
You should call your roster class's constructor to create a new roster object called "classRoster".
You should a method that seperates the elements from the string array from the top and sends them a parse function. (I believe you can either include the parse function here OR you can call a parse function in one of your classes.)
You should call a function that outputs the contents of your new Roster object (so you know all the Students were added correctly).
You should call a function that outputs all Students that have invalid emails.
You should loop through your classRoster and call a function that outputs the integer array for "average days in course" for each student ID.
You should call a function that outputs students that match a certain degree program state.
You should call a function that deletes a certain Student by its ID.
You should call a function that outputs all Students again.
You should call a function that deletes a certain Students by its ID again and comes up with an error.
You should then delete your classRoster to free its memory.
For this file you're mostly going to want to focus on understandin how to call function methods, parse a string (or call a function in the class that does), use if and loop statements, output data to the screen, and release memory.


Degree.h

This is the only header file you'll be including into your program that will not require a matching .cpp. The reason for this is because the Degree.h file is used only to create your Enum class a certain variable.

I'm going to quickly explain something about enums that might help; think of an enum class as a traffic light. A traffic light might have 3 states, here's how that might look in C++;

enum class TrafficLight { RED, YELLOW, GREEN, };

Don't be fooled by the text however, if you called an enum, you'd actually get back a number. That's because the states, which are what the RED, YELLOW, and GREEN, stand for in the enum class, actually refer to integers.

So for example, RED = 0, YELLOW = 1, GREEN = 2. Think about this as you set enums in your code for the other files. You can set strings to match your enum states by creating a static const string array that contained each state, but I believe that's above and beyond what's asked for this project.


Roster.cpp and Roster.h

I've bundled these two files together because you're going to be handling very similar code in these two. The first file you'll work on, the Roster.h file, is where you're going to define everything related to your Roster class. (Make sure you add the correct ".h" files to you includes so their code will work in this class.) That means you'll need to...

Create a class constructor
Create a class destructor
IF YOU CHOOSE NOT TO PARSE IN MAIN.CPP, Create a function that parses a string with delimiters
Create a function that adds a student object to a roster object
Create a function that removes a student by their ID
Create a function that outputs all the objects in this object
Create a function that outputs the integer array of average days by student ID
Create a function that outputs invalid email addresses
Create a function that outputs all students with a certain degree program.
And create an array that holds objects from an abstract class...
For the Roster.h file you only need to type out what functions/methods and variables this class will contain. In the Roster.cpp class, you'll take the above functions and actually define them (as in, you'll write the code that makes them work. Make sure you to add "roster.h" as an include for your Roster.cpp file.


Student.cpp and Student.h

Last, but surely not least, is the Student class. You may be a bit confused about this class at first because it's what you might call an "abstract class" meaning it's a class that's only called by another class to create objects. Like the Roster.cpp and Roster.h files, you'll be writing out what you need in your header files first, which is;

A set of private variables for each of the information you want to parse from your string (including an array for three specific integers)
Create a class constructor
Create an overloaded class constructor
Create a destructor
Create "Accessor/Getter" functions for all your variables
Create "Mutator/Setter" functions for all of your varaibles
Create a function that prints all of those variables when called
As you define the functions in your Student.cpp file, you may want to keep your all of your getter and all of your setter functions grouped together so you can find them easily in case of errors. This is the part of the project where understanding how "this" and the "->" operator work will REALLY come in handy. Aside from that, the functions in this .cpp file are far less complicated than Roster.cpp's.

The data should be input as follows:

 

const string studentData[] = 

{"A1,John,Smith,John1989@gm ail.com,20,30,35,40,SECURITY", "A2,Suzan,Erickson,Erickson_1990@gmailcom,19,50,30,40,NETWORK", "A3,Jack,Napoli,The_lawyer99yahoo.com,19,20,40,33,SOFTWARE", "A4,Erin,Black,Erin.black@comcast.net,22,50,58,40,SECURITY", "A5,[firstname],[lastname],[emailaddress],[age], [numberofdaystocomplete3courses],SOFTWARE"

Now please code Degree.h. Roster.cpp, Roster.h