功能讲解
本报告旨在分析和讲解一个学生管理系统的实现,该系统通过命令行界面(CLI)与用户交互,提供了四个主要功能:添加学生、显示所有学生、查询学生和退出系统。
1. 添加学生
用户可以通过输入学生的详细信息(如姓名、年龄、性别、ID、专业和GPA)来添加新的学生记录到系统中。系统将这些信息封装在
Student
类的实例中,并通过StudentManagementSystem
类的方法将其添加到内部的数据结构中(如ArrayList
)。
private static void addStudent(Scanner scanner, StudentManagementSystem sms) {
System.out.println("Enter student name:");
String name = scanner.nextLine();
System.out.println("Enter student age:");
int age = scanner.nextInt();
scanner.nextLine();
System.out.println("Enter student gender (e.g., 'Male' or 'Female'):");
String gender = scanner.nextLine();
System.out.println("Enter student ID:");
String id = scanner.nextLine();
System.out.println("Enter student major:");
String major = scanner.nextLine();
System.out.println("Enter student GPA:");
double gpa = scanner.nextDouble();
scanner.nextLine();
Student student = new Student(name, age, gender, id, major, gpa);
sms.addStudent(student);
System.out.println("Student added successfully!\n");
}
2. 显示所有学生
系统能够列出所有已添加的学生记录,并以一种易于阅读的格式展示它们的详细信息。这通过遍历
StudentManagementSystem
类中维护的学生列表并打印每个Student
对象的toString
方法返回的字符串来实现。
private static void showAllStudents(StudentManagementSystem sms) {
List<Student> students = sms.getAllStudents();
if (students.isEmpty()) {
System.out.println("The System Data is empty Now!");
} else {
for (Student student : students) {
System.out.println(student);
}
}
}
3. 查询学生
用户可以通过输入学生的姓名来查询系统中的学生记录。系统会在内部的学生列表中搜索与输入姓名匹配的学生,并返回匹配的结果。如果找到匹配的学生,则按格式打印这些学生的详细信息;如果未找到,则提示用户未找到相关记录。
private static void searchStudentByName(Scanner scanner, StudentManagementSystem sms) {
System.out.println("Enter student name to search:");
String name = scanner.nextLine();
List<Student> searchResults = sms.searchByName(name);
if (searchResults.isEmpty()) {
System.out.println("No students found!");
} else {
System.out.println("Search results:");
for (Student student : searchResults) {
System.out.println(student);
}
}
}
}
4. 退出
用户可以通过选择退出选项来终止程序的运行。这通过修改一个布尔变量(如
running
)的值来实现,该变量控制程序的主循环是否继续执行。
case 4:
running = false;
System.out.println("Exit Successfully!");
break;
default:
System.out.println("Invalid choice!");
基本语法讲解
类的定义
public class Student {...}
和public class StudentManagementSystem {...}
分别定义了Student
和StudentManagementSystem
类,它们封装了相关的属性和方法。
public class Student {}
public class StudentManagementSystem{}
public class StudentManagementSystemTest{}
构造函数
- 构造函数用于初始化对象的属性。例如,
Student
类的构造函数接受多个参数来设置学生的姓名、年龄等属性。
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
类中的getter
和setter
方法用于访问和修改对象的属性。StudentManagementSystem
类中的方法则用于管理学生记录,如添加学生、获取所有学生列表和按姓名搜索学生。
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return this.gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public String getMajor() {
return this.major;
}
public void setMajor(String major) {
this.major = major;
}
public double getGpa() {
return this.gpa;
}
public void setGpa(double gpa) {
this.gpa = gpa;
}
public String toString() {
return "Student{name='" + this.name + '\'' + ", age=" + this.age + ", gender='" + this.gender + '\'' + ", id='" + this.id + '\'' + ", major='" + this.major + '\'' + ", gpa=" + this.gpa + '}';
}
静态方法和非静态方法
- 静态方法可以直接通过类名调用,不需要创建类的实例。但在这个案例中,大部分方法都是非静态的,因为它们需要操作
StudentManagementSystem
实例的状态(如学生列表)。
public class StudentManagementSystem {
private List<Student> students = new ArrayList<>();
public void addStudent(Student student) {
students.add(student);
}
public List<Student> getAllStudents() {
return new ArrayList<>(students);
}
public List<Student> searchByName(String name) {
List<Student> results = new ArrayList<>();
for (Student student : students) {
if (student.getName().equals(name)) {
results.add(student);
}
}
return results;
}
}
主方法(main
)
public static void main(String[] args)
是程序的入口点。它创建了一个Scanner
对象来从控制台读取输入,并初始化了一个StudentManagementSystem
对象来管理学生记录。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StudentManagementSystem sms = new StudentManagementSystem();
boolean running = true; }
类功能讲解
Student 类
- 属性:包括
name
、age
、gender
、id
、major
和gpa
,用于存储学生的详细信息。- 方法:
getter
和setter
方法用于访问和修改学生的属性。toString
方法被重写以返回学生的详细信息字符串,便于打印。
StudentManagementSystem 类
- 属性:至少包含一个
List<Student>
来存储所有的学生记录。- 方法:
addStudent(Student student)
:将一个新的学生记录添加到列表中。getAllStudents()
:返回包含所有学生记录的列表。searchByName(String name)
:根据姓名搜索学生记录,并返回匹配结果的列表。
总结
本学生管理系统通过定义
Student
和StudentManagementSystem
类,以及实现相应的功能方法,提供了一个简洁而有效的命令行界面来管理学生记录。该系统利用了Java的基本语法和面向对象编程的特性,如类的定义、构造函数、方法、属性以及集合类的使用。通过本系统的实现,用户可以方便地进行学生记录的添加、显示、查询和退出操作。