First Commit

This commit is contained in:
2023-09-19 22:07:16 +03:00
commit 5e4b81c90d
35 changed files with 1092 additions and 0 deletions

View 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!");
}
}

View 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;
}
}

View 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;
}
}

View 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;
}
}

View 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;
}
}

View 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;
}
}

View 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();
}
}
}

View 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);
}
}

View 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());
}
}
}