Implemented UI, fixed serialization inconsistency
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
60
Lab2/src/main/java/org/lumijiez/gui/forms/AddGradeForm.java
Normal file
60
Lab2/src/main/java/org/lumijiez/gui/forms/AddGradeForm.java
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user