学生管理系统案例初步分析报告
目录
- 学生管理系统案例初步分析报告
- 功能讲解
- 数据处理
- 功能说明
- 类功能讲解
- 1.
Student
类 - 2.
StudentManagementSystem
类 - 3.
StudentManagementSystemTest
类 - 4.
Main
类 - 特殊类说明
- 1.
- 基本语法讲解
- 1. 类与对象
- 2. 封装性
- 3. 集合框架
- 6. 输入输出
- 功能讲解
功能讲解
数据处理
- 处理的数据:该程序主要处理学生的个人信息数据,包括姓名(name)、年龄(age)、性别(gender)、学号(id)、专业(major)和GPA。
- 数据存储位置:通过
StudentManagementSystem
类中的List<Student>
集合存储学生对象。 - 与C语言的差异:
- Java通过类的属性和方法操作数据,将学生数据封装在
Student
类的对象中; - C语言通常使用结构体(struct)存储类似数据;
- Java通过类的属性和方法操作数据,将学生数据封装在
功能说明
- 主菜单界面
说明:程序运行后显示功能菜单,包含添加、删除、查询等7项操作。
- 添加学生功能
说明:选择功能1后,依次输入学生的姓名、年龄等信息,系统创建Student
对象并添加到集合中,提示“Student added successfully!”。
- 查询学生功能
说明:选择功能3(按姓名查询),输入姓名后,系统返回所有匹配的学生信息,通过toString()
方法格式化输出。
4.显示所有学生功能
说明:选择功能6,系统遍历List<Student>
集合,打印所有学生的详细信息;若集合为空,提示“The System Data is empty Now!”。
- 删除学生功能
说明:选择功能2,输入学号后,系统遍历集合找到对应学生并移除,提示删除成功或未找到。
类功能讲解
1. Student
类
- 功能概述:封装学生的基本信息。
- 属性用途:
name
:存储学生姓名age
:存储学生年龄gender
:存储学生性别id
:存储学生学号(唯一标识)major
:存储学生专业gpa
:存储学生GPA成绩
- 包含的方法:
- 构造方法:初始化学生的所有属性
- getter方法:获取各属性的值(如
getName()
、getAge()
) - setter方法:修改各属性的值(如
setName()
、setAge()
) toString()
:重写该方法,返回学生信息的格式化字符串
2. StudentManagementSystem
类
- 功能概述:实现学生信息的添加、删除、查询学生等核心操作。
- 属性用途:
students
:List<Student>
类型集合,用于存储所有学生对象
- 包含的方法:
- 构造方法:初始化
students
集合 addStudent()
:向集合中添加学生对象removeStudent()
:从集合中移除指定学生对象getStudents()
:返回所有学生对象的集合- 查询方法:
searchByName()
、searchByMajor()
、searchByGpa()
,分别按姓名、专业、GPA筛选学生
- 构造方法:初始化
3. StudentManagementSystemTest
类
- 功能概述:测试
StudentManagementSystem
类的功能,验证添加、删除、查询等操作的正确性。 - 属性用途:无自定义属性,仅在
main
方法中创建局部对象。 - 包含的方法:
main()
:程序入口,创建系统对象和学生对象,调用管理方法并打印结果,验证功能是否正常。
4. Main
类
- 功能概述:提供命令行交互界面,接收用户输入并调用
StudentManagementSystem
的方法执行相应操作。 - 属性用途:无自定义属性,仅在
main
方法中创建Scanner
、StudentManagementSystem
等局部对象。 - 包含的方法:
main()
:程序入口,通过循环显示菜单,使用switch
语句处理用户选择,实现与用户的交互逻辑。
特殊类说明
Main
类与其他类差异较大,它不涉及数据封装,主要负责用户交互,是程序的入口点,通过调用其他类的方法将用户操作与系统功能关联起来,是连接用户和系统的桥梁。
基本语法讲解
1. 类与对象
Java是纯面向对象语言,所有代码都必须定义在类中,通过new
关键字创建对象。
// 定义类
public class Student { ... }// 创建对象
Student s1 = new Student("John", 20, "Male", "001", "Computer Science", 3.5);
2. 封装性
通过private
修饰属性,提供public
的getter和setter方法控制访问,实现数据封装。
private String name; public String getName() { //用于获取属性值return name;
}public void setName(String name) { //用于修改属性值this.name = name;
}
3. 集合框架
使用java.util.List
和ArrayList
动态存储对象,无需手动管理容量,提供add()
、remove()
等便捷方法。
private List<Student> students; // 声明List集合public StudentManagementSystem() {students = new ArrayList<>(); // 初始化ArrayList
}students.add(student); // 添加元素
6. 输入输出
使用java.util.Scanner
处理控制台输入,System.out.println()
输出信息。
Scanner scanner = new Scanner(System.in); // 创建Scanner对象
int choice = scanner.nextInt(); // 读取整数输入
System.out.println("Enter 1 to add a student"); // 输出提示信息