C++ program to read a given data file with a name given by the user, which contains n names and scores of a class, then determines the final letter grade using favorable grading scheme as follows for each student. Then, output to a text file with a name given by the user. In the data file, the first entry is lastname, the second entry is firstname and the third entry is the score. Your program should use enumerated data type (textbook page 642) and structures (page 615) as follows: enum Grade {F, D, CMINUS, C, CPLUS, BMINUS, B, BPLUS, AMINUS, A}; struct StudentData { string lastName; string firstName; double score; double percentage; Grade pointGrade; Grade curveGrade; Grade finalGrade; }; At the beginning of your program, you should have these two constants: const int CLASSSIZE = 35; // the maximum number of students in a single section class const int BAR = 60; // student needs to pass the minimum bar to enjoy the curve grade Then, you may use an array of StudentData to store all the students' records. DO NOT USE vector. Since you can't predict the number of students in the input file, you need to set up the class as a dynamic array of StudentData as follows: StudentData* student = new StudentData[CLASSSIZE]; You must implement the following functions/methods: bool insert(StudentData** v, StudentData n, int& b, int& s); similartotheinsert function of a dynamic array. Where b is the current enrollment of the class, s is the class capacity (array size). void outputGradeBook(string ofileName, StudentData s[], int size); // to output grades // into ofilename You may need a conversion function to convert enumerated data into string data for the letter grades as follows: string letterGrade(Grade g) { string s; switch (g) { case F: s = "F"; break; case D: s = "D"; break; case CMINUS: s = "C-"; break; case C: s = "C"; break; case CPLUS: s = "C+"; break; case BMINUS: s = "B-"; break; case B: s = "B"; break; case BPLUS: s = "B+"; break; case AMINUS: s = "A-"; break; case A: s = "A"; break; } } default: s = "Error"; return s; During the execution of your program, your program is required to deliver the following information: Here is the algorithm as the favorable grading: The favorable grading being used in the class means that your final grade would be the better grade of the two grades as long as the total accumulated points is above 60 points (the BAR). If the total accumulated points is below 60, then the Point Cutoff (College Grade Scale) will be used to determine the letter grade (it is an F). For example, a student, John Doe, has earned 72 points in total (C- according to the point cutoff), but is ranked at 74% percentile in the class (B+ according to the curve cutoff), then John Doe will receive B+ (a better grade of two) as the final grade. If another student, Mary Doe, has earned 91 points in total (A- according to the point cutoff), but is ranked at 78% percentile in the class (A- according to the curve cutoff), then Mary Doe will receive A- (a better grade of two) as the final grade. If a student, Mike Doe, has earned 59 points in total, then the Mike Doe will receive F regardless the curve grade. Grade Curve cutoff A better than 90% of the class A- better than 75% of the class B+ better than 60% of the class B better than 45% of the class B- better than 35% of the class C+ better than 25% of the class C better than 15% of the class C- better than 10% of the class D better than 5% of the class Point cutoff (College Grade Scale) higher higher higher higher higher higher higher higher higher lower than 60 points than 93 points than 90 points than 87 points than 83 points than 80 points than 77 points than 73 points than 70 points than 60 points F below 5% of the class Your testing data file is scores.txt, and your program should produce the results as shown in the file, gradebook.txt. Please be sure that the names in the gradebook.txt are sorted in alphabetical order.