English -- Attendance = 10%, Project = 30%, Midterm = 30%, Final Exam = 30%
History -- Term Paper = 25%, Midterm = 35%, Final Exam = 40%
Math -- There are 5 quizzes, to be averaged into one Quiz Average
(which can be a decimal number). Final grade computed as follows:
* Quiz Average = 15%, Test 1 = 25%, Test 2 = 25%, Final Exam = 35%
a) Ask the user for input and output file names. This is the only input and output that should be done from keyboard and to the screen. All other input and output will be to and from files. (See the sample run below).
b) Read the student data from the input file and store it using an array of appropriate type. You should use just one array for all students, not a separate array for each subject (i.e. this will be a heterogeneous list). You will need to allocate this list dynamically, since the size is stored in the input file. (Note that this also means each list item will need to be created dynamically). Each student's data should be stored in a separate object. (Any dynamically allocated space should be cleaned up appropriately with delete when you are finished with it).
Hint: Remember that a heterogeneous list is implemented using an
array
of pointers to the base class type. And as stated above, this must be
created dynamically in this situation. i.e. you will need to use the
new operator. If you declare your array like this:
Student* list[size];
then it is WRONG.
c) Print a summary report to the output file, as specified below.
You'll need to use the function that computes the final average when you
do this, since the final averages will be included in this summary report.
Input File -- The first line of the input file will contain the number of students listed in the file. This will tell you how big a list you need. After the first lines, every set of two lines constitutes a student entry. The first line of a student entry is the name, in the format lastName, firstName. Note that a name could include spaces -- the comma will delineate last name from first name. The second line will contain the subject ("English", "History", or "Math"), followed by a list of grades (all integers), all separated by spaces. The order of the grades for each class type is as follows:
English -- Attendance, Project, Midterm, Final Exam
History -- Term Paper, Midterm, Final Exam
Math -- Quiz 1, Quiz 2, Quiz 3, Quiz 4, Quiz 5, Test 1, Test
2, Final Exam
Output File -- The output file that you print should list each
student's name (firstName lastName - no extra
punctuation between), Final Exam grade, final average (printed to 2 decimal
places), and letter grade (based on 10 point scale, i.e. 90-100 A, 80-89
B, etc). Output should be separated by subject, with an appropriate heading
before each section, and each student's information listed on a separate
line, in an organized fashion. (See example below).
Please enter the name of the input file. Filename: test.txt Please enter the name of the output file. Filename: outfile.txt Processing Complete
Sample input file: (Get a copy here)
6 Bunny, Bugs Math 90 86 80 95 100 99 96 93 Schmuckatelli, Joe History 88 75 90 Dipwart, Marvin English 95 76 72 88 Crack Corn, Jimmy Math 44 58 23 76 50 59 77 68 Kirk, James T. English 40 100 68 88 Lewinsky, Monica History 60 72 78
Student Grade Summary --------------------- ENGLISH CLASS Student Final Final Letter Name Exam Avg Grade ---------------------------------------------------------------- Marvin Dipwart 88 80.30 B James T. Kirk 88 80.80 B HISTORY CLASS Student Final Final Letter Name Exam Avg Grade ---------------------------------------------------------------- Joe Schmuckatelli 90 84.25 B Monica Lewinsky 78 71.40 C MATH CLASS Student Final Final Letter Name Exam Avg Grade ---------------------------------------------------------------- Bugs Bunny 93 94.83 A Jimmy Crack Corn 68 65.33 D