Description

Implement a simple grade management program. Grades are stored as real number grade points (4.0, 3.7, 3.3...0.0). Array elements that are occupied will contain a grade within this range. For example, this array would be assumed to contain 4 grades (values outside the valid range represent 'unoccupied' elements): 3.3, 4.0, 2.7, 0, -1, -1, -1... The program includes basic statistical generation (average) and visualization of the data (query for the highest and the lowest grade). There is no requirement for including user input of the grades but the program must include the ability to initialize grades (hard-coded or random). The program will employ a text-based menu-driven interface.

Technical details

The program consists of 3 classes:

  • Driver: starting execution point.
  • UserInterface: responsible for displaying all menus, getting user input and determining the appropriate course of action.
  • Manager: stores the grades (1D array of double: maximum of 40 elements). While the user-interface class may be responsible for determining which option was selected by the user (e.g., display list, find highest grade etc.) only the manager class that can directly access or change the grade information. That's because the information (grades) is a property of the manager, the grade information is what the manager manages.

Program features

Some of the marks you are awarded will be determined by your adherence to the stylistic conventions taught in class as well your program documentation. Also all output should not only be correct but the results should be clear, reasonably neat and presentable. The real number portion of a grade should only be displayed to one place of precision (e.g. 3.0 and not 3.00). The bulk of your credit will come from implementing the following features.

  • Array has each element initialized to starting value outside the range of valid values (e.g., -1).
  • A main menu of program options is displayed: average grade, display grades, find highest, find lowest, random and fixed initialization of list, the ability to quit the program.
  • Get user selection (of the options at the main menu).
  • Program runs until the user selects the option to quit the program (display menu, get user input, execute user selected option...this cycle repeats until the user quits).
  • Display the contents of the list (you only get credit for one version)
    • Basic version: displays all the grades in the list.
    • Advanced version: only displays list elements that contains a valid grade i.e., if the list only contains 10 grades then only the first 10 elements will be displayed. The ability to only display occupied elements should be determined by the actual number of occupied elements at run-time and not set to a hard-coded value.
  • Assign a fixed grade of 2.0 to all array elements. Previous values are overwritten.
  • Assign grades to the first 10 list element randomly. To make it simple randomly assigned grades can consist only of integer values ranging from zero to four. Previous values are overwritten.
  • Calculate and display the average grade.
  • Determine and display the highest grade in the list.
  • Determine and display the lowest grade in the list.

UML class diagram

You should create a UML diagram for class "Manager" and class "UserInterface". All information for a class should be specified (e.g., attributes, methods, parameters, return values, permission levels). Also the relationship between the two classes include multiplicity (see the notes which introduce Object-Oriented concepts) should be specified. The class diagram can be drawn using any structured drawing program (even PowerPoint).

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.