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” A. Modify the “studentData Table” to include your personal information as the last item. B. Create a C++ project in your integrated development environment (IDE) with the following files: • degree.h • student.h and student.cpp • roster.h and roster.cpp • main.cpp Note: There must be a total of six source code files. C. Define an enumerated data type DegreeProgram for the degree programs containing the data type values SECURITY, NETWORK, and SOFTWARE. Note: This information should be included in the degree.h file. D. For the Student class, do the following: 1. Create the class Student in the files student.h and student.cpp, which includes each of the following variables: • student ID • first name • last name • email address • age • array of number of days to complete each course • degree program 2. Create each of the following functions in the Student class: a. an accessor (i.e., getter) for each instance variable from part D1 b. a mutator (i.e., setter) for each instance variable from part D1 c. All external access and changes to any instance variables of the Student class must be done using accessor and mutator functions. d. constructor using all of the input parameters provided in the table e. print() to print specific student data E. Create a Roster class (roster.cpp) by doing the following: 1. Create an array of pointers, classRosterArray, to hold the data provided in the “studentData Table.” 2. Create a student object for each student in the data table and populate classRosterArray. a. Parse each set of data identified in the “studentData Table.” b. Add each student object to classRosterArray. 3. Define the following functions: a. public void add(string studentID, string firstName, string lastName, string emailAddress, int age, int daysInCourse1, int daysInCourse2, int daysInCourse3, DegreeProgram degreeProgram) that sets the instance variables from part D1 and updates the roster. b. public void remove(string studentID) that removes students from the roster by student ID. If the student ID does not exist, the function prints an error message indicating that the student was not found. c. public void printAll() that prints a complete tab-separated list of student data in the provided format: A1 [tab] First Name: John [tab] Last Name: Smith [tab] Age: 20 [tab]daysInCourse: {35, 40, 55} Degree Program: Security. The printAll() function should loop through all the students in classRosterArray and call the print() function for each student. d. public void printAverageDaysInCourse(string studentID) that correctly prints a student’s average number of days in the three courses. The student is identified by the studentID parameter. e. public void printInvalidEmails() that verifies student email addresses and displays all invalid email addresses to the user. Note: A valid email should include an at sign (‘@’) and period (‘.’) and should not include a space (’ '). f. public void printByDegreeProgram(DegreeProgram degreeProgram) that prints out student information for a degree program specified by an enumerated type. F. Demonstrate the program’s required functionality by adding a main() function in main.cpp, which will contain the required function calls to achieve the following results: 1. Print out to the screen, via your application, the course title, the programming language used, your WGU student ID, and your name. 2. Create an instance of the Roster class called classRoster. 3. Add each student to classRoster. 4. Convert the following pseudo code to complete the rest of the main() function: classRoster.printAll(); classRoster.printInvalidEmails(); //loop through classRosterArray and for each element: classRoster.printAverageDaysInCourse(/current_object’s student id/); Note: For the current_object’s student id, use an accessor (i.e., getter) for the classRosterArray to access the student id. classRoster.printByDegreeProgram(SOFTWARE); classRoster.remove(“A3”); classRoster.printAll(); classRoster.remove(“A3”); //expected: the above line should print a message saying such a student with this ID was not found. To give more detail. This is how u should do it: 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.