Implemented UI, fixed serialization inconsistency

This commit is contained in:
2023-09-20 12:09:32 +03:00
parent 5e4b81c90d
commit 338ed053e3
11 changed files with 542 additions and 84 deletions

View File

@@ -0,0 +1,85 @@
package org.lumijiez.gui;
import org.lumijiez.data.DataDeserializer;
import org.lumijiez.data.DataSerializer;
import org.lumijiez.gui.forms.*;
import org.lumijiez.managers.Manager;
import javax.swing.*;
import java.awt.*;
public class StudentManagementGUI{
private final Manager studentManager;
private final JFrame frame;
private final JTextArea outputTextArea;
public StudentManagementGUI() {
studentManager = DataDeserializer.deserialize();
frame = new JFrame("Student Management System");
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setSize(800, 600);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int centerX = (int) ((screenSize.getWidth() - frame.getWidth()) / 2);
int centerY = (int) ((screenSize.getHeight() - frame.getHeight()) / 2);
frame.setLocation(centerX, centerY);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
outputTextArea = new JTextArea();
outputTextArea.setEditable(false);
outputTextArea.setText("===== Students =====\n" + studentManager.getStudentsText());
JScrollPane scrollPane = new JScrollPane(outputTextArea);
mainPanel.add(scrollPane, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel(new GridLayout(0, 1));
JButton showStudentsBtn = new JButton("Show Students");
JButton showGroupsBtn = new JButton("Show Groups");
JButton changeStudentGroup = new JButton("Change group");
JButton addStudentBtn = new JButton("Add Student");
JButton addStudentGrade = new JButton("Add Grade");
JButton deleteStudentBtn = new JButton("Delete Student");
JButton showStudentGradesBtn = new JButton("Show Student Grades");
JButton saveAndExitBtn = new JButton("Save and Exit");
showStudentsBtn.addActionListener(e -> outputTextArea.setText("===== Students =====\n" + studentManager.getStudentsText()));
showGroupsBtn.addActionListener(e -> outputTextArea.setText("===== Groups =====\n" + studentManager.getGroupsText()));
addStudentBtn.addActionListener(e -> new AddStudentForm(centerX, centerY, studentManager, outputTextArea));
changeStudentGroup.addActionListener(e -> new ChangeGroupForm(centerX, centerY, studentManager, outputTextArea));
showStudentGradesBtn.addActionListener(e -> new ShowGradesForm(centerX, centerY, studentManager, outputTextArea));
deleteStudentBtn.addActionListener(e -> new DeleteStudentForm(centerX, centerY, studentManager, outputTextArea));
addStudentGrade.addActionListener(e -> new AddGradeForm(centerX, centerY, studentManager, outputTextArea));
saveAndExitBtn.addActionListener(e -> {
DataSerializer.serialize(studentManager);
frame.dispose();
System.exit(0);
});
buttonPanel.add(showStudentsBtn);
buttonPanel.add(showGroupsBtn);
buttonPanel.add(showStudentGradesBtn);
buttonPanel.add(addStudentBtn);
buttonPanel.add(addStudentGrade);
buttonPanel.add(deleteStudentBtn);
buttonPanel.add(saveAndExitBtn);
mainPanel.add(buttonPanel, BorderLayout.WEST);
frame.getContentPane().add(mainPanel);
frame.setVisible(true);
}
}

View File

@@ -0,0 +1,60 @@
package org.lumijiez.gui.forms;
import org.lumijiez.base.Grade;
import org.lumijiez.base.NameSurnameGroup;
import org.lumijiez.managers.Manager;
import javax.swing.*;
import java.awt.*;
public class AddGradeForm extends JFrame {
public AddGradeForm(int centerX, int centerY, Manager studentManager, JTextArea outputTextArea) {
this.setTitle("Add Grade");
this.setSize(400, 300);
this.setLocation(centerX, centerY);
JPanel formPanel = new JPanel(new GridLayout(4, 2));
JLabel nameLabel = new JLabel("Name:");
JTextField nameField = new JTextField();
JLabel surnameLabel = new JLabel("Surname:");
JTextField surnameField = new JTextField();
JLabel groupLabel = new JLabel("Group:");
JTextField groupField = new JTextField();
JLabel subjectLabel = new JLabel("Subject:");
JTextField subjectField = new JTextField();
JLabel gradeLabel = new JLabel("Grade:");
JTextField gradeField = new JTextField();
JButton submitButton = new JButton("Submit");
formPanel.add(nameLabel);
formPanel.add(nameField);
formPanel.add(surnameLabel);
formPanel.add(surnameField);
formPanel.add(groupLabel);
formPanel.add(groupField);
formPanel.add(subjectLabel);
formPanel.add(subjectField);
formPanel.add(gradeLabel);
formPanel.add(gradeField);
formPanel.add(submitButton);
this.add(formPanel);
submitButton.addActionListener(e -> {
String name = nameField.getText();
String surname = surnameField.getText();
String group = groupField.getText();
String subject = subjectField.getText();
String grade = gradeField.getText();
if (!name.isEmpty() && !surname.isEmpty() && !group.isEmpty() && !subject.isEmpty() && !grade.isEmpty()) {
studentManager.addGrade(new NameSurnameGroup(name, surname, group), new Grade(subject, Integer.parseInt(grade)));
outputTextArea.setText("===== Students =====\n" + studentManager.getStudentsText());
this.dispose();
} else JOptionPane.showMessageDialog(this, "Please fill in all fields.");
});
this.setVisible(true);
}
}

View File

@@ -0,0 +1,47 @@
package org.lumijiez.gui.forms;
import org.lumijiez.base.NameSurnameGroup;
import org.lumijiez.managers.Manager;
import javax.swing.*;
import java.awt.*;
public class AddStudentForm extends JFrame {
public AddStudentForm(int centerX, int centerY, Manager studentManager, JTextArea outputTextArea) {
this.setTitle("Add Student");
this.setSize(400, 300);
this.setLocation(centerX, centerY);
JPanel formPanel = new JPanel(new GridLayout(4, 2));
JLabel nameLabel = new JLabel("Name:");
JTextField nameField = new JTextField();
JLabel surnameLabel = new JLabel("Surname:");
JTextField surnameField = new JTextField();
JLabel groupLabel = new JLabel("Group:");
JTextField groupField = new JTextField();
JButton submitButton = new JButton("Submit");
formPanel.add(nameLabel);
formPanel.add(nameField);
formPanel.add(surnameLabel);
formPanel.add(surnameField);
formPanel.add(groupLabel);
formPanel.add(groupField);
formPanel.add(submitButton);
this.add(formPanel);
submitButton.addActionListener(e -> {
String name = nameField.getText();
String surname = surnameField.getText();
String group = groupField.getText();
if (!name.isEmpty() && !surname.isEmpty() && !group.isEmpty()) {
studentManager.addStudent(new NameSurnameGroup(name, surname, group));
outputTextArea.setText("===== Students =====\n" + studentManager.getStudentsText());
this.dispose();
} else JOptionPane.showMessageDialog(this, "Please fill in all fields.");
});
this.setVisible(true);
}
}

View File

@@ -0,0 +1,53 @@
package org.lumijiez.gui.forms;
import org.lumijiez.base.NameSurnameGroup;
import org.lumijiez.managers.Manager;
import javax.swing.*;
import java.awt.*;
public class ChangeGroupForm extends JFrame {
public ChangeGroupForm(int centerX, int centerY, Manager studentManager, JTextArea outputTextArea) {
this.setTitle("Change Group");
this.setSize(400, 300);
this.setLocation(centerX, centerY);
JPanel formPanel = new JPanel(new GridLayout(4, 2));
JLabel nameLabel = new JLabel("Name:");
JTextField nameField = new JTextField();
JLabel surnameLabel = new JLabel("Surname:");
JTextField surnameField = new JTextField();
JLabel groupLabel = new JLabel("Group:");
JTextField groupField = new JTextField();
JLabel newgroupLabel = new JLabel("New Group:");
JTextField newgroupField = new JTextField();
JButton submitButton = new JButton("Submit");
formPanel.add(nameLabel);
formPanel.add(nameField);
formPanel.add(surnameLabel);
formPanel.add(surnameField);
formPanel.add(groupLabel);
formPanel.add(groupField);
formPanel.add(newgroupLabel);
formPanel.add(newgroupField);
formPanel.add(submitButton);
this.add(formPanel);
submitButton.addActionListener(e -> {
String name = nameField.getText();
String surname = surnameField.getText();
String group = groupField.getText();
String newgroup = newgroupField.getText();
if (!name.isEmpty() && !surname.isEmpty() && !group.isEmpty() && !newgroup.isEmpty()) {
studentManager.changeGroup(new NameSurnameGroup(name, surname, group), newgroup);
outputTextArea.setText("===== Groups =====\n" + studentManager.getGroupsText());
this.dispose();
} else JOptionPane.showMessageDialog(this, "Please fill in all fields.");
});
this.setVisible(true);
}
}

View File

@@ -0,0 +1,48 @@
package org.lumijiez.gui.forms;
import org.lumijiez.base.NameSurnameGroup;
import org.lumijiez.managers.Manager;
import javax.swing.*;
import java.awt.*;
public class DeleteStudentForm extends JFrame {
public DeleteStudentForm(int centerX, int centerY, Manager studentManager, JTextArea outputTextArea) {
this.setTitle("Delete Student");
this.setSize(400, 300);
this.setLocation(centerX, centerY);
JPanel formPanel = new JPanel(new GridLayout(4, 2));
JLabel nameLabel = new JLabel("Name:");
JTextField nameField = new JTextField();
JLabel surnameLabel = new JLabel("Surname:");
JTextField surnameField = new JTextField();
JLabel groupLabel = new JLabel("Group:");
JTextField groupField = new JTextField();
JButton submitButton = new JButton("Submit");
formPanel.add(nameLabel);
formPanel.add(nameField);
formPanel.add(surnameLabel);
formPanel.add(surnameField);
formPanel.add(groupLabel);
formPanel.add(groupField);
formPanel.add(submitButton);
this.add(formPanel);
submitButton.addActionListener(e -> {
String name = nameField.getText();
String surname = surnameField.getText();
String group = groupField.getText();
if (!name.isEmpty() && !surname.isEmpty() && !group.isEmpty()) {
studentManager.removeStudent(new NameSurnameGroup(name, surname, group));
outputTextArea.setText("===== Students =====\n" + studentManager.getStudentsText());
this.dispose();
} else JOptionPane.showMessageDialog(this, "Please fill in all fields.");
});
this.setVisible(true);
}
}

View File

@@ -0,0 +1,47 @@
package org.lumijiez.gui.forms;
import org.lumijiez.base.NameSurnameGroup;
import org.lumijiez.managers.Manager;
import javax.swing.*;
import java.awt.*;
public class ShowGradesForm extends JFrame {
public ShowGradesForm(int centerX, int centerY, Manager studentManager, JTextArea outputTextArea) {
this.setTitle("Show Grades Student");
this.setSize(400, 300);
this.setLocation(centerX, centerY);
JPanel formPanel = new JPanel(new GridLayout(4, 2));
JLabel nameLabel = new JLabel("Name:");
JTextField nameField = new JTextField();
JLabel surnameLabel = new JLabel("Surname:");
JTextField surnameField = new JTextField();
JLabel groupLabel = new JLabel("Group:");
JTextField groupField = new JTextField();
JButton submitButton = new JButton("Submit");
formPanel.add(nameLabel);
formPanel.add(nameField);
formPanel.add(surnameLabel);
formPanel.add(surnameField);
formPanel.add(groupLabel);
formPanel.add(groupField);
formPanel.add(submitButton);
this.add(formPanel);
submitButton.addActionListener(e -> {
String name = nameField.getText();
String surname = surnameField.getText();
String group = groupField.getText();
if (!name.isEmpty() && !surname.isEmpty() && !group.isEmpty()) {
NameSurnameGroup nsg = new NameSurnameGroup(name, surname, group);
outputTextArea.setText("===== Grades =====\n" + name + " " + surname + "\n" + studentManager.getGradesText(nsg));
this.dispose();
} else JOptionPane.showMessageDialog(this, "Please fill in all fields.");
});
this.setVisible(true);
}
}