Java의 명단 응용 프로그램

Sheeraz Gul 2024년2월15일
  1. Java의 명단 응용 프로그램
  2. Java의 학생 명단 응용 프로그램
Java의 명단 응용 프로그램

이 튜토리얼은 Java로 명단 애플리케이션을 개발하는 방법을 보여줍니다.

Java의 명단 응용 프로그램

명부 애플리케이션은 특정 후보자가 직무를 수행해야 하는 후보자의 기록 또는 주문 세부 사항에 대한 세부 정보를 제공합니다. 명단 응용 프로그램은 모든 기록을 유지하는 데 사용됩니다.

우리는 학생 기록에 사용되는 간단한 명단 응용 프로그램에 대한 예제를 만들었습니다. 응용 프로그램은 학생의 기록을 추가/업데이트, 보기 및 삭제할 수 있습니다.

Java의 학생 명단 응용 프로그램

위에서 언급했듯이 일부 레코드 유지 작업으로 제한된 간단한 명단 응용 프로그램을 만들었습니다. 명단 응용 프로그램은 기록 유지 관리에 사용되는 만큼 많은 옵션을 포함할 수 있습니다.

우리 애플리케이션은 다음 작업을 수행합니다.

  1. 추가/업데이트 - 새 학생에 대한 레코드를 추가합니다. 여기에는 세 등급의 이름이 포함됩니다. 또한 이전 학생의 기록을 업데이트합니다.
  2. 삭제 - 이름만 입력하여 학생기록을 삭제합니다.
  3. 보기 - 상위 성적이 언급된 학생의 기록을 봅니다.
  4. 표시 - 메인 페이지에 성적이 있는 학생 목록을 표시합니다.

우리의 애플리케이션에는 두 개의 클래스가 있습니다. 하나는 학생 기록을 만드는 것이고 다른 하나는 학생 기록을 유지하는 것입니다. 이 시스템은 Java Swing을 기반으로 합니다.

학생 명단 애플리케이션의 코드를 살펴보겠습니다.

코드 - CreateStudent.java:

package delftstack;

public class CreateStudent {
  private String Student_Name;
  private int[] Student_Grades;

  // Default constructor
  public CreateStudent() {
    Student_Name = "";
    for (int i = 0; i < Student_Grades.length; i++) {
      Student_Grades[i] = 0;
    }
  }

  // Constructor with inputs
  public CreateStudent(String Name1, int[] Grade1) {
    Student_Grades = new int[3];
    SetStudentName(Name1);
    SetStudentGrades(Grade1);
  }

  // Return the name of the students
  public String GetStudentName() {
    return Student_Name;
  }

  // Return the grades of the student
  public int[] GetStudentGrades() {
    return Student_Grades;
  }

  // To store the Name
  public void SetStudentName(String Name1) {
    Student_Name = Name1;
  }

  // To store or set the grades
  public void SetStudentGrades(int[] Grade2) {
    for (int i = 0; i < Grade2.length; i++) {
      Student_Grades[i] = Grade2[i];
    }
  }

  // Return the name and grades in string
  public String ConverttoString() {
    return (
        Student_Name + " " + Student_Grades[0] + " " + Student_Grades[1] + " " + Student_Grades[2]);
  }

  // Returns the top grade
  public int GetTopGrade(int[] Grade3) {
    int top = Grade3[0];

    for (int x = 0; x < Grade3.length; x++) {
      if (top < Grade3[x]) {
        top = Grade3[x];
      }
    }
    return top;
  }
}

위의 클래스는 학생 기록을 만들고 검색하는 데 사용됩니다. 또한 특정 학생의 최고 성적을 반환합니다.

코드 - MaintainStudent.java:

package delftstack;

import java.text.*;
import java.util.Vector;
import javax.swing.*;

public class MaintainStudent {
  // to determine the user input errors
  static int Error_Flag = 0;

  public static void main(String args[]) {
    // The default value for grades
    int[] Grade1 = {98, 99, 95};
    int[] Grade2 = {89, 93, 75};
    int[] Grade3 = {50, 45, 65};

    // The default Student record
    CreateStudent Student1 = new CreateStudent("Jack Sparrow", Grade1);
    CreateStudent Student2 = new CreateStudent("Frank Morgan", Grade2);
    CreateStudent Student3 = new CreateStudent("Forest Gump", Grade3);

    // Create A vector of 'students' objects
    Vector Students_Vector = new Vector();
    Students_Vector.add(Student1);
    Students_Vector.add(Student2);
    Students_Vector.add(Student3);

    String Option_Choice = "";
    String Option_Message = "";
    String Option_Text = "";
    String Option_Input = "";
    String Option_Record = "";

    // To keep track of the top grade
    int Top_Grade = 0;

    // To Hold the student's grade
    int[] Students_Grade = {0, 0};
    int Student_Index1 = 0;
    int Student_Index2 = 0;
    int Student_Index3 = 0;
    String Student_Grade_1 = "";
    String Student_Grade_2 = "";
    String Student_Grade_3 = "";
    int Gr_1 = 0;
    int Gr_2 = 0;
    int Gr_3 = 0;
    String Student_Name = "";

    // To validate of input
    boolean Retry_Student = false;
    // To validate if the name is found
    boolean Found_Student = false;

    try {
      while (!(Option_Choice.equalsIgnoreCase("Exit"))) {
        Option_Message = "";
        for (int i = 0; i < Students_Vector.size(); i++) {
          Option_Message =
              Option_Message + ((CreateStudent) Students_Vector.get(i)).ConverttoString() + "\n";
        }

        Option_Message = Option_Message
            + "\n\n\nType 'Add' press 'Ok' to add a student\nType 'Delete' and press 'Ok' to delete a student\nType 'View' and press 'Ok' to view a student's record\nType 'Exit' and press 'Ok' to exit:";

        Option_Choice = JOptionPane.showInputDialog(
            null, Option_Message, "Students Roster Application", JOptionPane.QUESTION_MESSAGE);

        if (Option_Choice.equalsIgnoreCase("Add")) {
          try {
            Option_Input = JOptionPane.showInputDialog(null,
                "Please enter student's name and grades\nwith no spaces between entries:\nFor Example: Sheeraz,87,88,99",
                "Input", JOptionPane.QUESTION_MESSAGE);
            Option_Input = Option_Input.trim();

            // Reset the flag
            Error_Flag = 0;

            Retry_Student = Input_Validation(Option_Input);

            if (1 == Error_Flag) {
              JOptionPane.showMessageDialog(null,
                  "Wrong Entry: Please Enter a name which begins with a Letter!\nPlease click OK to retry.",
                  "Error", JOptionPane.ERROR_MESSAGE);
            } else if (2 == Error_Flag) {
              JOptionPane.showMessageDialog(null,
                  "Wrong Entry: The student's grade is missing!\nPlease click OK to retry.",
                  "Error", JOptionPane.ERROR_MESSAGE);
            } else if (3 == Error_Flag) {
              JOptionPane.showMessageDialog(null,
                  "Worng Entry: Student's grades digit limit exceeded, please enter grades with three digits.!\nPlease click OK to retry.",
                  "Error", JOptionPane.ERROR_MESSAGE);
            } else if (4 == Error_Flag) {
              JOptionPane.showMessageDialog(null,
                  "Worng Entry: Please enter a Student name it cannot be blank or ommitted!\nPlease click OK to retry.",
                  "Error", JOptionPane.ERROR_MESSAGE);
            } else if (5 == Error_Flag) {
              JOptionPane.showMessageDialog(null,
                  "Wrong Entry: Please do not add Blank spaces \nbefore or after the full name, commas and grades!\nPlease click OK to retry.",
                  "Error", JOptionPane.ERROR_MESSAGE);
            }

            // Check if the first input was invalid
            if (true == Retry_Student) {
              // ask the user for valid input
              while (true == Retry_Student) {
                Option_Input = JOptionPane.showInputDialog(null,
                    "Please Re-Enter student's info\nwith no spaces between entries:\nFor example: (Sheeraz Gul,87,88,99)",
                    "Input", JOptionPane.QUESTION_MESSAGE);
                Option_Input = Option_Input.trim();

                Retry_Student = Input_Validation(Option_Input);

                if (1 == Error_Flag) {
                  JOptionPane.showMessageDialog(null,
                      "Wrong Entery: Please Enter a name which begins with a Letter!\nPlease click OK to retry.",
                      "Error", JOptionPane.ERROR_MESSAGE);
                } else if (2 == Error_Flag) {
                  JOptionPane.showMessageDialog(null,
                      "Wrong Entry: The student's grade is missing!\nPlease click OK to retry.",
                      "Error", JOptionPane.ERROR_MESSAGE);
                } else if (3 == Error_Flag) {
                  JOptionPane.showMessageDialog(null,
                      "Worng Entry: Student's grades digit limit exceeded, please enter grades with three digits.!\nPlease click OK to retry.",
                      "Error", JOptionPane.ERROR_MESSAGE);
                } else if (4 == Error_Flag) {
                  JOptionPane.showMessageDialog(null,
                      "Worng Entry: Please enter a Student name it cannot be blank or ommitted!\nPlease click OK to retry.",
                      "Error", JOptionPane.ERROR_MESSAGE);
                } else if (5 == Error_Flag) {
                  JOptionPane.showMessageDialog(null,
                      "Wrong Entry: Please do not add Blank spaces \\nbefore or after the full name, commas and grades!\nPlease click OK to retry.",
                      "Error", JOptionPane.ERROR_MESSAGE);
                }

                // Reset the flag
                Error_Flag = 0;
              }
            }
          } catch (IndexOutOfBoundsException e) {
            Option_Input = JOptionPane.showInputDialog(null,
                "Please Re-Enter the student's Infor \nwith no spaces between entries:\nFor example: (Sheeraz,87,88,99)",
                "Input", JOptionPane.QUESTION_MESSAGE);
            Option_Input = Option_Input.trim();
          }

          // All the validation is done above; if everything is fine, process the user input.
          Student_Index1 = Option_Input.indexOf(",");
          Student_Index2 = Option_Input.indexOf(",", Student_Index1 + 1);
          Student_Index3 = Option_Input.indexOf(",", Student_Index2 + 1);

          Student_Name = Option_Input.substring(0, Student_Index1);
          Student_Grade_1 = Option_Input.substring(Student_Index1 + 1, Student_Index2);
          Student_Grade_2 = Option_Input.substring(Student_Index2 + 1, Student_Index3);
          Student_Grade_3 = Option_Input.substring(Student_Index3 + 1);

          // Remove the spaces
          Student_Name = Student_Name.trim();
          Student_Grade_1 = Student_Grade_1.trim();
          Student_Grade_2 = Student_Grade_2.trim();
          Student_Grade_3 = Student_Grade_3.trim();

          Gr_1 = Integer.parseInt(Student_Grade_1);
          Gr_2 = Integer.parseInt(Student_Grade_2);
          Gr_3 = Integer.parseInt(Student_Grade_3);

          Grade1[0] = Gr_1;
          Grade1[1] = Gr_2;
          Grade1[2] = Gr_3;

          Found_Student = false;

          // To update the student's record if it exists
          for (int p = 0; p < Students_Vector.size(); p++) {
            if (Student_Name.equals(((CreateStudent) Students_Vector.get(p)).GetStudentName())) {
              ((CreateStudent) Students_Vector.get(p)).SetStudentGrades(Grade1);
              Found_Student = true;
            }
          }

          // add the student to the roster if it doesn't exist.
          if (!Found_Student) {
            CreateStudent student = new CreateStudent(Student_Name, Grade1);
            Students_Vector.add(student);
          }
          // Inform the user
          else {
            JOptionPane.showMessageDialog(null,
                "The student, " + Student_Name + " is updated!\nPlease click OK to go back.",
                "Info", JOptionPane.INFORMATION_MESSAGE);
          }
        } else if (Option_Choice.equalsIgnoreCase("Delete")) {
          Option_Input = JOptionPane.showInputDialog(null,
              "Please enter student's name you want to delete:", "Input",
              JOptionPane.QUESTION_MESSAGE);
          Found_Student = false;

          // Search for a name and delete it.
          for (int i = 0; i < Students_Vector.size(); i++) {
            if (Option_Input.equals(((CreateStudent) Students_Vector.get(i)).GetStudentName())) {
              Students_Vector.remove(i);
              Found_Student = true;
              break;
            }
          }
          // Go back to the menu if the user info is not found.
          if (!Found_Student) {
            JOptionPane.showMessageDialog(null,
                "Please enter the correct name, this student does not exist!\nPlease click OK to go back.",
                "Error", JOptionPane.ERROR_MESSAGE);
          }
        } else if (Option_Choice.equalsIgnoreCase("View")) {
          Option_Input = JOptionPane.showInputDialog(null,
              "Please enter the student's name to view the record:", "Input",
              JOptionPane.QUESTION_MESSAGE);
          Found_Student = false;

          // Search for a name and show the record
          for (int m = 0; m < Students_Vector.size(); m++) {
            if (Option_Input.equals(((CreateStudent) Students_Vector.get(m)).GetStudentName())) {
              Students_Grade = ((CreateStudent) Students_Vector.get(m)).GetStudentGrades();
              Top_Grade = ((CreateStudent) Students_Vector.get(m)).GetTopGrade(Students_Grade);
              Option_Record = ((CreateStudent) Students_Vector.get(m)).ConverttoString()
                  + "\nThe Top Grade: " + Top_Grade;

              JOptionPane.showMessageDialog(
                  null, Option_Record, Option_Input, JOptionPane.INFORMATION_MESSAGE);
              Found_Student = true;
              break;
            }
          }
          // If no record is found, go back to the menu.
          if (!Found_Student) {
            JOptionPane.showMessageDialog(null,
                "Please enter the correct name, this student does not exist!\nPlease click OK to go back.",
                "Error", JOptionPane.ERROR_MESSAGE);
          }
        } else {
          // If the user types anything other than "Add", "Delete", "View", or "Exit", then inform
          // him.
          if (!(Option_Choice.equalsIgnoreCase("Exit"))) {
            if (Option_Choice.trim().equals("")) {
              JOptionPane.showMessageDialog(null,
                  "Please first make a selection then click OK!\nPlease click OK to go back.",
                  "Error", JOptionPane.ERROR_MESSAGE);
            } else {
              JOptionPane.showMessageDialog(null,
                  "Please enter the correct option, this option does not exist!\nPlease click OK to go back.",
                  "Error", JOptionPane.ERROR_MESSAGE);
            }
          }
        }
      }
    } catch (NullPointerException e) {
      System.exit(0);
    }

    System.exit(0);
  }

  // For input validation
  private static boolean Input_Validation(String Demo_String) {
    boolean R_Value = false;

    int Comma_Count = 0;
    int Index1_Comma = 0;
    int Index2_Comma = 0;
    int Index3_Comma = 0;
    char Comma_Char;
    boolean Comma_Position = true;

    String String_Name = "";
    String String_Grade1 = "";
    String String_Grade2 = "";
    String String_Grade3 = "";
    int String_Grade_1 = 0;
    int String_Grade_2 = 0;
    int String_Grade_3 = 0;

    // Check for a blank string
    if ((0 == Demo_String.length()) || (Demo_String.equals(""))) {
      R_Value = true;
    }

    // Check for commas
    for (int i = 0; i < Demo_String.length(); i++) {
      if ((Demo_String.charAt(i)) == ',') {
        Comma_Count++;
      }
    }

    // Check for the positions of commas and make sure there are three commas
    if (3 == Comma_Count) {
      Index1_Comma = Demo_String.indexOf(",");
      Index2_Comma = Demo_String.indexOf(",", Index1_Comma + 1);
      Index3_Comma = Demo_String.indexOf(",", Index2_Comma + 1);

      if (Index2_Comma == Index1_Comma + 1) {
        R_Value = true;
        Comma_Position = false;
      } else if (Index3_Comma == Index2_Comma + 1) {
        R_Value = true;
        Comma_Position = false;
      }
    } else {
      R_Value = true;
    }

    // Dissects the 'string' to store the data
    if ((3 == Comma_Count) && (true == Comma_Position)) {
      String_Name = Demo_String.substring(0, Index1_Comma);
      String_Grade1 = Demo_String.substring(Index1_Comma + 1, Index2_Comma);
      String_Grade2 = Demo_String.substring(Index2_Comma + 1, Index3_Comma);
      String_Grade3 = Demo_String.substring(Index3_Comma + 1);

      // Compare the string with the trimmed string because white spaces are not allowed.

      if (!(String_Name.equals(String_Name.trim()))) {
        Error_Flag = 5;
        R_Value = true;
      }
      if (!(String_Grade1.equals(String_Grade1.trim()))) {
        Error_Flag = 5;
        R_Value = true;
      }
      if (!(String_Grade2.equals(String_Grade2.trim()))) {
        Error_Flag = 5;
        R_Value = true;
      }
      if (!(String_Grade3.equals(String_Grade3.trim()))) {
        Error_Flag = 5;
        R_Value = true;
      }

      // Once the flag is set, return to call the program.
      if (0 < Error_Flag) {
        return R_Value;
      }

      // Remove the white spaces
      String_Name = String_Name.trim();
      String_Grade1 = String_Grade1.trim();
      String_Grade2 = String_Grade2.trim();
      String_Grade3 = String_Grade3.trim();

      // Check for the empty names or null values
      if ((String_Name.equals("")) || (null == String_Name)) {
        Error_Flag = 4;
        R_Value = true;
      }

      if (0 < Error_Flag) {
        return R_Value;
      }

      // Make sure the name starts with a letter.
      if (!((String_Name.equals("")) || (null == String_Name))) {
        int ASCII = Demo_String.charAt(0);

        if (ASCII < 65) {
          Error_Flag = 1;
          R_Value = true;
        } else if ((ASCII > 58) && (ASCII < 65)) {
          Error_Flag = 1;
          R_Value = true;
        } else if (ASCII > 122) {
          Error_Flag = 1;
          R_Value = true;
        }
      }

      if (0 < Error_Flag) {
        return R_Value;
      }

      // Check for empty grades or null values
      if ((String_Grade1.equals("")) || (null == String_Grade1)) {
        Error_Flag = 2;
        R_Value = true;
      } else if ((String_Grade2.equals("")) || (null == String_Grade2)) {
        Error_Flag = 2;
        R_Value = true;
      } else if ((String_Grade3.equals("")) || (null == String_Grade3)) {
        Error_Flag = 2;
        R_Value = true;
      }

      if (0 < Error_Flag) {
        return R_Value;
      }

      // Make sure the grades contain only numbers
      try {
        String_Grade_1 = Integer.parseInt(String_Grade1);
        String_Grade_2 = Integer.parseInt(String_Grade2);
        String_Grade_3 = Integer.parseInt(String_Grade3);
      } catch (NumberFormatException e) {
        R_Value = true;
      }

      // Make sure the grades have only three digits
      if (3 < String_Grade1.length()) {
        Error_Flag = 3;
        R_Value = true;
      } else if (3 < String_Grade2.length()) {
        Error_Flag = 3;
        R_Value = true;
      } else if (3 < String_Grade3.length()) {
        Error_Flag = 3;
        R_Value = true;
      }
    }

    return R_Value;
  }
}

MaintainStudent 클래스는 학생의 기록을 유지하는 데 사용됩니다. 추가/업데이트, 삭제, 보기 및 종료 작업을 수행합니다. 이 클래스에는 드라이버의 기본 메서드도 포함되어 있습니다.

애플리케이션을 실행하고 다양한 작업에 대한 출력을 살펴보겠습니다.

  1. 메인 페이지:

    Java Roster Main Page

  2. 학생 기록 추가/업데이트:

    새 학생 기록을 추가하려면 추가를 입력하고 확인을 누릅니다. 기록을 업데이트하려면 추가를 입력하고 확인을 누른 다음 학생 이름과 새 성적을 입력하면 기록이 업데이트됩니다.

    추가하다:

    Java Roster 학생 추가

    업데이트:

    Java 명단 업데이트 학생

  3. 학생 기록 삭제:

    학생 기록을 삭제하려면 삭제를 입력하고 확인을 누른 다음 학생 이름을 입력하여 기록을 삭제합니다.

    Java 명단 학생 삭제

  4. 학생 기록 보기:

    학생 기록을 보려면 보기를 입력하고 확인을 누른 다음 학생의 이름을 입력하여 학생 기록을 표시합니다. 또한 학생의 최고 등급도 표시됩니다.

    Java 학생 명단 보기

  5. 명단 종료:

    학생 명단 응용 프로그램을 종료하려면 종료를 입력하고 확인을 누릅니다.

    Java 목록 종료

작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook