1. 功能讲解
1.1 数据处理
- 该程序主要处理学生数据,包含学生的name、age、gender、id、major、gpa这些基本信息。
- 学生数据存储在
StudentManagementSystem类的students成员变量中,每个学生的具体信息封装在Student类的对象中,这些对象被添加到List集合中统一管理。 - 不同之处:
- a. Java利用
Student类将学生的属性封装为对象并private,对外提供getter/setter方法访问和修改,而在C语言中则是依靠结构体来存储数据,并且成员是共有的。 - b. Java使用
ArrayList存储学生对象,简化代码和操作,C语言一般会利用链表来实现这一功能,操作稍微复杂繁琐。 - c. Java中当学生对象不再被引用时,由JVM自动释放内存,无需手动释放,C语言中需手动通过
malloc分配内存、free释放内存,较为麻烦,若操作不当容易导致内存泄漏或指针出现问题。
- a. Java利用
1.2 功能说明

图1.菜单
(图1为菜单,展示该系统所拥有的功能,方便用户使用。)

图2.功能1展示
(图2为该系统的第一个功能添加学生,并为学生自动生成6位的id。)

图3.功能2展示
(图3为该系统的第二个功能删除学生,利用id的唯一性精准删除学生,避免删除同名学生。)

图4.功能3展示
(图4为该系统的第三个功能按学生名字查找并展示该学生的基本信息。)

图5.功能4展示
(图5为该系统的第四个功能按学生专业查找并展示该学生的基本信息。)

图6.功能5展示
(图6为该系统的第五个功能按学生gpa查找并展示该学生的基本信息。)

图7.功能6展示
(图7为该系统的第六个功能列出系统内已存入的学生及其对应信息。)

图8.功能7展示
(图8为该系统的第七个功能退出系统,结束操作。)
2. 类功能讲解
2.1 简述每个类的功能概述、属性的用途、所包含的方法
2.1.1 Student类
- 功能概述:封装学生的基本信息,包括name、age、gender、id、major和gpa等属性,并提供属性的访问和修改方法。
- 属性用途:
- name:存储学生姓名
- age:存储学生年龄
- gender:存储学生性别
- id:存储自动生成的学生学号
- major:存储学生专业
- gpa:存储学生GPA成绩
- 包含的方法:
Student(String name, int age, String gender, String major, double gpa):构造方法,初始化学生的姓名、年龄、性别、专业和GPA属性setId(String id):设置学生学号getName()/setName(String name):获得/设置学生姓名getAge()/setAge(int age):获得/设置学生年龄getGender()/setGender(String gender):获得/设置学生性别getId():获得学生学号getMajor()/setMajor(String major):获得/设置学生专业getGpa()/setGpa(double gpa):获得/设置学生GPAtoString():返回学生信息的字符串表示
2.1.2 StudentManagementSystem类
- 功能概述:管理学生,提供添加、删除学生以及按姓名、专业、GPA搜索学生的功能。
- 属性用途:
- students:存储所有学生对象的列表
- nextId:生成下一个学生学号的计数器
- 包含的方法:
StudentManagementSystem():构造方法,初始化学生列表generateId():生成6位数字的学生学号addStudent(Student student):为学生设置学号并添加到列表中removeStudent(Student student):从列表中移除指定学生getStudents():返回所有学生的列表searchByName(String name):根据姓名搜索学生并返回结果列表searchByMajor(String major):根据专业搜索学生并返回结果列表searchByGpa(double gpa):根据GPA搜索学生并返回结果列表
2.1.3 Main类
- 功能概述:提供交互菜单,允许用户通过菜单选择添加、删除学生、搜索学生、显示所有学生及退出系统等操作。
- 属性用途:无。
- 包含的方法:
main(String[] args):程序入口。
2.1.4 StudentManagementSystemTest类
- 功能概述:用于测试
StudentManagementSystem类的功能。 - 属性用途:无。
- 包含的方法:
main(String[] args):测试入口。
2.2 简述哪个类与所有其它类都不太一样
StudentManagementSystemTest类与所有其它类都不太一样,它是用于测试的类,验证StudentManagementSystem类功能的正确性,不参与实际运行时的数据封装、用户交互,也不被其他类依赖。
3. 基本语法讲解
- 类与访问修饰符:使用
class定义类,public、private等访问修饰符控制类成员的可见性。 - 封装与getter/setter:通过
private与公共访问方法如getName()实现数据封装。 - ArrayList集合:使用
ArrayList<Student> students,指定存储元素类型为Student。 - 入口与静态方法:
public static void main(String[] args)作为程序入口,static关键字使方法无需实例化即可调用。 - 异常处理:可能通过
try-catch处理用户输入错误。 - this:在构造方法或成员方法中用于指代当前对象,区分成员变量与局部变量。
