Filter faculties by specialty

This commit is contained in:
2023-10-03 01:27:05 +03:00
parent d5a7a2c460
commit 4461b1137a
13 changed files with 177 additions and 32 deletions

View File

@@ -2,10 +2,7 @@ package org.lumijiez.gui;
import org.lumijiez.data.DataDeserializer;
import org.lumijiez.data.DataSerializer;
import org.lumijiez.gui.forms.faculty.AddFacultyForm;
import org.lumijiez.gui.forms.faculty.EditFacultyForm;
import org.lumijiez.gui.forms.faculty.RemoveFacultyForm;
import org.lumijiez.gui.forms.faculty.ShowFacultyForm;
import org.lumijiez.gui.forms.faculty.*;
import org.lumijiez.gui.forms.group.AddGroupForm;
import org.lumijiez.gui.forms.group.DeleteGroupForm;
import org.lumijiez.gui.forms.group.EditGroupForm;
@@ -74,6 +71,7 @@ public class StudentManagementGUI extends JFrame {
JMenuItem editGroupOption = new JMenuItem("Edit a Group", UIManager.getIcon("FileView.directoryIcon"));
JMenuItem deleteGroupOption = new JMenuItem("Delete a Group", UIManager.getIcon("FileView.directoryIcon"));
JMenuItem showAllFacultiesOption = new JMenuItem("Show all Faculties", UIManager.getIcon("FileView.directoryIcon"));
JMenuItem showFacultyBySpecialtyOption = new JMenuItem("Show Faculty by Specialty", UIManager.getIcon("FileView.directoryIcon"));
JMenuItem showParticularFacultyOption = new JMenuItem("Show a Faculty", UIManager.getIcon("FileView.directoryIcon"));
JMenuItem addFacultyOption = new JMenuItem("Add a Faculty", UIManager.getIcon("FileView.directoryIcon"));
JMenuItem editFacultyOption = new JMenuItem("Edit a Faculty", UIManager.getIcon("FileView.directoryIcon"));
@@ -165,6 +163,7 @@ public class StudentManagementGUI extends JFrame {
showAllStudentsOption.addActionListener(this::showAllStudentsOptionActionPerformed);
showAllFacultiesOption.addActionListener(this::showAllFacultiesOptionActionPerformed);
showParticularFacultyOption.addActionListener(this::showParticularFacultyOptionActionPerformed);
showFacultyBySpecialtyOption.addActionListener(this::showFacultySpecialtyActionPerformed);
addFacultyOption.addActionListener(this::addFacultyOptionActionPerformed);
editFacultyOption.addActionListener(this::editFacultyOptionActionPerformed);
deleteGroupOption.addActionListener(this::deleteGroupOptionActionPerformed);
@@ -172,6 +171,7 @@ public class StudentManagementGUI extends JFrame {
facultyMenu.add(showAllFacultiesOption);
facultyMenu.add(showParticularFacultyOption);
facultyMenu.add(showFacultyBySpecialtyOption);
facultyMenu.add(facultySeparator);
facultyMenu.add(addFacultyOption);
facultyMenu.add(editFacultyOption);
@@ -187,13 +187,18 @@ public class StudentManagementGUI extends JFrame {
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 600, Short.MAX_VALUE));
.addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 650, Short.MAX_VALUE));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(mainScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 697, Short.MAX_VALUE));
pack();
}
private void showFacultySpecialtyActionPerformed(ActionEvent actionEvent) {
ShowSpecialtyFacultyForm form = new ShowSpecialtyFacultyForm(sv, mainTextLabel);
form.setVisible(true);
}
private void graduateBatchOptionActionPerformed(ActionEvent actionEvent) {
BatchGraduater picker = new BatchGraduater(sv);
picker.setVisible(true);

View File

@@ -58,7 +58,7 @@ public class RemoveFacultyForm extends JFrame {
.addComponent(submitButton))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(facultyLabel)
.addComponent(facultyCombo, GroupLayout.PREFERRED_SIZE, 181, GroupLayout.PREFERRED_SIZE)))
.addComponent(facultyCombo, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE)))
.addContainerGap(32, Short.MAX_VALUE))
.addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

View File

@@ -63,7 +63,7 @@ public class ShowFacultyForm extends JFrame {
.addComponent(cancelButton)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(submitButton))
.addComponent(facultyCombo, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 171, GroupLayout.PREFERRED_SIZE)))))
.addComponent(facultyCombo, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE)))))
.addContainerGap(27, Short.MAX_VALUE)));
layout.setVerticalGroup(
@@ -91,14 +91,14 @@ public class ShowFacultyForm extends JFrame {
StringBuilder builder = new StringBuilder();
Faculty fac = (Faculty) facultyCombo.getSelectedItem();
assert fac != null;
builder.append("================= Faculty Info ====================\n");
builder.append("===================== Faculty Info ========================\n");
builder.append("Name: ").append(fac.getName()).append("\n");
builder.append("Specialty: ").append(fac.getField()).append("\n");
builder.append("==========\n");
builder.append("Groups: ").append("\n");
for (Group gr : fac.getGroups())
builder.append(gr.getName()).append("\n").append("==========\n");
builder.append("===================================================");
builder.append("============================================================");
mainTextLabel.setText(builder.toString());
this.dispose();
}

View File

@@ -0,0 +1,121 @@
package org.lumijiez.gui.forms.faculty;
import org.lumijiez.base.Faculty;
import org.lumijiez.enums.StudyField;
import org.lumijiez.gui.util.ComponentDecorator;
import org.lumijiez.managers.Supervisor;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class ShowSpecialtyFacultyForm extends JFrame {
private final JTextArea mainTextLabel;
private final JButton cancelButton = new JButton();
private final JComboBox<StudyField> specialtyCombo;
private final JLabel facultyLabel = new JLabel();
private final JButton submitButton = new JButton();
private final JLabel titleLabel = new JLabel();
private final Supervisor sv;
public ShowSpecialtyFacultyForm(Supervisor sv, JTextArea mainTextLabel) {
this.sv = sv;
this.mainTextLabel = mainTextLabel;
this.setTitle("Show a Faculty by Specialty");
this.specialtyCombo = new JComboBox<>(StudyField.getAllEnums().toArray(new StudyField[0]));
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
titleLabel.setFont(new java.awt.Font("sansserif", Font.PLAIN, 18));
titleLabel.setText("Show a faculty");
submitButton.setText("Submit");
cancelButton.setText("Cancel");
facultyLabel.setText("Faculty:");
ComponentDecorator.submitButton(submitButton);
ComponentDecorator.cancelButton(cancelButton);
submitButton.addActionListener(this::submitButtonActionPerformed);
cancelButton.addActionListener(this::cancelButtonActionPerformed);
specialtyCombo.setRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof StudyField)
setText(((StudyField) value).getName());
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
});
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(46, 46, 46)
.addComponent(titleLabel))
.addGroup(layout.createSequentialGroup()
.addGap(26, 26, 26)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(facultyLabel)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
.addGroup(GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(cancelButton)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(submitButton))
.addComponent(specialtyCombo, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE)))))
.addContainerGap(27, Short.MAX_VALUE)));
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(13, 13, 13)
.addComponent(titleLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(facultyLabel)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(specialtyCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(cancelButton)
.addComponent(submitButton))
.addContainerGap(24, Short.MAX_VALUE)));
pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width - this.getWidth()) / 2;
int y = (screenSize.height - this.getHeight()) / 2;
this.setLocation(x, y);
}
private void submitButtonActionPerformed(ActionEvent evt) {
StringBuilder builder = new StringBuilder();
StudyField fac = (StudyField) specialtyCombo.getSelectedItem();
assert fac != null;
builder.append("==================== Specialty Info =======================\n");
builder.append("Specialty: ").append(fac.getName()).append("\n");
builder.append("==========\n");
builder.append("Faculties: ").append("\n");
for (Faculty fc : sv.getFm().getFaculties()) {
if (fc.getField().equals(fac)) {
builder.append(fc.getName()).append("\n").append("==========\n");
}
}
builder.append("============================================================");
mainTextLabel.setText(builder.toString());
this.dispose();
}
private void cancelButtonActionPerformed(ActionEvent evt) {
this.dispose();
}
}

View File

@@ -59,7 +59,7 @@ public class DeleteGroupForm extends JFrame {
.addComponent(cancelButton)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(submitButton))
.addComponent(groupCombo, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 175, GroupLayout.PREFERRED_SIZE))))
.addComponent(groupCombo, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE))))
.addGroup(layout.createSequentialGroup()
.addGap(54, 54, 54)
.addComponent(titleLabel)))

View File

@@ -61,7 +61,7 @@ public class ShowGroupForm extends JFrame {
.addComponent(cancelButton)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(submitButton))
.addComponent(groupCombo, GroupLayout.PREFERRED_SIZE, 169, GroupLayout.PREFERRED_SIZE))))
.addComponent(groupCombo, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE))))
.addGroup(layout.createSequentialGroup()
.addGap(47, 47, 47)
.addComponent(titleLabel)))
@@ -92,7 +92,7 @@ public class ShowGroupForm extends JFrame {
StringBuilder text = new StringBuilder();
Group gr = (Group) Objects.requireNonNull(groupCombo.getSelectedItem());
text.append("==================== Group Info ======================\n");
text.append("======================= Group Info =========================\n");
text.append("=================== Group: ").append(gr.getName()).append("=====================\n");
for (Student student : gr.getStudents()) {

View File

@@ -59,7 +59,7 @@ public class DeleteStudentForm extends JFrame {
.addGroup(layout.createSequentialGroup()
.addGap(5, 5, 5)
.addComponent(studentLabel))
.addComponent(studentCombo, GroupLayout.PREFERRED_SIZE, 178, GroupLayout.PREFERRED_SIZE))
.addComponent(studentCombo, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE))
.addContainerGap(26, Short.MAX_VALUE))
.addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

View File

@@ -125,16 +125,15 @@ public class GradeStudentForm extends JFrame {
Subjects subject = Subjects.getEnum(Objects.requireNonNull(subjectCombo.getSelectedItem()).toString());
int intGrade = (Integer) Objects.requireNonNull(gradeCombo.getSelectedItem());
Grade grade = new Grade(subject, intGrade);
StringBuilder builder = new StringBuilder();
sv.addGrade(student, grade);
builder.append("====================================\n");
StringBuilder builder = new StringBuilder();
builder.append("============================================================\n");
builder.append("Grades for ").append(student.getFullname()).append(" from ").append(student.getGroup().getName()).append(":\n");
for (Grade gr : student.getGrades())
for (Grade gr : student.getGrades()) {
builder.append(gr.getSubject()).append(": ").append(gr.getGrade()).append("\n");
builder.append("====================================\n");
}
builder.append("============================================================\n");
mainTextLabel.setText(builder.toString());
this.dispose();
}

View File

@@ -20,7 +20,7 @@ public class GraduateStudentForm extends JFrame {
public GraduateStudentForm(Supervisor sv) {
this.setTitle("Graduate a Student");
this.studentCombo = new JComboBox<>(sv.getFm().getGm().getSm().getStudents().toArray(new Student[0]));
this.studentCombo = new JComboBox<>(sv.getFm().getGm().getSm().getEnrolled().toArray(new Student[0]));
initComponents();
}
@@ -60,7 +60,7 @@ public class GraduateStudentForm extends JFrame {
.addGroup(layout.createSequentialGroup()
.addGap(5, 5, 5)
.addComponent(studentLabel))
.addComponent(studentCombo, GroupLayout.PREFERRED_SIZE, 178, GroupLayout.PREFERRED_SIZE))
.addComponent(studentCombo, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE))
.addContainerGap(26, Short.MAX_VALUE))
.addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

View File

@@ -61,7 +61,7 @@ public class ShowStudentForm extends JFrame {
.addComponent(cancelButton)
.addGap(34, 34, 34)
.addComponent(submitButton))
.addComponent(studentCombo, GroupLayout.PREFERRED_SIZE, 178, GroupLayout.PREFERRED_SIZE))))
.addComponent(studentCombo, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE))))
.addGroup(layout.createSequentialGroup()
.addGap(52, 52, 52)
.addComponent(titleLabel)))
@@ -92,7 +92,7 @@ public class ShowStudentForm extends JFrame {
Student student = ((Student) Objects.requireNonNull(studentCombo.getSelectedItem()));
StringBuilder text = new StringBuilder();
text.append("==================== Student Info ======================\n");
text.append("====================== Student Info ======================\n");
mainTextLabel.setText(text.toString());
text.append("Name: ").append(student.getFullname()).append(" \n")
.append("Group: ").append(student.getGroup().getName())
@@ -101,7 +101,7 @@ public class ShowStudentForm extends JFrame {
.append("Bday: ").append(student.getDateOfBirth())
.append("\nEnrol date: ").append(student.getEnrollmentDate())
.append("\nGraduated: ").append(student.isGraduated());
text.append("\n==================================================");
text.append("\n=======================================================");
mainTextLabel.setText(text.toString());
this.dispose();
}

View File

@@ -63,7 +63,7 @@ public class ShowStudentGradesForm extends JFrame {
.addComponent(cancelButton)
.addGap(34, 34, 34)
.addComponent(submitButton))
.addComponent(studentCombo, GroupLayout.PREFERRED_SIZE, 178, GroupLayout.PREFERRED_SIZE))))
.addComponent(studentCombo, GroupLayout.PREFERRED_SIZE, 250, GroupLayout.PREFERRED_SIZE))))
.addGroup(layout.createSequentialGroup()
.addGap(50, 50, 50)
.addComponent(titleLabel)))
@@ -93,12 +93,12 @@ public class ShowStudentGradesForm extends JFrame {
private void submitButtonActionPerformed(ActionEvent evt) {
Student student = ((Student) Objects.requireNonNull(studentCombo.getSelectedItem()));
StringBuilder builder = new StringBuilder();
builder.append("====================================\n");
builder.append("============================================================\n");
builder.append("Grades for ").append(student.getFullname()).append(" from ").append(student.getGroup().getName()).append(":\n");
for (Grade grade : student.getGrades()) {
builder.append(grade.getSubject()).append(": ").append(grade.getGrade()).append("\n");
}
builder.append("====================================\n");
builder.append("============================================================\n");
mainTextLabel.setText(builder.toString());
this.dispose();
}

View File

@@ -8,7 +8,7 @@ import org.lumijiez.gui.StudentManagementGUI;
public class DisplayerManager {
public static void displayStudents() {
StringBuilder text = new StringBuilder();
text.append("==================== Students ======================\n");
text.append("======================== Students ==========================\n");
for (Student student : StudentManagementGUI.getSv().getFm().getGm().getSm().getStudents()) {
text.append("Name: ").append(student.getFullname()).append("\nGroup: ").append(student.getGroup().getName())
.append("\nEmail: ").append(student.getEmail()).append("\nGraduated: ").append((student.isGraduated() ? "Yes" : "No"));
@@ -19,7 +19,7 @@ public class DisplayerManager {
public static void displayGroups() {
StringBuilder text = new StringBuilder();
text.append("==================== Groups ======================\n");
text.append("========================= Groups ===========================\n");
for (Group group : StudentManagementGUI.getSv().getFm().getGm().getGroups()) {
text.append("Name: ").append(group.getName()).append("\nFaculty: ").append(group.getFaculty().getName())
.append("\nNumber of students: ").append(group.getStudents().size());
@@ -30,7 +30,7 @@ public class DisplayerManager {
public static void displayFaculties() {
StringBuilder text = new StringBuilder();
text.append("==================== Faculties ======================\n");
text.append("======================= Faculties =========================\n");
for (Faculty fac : StudentManagementGUI.getSv().getFm().getFaculties()) {
text.append("Name: ").append(fac.getName()).append("\nSpecialty: ").append(fac.getField().getName())
.append("\nAbbreviation: ").append(fac.getAbbreviation())
@@ -42,7 +42,7 @@ public class DisplayerManager {
public static void displayGraduates() {
StringBuilder text = new StringBuilder();
text.append("=================== Students =====================\n");
text.append("======================== Students ==========================\n");
for (Student st : StudentManagementGUI.getSv().getFm().getGm().getSm().getStudents()) {
if (st.isGraduated()) {
text.append("Name: ").append(st.getFullname()).append("\nGroup: ").append(st.getGroup().getName())
@@ -55,7 +55,7 @@ public class DisplayerManager {
public static void displayEnrolled() {
StringBuilder text = new StringBuilder();
text.append("=================== Students =====================\n");
text.append("======================== Students ==========================\n");
for (Student st : StudentManagementGUI.getSv().getFm().getGm().getSm().getStudents()) {
if (!st.isGraduated()) {
text.append("Name: ").append(st.getFullname()).append("\nGroup: ").append(st.getGroup().getName())

View File

@@ -21,4 +21,24 @@ public class StudentManager implements Serializable {
students.remove(student);
}
// public List<Student> getGraduates() {
// List<Student> stList = new ArrayList<>();
// for (Student st : students) {
// if (st.isGraduated()) {
// stList.add(st);
// }
// }
// return stList;
// }
public List<Student> getEnrolled() {
List<Student> stList = new ArrayList<>();
for (Student st : students) {
if (!st.isGraduated()) {
stList.add(st);
}
}
return stList;
}
}