-
目录
-
功能讲解
-
主程序入口 (
main
方法):- 初始化
Scanner
对象用于读取用户输入。 - 创建
StudentManagementSystem
对象用于管理学生信息。 - 使用
boolean
变量running
控制程序运行循环。 - 通过
while
循环不断显示菜单并处理用户选择。
- 初始化
-
用户输入处理:
通过Scanner
对象读取用户输入的选项。 -
功能选择 (
根据用户输入的选项执行不同的操作。switch
语句): -
添加学生 (
case 1
):- 读取学生的详细信息并创建
Student
对象。 - 调用
StudentManagementSystem
的addStudent
方法添加学生。
case 1
- 读取学生的详细信息并创建
-
删除学生 (
case 2
):- 读取要删除的学生 ID。
- 遍历学生列表,找到并删除指定 ID 的学生。
case 2 -
按姓名搜索学生 (
case 3
):- 读取要搜索的学生姓名。
- 调用
StudentManagementSystem
的searchByName
方法并显示搜索结果。
case 3 -
按专业搜索学生 (
case 4
):- 读取要搜索的专业名称。
- 调用
StudentManagementSystem
的searchByMajor
方法并显示搜索结果。
case 4 -
按 GPA 搜索学生 (
case 5
):- 读取要搜索的 GPA 值。
- 调用
StudentManagementSystem
的searchByGpa
方法并显示搜索结果。
case 5 -
显示所有学生 (
case 6
):- 调用
StudentManagementSystem
的getStudents
方法并遍历显示所有学生信息。
case 6 - 调用
-
退出程序 (
case 7
):- 设置
running
为false
以退出循环。 - 打印退出信息。
case 7 - 设置
-
无效输入处理 (
打印错误信息提示用户输入无效。default
): -
资源关闭:
在用户选择退出时关闭Scanner
资源。 -
程序退出:
使用return
语句退出main
方法,结束程序。
-
基本语法讲解
-
包声明
package code;
这行代码将类归属于名为
code
的包。 -
导入语句
import java.util.Iterator; import java.util.List; import java.util.Scanner;
这些语句导入了 Java 标准库中的
Iterator
、List
和Scanner
类,使得可以在代码中使用这些类。 -
类定义
public class Main { // ... }
这是
Main
类的定义,它是程序的入口点。 -
构造函数
public Main() { }
这是
Main
类的构造函数,它在创建类的新实例时被调用。 -
主方法
public static void main(String[] args) { // ... }
main
方法是 Java 程序的入口点。当程序运行时,它首先执行main
方法。 -
对象创建
Scanner scanner = new Scanner(System.in); StudentManagementSystem sms = new StudentManagementSystem();
这些行创建了
Scanner
和StudentManagementSystem
类的实例。 -
循环
while (true) { // ... }
这是一个无限循环,它不断地执行内部的代码块,直到
running
变量被设置为false
。 -
switch 语句
switch (choice) { case 1: // ... break; // ... }
switch
语句用于基于不同的情况执行不同的代码块。用于选择功能。 -
条件语句
if (searchResults.isEmpty()) { System.out.println("No students found!"); } else { // ... }
if-else
语句用于基于条件执行不同的代码块。 -
迭代器
Iterator var30 = searchResults.iterator(); while (var30.hasNext()) { Student s = (Student)var30.next(); System.out.println(s); }
这些行代码使用
Iterator
遍历List
中的元素。 -
标签
while(true) { label80: while(running) { // ... } }
label80
是一个标签,它与continue label80;
语句一起使用,用于跳过当前迭代的剩余部分并继续下一次迭代。这种做法在 Java 中不推荐使用,因为它会使代码难以理解和维护。 -
资源关闭
scanner.close();
这行代码关闭了
Scanner
对象,释放了它所使用的资源。
-
类功能讲解
-
Student
类
Student
类用于表示单个学生的信息。它包含以下功能:
-
属性:
name
:学生的姓名。age
:学生的年龄。gender
:学生的性别。id
:学生的唯一标识符或学号。major
:学生所学的专业。gpa
:学生的平均成绩点数(Grade Point Average)。
-
构造函数:
- 用于创建
Student
对象时初始化所有属性。
- 用于创建
-
Getter 和 Setter 方法:
- 提供访问和修改学生属性的方法。
-
toString 方法:
- 重写了
Object
类的toString
方法,用于返回学生的字符串表示,方便打印和显示学生信息。
- 重写了
-
StudentManagementSystem
类
StudentManagementSystem
类负责管理学生信息的集合。它包含以下功能:
-
属性:
students
:一个ArrayList
,用于存储学生对象的集合。 -
构造函数:
用于创建StudentManagementSystem
对象并初始化学生列表。 -
添加学生:
addStudent(Student student)
:向学生列表中添加一个新的学生对象。 -
删除学生:
removeStudent(Student student)
:从学生列表中删除一个已存在的学生对象。 -
获取所有学生:
getStudents()
:返回学生列表中的所有学生对象。 -
搜索学生:
searchByName(String name)
:根据学生姓名搜索学生。searchByMajor(String major)
:根据学生专业搜索学生。searchByGpa(double gpa)
:根据学生 GPA 搜索学生。
-
迭代器使用:
在搜索方法中,使用Iterator
遍历学生列表,并对每个学生对象进行条件检查。
Student
类和 StudentManagementSystem
类共同构成了学生管理系统的基础。Student
类负责存储单个学生的信息,而 StudentManagementSystem
类则负责管理所有学生对象的集合,包括添加、删除和搜索学生。这些类的设计使得学生信息的管理变得简单和直观。