Write a program to read in student grades, analyze them, sort them, and output them with various statistics.
I will provide the file to read from.
**Information about the INPUT file format:**
The input file contains two sections:
Meta-data: (these are the first three lines in the **[url removed, login to view])**
* the number of quizzes and tests (2 non-negative)
* the values of the quizzes and tests (several positive)
* the weights of the quizzes and tests (several positive)
Data: (these are the remaining lines in the **[url removed, login to view])**
* an ID (a 5-char string)
* the section number (a 5-digit positive int)
* the quiz scores (several 1-digit non-negative int)
* the test scores (several max 2-digit non-negative int)
* the extra-credit score (a non-negative double)
Your program must read the meta-data and data (provide a separate method **readStudentData** as declared at end of these instructions) , compute two different total grades and a letter grade for each student, and output several statistics about each of the students. Also compute the whole class statistics as listed below.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Installation package that will install the software (in ready-to-run condition) on the platform(s) specified in this bid request.
3) Exclusive and complete copyrights to all work purchased. (No GPL, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site).
4) Document and make comments (//) for each important line to explain what it is and why it's there in the program.
Statistics for each student:
* an ID (a 5-char string)
* the section number (a 5-digit int)
* the quiz scores (several 1-digit int)
* the test scores (several max 2-digit int)
* the extra-credit score (a double)
* **Total1**: total quiz and test score as a percent (a double)
* **Total2**: total quiz, test, and extra-credit score as a percent (a double)
* letter grade (a char)
* optional + (a char)
(if the extra credit resulted in a better letter grade **and** the student wasn't demoted)
* optional - (a char)
(if the student was demoted because of the component rule)
Round **Total1**, and **Total2** to **two** decimal places, and output all values to **two** decimal places.
The letter grade assignments are the common ones:
| **Score** | **Grade** |
| >= 90% | A |
| >= 80% & < 90% | B |
| >= 70% & < 80% | C |
| >= 60% & < 70% | D |
| < 60% | F |
There are two components to the grading. The first component consists of the projects (**Total1**). The second component consists of the quizzes and the tests (**Total2**).
A student must have a C or better in **both** components to get a B or better in the course. A student must have a D or better in **both** components to get a C or better in the course. The above rules are only to affect B and Cstudents.
The method analyse()computes all of the above [url removed, login to view] method sort() sorts first by **letter grade** and then **stably** by **Total2** and **ID**. The method write() outputs the student records separating the records into paragraphs with a new header for every **letter grade** change.
**Important:** For **complexity** and **memory usage** estimates consider the number of **elements** to be the number of **students**.
**Files ??" I will provide a few interfaces, documentation and implementation files. Use StringTokenizer method in [url removed, login to view] package to let parse each line of data in file.**
Statistics for whole class:
* Size - number of students (an int)
* Min- lowest of the **Total2** values (a double)
* Max- highest of the **Total2** values (a double)
* Mean- average of the **Total2** values (a double)
* GPA- the GPA of the whole class (a double)
(A = 4pts, B = 3pts, C = 2pts, D = 1pt, & F = 0pts)
Must be able to run on Windows XP Pro Ed. and on JGRASP compiler.