add the complete code for lab4

This commit is contained in:
dymik739 2023-05-20 18:01:28 +03:00
parent ec1d3841a6
commit ec087856b6
2 changed files with 231 additions and 0 deletions

100
labs/4/Group.java Normal file
View File

@ -0,0 +1,100 @@
/*
* %W% %E% Dymik739
* Email: dymik739@109.86.70.81
*
* Copyright (C) 2023 FIOT Dev Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import java.util.Arrays;
/**
* Group class defines a representation of a university group with students
* that can be used as a convenient structure to look at students' statistics.
*
* @version 0.1 20 May 2023
* @author Dymik739
*/
public class Group {
/**
* Main method which should be executed at the start of this application.
*
* @since 0.1
*/
public static void main() {
Student[] studentList = {
// name, results, motivation%, ability%, course
new Student("Davie", 16.3, 93.5, 98.9, 5),
new Student("Terry", 99.4, 49.3, 73.2, 7),
new Student("Mark", 67.9, 15.5, 7.8, 4),
new Student("Rand", 85.5, 82.6, 99.9, 12),
new Student("Steve", 1.2, 99.8, 99.2, 1)
};
System.out.println("Original students array:");
printStudents(studentList);
Arrays.sort(studentList, (o1, o2) -> o1.getName().compareTo(o2.getName()));
System.out.println("\nArray, sorted by students' name:");
printStudents(studentList);
Arrays.sort(studentList, (o1, o2) ->
compareDouble(o2.getResults(), o1.getResults()));
System.out.println("\nArray, sorted by the reverse of students' " +
"score results:");
printStudents(studentList);
System.out.println("\nAs we can clearly see, " +
studentList[studentList.length-1].getName() + " with " +
studentList[studentList.length-1].getMotivationPercent() +
"% of motivation and " +
studentList[studentList.length-1].getLearningAbilitiesPercent() +
"% ability to learn will be the one who is kicked " +
"from this university, because such is our life.");
}
/**
* Outputs to stdout a given array of students in a fancy way.
*
* @param array array to print out
*/
private static void printStudents(Student[] array) {
for (Student s : array) {
System.out.println(s);
}
}
/**
* Compares numbers of type Double
*
* @param i1 first number
* @param i2 second number to compare
* @return if the first argument is greater, 1 is returned
* if the second argument is greater, -1 is returned
* if the arguments are equal, 0 is returned
*/
private static int compareDouble(double i1, double i2) {
if (i1 > i2) {
return 1;
} else if (i1 < i2) {
return -1;
} else {
return 0;
}
}
}

131
labs/4/Student.java Normal file
View File

@ -0,0 +1,131 @@
/*
* %W% %E% Dymik739
* Email: dymik739@109.86.70.81
*
* Copyright (C) 2023 FIOT Dev Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* represents a student with generic terms and phrases to let programmers
* write more readable code.
*
* @author Dymik739
* @version 0.1
* @since 0.1
*/
public class Student {
/**
* name of the student
*/
private String name;
/**
* overall ranking the student gets after finishing all courses
*/
private double results;
/**
* a reasonable variable showing student motivation. The higher this
* number is, the better this student studies.
*/
private double motivationPercent;
/**
* general ability to learn which directly affects learning speed.
*/
private double learningAbilities;
/**
* shows the amount of subjects this student is studying.
*/
private int chosenCoursesAmount;
/**
* This constructor lets you create the Student class right away
*
* @param name the name of this student
* @param results starting point for the overall ranking score of this
* student
* @param motivationPercent this student motivation level. Higher values
* allow for more jobs taken consecutively.
* @param learningAbilities directly affect learning speed of this student
* @param chosenCoursesAmount amount of courses chosen by this student.
* Roughly shows the load being put on them
* @since 0.1
*/
public Student(String name, double results, double motivationPercent,
double learningAbilities, int chosenCoursesAmount) {
this.name = name;
this.results = results;
this.motivationPercent = motivationPercent;
this.learningAbilities = learningAbilities;
this.chosenCoursesAmount = chosenCoursesAmount;
}
/**
* This method allows you to print out the student object in a nice way.
*
* @since 0.1
*/
@Override
public String toString() {
return "Student(name = '" + this.name + "', results = " + this.results +
", motivationPercent = " + this.motivationPercent +
", learningAbilities = " + this.learningAbilities +
", chosenCoursesAmount = " + this.chosenCoursesAmount + ")";
}
/**
* Getter for the private name field of this class
*
* @return String containing this student's name
* @since 0.1
*/
public String getName() {
return this.name;
}
/**
* Getter for the private results field of this class
*
* @return double representing final score of the student
* @since 0.1
*/
public double getResults() {
return this.results;
}
/**
* Getter for the private motivationPercent field of this class.
*
* @return double representing strenght of this student's motivation to
* learn
* @since 0.1
*/
public double getMotivationPercent() {
return this.motivationPercent;
}
/**
* Getter for the private motivationPercent field of this class.
*
* @return double representing how quickly this student can learn
* @since 0.1
*/
public double getLearningAbilitiesPercent() {
return this.learningAbilities;
}
}