You have been instructed to develop a standalone Student Grade Manager application using Java.

The application, called the Student_Grade_Manager maintains student marks for one course. The records are stored in a file under the name courseslist.txt. Besides allowing record maintenance, the Student Grade Manager shall provide simple reporting and statistical analysis of grade trends across courses and classes. A sample of the file in CSV format follows:

ITM100
SAM ALBION,3426650,17,11,12,34
NICK ALLEN,2501120,20,12,13,29
JACK AMES,7346600,15,10,8,10 Etc.

1. At a class or global level, declare and initialize 5 parallel class level arrays into appropriate data types: name[],studentID[], assign1[], assign2[], midterm[] & final[]. You can assume a max of a 1,000 students (between 0 and 999). Also declare separate fname[], lname[], mark[], & grade[] arrays as well as a count variable globally.

2. From a main method:

  • Read in the course name on the first line.
  • Read in the line data and split the records into separate fields and populate the above arrays. Keep track of the total count of students you are reading in. (file has unknown amount)
  • Calculate the mark[] by adding up the sub marks (all are worth 20% except the final is 40%)
  • Calculate a letter grade by calling a method named gradeMK() which returns and stores information in grade[]:
mark grade:
Case Is >= 90 GradeMK = "A+"
Case Is >= 85 GradeMK = "A"
Case Is >= 80 GradeMK = "A-"
Case Is >= 77 GradeMK = "B+"
Case Is >= 73 GradeMK = "B"
Case Is >= 70 GradeMK = "B-"
Case Is >= 67 GradeMK = "C+"
Case Is >= 63 GradeMK = "C"
Case Is >= 60 GradeMK = "C-"
Case Is >= 57 GradeMK = "D+"
Case Is >= 53 GradeMK = "D"
Case Is >= 50 GradeMK = "D-"
Case Else GradeMK = "F"
  • Keep track of the total sum of total marks you are reading in.
  • Split up the name[] and populate the fname[] and lname[] arrays. Uppercase first character and LowerCase the rest.
  • Have a console output show the following results after the loop using the sample format below:
The total number of students read in was 42.
The mean was 63.5 or a C.
The standard deviation was 17.54.
Highest Mark was 88%.
Lowest Mark was 35%.
  • Populate the full list as per following sample (do not worry about background colour): See image.

3. From the main method call a separate adjustMarks() method. Due to a low class average, the Course Coordinator wants to implement a mark increase using the following bell structure. To do this, write code to a temporary.txt file with the new mark. The data file should look exactly the same as the old, but with the new marks present. (Keep the original student names as the original file.)

The total mark increase logic is as follows:

If the current mark is: The new mark is:
>=80 110 % of the old mark
>=65 120 % of the old mark
>=50 130 % of the old mark
>=0 140 % of the old mark

Rerun the report.

4. From the main method call a separate filteredReport() method that filters the contents of the arrays. User will be asked to see all marks greater than an amount that they will specify using an inputbox (Ask for the query mark before you start generating the report).

5. From the main method call a separate findStudent() method. Ask the user for a studentID to look up and display the information as per below example to the console:

Name: NICK ALLEN
First Name: Nick
Last Name: Allen
Student ID: 2501120
Assignment #1: 20
Assignment #2: 12
Midterm: 13
Final: 29
Mark: 88.8
Grade: A
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.