学生信息管理系统

学生信息管理系统

功能讲解

数据处理

该程序主要处理学生相关的结构化数据,具体包括学生的姓名、年龄、性别、学号、专业和绩点共 6 类属性数据。程序中的学生数据存储在内存中的集合对象里:在 StudentManagementSystem 类中,通过 private List students 定义了一个 ArrayList 集合,所有学生对象都被添加到这个集合中。

与C语言数据存储区别

1.使用面向对象的 Student 类封装学生属性,通过 List 集合存储多个学生对象,无需手动管理数组长度。
2.由 JVM 自动管理内存(垃圾回收机制),添加 / 删除学生对象时无需手动分配 / 释放内存,减少内存泄漏风险。
3.借助 List 集合提供的 add()、remove() 等方法简化数据操作,无需手动维护数组下标和元素移动。
4.通过 Student 类的私有属性(private)和公共 getter/setter 方法,实现数据封装,确保数据访问的安全性(如避免直接修改 age 为负数)。

类功能讲解

Student 类

功能概述

封装学生的基本信息,作为系统中 “学生” 实体的数据载体,是整个系统的核心数据模型。

属性用途

name:存储学生姓名
age:存储学生年龄
gender:存储学生性别
id:存储学生唯一标识(学号),用于区分不同学生
major:存储学生所属专业
gpa:存储学生的绩点成绩

包含的方法:

全参构造方法:初始化学生的所有属性
各属性的 getter 方法(如 getName()):获取属性值
各属性的 setter 方法(如 setName()):修改属性值
toString() 方法:将学生信息格式化为字符串,便于打印展示

StudentManagementSystem 类

功能概述

实现学生数据的核心管理逻辑,是连接数据模型(Student)和用户交互(Main)的中间层。
属性用途:
students:一个 List 集合,用于存储系统中所有学生对象,是数据的内存容器
包含的方法:

构造方法

初始化 students 集合
addStudent():向集合中添加学生对象
removeStudent():从集合中移除指定学生对象
getStudents():获取所有学生对象的集合
searchByName():根据姓名查询匹配的学生对象
searchByMajor():根据专业查询匹配的学生对象
searchByGpa():根据绩点查询匹配的学生对象

Main 类

功能概述

作为程序的入口,负责接收用户输入、展示操作菜单、调用 StudentManagementSystem 的方法完成用户需求,并将结果反馈给用户。

属性用途

scanner:Scanner 对象,用于读取用户的控制台输入
sms:StudentManagementSystem 对象,用于调用学生管理的核心方法
running:布尔值,控制程序主循环的运行状态

包含的方法

main() 方法:程序入口,实现用户交互的主逻辑,通过 switch 语句处理不同操作选择

基本语法讲解

List 是 Java 集合框架(java.util)中的一个有序、可重复的接口,可以理解为 “动态数组”—— 相比传统数组(如 Student[]),它无需预先定义长度,能自动根据存储的元素数量扩容 / 缩容,非常适合存储 “数量不确定的同类型对象”

package code;
import java.util.ArrayList;
import java.util.List;

public class StudentManagementSystem {
    // 1. 定义 List:限定存储类型为 Student(泛型),私有属性确保数据安全
    private List<Student> students;

    // 2. 构造方法中初始化 List:选择 ArrayList 作为实现类
    public StudentManagementSystem() {
        students = new ArrayList<>();
    }
    // ... 其他方法(add/remove/search)...
}

getter 和 setter 方法:为Student类的私有属性提供public的getXxx()和setXxx()方法(如getName()、setName()),通过方法访问和修改私有属性,是 Java 封装特性的典型实现方式。

public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
posted @ 2025-09-22 20:17  林宇钦  阅读(44)  评论(0)    收藏  举报