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
19 changes: 19 additions & 0 deletions coolName/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>programming-lab-example</artifactId>
<groupId>ru.spbstu.insys</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>coolName</artifactId>

<properties>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
</properties>

</project>
87 changes: 87 additions & 0 deletions coolName/src/main/java/GroupOfStudents.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
import java.util.*;


public class GroupOfStudents {
private final Map<String, HashMap> rating = new HashMap<>();

public int size() {
return rating.size();
}

void addStudent (String student, String subjects) {
if (student.isBlank() || rating.containsKey(student))
throw new IllegalArgumentException();
else {
Map<String, String> allSubjects = new HashMap<>();
String[] items = subjects.split(", ");
for(String item: items) {
if (item.split(" ").length < 2)
allSubjects.put(item.split(" ")[0], " ");
else
allSubjects.put(item.split(" ")[0], item.split(" ")[1]);
}
rating.put(student, (HashMap) allSubjects);
}
}

void deleteStudent (String student) {
if (student.isBlank() || !rating.containsKey(student))
throw new IllegalArgumentException();
rating.remove(student);
}

void changeMark (String student, String subject, int mark) {
if (student.isBlank() || subject.isBlank() || mark <= 0 || !rating.containsKey(student))
throw new IllegalArgumentException();
Map<String, String> items = rating.get(student);
items.put(subject, Integer.toString(mark));
rating.put(student, (HashMap) items);
}


void addMark (String student, String subject, int mark) {
if (student.isBlank() || subject.isBlank() || mark <= 0 || !rating.containsKey(student))
throw new IllegalArgumentException();
Map<String, String> items = rating.get(student);
items.put(subject, Integer.toString(mark));
rating.put(student, (HashMap) items);
}

void deleteMark (String student, String subject) {
if (student.isBlank() || subject.isBlank() || !rating.containsKey(student))
throw new IllegalArgumentException();
Map<String, String> items = rating.get(student);
if (!items.containsKey(subject)) throw new IllegalArgumentException();
if (!items.get(subject).equals(" ")) items.put(subject, " ");
rating.put(student, (HashMap) items);
}

public String search(String student) {
if (student.isBlank() || !rating.containsKey(student))
throw new IllegalArgumentException();
return rating.get(student).toString();
}

void deleteSubject (String subject) {
if (subject.isBlank())
throw new IllegalArgumentException();
for (Map.Entry<String, HashMap> entry : rating.entrySet()) {
String student = entry.getKey();
Map<String, String> items = rating.get(student);
items.remove(subject);
rating.put(student, (HashMap) items);
}
}

void addSubject (String subject) {
if (subject.isBlank())
throw new IllegalArgumentException();
for (Map.Entry<String, HashMap> entry: rating.entrySet()) {
String student = entry.getKey();
Map<String, String> items = rating.get(student);
items.put(subject, " ");
items.remove("");
rating.put(student, (HashMap) items);
}
}
}
101 changes: 101 additions & 0 deletions coolName/src/test/java/GroupOfStudentsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class GroupOfStudentsTest {


private GroupOfStudents testGroup() {
GroupOfStudents exampleGroup = new GroupOfStudents();
exampleGroup.addStudent("Макаров Иван Дмитриевич", "Биология 5, Фармацевтика 3, Политология 1");
exampleGroup.addStudent("Мартынов Аскольд Никитевич", "Биология 5, Фармацевтика 3");
exampleGroup.addStudent("Алексеев Юлий Станиславович", "Фармацевтика 3, Политология 1");
exampleGroup.addStudent("Соловьёв Велор Владленович", "Фармацевтика 3, Философия");
return exampleGroup;
}

@Test
void addStudent() {
GroupOfStudents exampleGroup = testGroup();
exampleGroup.addStudent("Веселов Венедикт Донатович", "Биология 5, Философия 4, Геометрия 2");
assertEquals("{Геометрия=2, Биология=5, Философия=4}",
exampleGroup.search("Веселов Венедикт Донатович"));
assertThrows(IllegalArgumentException.class,
() -> exampleGroup.addStudent("Веселов Венедикт Донатович", "Биология 5, Философия 4, Геометрия 2"));
assertThrows(IllegalArgumentException.class,
() -> exampleGroup.addStudent("", "Биология 5, Фармацевтика 3, Политология 1"));
}

@Test
void deleteStudent() {
GroupOfStudents exampleGroup = testGroup();
exampleGroup.deleteStudent("Макаров Иван Дмитриевич");
assertEquals(3, exampleGroup.size());
assertThrows(IllegalArgumentException.class, () -> exampleGroup.deleteStudent(""));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.deleteStudent("Павлов Сергей Кимович"));
}

@Test
void addMark() {
GroupOfStudents exampleGroup = testGroup();
exampleGroup.addStudent("Павлов Сергей Кимович", "Биология 5, Геометрия, Философия 4");
exampleGroup.addMark("Соловьёв Велор Владленович", "Философия", 4);
exampleGroup.addMark("Павлов Сергей Кимович", "Геометрия", 5);
assertEquals("{Геометрия=5, Биология=5, Философия=4}", exampleGroup.search("Павлов Сергей Кимович"));
assertEquals("{Фармацевтика=3, Философия=4}", exampleGroup.search("Соловьёв Велор Владленович"));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.addMark("", "Геометрия", 5));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.addMark("Павлов Сергей Кимович", "", 5));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.addMark("Павлов Сергей Кимович", "Геометрия", -1));
}

@Test
void deleteMark() {
GroupOfStudents exampleGroup = testGroup();
exampleGroup.addStudent("Павлов Сергей Кимович", "Биология 5, Геометрия 3, Философия 4");
exampleGroup.deleteMark("Павлов Сергей Кимович", "Философия");
exampleGroup.deleteMark("Соловьёв Велор Владленович", "Фармацевтика");
assertEquals("{Геометрия=3, Биология=5, Философия= }", exampleGroup.search("Павлов Сергей Кимович"));
assertEquals("{Фармацевтика= , Философия= }", exampleGroup.search("Соловьёв Велор Владленович"));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.deleteMark("", "Биология"));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.deleteMark("Соловьёв Велор Владленович", ""));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.deleteMark("Соловьёв Велор Владленович", "Политология"));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.deleteMark("Красильников Антон Геннадиевич", "Политология"));
}

@Test
void changeMark() {
GroupOfStudents exampleGroup = testGroup();
exampleGroup.changeMark("Макаров Иван Дмитриевич", "Биология", 2);
exampleGroup.changeMark("Мартынов Аскольд Никитевич", "Биология", 3);
exampleGroup.changeMark("Алексеев Юлий Станиславович", "Политология", 5);
assertEquals("{Фармацевтика=3, Биология=2, Политология=1}", exampleGroup.search("Макаров Иван Дмитриевич"));
assertEquals("{Фармацевтика=3, Биология=3}", exampleGroup.search("Мартынов Аскольд Никитевич"));
assertEquals("{Фармацевтика=3, Политология=5}", exampleGroup.search("Алексеев Юлий Станиславович"));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.changeMark("", "Политология", 4));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.changeMark("Алексеев Юлий Станиславович", "", 4));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.changeMark("Красильников Антон Геннадиевич", "Фармацевтика", 4));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.changeMark("Алексеев Юлий Станиславович", "Фармацевтика", -4));
}

@Test
void deleteSubject() {
GroupOfStudents exampleGroup = testGroup();
exampleGroup.deleteSubject("Биология");
assertEquals("{Фармацевтика=3, Политология=1}", exampleGroup.search("Макаров Иван Дмитриевич"));
assertEquals("{Фармацевтика=3}", exampleGroup.search("Мартынов Аскольд Никитевич"));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.deleteSubject(""));
}

@Test
void addSubject() {
GroupOfStudents exampleGroup = testGroup();
exampleGroup.addStudent("Крюков Климент Игоревич", "");
exampleGroup.addSubject("Астрономия");
assertEquals("{Астрономия= }", exampleGroup.search("Крюков Климент Игоревич"));
assertEquals("{Фармацевтика=3, Астрономия= , Биология=5, Политология=1}", exampleGroup.search("Макаров Иван Дмитриевич"));
assertEquals("{Фармацевтика=3, Астрономия= , Биология=5}", exampleGroup.search("Мартынов Аскольд Никитевич"));
assertEquals("{Фармацевтика=3, Астрономия= , Политология=1}", exampleGroup.search("Алексеев Юлий Станиславович"));
assertEquals("{Фармацевтика=3, Астрономия= , Философия= }", exampleGroup.search("Соловьёв Велор Владленович"));
assertThrows(IllegalArgumentException.class, () -> exampleGroup.addSubject(""));
}
}
Binary file added coolName/target/classes/GroupOfStudents.class
Binary file not shown.
Binary file not shown.
8 changes: 6 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@

<groupId>ru.spbstu.insys</groupId>
<artifactId>programming-lab-example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>coolName</module>
</modules>

<properties>
<properties>
<jvm.version>11</jvm.version>
<junit.jupiter.version>5.8.2</junit.jupiter.version>
<maven.compiler.source>${jvm.version}</maven.compiler.source>
Expand Down