Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
### IntelliJ IDEA ###
.idea/
out/
!**/src/main/**/out/
!**/src/test/**/out/
Expand Down Expand Up @@ -26,4 +27,4 @@ bin/
.vscode/

### Mac OS ###
.DS_Store
.DS_Store
3 changes: 0 additions & 3 deletions .idea/.gitignore

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/misc.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

219 changes: 219 additions & 0 deletions src/DeanOffice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
import java.util.*;
import java.util.random.RandomGenerator;

/**
* Этот класс Деканат нужен для управления студентами.
*/
public class DeanOffice {
private List<Students> studentDataBase = new ArrayList<>();

DeanOffice(){}

/**
* Случайное заполнение имен и групп студентов
* @param countRandomStudents Количество студентов, сгененрированых псевдослучайно.
* @param groupCount Количество групп студентов.
* @param subjects Предметы курса.
*/
DeanOffice(int countRandomStudents, int groupCount, String[] subjects){
for (int i = 0; i < countRandomStudents; i++){
Map<String, Integer> mapEvaluations = new HashMap<>();
for (String str : subjects){
mapEvaluations.put(str, RandomGenerator.getDefault().nextInt(2,6));
}

Students student = new Students("student #"+i,
"group #"+RandomGenerator.getDefault().nextInt(groupCount+1),
RandomGenerator.getDefault().nextInt(1,7),
mapEvaluations);
}
}

/**
* По умолчанию групп 3.
* @param countRandomStudents Количество студентов, сгененрированых псевдослучайно.
* @param subjects Предметы курса.
*/
DeanOffice(int countRandomStudents, String[] subjects){
for (int i = 0; i < countRandomStudents; i++){
Map<String, Integer> mapEvaluations = new HashMap<>();
// заполняем Map случайными оценками
for (String str : subjects){
mapEvaluations.put(str, RandomGenerator.getDefault().nextInt(2,6));
}

Students student = new Students("student #"+i,
"group #"+RandomGenerator.getDefault().nextInt(4),
RandomGenerator.getDefault().nextInt(1,7),
mapEvaluations );
addStudentInStudentDataBase(student);
}
}

/**
* @param countRandomStudents Количество студентов, сгененрированых псевдослучайно.
* @param names массив имен. Из него будет случайно браться имена для студентов.
* @param groups массив груп. Из него будет случайно браться названия групп для студентов.
* @param courses массив номеров курса. Из него будет случайно браться номера для определения курса студента.
* @param subjects массив предметов. Из него будет случайно браться названия предметов для студента.
*/
DeanOffice(int countRandomStudents, String[] names, String[]groups, int[]courses, String[] subjects){
for (int i = 0; i < countRandomStudents; i++){
Map<String, Integer> mapEvaluations = new HashMap<>();
// заполняем Map случайными оценками
for (String str : subjects){
mapEvaluations.put(str, RandomGenerator.getDefault().nextInt(2,6));
}
Students student = new Students(names[RandomGenerator.getDefault().nextInt(names.length)],
groups[RandomGenerator.getDefault().nextInt(groups.length)],
courses[RandomGenerator.getDefault().nextInt(groups.length)],
mapEvaluations);
addStudentInStudentDataBase(student);
}
}

/**
* Генерирует countRandomStudents студентов.
* @param countRandomStudents Количество студентов, сгененрированых псевдослучайно.
* @param names массив имен. Из него будет случайно браться имена для студентов.
* @param groups массив груп. Из него будет случайно браться названия групп для студентов.
* @param courses массив номеров курса. Из него будет случайно браться номера для определения курса студента.
* @param subjects массив предметов. Из него будет случайно браться названия предметов для студента.
* @param estimations массив оценок. Из него будет случайно браться оценки по предметам студента.
*/
DeanOffice(int countRandomStudents, String[] names, String[]groups, int[]courses,
String[] subjects, int[] estimations)
{
for (int i = 0; i < countRandomStudents; i++){
Students student = new Students(names[RandomGenerator.getDefault().nextInt(names.length)],
groups[RandomGenerator.getDefault().nextInt(groups.length)],
courses[RandomGenerator.getDefault().nextInt(groups.length)],
subjects,estimations);
studentDataBase.add(student);
}
}

public void setStudentDataBase(List<Students> studentDataBase){
this.studentDataBase = studentDataBase;
}
/**
* Добавить объект студент в базу данных.
* @param student объект студент.
*/
public void addStudentInStudentDataBase(Students student){
this.studentDataBase.add(student);
}

/**
* Добавить студента по имени, группе, курсу, предметам.
* @param name имя студента.
* @param group группа студента.
* @param course номер курса.
* @param subjects предметы студента.
*/
public void addStudentInStudentDataBase(String name, String group, int course, String[] subjects){
Students student = new Students(name, group, course, subjects);
addStudentInStudentDataBase(student);
}
public void addStudentInStudentDataBase(String name, String group, int course, String[] subjects, int[] estimations){
Students student = new Students(name, group, course, subjects, estimations);
addStudentInStudentDataBase(student);
}

/**
* Получение массива студентов.
* @return список студентов.
*/
public List<Students> getStudentDataBase(){
return studentDataBase;
}

/**
* Функция, которя удаляет студентов со средним баллом <3.
* @return количество удаленных студентов из списка. Или -1 если список студентов пуст
*/
public int delBadStudents(){
return delBadStudents(studentDataBase);
}

/**
* Функция, которя удаляет студентов со средним баллом <3.
* @param studs Список студентов
* @return количество удаленных студентов из списка. Или -1 если список студентов пуст
*/
public int delBadStudents(List<Students> studs){
if (studs.isEmpty()){
return -1;
}
int oldStudentSize = studs.size();
List<Students> temp = new ArrayList<>();
for (Students stud : studs){
int sum = 0;
if (stud.getEvaluations().isEmpty()) { //если у студента нет оценок, то его в temp не добавляем
continue; //Скипаем к следующему
}
for (Integer it : stud.getEvaluations().values()) { // берем оценки
sum += it;
}
int avgEvalutation = sum / stud.getEvaluations().size();
if (avgEvalutation >= 3) {
/*здесь catch на деление на ноль не нужен,
ибо в первом if мы исключаем пустой список*/
temp.add(stud);
}
}
this.setStudentDataBase(temp);
return oldStudentSize - temp.size();
}


/**
* Могут перевестись на курс старше
* @param studs Список студентов
* @return количество студентов которые перевелись. Или -1 если список студентов пуст
*/
public int transferToOlderCourse(List<Students> studs){
if (studs.isEmpty()){
return -1;
}
int promotedStudents = 0;
for (Students stud : studs){
int sum = 0;
if (stud.getEvaluations().isEmpty()) { //если у студента нет оценок, то его в temp не добавляем
continue; //Скипаем к следующему
}
for (Integer it : stud.getEvaluations().values()) {
sum += it;
}
if (sum / stud.getEvaluations().size() >= 3) {
/*здесь catch на деление на ноль не нужен,
ибо в первом if мы исключаем пустой список*/
stud.setCourse(stud.getCourse()+1);
promotedStudents++;
}
}
this.setStudentDataBase(studs);
return promotedStudents;
}
/**
* Могут перевестись на курс старше
* @return количество студентов которые могут перевестись. Или -1 если список студентов пуст
*/
public int transferToOlderCourse(){
return transferToOlderCourse(studentDataBase);
}
public void printStudents(List<Students>students, int course){
for (Students stud: students){
if (stud.getCourse()==course){
System.out.println(stud.getName() + " | "+stud.getCourse() + " | "+stud.getGroup() + " | " + stud.getStringEvaluations());
}
}
}


public void printAllStudents(){
for (Students stud: this.getStudentDataBase()){
System.out.println(stud.getName() + " | "+stud.getCourse() + " | "+stud.getGroup() + " | " + stud.getStringEvaluations());
}
}
}
38 changes: 27 additions & 11 deletions src/Main.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,31 @@
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.

import java.util.random.RandomGenerator;

public class Main {
/**
* Это основной метод, использующий методы классов.
* @param args Не используется.
*/
public static void main(String[] args) {
//TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text
// to see how IntelliJ IDEA suggests fixing it.
System.out.printf("Hello and welcome!");
/**
* Я как обычно лишний раз замарочился
* пополнение List'a со студентами пополсянется несколькими способами.
* Либо мы передаем параметры в функцию и внутри этой функции создается объект класса Students и помещается
* в List или мы передаем сам объект класса Students и внутри
*/
DeanOffice dean = new DeanOffice();
String[] subjects = {"Русский", "Математика", "Информатика"};
dean.addStudentInStudentDataBase("Аня", "ИТСС", 1, subjects, new int[] {2,2,3});
dean.addStudentInStudentDataBase("Глеб", "ЖТО", 2, subjects, new int[] {3,3,3});
dean.addStudentInStudentDataBase("Боря", "ЖТО", 3, subjects, new int[] {4,4,3});
dean.addStudentInStudentDataBase("Ира", "ИТСС", 3, subjects, new int[] {5,5,5});

for (int i = 1; i <= 5; i++) {
//TIP Press <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
// for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
System.out.println("i test git= " + i);
}
dean.printAllStudents();
System.out.println("Студенты 3-го курса");
dean.printStudents(dean.getStudentDataBase(),3);
System.out.println("Удаляем " + dean.delBadStudents() + " студентов, со средним баллом <3.");
dean.printAllStudents();
System.out.println("Переводим " + dean.transferToOlderCourse() + " студентов со средним балом >=3 на курс старше");
dean.printAllStudents();
}
}
}
Loading