Question
Write a program in C++ that grades three exams for a class. Your program will read in lines of data that contain the following items:
Write a program in C++ that grades three exams for a class. Your program will read in lines of data that contain the following items:
- Student ID (an integer)
- Student name, with the first and last name separated by an underscore, as John_Cole. Store this as a string, not as an array of char.
- Grades on three tests. These are integers.
As you read each student ID, dynamically allocate a structure that contains student information. Put the pointer that the new operator returns into an array of fixed size. You can assume that there are no more than 100 students in any class, but the actual number of Student structs you allocate is dependent upon how many you read. So your first step is to read all of the data. While you are doing this, compute the average of the three grades and also store it in the structure. You do not need to check whether there are more than 100 students. Assume that the teacher was careful and there is no bad data in the file.
Having read the file and created the array, display a menu containing three options:
- Print the list of information in order by name
- Print the list of information in order of average grade, highest grade first.
- Look up a student by student ID. Request a student ID and search the list. If the student is found, show all of the information for that one student. If not, show a message.
Printing should show the student ID, the name, the three test scores, and the average. Display of the average should show it to two decimal places, right-justified in a field seven characters wide. Display the name and scores in columns of appropriate width so that everything lines up neatly.
After doing any of the three menu items, return to the menu. Stop when the user enters 0 as his/her choice. Invalid menu choices should show a message, then return to the menu.
Use bubble sort for the sorting. Write this as a single function that can sort by either name or average. You can have a parameter to the function indicating which field is to be used for sorting.
The data file provided is called Asg4Grades.txt. When you open this, just use the file name, no drive letter or subdirectory.
Note that since there are no spaces within the data, you can use stream extraction to read the individual elements.
Asg4Grades.txt
1231 Robert_Smith 91 87 72 1233 Cheryl_Overton 98 91 89 1234 Vishal_Sharda 86 92 93 1239 Ramon_Gonzales 91 82 97 1240 Hong_Chang 92 83 98 1242 Misty_Sellers 81 91 92 1243 Kim_Riley 99 92 93 1246 John_Paulos 81 87 88 1249 Scott_Wingo 100 91 99 1251 Jacob_Needleman 97 83 96
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started