CECS 277
LAB ASSIGNMENT #8
Assigned date: 3/23
Due date: 4/6
15 points
Write a program that keeps a map in which the keys of the map are objects of class Student. A student should have a first name, a last name, and a unique integer student identification. For the final grade (A, B, C, D, F, or W) changes and removals, lookup should be by student identification. Prompt the user of the program to add or remove students, to modify the grade, or to print all the grades including student names. The printout should be sorted by last name. If two students have the same last name, then use the first name as a tie breaker. If the first names are also identical, then use the integer student identification. Supply compatible hashCode and equals methods to the Student class. Test the hash code by adding the Student objects to a hash set.
Implementing the following methods:
- public static printMenuAndGetChoice()
- /**
Adds a student based on user input. Prints an error if a student
is added that already exists in the map.
@param GradeMap the map to associate student object with a grade
@param StudentMap the map to associate student id with an student.
*/
- /**
Removes a student from the map based on user input
@param GradeMap the map to associate student object with a grade.
@param StudentMap the map to associate student id with an student.
*/
- /**
Modifies an entry based on user input. Prints an error if an invalid student is modified.
@param GradeMap the map to associate student object with a grade.
@param StudentMap the map to associate student id with a student.
*/
- /**
Prints the students and grades
@param gradeMap the map to print
*/
Hint:
- Use two maps.
- Calculates a hashcode by combining the hashcodes of the instance variables.
@return a hashcode dependant on the instance variables
*/
public int hashCode()
{
final int HASH_MULTIPLIER = 29;
int h = HASH_MULTIPLIER * firstName.hashCode() + lastName.hashCode();
h = HASH_MULTIPLIER * h + ((Integer)id).hashCode();
return h;
}
GRADING
- Be ready to demonstrate the result and answer some questions about the lab assignment.