1、建立菜单
2、功能一:添加学生
- 代码展示:
case 1:
// Add a student
System.out.println("Enter student name:");
String name = scanner.next();
System.out.println("Enter student age:");
int age = scanner.nextInt();
System.out.println("Enter student gender:");
String gender = scanner.next();
System.out.println("Enter student ID:");
String id = scanner.next();
System.out.println("Enter student major:");
String major = scanner.next();
System.out.println("Enter student GPA:");
double gpa = scanner.nextDouble();
Student student = new Student(name, age, gender, id, major, gpa);
sms.addStudent(student);
System.out.println("Student added successfully!\n");
break;
- 运行结果
- 简单分析
-
输入学生信息:
System.out.println("Enter student name:");
:提示用户输入学生的姓名。String name = scanner.next();
:通过scanner.next()
方法读取用户输入的学生姓名并存储在name
变量中。System.out.println("Enter student age:");
:提示用户输入学生的年龄。int age = scanner.nextInt();
:读取用户输入的年龄并存储在age
变量中。System.out.println("Enter student gender:");
:提示用户输入学生的性别。String gender = scanner.next();
:读取用户输入的性别并存储在gender
变量中。System.out.println("Enter student ID:");
:提示用户输入学生的ID。String id = scanner.next();
:读取用户输入的ID并存储在id
变量中。System.out.println("Enter student major:");
:提示用户输入学生的专业。String major = scanner.next();
:读取用户输入的专业并存储在major
变量中。System.out.println("Enter student GPA:");
:提示用户输入学生的GPA(绩点)。double gpa = scanner.nextDouble();
:读取用户输入的GPA并存储在gpa
变量中。
-
创建
Student
对象:Student student = new Student(name, age, gender, id, major, gpa);
:使用用户输入的信息创建一个新的Student
对象。
-
将学生对象添加到系统中:
sms.addStudent(student);
:调用sms
(学生管理系统)的addStudent
方法,将新创建的Student
对象添加到系统中。
-
确认添加成功:
System.out.println("Student added successfully!\n");
:输出一条消息,表示学生信息已成功添加。
基本语法讲解
-
System.out.println()
:这是一个用于在控制台输出信息的Java语句。println()
会在输出后自动换行。 -
scanner.next()
:读取用户输入的字符串。next()
方法在遇到空白字符时结束输入。 -
scanner.nextInt()
和scanner.nextDouble()
:分别读取用户输入的整数和浮点数。 -
new Student(...)
:创建一个新的Student
对象,并调用其构造函数初始化对象。 -
sms.addStudent(student);
:调用sms
对象的addStudent
方法,将student
对象添加到系统中。
类功能讲解
Student
类定义如下:
public class Student {
private String name;
private int age;
private String gender;
private String id;
private String major;
private double gpa;
public Student(String name, int age, String gender, String id, String major, double gpa) {
this.name = name;
this.age = age;
this.gender = gender;
this.id = id;
this.major = major;
this.gpa = gpa;
}
Student
类功能:
- 属性:存储学生的姓名、年龄、性别、ID、专业和GPA。
- 构造函数:初始化
Student
对象的所有属性。 - getter 和 setter 方法:允许访问和修改
Student
对象的属性。
sms
是一个 StudentManagementSystem
类的实例,并且它定义了一个 addStudent
方法,如下:
public class StudentManagementSystem {
private List<Student> students;
public void addStudent(Student student) {
students.add(student);
}
}
StudentManagementSystem
类功能:
- 属性:存储学生对象的列表。
addStudent
方法:将学生对象添加到列表中。
3、功能二:查询学生
- 代码展示
case 3:
// Show all Students
List<Student> studentList = sms.getStudents();
if (studentList.size() == 0) {
System.out.println("The System Data is empty Now!");
}else {
for (Student studentItem : studentList) {
System.out.println(studentItem.toString());
}
}
break;
- 运行结果
- 简单分析
基本语法讲解
System.out.println()
:在控制台输出信息,并在输出后自动换行。scanner.next()
:读取用户输入的字符串(学生姓名)。List<Student> searchResults = sms.searchByName(searchName);
:调用searchByName
方法,返回一个包含匹配学生的列表。searchResults.isEmpty()
:检查searchResults
列表是否为空。for (Student s : searchResults)
:遍历searchResults
列表中的每个Student
对象,并输出其信息。
类功能讲解
StudentManagementSystem
类定义了一个 searchByName
方法,类似于:
public class StudentManagementSystem {
private List<Student> students;
public List<Student> searchByName(String name) {
List<Student> result = new ArrayList<>();
for (Student student : students) {
if (student.getName().equals(name)) {
result.add(student);
}
}
return result;
}
}
searchByName
方法功能:
- 遍历学生列表:检查每个学生的姓名是否与搜索姓名匹配(忽略大小写)。
- 返回结果:将所有匹配的学生添加到
result
列表中并返回。
Student
类需要实现 toString
方法:
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", id='" + id + '\'' +
", major='" + major + '\'' +
", gpa=" + gpa +
'}';
}
}
4、功能三:显示所有学生
- 代码展示
case 3:
// Show all Students
List<Student> studentList = sms.getStudents();
if (studentList.size() == 0) {
System.out.println("The System Data is empty Now!");
}else {
for (Student studentItem : studentList) {
System.out.println(studentItem.toString());
}
}
break;
- 运行结果
- 简单分析
基本语法讲解
List<Student> studentList = sms.getStudents();
:调用getStudents
方法获取一个Student
对象的列表,并将其存储在studentList
变量中。studentList.size() == 0
:检查studentList
的大小是否为 0,以判断是否有学生数据。for (Student studentItem : studentList)
:使用增强型 for 循环遍历studentList
中的每个Student
对象。studentItem.toString()
:调用Student
对象的toString
方法,将学生信息格式化为字符串并输出。
类功能讲解
StudentManagementSystem
类定义了一个 getStudents
方法,如下所示:
public class StudentManagementSystem {
private List<Student> students;
public List<Student> getStudents() {
return students;
}
}
getStudents
方法功能:
- 返回学生列表:返回
students
列表的一个副本,以避免外部直接修改原始列表。
Student
类的 toString
方法:
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", id='" + id + '\'' +
", major='" + major + '\'' +
", gpa=" + gpa +
'}';
}
}
在这个代码片段中,通过 sms.getStudents()
获取当前系统中所有学生的列表。如果列表为空,则输出提示信息;否则,遍历列表并输出每个学生的信息,利用 toString
方法将学生对象格式化为易于阅读的字符串。