First Commit
This commit is contained in:
59
Lab2/src/main/java/org/lumijiez/Main.java
Normal file
59
Lab2/src/main/java/org/lumijiez/Main.java
Normal file
@@ -0,0 +1,59 @@
|
||||
package org.lumijiez;
|
||||
|
||||
import org.lumijiez.base.Grade;
|
||||
import org.lumijiez.base.NameSurnameGroup;
|
||||
import org.lumijiez.data.DataDeserializer;
|
||||
import org.lumijiez.data.DataSerializer;
|
||||
import org.lumijiez.managers.Manager;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Main {
|
||||
public static NameSurnameGroup readNSG() {
|
||||
String name = sc.nextLine();
|
||||
String surname = sc.nextLine();
|
||||
String group = sc.nextLine();
|
||||
return new NameSurnameGroup(name, surname, group);
|
||||
}
|
||||
public static Scanner sc = new Scanner(System.in);
|
||||
public static void main(String[] args) {
|
||||
Manager studentManager = DataDeserializer.deserialize();
|
||||
|
||||
boolean exit = false;
|
||||
while (!exit) {
|
||||
System.out.println("===== Student Management System =====");
|
||||
System.out.println("1. Show Students");
|
||||
System.out.println("2. Show Groups");
|
||||
System.out.println("3. Show Grades of a Student");
|
||||
System.out.println("4. Add Grade to Student");
|
||||
System.out.println("5. Add Student");
|
||||
System.out.println("6. Remove student");
|
||||
System.out.println("7. Exit and save");
|
||||
System.out.print("Enter your choice: ");
|
||||
|
||||
int choice = sc.nextInt();
|
||||
sc.nextLine();
|
||||
|
||||
switch (choice) {
|
||||
case 1 -> studentManager.printStudents();
|
||||
case 2 -> studentManager.printGroups();
|
||||
case 3 -> studentManager.printGrades(readNSG());
|
||||
case 4 -> studentManager.addGrade(readNSG(), new Grade(sc.nextLine(), sc.nextInt()));
|
||||
case 5 -> studentManager.addStudent(readNSG());
|
||||
case 6 -> studentManager.removeStudent(readNSG());
|
||||
case 7 -> {
|
||||
DataSerializer.serialize(studentManager);
|
||||
exit = true;
|
||||
}
|
||||
default -> System.out.println("Invalid choice. Please try again.");
|
||||
}
|
||||
|
||||
if (!exit) {
|
||||
System.out.println("Press Enter to continue...");
|
||||
sc.nextLine();
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("Goodbye!");
|
||||
}
|
||||
}
|
||||
22
Lab2/src/main/java/org/lumijiez/base/Grade.java
Normal file
22
Lab2/src/main/java/org/lumijiez/base/Grade.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package org.lumijiez.base;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Grade implements Serializable {
|
||||
private final String subject;
|
||||
private final int grade;
|
||||
|
||||
public Grade(String subject, int grade) {
|
||||
this.subject = subject;
|
||||
this.grade = grade;
|
||||
}
|
||||
|
||||
public String getSubject() {
|
||||
return subject;
|
||||
}
|
||||
|
||||
public int getGrade() {
|
||||
return grade;
|
||||
}
|
||||
|
||||
}
|
||||
38
Lab2/src/main/java/org/lumijiez/base/Group.java
Normal file
38
Lab2/src/main/java/org/lumijiez/base/Group.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package org.lumijiez.base;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Group implements Serializable {
|
||||
private final String name;
|
||||
private final List<Student> students = new ArrayList<>();
|
||||
|
||||
public Group(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void addStudent(Student st) {
|
||||
students.add(st);
|
||||
}
|
||||
public void deleteStudent(Student st) {
|
||||
students.remove(st);
|
||||
}
|
||||
|
||||
public List<Student> getStudents() {
|
||||
return students;
|
||||
}
|
||||
|
||||
public Student getStudent(String name, String surname) {
|
||||
for (Student student : students) {
|
||||
if (student.getName().equals(name) && student.getSurname().equals(surname)) {
|
||||
return student;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
25
Lab2/src/main/java/org/lumijiez/base/NameSurnameGroup.java
Normal file
25
Lab2/src/main/java/org/lumijiez/base/NameSurnameGroup.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package org.lumijiez.base;
|
||||
|
||||
public class NameSurnameGroup {
|
||||
private final String name;
|
||||
private final String surname;
|
||||
private final String groupName;
|
||||
|
||||
public NameSurnameGroup(String name, String surname, String groupName) {
|
||||
this.name = name;
|
||||
this.surname = surname;
|
||||
this.groupName = groupName;
|
||||
}
|
||||
|
||||
public String name() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String surname() {
|
||||
return surname;
|
||||
}
|
||||
|
||||
public String group() {
|
||||
return groupName;
|
||||
}
|
||||
}
|
||||
50
Lab2/src/main/java/org/lumijiez/base/Student.java
Normal file
50
Lab2/src/main/java/org/lumijiez/base/Student.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package org.lumijiez.base;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Student implements Serializable {
|
||||
private final String name;
|
||||
private final String surname;
|
||||
private final String fullname;
|
||||
private Group group;
|
||||
private final List<Grade> grades = new ArrayList<>();
|
||||
|
||||
public Student(String name, String surname, Group group) {
|
||||
this.name = name;
|
||||
this.surname = surname;
|
||||
this.fullname = name + " " + surname;
|
||||
this.group = group;
|
||||
}
|
||||
|
||||
public void setGroup(Group gr) {
|
||||
this.group.deleteStudent(this);
|
||||
this.group = gr;
|
||||
gr.addStudent(this);
|
||||
}
|
||||
|
||||
public List<Grade> getGrades() {
|
||||
return grades;
|
||||
}
|
||||
|
||||
public void addGrade(Grade grade) {
|
||||
grades.add(grade);
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getSurname() {
|
||||
return surname;
|
||||
}
|
||||
|
||||
public String getFullname() {
|
||||
return fullname;
|
||||
}
|
||||
|
||||
public Group getGroup() {
|
||||
return group;
|
||||
}
|
||||
|
||||
}
|
||||
27
Lab2/src/main/java/org/lumijiez/data/DataDeserializer.java
Normal file
27
Lab2/src/main/java/org/lumijiez/data/DataDeserializer.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package org.lumijiez.data;
|
||||
|
||||
import org.lumijiez.managers.Manager;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
|
||||
public class DataDeserializer {
|
||||
public static Manager deserialize() {
|
||||
File serializedFile = new File("manager.ser");
|
||||
Manager manager = new Manager();
|
||||
if (serializedFile.exists()) {
|
||||
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(serializedFile))) {
|
||||
manager = (Manager) ois.readObject();
|
||||
System.out.println("Manager object deserialized successfully.");
|
||||
} catch (IOException | ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
System.out.println("Serialized file 'manager.ser' does not exist.");
|
||||
}
|
||||
return manager;
|
||||
}
|
||||
|
||||
}
|
||||
20
Lab2/src/main/java/org/lumijiez/data/DataSerializer.java
Normal file
20
Lab2/src/main/java/org/lumijiez/data/DataSerializer.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package org.lumijiez.data;
|
||||
|
||||
import org.lumijiez.managers.Manager;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectOutputStream;
|
||||
|
||||
public class DataSerializer {
|
||||
|
||||
public static void serialize(Manager manager) {
|
||||
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("manager.ser"))) {
|
||||
oos.writeObject(manager);
|
||||
System.out.println("Manager object serialized successfully.");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
35
Lab2/src/main/java/org/lumijiez/managers/GroupManager.java
Normal file
35
Lab2/src/main/java/org/lumijiez/managers/GroupManager.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package org.lumijiez.managers;
|
||||
|
||||
import org.lumijiez.base.Group;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GroupManager implements Serializable {
|
||||
private final List<Group> groups = new ArrayList<>();
|
||||
|
||||
public Group getGroup(String groupName) {
|
||||
for (Group group : groups) {
|
||||
if (group.getName().equals(groupName)) {
|
||||
return group;
|
||||
}
|
||||
}
|
||||
Group newGroup = new Group(groupName);
|
||||
groups.add(newGroup);
|
||||
return newGroup;
|
||||
}
|
||||
|
||||
public void addGroup(Group group) {
|
||||
groups.add(group);
|
||||
}
|
||||
|
||||
public List<Group> getGroups() {
|
||||
return groups;
|
||||
}
|
||||
|
||||
public void deleteGroup(Group group) {
|
||||
groups.remove(group);
|
||||
}
|
||||
|
||||
}
|
||||
59
Lab2/src/main/java/org/lumijiez/managers/Manager.java
Normal file
59
Lab2/src/main/java/org/lumijiez/managers/Manager.java
Normal file
@@ -0,0 +1,59 @@
|
||||
package org.lumijiez.managers;
|
||||
|
||||
import org.lumijiez.base.Grade;
|
||||
import org.lumijiez.base.Group;
|
||||
import org.lumijiez.base.NameSurnameGroup;
|
||||
import org.lumijiez.base.Student;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Manager implements Serializable {
|
||||
GroupManager groupManager;
|
||||
|
||||
public Manager() {
|
||||
this.groupManager = new GroupManager();
|
||||
}
|
||||
|
||||
public void addGroup(String groupName) {
|
||||
groupManager.addGroup(new Group(groupName));
|
||||
}
|
||||
|
||||
public void addStudent(NameSurnameGroup NSG) {
|
||||
Group currentGroup = groupManager.getGroup(NSG.group());
|
||||
currentGroup.addStudent(new Student(NSG.name(), NSG.surname(), currentGroup));
|
||||
}
|
||||
|
||||
public void printStudents() {
|
||||
for (Group group : groupManager.getGroups()) {
|
||||
for (Student student : group.getStudents()) {
|
||||
System.out.println(student.getFullname() + " " + student.getGroup().getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void printGroups() {
|
||||
for (Group group : groupManager.getGroups()) {
|
||||
System.out.println(group.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public void printGrades(NameSurnameGroup NSG) {
|
||||
Student student = groupManager.getGroup(NSG.group()).getStudent(NSG.name(), NSG.surname());
|
||||
for (Grade grade : student.getGrades()) {
|
||||
System.out.println(grade.getSubject() + " " + grade.getGrade());
|
||||
}
|
||||
}
|
||||
|
||||
public void addGrade(NameSurnameGroup NSG, Grade grade) {
|
||||
Student student = groupManager.getGroup(NSG.group()).getStudent(NSG.name(), NSG.surname());
|
||||
student.addGrade(grade);
|
||||
}
|
||||
|
||||
public void removeStudent(NameSurnameGroup NSG) {
|
||||
Student student = groupManager.getGroup(NSG.group()).getStudent(NSG.name(), NSG.surname());
|
||||
groupManager.getGroup(NSG.group()).deleteStudent(student);
|
||||
if (student.getGroup().getStudents().isEmpty()) {
|
||||
groupManager.getGroups().remove(student.getGroup());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user