Question
Please create separate header files for class declarations and also separate cpp files for class definition, programming language is C++ You are to implement a
Please create separate header files for class declarations and also separate cpp files for class definition, programming language is C++
You are to implement a program for creating a single course gradebook. For this project, you will need to utilize the concepts of classes and top-down design that has been discussed in class. The list of requirements and constraints for the system are as follows:
1. The system must be able to manage multiple students (max of 15) and their grades for assignments from three different assignment groups: homework (total of 5), quizzes (total of 5), and exams (total of 3).
2. For each student record, the user should be able to change the grade for any assignment. These grades should be accessible to the gradebook for calculations, but not visible or directly mutable outside of the student record.
3. The gradebook should know the name of the course. It should also know the weights of each assignment group and be able to print a report to the screen. This report should contain the course name and a well-formatted table containing columns for the student names, and for each assignment group. The group weights should be displayed (as a percentage) next to the name of each assignment group in the tables header. It should be possible to add and remove students from the gradebook, and the maximum number of students supported is 15. Removals from the gradebook should shift each successive student up in the list. For example, if student 5 is removed from the gradebook, the remaining students starting with student 6 should be moved up a slot (i.e. student 6 to student 5s old slot, student 7 to student 6s old slot, etc.)
4. A user interface should be created with a menu system used to navigate the functionality necessary to complete the stated requirements. It is recommended to use a simple numbering scheme when prompting the user for their desired action. See the end of this project sheet for a reference you may use for the menus.
5. All names (student names, gradebook name) should be set to prior to being set by the user. This could also be used in logic to determine whether or not a student entry in the gradebook is valid. Empty student slots should not be displayed in menus that require the user to identify a student record to modify.
6. The gradebook should be able to calculate class averages from the student records. The averages are the sum of the valid grades divided by the total number of valid grades for that group (i.e. ungraded assignments are not part of the total number of valid grades). Since each student record could contain a different number of grades for each category, the class average should be computed as the average of each students average for each assignment group as well as their final grade. When computing the average final grade, dont forget to use the group weights.
Sample UI -=| MAIN MENU |=-
1. Add a student
2. Remove a student
3. Change a students grade
4. Change group weights
5. Change the gradebook name
6. Display class averages
7. Display full report
0. QUIT
Enter an action: 1
-=| ADDING STUDENT |=-
Please enter the students name: Name Here
Name Here was successfully added to the gradebook!
-=| ADDING STUDENT |=-
Students cannot be added because the gradebook is full!
-=| REMOVING STUDENT |=-
1. John Doe
2. Jane Doe
3. Third Person
Enter student to remove:
1 John Doe has been successfully removed! (New class size: 2)
-=| REMOVING STUDENT |=-
Cannot remove students because the gradebook is empty!
-=| CHANGING GRADE |=-
1. Change a homework grade
2. Change a quiz grade
3. Change an exam grade
What type of grade would you like to change: 2
1. John Doe
2. Jane Doe
3. Third Person
Which students grade would you like to change? 3
-=| CHANGING Third Persons QUIZ GRADE |=-
1. 68
2.
3. 97
4.
5.
Which quiz grade would you like to change: 2
What would you like to change it to (-1 for ungraded): 89
Third Persons quiz grade 2 was changed from to 89!
-=| CHANGING WEIGHTS |=-
Enter the weights, separated by spaces, in the order of homework, quizzes, and exams (total must add up to 1.0):
0.15 0.25 0.7
Weights do not add up to 1.0, try again...
Enter the weights, separated by spaces, in the order of homework, quizzes, and exams (total must add up to 1.0):
0.15 0.25 0.6
Weights updated successfully!
-=| CHANGING NAME |=-
Please enter the new name for the gradebook: JJST1450
Gradebook name changed from to JJST1450
-=| CLASS AVERAGES |=-
Homework average of class: 85.13%
Quiz average of class: 81.57%
Exam average of class: 77.40%
Final average of class: 79.60%
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