Newer
Older
import enumeration.BachelorSemester;
import enumeration.Gender;
public class Student extends UniversityMember implements Calcuable {
// no static because variables don't make any sense without the created object
private boolean paidFees;
private BachelorSemester bachelorSemester;
private Map<Course, Mark> grades = new HashMap<>();
public Student(int id, Gender gender, String firstName, String lastName, String placeOfResidence, String birthPlace,
String officialEmail, String privateEmail, List<Course> personalCourses,
Status status, BachelorSemester bachelorSemester) {
super(id, gender, firstName, lastName, placeOfResidence, birthPlace,
this.initGrades();
}
private void initGrades() {
for (Course course : this.getPersonalCourses()) {
grades.put(course, null);
}
public boolean setGrade(Course course, Mark mark) {
if (isSignedUpForCourse(course)) {
grades.replace(course, mark);
return true;
}
return false;
}
public Map<Course, Mark> getGrades() {
public boolean increaseSemester() {
if (paidFees) {
bachelorSemester.increaseSemester();
return true;
} else {
return false;
}
}
public double calculateAverage() {
double average = 0.0;
int counter = 0;
for (Map.Entry<Course, Mark> grade : grades.entrySet()) {
if (grade.getValue() != null) {
Mark temp = grade.getValue();
average += temp.getValue();
counter++;
}
}
return average / counter;
public int calculateMedian() {
List<Mark> markList = new ArrayList<>();
int median = 0;
for (Map.Entry<Course, Mark> grade : grades.entrySet()) {
if (grade.getValue() != null) {
markList.add(grade.getValue());
}
}
markList.sort(Comparator.comparing(Mark::getValue));
median = (int) markList.get(markList.size() / 2).getValue();
if (markList.size() % 2 == 0)
median = (int) ((median + markList.get(markList.size() / 2 - 1).getValue()) / 2);
return median;