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:在构造方法或成员方法中用于指代当前对象,区分成员变量与局部变量。