Question: For this project using C + + , you will develop a program named project 1 . cpp to determine the final scores, letter grades,

For this project using C++, you will develop a program named project1.cpp to determine the final scores, letter grades, and rankings of all students in a course. All records of the course will be stored in an input file, and a record of each student will include the first name, id, five quiz scores, two ex@m scores, and one final ex@m score. For each student record, your program should determine the numeric average and letter grade using the following policies:a. Each quiz is graded on the basis of 10 points. Among the five quizzes, discard the lowest score and use the remaining four scores for the grade calculation.b. Each ex@m is graded on the basis of 100 points.c. The final ex@m is graded on the basis of 100 points.d. For the numeric average, the final ex@m counts for 40 percent, midterm$ count for 40 percent, and quizzes count for 20 percent, respectively. Any average of 90 or more is an A, any average of 80 or more (but less than 90) is a B, any average of 70 or more (but less than 80) is a C, any average of 60 or more (but less than 70) is a D, and any average below 60 is a F, In this project, your program should ask a user for an input file name. Then, it should read the data into your program and store them in a vector of Student type. (For example: vector course). Student will be a class you will write, which should have the following members:Student name : string id : int average : double grade : char rank : int+ Student()+ setName(string) : void+ setID(int) : void+ setAverage(double) : void+ setGrade(char) : void+ setRank(int) : void+ getName() const : string+ getID() const : int+ getAverage() const : double+ getGrade() const : char+ getRank() const : int+ print() const : voidSo, you will take the information for each student in the file and calculate the numeric average, letter grade, and ranking of each student.Here is an example of how you would do the calculation for the following record:Cati 10009.59.08.58.08.587.092.586.0The lowest quiz is 8.0, so the quiz average would be: (9.5+9.0+8.5+8.5)/4.0=8.875*10=88.75The first midt3rm average: 87.0The second midt3rm average: 92.5The final average: 86.0Final course average would be:Quizzes: 20% Ex@m 1: 20%Ex@m 2: 20% Final: 40%88.75*.20+87.0*0.20+92.5*0.20+86.0*.40=88.05After that, your program should display a menu that allows you to print out course report information. Those options will be:1. A course report in order of numeric averages (If students have the same average, you want to print out the student with the lowest ID number first)2. A course report in order of first names (If students have the same name, you want to print out the student with the lowest ID number first)3. The statistics of the class, such as the number of students in the course, the average of all numeric grades, and the distribution of each letter grade. When you display the distribution of letter grades, you should use a histogram as shown in the sample result below.4. The last option will be a record finding function. In other words, if a user enters a first name, your program should provide information about the student if a student with that name exists. If there are several students with the same name, your program should display all their records.Sample Input FileThe following presents a sample input data file.Sarah 10009.59.08.58.08.587.092.586.0Ana 200010.06.710.010.010.0100.0100.0100.0Lee 30006.98.08.08.08.080.080.080.0Ana 15008.09.07.06.58.083.077.080.0Diego 25005.05.05.03.55.050.050.050.0A sample run of your program should look like below. Note that the users inputs are highlighted in bold.Enter an input file: proj1_test_case.txt--------------------------------------------------Course Report Options--------------------------------------------------1. Print in numerical average order2. Print in first name order3. Print course statistics4. Record Finder Choose any other option to quit.--------------------------------------------------Selection: 2----------------------------------------------------------------------------------------------------Course Report: First Name Order--------------------------------------------------Ana 1500-80.00(B)(rank: 3)Ana 2000-100.00(A)(rank: 1)Diego 2500-50.00(F)(rank: 5)Lee 3000-80.00(B)(rank: 3)Sarah 1000-88.05(B)(rank: 2)----------------------------------------------------------------------------------------------------Course Report Options--------------------------------------------------1. Print in numerical average order2. Print in first name order3. Print course statistics4. Record Finder Choose any other option to quit.--------------------------------------------------Selection: 1----------------------------------------------------------------------------------------------------Course Report: Numerical Average Order--------------------------------------------------Ana 2000-100.00(A)(rank: 1)Sarah 1000-88.05(B)(rank: 2)Ana 1500-80.00(B)(rank: 3)Lee 3000-80.00(B)(rank: 3)Diego 2500-50.00(F)(rank: 5)----------------------------------------------------------------------------------------------------Course Report Options--------------------------------------------------1. Print in numerical average order2. Print in first name order3.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!