Suppose at the end of the semester, there is a file “scores.dat” recording scores each student…

DART PROGRAMMING LANGUAGE

Problem : Suppose at the end of the semester, there is a file "scores.dat" recording scores each student has earned so far from closed lab assignments (CLA), open lab assignments (OLA), quizzes, exams, and final exam score. You can assume there are no more than 30 students. The final letter grade is decided according to the following table based on the total points they have earned:

Total Points

Total Points

>=90

A

>=70, but

C-

>=87, but

B+

>=67, but

D+

>=83, but

B

>=63, but

D

>=80, but

B-

>=60, but

D-

>=77, but

C+

F

>=73, but

C

In this assignment, you are asked to write a program to calculate student final letter grades as well as the average and highest scores of CLA, OLA, quizzes, exams, and final exam scores, respectively. The final result should be printed to the screen (standard output).

Requirements: You must use the language Dart At the beginning of the program, your program should give the user a prompt for the name of the data file which contains the records of student grades. Define a class Student, which includes student id, scores for CLA, OLA, quizzes, exams, final scores, total points, and letter grade. All member data must be private. The class must provide a function to calculate the final letter grade. Define a class Roster, which has an associative array (other similar data structures like map, hash map are also fine) to store all Student objects. Define appropriate methods in the class to calculate, update, and query individual student information as well as required statistic information of all students. Your program should allow users to perform two queries. For each query, the user inputs C#, and your program should print all information (including his/her final letter grade) of the student with the given C#. After two queries, your program print information of all students as well as the average and highest scores of CLA, OLA, quizzes, exams, and final exam on the screen.

Make sure that your program has the proper documentation (program heading, variable explanation, description/input/output for each user defined function, explanation for logically related statements, etc), and style for good program readability and modifiability.