HOWTO · Java
Java での名簿アプリケーション
このチュートリアルでは、Java で名簿アプリケーションを開発する方法を示します。
このページの内容
このチュートリアルでは、Java で名簿アプリケーションを開発する方法を示します。
Java での名簿アプリケーション
名簿アプリケーションは、候補者の記録の詳細、または特定の候補者が仕事を遂行しなければならない注文の詳細を提供します。 名簿アプリケーションは、あらゆる記録を維持するために使用されます。
学生の記録に使用される単純な名簿アプリケーションの例を作成しました。 アプリケーションは、学生の記録を追加/更新、表示、および削除できます。
Java での学生名簿アプリケーション
前述のように、いくつかの記録管理操作に限定された単純な名簿アプリケーションを作成しました。 名簿アプリケーションには、レコードのメンテナンスに使用されるオプションをいくつでも含めることができます。
私たちのアプリケーションは、次の操作を実行します。
- 追加/更新 - 新入生のレコードを追加します。これには 3つの学年を持つ名前が含まれます。 また、以前の学生の記録を更新します。
- 削除 - 名前を入力するだけで生徒の記録を削除します。
- 表示 - 最高の成績が記載されている学生の記録を表示します。
- 表示 - メイン ページに学生のリストと成績を表示します。
このアプリケーションには 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 クラスは生徒の記録を維持するために使用されます。 追加/更新、削除、表示、および終了操作を実行します。 このクラスには、ドライバーのメイン メソッドも含まれています。
アプリケーションを実行して、さまざまな操作の出力を確認してみましょう。
-
メインページ:
-
生徒の記録を追加/更新:
新しい学生レコードを追加するには、
Addと入力してOkを押します。 記録を更新したい場合は、Addと入力し、Okを押して、生徒の名前と新しい成績を入力すると、記録が更新されます。追加:
アップデート:
-
生徒の記録を削除:
生徒の記録を削除するには、
Deleteと入力し、Okを押してから、生徒の名前を入力して記録を削除します。
-
生徒の記録を表示:
生徒の記録を表示するには、
Viewと入力し、Okを押してから、生徒の名前を入力して生徒の記録を表示します。 また、学生の最高成績も表示されます。
-
名簿を終了します。
学生名簿アプリケーションを終了するには、
Exitと入力してOkを押します。