From c19aed196e7d194bd5bf5d3a5ebbf0f6c2b0297a Mon Sep 17 00:00:00 2001 From: OrcaAzure <165769501+OrcaAzure@users.noreply.github.com> Date: Thu, 2 May 2024 22:16:56 +0800 Subject: [PATCH 1/3] Update CurriculumGui.java --- src/CurriculumGui.java | 237 ++++++++++++++++------------------------- 1 file changed, 89 insertions(+), 148 deletions(-) diff --git a/src/CurriculumGui.java b/src/CurriculumGui.java index a1d4219..a466b7f 100644 --- a/src/CurriculumGui.java +++ b/src/CurriculumGui.java @@ -1,170 +1,111 @@ import javax.swing.*; -import java.awt.event.*; +import javax.swing.table.DefaultTableModel; import java.awt.*; -import java.lang.reflect.Array; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; -public class CurriculumGui extends JFrame { - private JPanel menuPanel, comboBoxPanel; - private JPanel displayCurriculum; - private JTextArea displayArea; - - private ActionListener dropDownHandler1, dropDownHandler2; - private JComboBox oneDropdown, twoDropdown; - - - private static final Font font1 = new Font("Arial", Font.BOLD, 20); - private static final Font font2 = new Font("Times New Roman", Font.BOLD, 15); - - public static void main(String[] args) { - new CurriculumGui().CurriculumGUI(); - } - - public void CurriculumGUI(){ - setTitle("Curriculum Monitoring"); - setSize(400,400); - setResizable(false); - - - menuPanel = new JPanel(); - setMenuPanel(); - - - add(menuPanel, BorderLayout.NORTH); - - setDefaultCloseOperation(EXIT_ON_CLOSE); - setVisible(true); - } - - private void setMenuPanel() { - menuPanel = new JPanel(new GridBagLayout()); - GridBagConstraints menuLayout = new GridBagConstraints(); - menuLayout.gridx = 0; - menuLayout.gridy =0; - menuLayout.anchor = GridBagConstraints.CENTER; - - JLabel menuHeadLabel = new JLabel("
Personal Checklist Monitoring App
"); - menuHeadLabel.setFont(font1); - menuPanel.add(menuHeadLabel, menuLayout); - - - menuLayout.gridy = 1; - menuLayout.insets = new Insets(10,10,10,10); - JLabel menuChoiceLabel = new JLabel("
1. Show subjects for each school term

" + - "2. Show subjects with grades for each term

" + - "3. Enter grades for subjects recently finished

" + - "4. Edit a course

" + - "5. Quit

"); - menuChoiceLabel.setFont(font2); - menuPanel.add(menuChoiceLabel, menuLayout); - - //textField - menuLayout.gridy = 2; - menuLayout.fill = GridBagConstraints.HORIZONTAL; - JTextField textField = new JTextField(); - textField.setFont(font2); - menuPanel.add(textField, menuLayout); - - textField.addActionListener(e ->{ - String input = textField.getText(); - if (input.matches("\\d{1,5}")) { - int number = Integer.parseInt(input); - if (number > 5) { - JOptionPane.showMessageDialog(this, "The number must be from 1 to 5"); - } else { - switch (number) { - case 1: - choiceOne(); - break; - case 2: - System.out.println("HELLO MIGGA"); - break; - case 3: - //Action - break; - case 4: - //Action - break; - case 5: - System.exit(0); - break; - } - } - } else { - JOptionPane.showMessageDialog(this, "You entered a valid Integer", "Error", JOptionPane.ERROR_MESSAGE); +public class CurriculumGUI { + private JFrame frame; + private JComboBox yearDropdown, termDropdown; + private JButton fillButton, saveButton; + private JTable courseTable; + private DefaultTableModel model; + private CurriculumManager curriculumManager; + + public CurriculumGUI(CurriculumManager curriculumManager) { + this.curriculumManager = curriculumManager; + + frame = new JFrame("Curriculum Monitoring"); + frame.setSize(800, 600); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Center the frame on the screen + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + int xPos = (screenSize.width - frame.getWidth()) / 2; + int yPos = (screenSize.height - frame.getHeight()) / 2; + frame.setLocation(xPos, yPos); + + // Create year and term dropdowns + yearDropdown = new JComboBox<>(new String[]{"1", "2", "3", "4"}); + termDropdown = new JComboBox<>(new String[]{"First Sem", "Second Sem", "Short Term"}); + + // Create buttons for filling and saving curriculum + fillButton = new JButton("Fill Curriculum"); + fillButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + fillCurriculum(); } - textField.setText(""); }); - } + saveButton = new JButton("Save Curriculum"); + saveButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + saveCurriculum(); + } + }); - private void choiceOne() { - JFrame choiceOneFrame = new JFrame("Curriculum"); - choiceOneFrame.setSize(1000, 500); - - comboBoxPanel = new JPanel(); - setComboBoxPanel(); + // Create the course table + courseTable = new JTable(); + JScrollPane scrollPane = new JScrollPane(courseTable); + // Create the button panel + JPanel buttonPanel = new JPanel(new FlowLayout()); + buttonPanel.add(fillButton); + buttonPanel.add(saveButton); - displayCurriculum = new JPanel(); + // Create the combo box panel + JPanel comboBoxPanel = new JPanel(); + comboBoxPanel.setLayout(new GridLayout(1, 2)); + comboBoxPanel.add(yearDropdown); + comboBoxPanel.add(termDropdown); - setDisplayCurriculum(); + // Add panels to the frame + frame.add(comboBoxPanel, BorderLayout.NORTH); + frame.add(buttonPanel, BorderLayout.SOUTH); + frame.add(scrollPane, BorderLayout.CENTER); - choiceOneFrame.add(comboBoxPanel, BorderLayout.NORTH); - choiceOneFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - choiceOneFrame.setVisible(true); + // Show the frame + frame.setVisible(true); } - private void setComboBoxPanel() { - - String[] option1 = {"1st Year","2nd Year","3rd Year","4th Year"}; - oneDropdown = new JComboBox<>(option1); - oneDropdown.setPreferredSize(new Dimension(150,40)); - oneDropdown.setFont(font2); - - String[] option2 = {"First Semester", "Second Semester", "Short Term"}; - twoDropdown = new JComboBox<>(option2); - oneDropdown.setPreferredSize(new Dimension(150,40)); - oneDropdown.setFont(font2); - - comboBoxPanel = new JPanel(); - comboBoxPanel.add(oneDropdown); - comboBoxPanel.add(twoDropdown); + private void fillCurriculum() { + String selectedYear = (String) yearDropdown.getSelectedItem(); + String selectedTerm = (String) termDropdown.getSelectedItem(); + curriculumManager.fillCurriculum(selectedYear, selectedTerm); + displayCurriculum(); + } + private void saveCurriculum() { + curriculumManager.saveCurriculum(); } - - - //PROBLEM - private void setDisplayCurriculum() { - CurriculumManagement curriculum = new CurriculumManagement(); - curriculum.fillCurriculum(); - ArrayList courses = curriculum.getCurriculum(); - - StringBuilder formattedText = new StringBuilder(); - - formattedText.append("------------------------------------------------------------------------------------------------\n"); - formattedText.append(String.format("%-20s%-20s%-40s%-10s%-10s\n", "Year", "Term", "Course No. Descriptive title", "Units", "Grade")); - formattedText.append("------------------------------------------------------------------------------------------------\n"); - - //course details - for (Course course : courses) { - formattedText.append(String.format("%-20s%-20s%-40s%-10.1s%-10s\n", - course.getYear(), - course.getTerm(), - course.getCourseNumber() + " " + course.getDescriptiveTitle(), - course.getUnits(), - course.getGrade() == 0 ? "Not Yet Taken" : String.valueOf(course.getGrade()))); + public void displayCurriculum() { + ArrayList curriculum = curriculumManager.getCurriculum(); + Object[][] data = new Object[curriculum.size()][6]; + + for (int i = 0; i < curriculum.size(); i++) { + Course course = curriculum.get(i); + data[i][0] = course.getYear(); + data[i][1] = course.getTerm(); + data[i][2] = course.getCourseNumber(); + data[i][3] = course.getDescriptiveTitle(); + data[i][4] = course.getUnits(); + data[i][5] = course.getGrade() == 0 ? "Not Yet Taken" : course.getGrade(); } - displayArea = new JTextArea(formattedText.toString()); - displayArea.setFont(font2); - displayArea.setEditable(false); - - displayCurriculum.removeAll(); - displayCurriculum.revalidate(); - displayCurriculum.repaint(); + String[] columnNames = {"Year", "Term", "Course Number", "Course Title", "Units", "Grade"}; + model = new DefaultTableModel(data, columnNames); + courseTable.setModel(model); + } + public static void main(String[] args) { + CurriculumManager curriculumManager = new CurriculumManagement(); + SwingUtilities.invokeLater(() -> new CurriculumGUI(curriculumManager)); } +} + + -} From d14a83f4176d4e81302f949896ad62860ced632b Mon Sep 17 00:00:00 2001 From: OrcaAzure <165769501+OrcaAzure@users.noreply.github.com> Date: Thu, 2 May 2024 22:17:48 +0800 Subject: [PATCH 2/3] Update CurriculumManagement.java --- src/CurriculumManagement.java | 46 +++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/src/CurriculumManagement.java b/src/CurriculumManagement.java index 703dde6..6457743 100644 --- a/src/CurriculumManagement.java +++ b/src/CurriculumManagement.java @@ -1,3 +1,4 @@ + import java.io.*; import java.util.ArrayList; @@ -5,25 +6,39 @@ public class CurriculumManagement implements CurriculumManager{ private static final String fileName = "Curriculum.txt"; private static final ArrayList courses = new ArrayList<>(); - /** * Fills the Arraylist with Courses */ @Override - public void fillCurriculum() { + public void fillCurriculum(String year, String term) { + courses.clear(); try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; - while ((line = reader.readLine()) != null){ - String[] courseText = line.split(","); + while ((line = reader.readLine()) != null) { + String[] courseText = line.split(",(?!\\s)"); Course course = readCourse(courseText); - courses.add(course); + + // Filter out courses based on selected year and term + if (Byte.toString(course.getYear()).equals(year) && course.getTerm().equals(term)) { + courses.add(course); + } } } catch (IOException e) { throw new RuntimeException(e); } + + // Display the filtered curriculum + displayCurriculum(courses); + } + + private void displayCurriculum(ArrayList courses) { } + @Override + public void fillCurriculum() { + + } /** * Reads the courses details in array of String and returns an object of Course * @param courseText the details of the course (units, title, course no.) @@ -53,7 +68,6 @@ public ArrayList getCurriculum() { return courses; } - /** * edits the grades of the courses of a specific term of a year * @param grades the ArrayList of grades to be set @@ -67,7 +81,7 @@ public void editGrade(ArrayList grades, int year, String term) throws Valu for (Course course : courses){ if (course.getYear() == year && course.getTerm().equals(term)){ - if (notValid(grades.get(count), (byte) 65, (byte) 99)){ + if (notValid(Float.valueOf(grades.get(count)), (byte) 65, (byte) 99)){ throw new ValueOutOfRangeException(); } course.setGrade(grades.get(count++)); @@ -81,7 +95,7 @@ public void editGrade(ArrayList grades, int year, String term) throws Valu * @param maximum highest number allowed * @return true if the number is valid, otherwise false. */ - private boolean notValid(Byte number, byte minimum, byte maximum) { + private boolean notValid(Float number, byte minimum, byte maximum) { return number > maximum || number < minimum; } @@ -97,12 +111,12 @@ public void editCourse(ArrayList courseDetails, int year, String term) int count = 0; for (Course course : courses){ if (course.getYear() == year && course.getTerm().equals(term)){ - if (notValid(Byte.parseByte(courseDetails.get(count)[2]), (byte) 1, (byte) 6)){ + if (notValid(Float.parseFloat(courseDetails.get(count)[2]), (byte) 1, (byte) 6)){ throw new ValueOutOfRangeException(); } course.setCourseNumber(courseDetails.get(count)[0]); course.setDescriptiveTitle(courseDetails.get(count)[1]); - course.setUnits(Byte.parseByte(courseDetails.get(count++)[2])); + course.setUnits(Float.parseFloat(courseDetails.get(count++)[2])); } } } @@ -121,12 +135,11 @@ public double calculateGPA() { continue; } score += course.getGrade(); - units += course.getUnits(); + units += (int) course.getUnits(); } return score/units; } - /** * Saves the changes made of the user in his Curriculum monitoring */ @@ -138,16 +151,17 @@ public void saveCurriculum() { if (course.getGrade() == 0){ grade = "Not Yet Taken"; } - writer.write(course.getYear() + "," + course.getTerm() + "," + course.getCourseNumber() + - course.getDescriptiveTitle() + "," + course.getUnits() + "," + grade + "\n"); + writer.write(course.getYear() + "," + course.getTerm() + "," + course.getCourseNumber() + "," + + course.getDescriptiveTitle() + "," + course.getUnits() + "," + grade + "\n"); } } catch (IOException e) { throw new RuntimeException(e); } } - - + public void reset() { + courses.clear(); + } } From 42ce38817866477b9aa823a684b161240b6d8b69 Mon Sep 17 00:00:00 2001 From: OrcaAzure <165769501+OrcaAzure@users.noreply.github.com> Date: Thu, 2 May 2024 22:28:38 +0800 Subject: [PATCH 3/3] Update CurriculumGui.java --- src/CurriculumGui.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/CurriculumGui.java b/src/CurriculumGui.java index a466b7f..a59cc49 100644 --- a/src/CurriculumGui.java +++ b/src/CurriculumGui.java @@ -81,7 +81,7 @@ private void saveCurriculum() { curriculumManager.saveCurriculum(); } - public void displayCurriculum() { + public void displayCurriculum() ArrayList curriculum = curriculumManager.getCurriculum(); Object[][] data = new Object[curriculum.size()][6]; @@ -105,7 +105,3 @@ public static void main(String[] args) { } } - - - -