HOWTO · Java

Java での名簿アプリケーション

このチュートリアルでは、Java で名簿アプリケーションを開発する方法を示します。

このページの内容

このチュートリアルでは、Java で名簿アプリケーションを開発する方法を示します。

Java での名簿アプリケーション

名簿アプリケーションは、候補者の記録の詳細、または特定の候補者が仕事を遂行しなければならない注文の詳細を提供します。 名簿アプリケーションは、あらゆる記録を維持するために使用されます。

学生の記録に使用される単純な名簿アプリケーションの例を作成しました。 アプリケーションは、学生の記録を追加/更新、表示、および削除できます。

Java での学生名簿アプリケーション

前述のように、いくつかの記録管理操作に限定された単純な名簿アプリケーションを作成しました。 名簿アプリケーションには、レコードのメンテナンスに使用されるオプションをいくつでも含めることができます。

私たちのアプリケーションは、次の操作を実行します。

  1. 追加/更新 - 新入生のレコードを追加します。これには 3つの学年を持つ名前が含まれます。 また、以前の学生の記録を更新します。
  2. 削除 - 名前を入力するだけで生徒の記録を削除します。
  3. 表示 - 最高の成績が記載されている学生の記録を表示します。
  4. 表示 - メイン ページに学生のリストと成績を表示します。

このアプリケーションには 2つのクラスが含まれています。 1つは生徒の記録を作成することで、もう 1つは生徒の記録を維持することです。 このシステムは 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名簿メインページ

  2. 生徒の記録を追加/更新:

    新しい学生レコードを追加するには、Add と入力して Ok を押します。 記録を更新したい場合は、Add と入力し、Ok を押して、生徒の名前と新しい成績を入力すると、記録が更新されます。

    追加:

    Java Roster Add Student

    アップデート:

    Java Roster Update Student

  3. 生徒の記録を削除:

    生徒の記録を削除するには、Delete と入力し、Ok を押してから、生徒の名前を入力して記録を削除します。

    Java Roster Delete Student

  4. 生徒の記録を表示:

    生徒の記録を表示するには、View と入力し、Ok を押してから、生徒の名前を入力して生徒の記録を表示します。 また、学生の最高成績も表示されます。

    Java Roster View Student

  5. 名簿を終了します。

    学生名簿アプリケーションを終了するには、Exit と入力して Ok を押します。

    Java Roster Exit