学生管理系统案例初步分析报告

学生管理系统案例初步分析报告定义了

大家好,欢迎来到IT知识分享网。

1.功能讲解

该部分是对于该系统主要功能的讲解,该系统的主要功能包括:添加学生、显示所有学生、按要求查询学生、删除学生以及退出该系统。下面将一一进行分析讲解。

1.1.添加学生

 private static void addStudent(Scanner scanner, StudentManagementSystem sms) { 
    System.out.println("Enter student name:"); String name = scanner.next(); System.out.println("Enter student age:"); int age = scanner.nextInt(); System.out.println("Enter student gender:"); String gender = scanner.next(); System.out.println("Enter student ID:"); String id = scanner.next(); System.out.println("Enter student major:"); String major = scanner.next(); System.out.println("Enter student GPA:"); double gpa = scanner.nextDouble(); Student student = new Student(name, age, gender, id, major, gpa); sms.addStudent(student); System.out.println("Student added successfully!\n"); } 

运行结果如下图所示:功能1

1.2.显示学生

用户通过输入对应功能编号可实现获取系统中所有学生的相关信息,包括学生姓名,年龄,学号,性别,专业以及GPA。该功能通过方法showAllStudent实现,代码如下:

 private static void showAllStudent(StudentManagementSystem sms) { 
    List<Student> studentList = sms.getStudents(); if (studentList.size() == 0) { 
    System.out.println("The System Data is empty Now!"); }else { 
    for (Student studentItem : studentList) { 
    System.out.println(studentItem.toString()); } } } 

1.3.查询学生

该功能分由三个子功能实现,用户可通过输入姓名或者专业名称或者GPA进行查询相应的学生信息,使查询结果更精准。

1.3.1.通过姓名查询学生

用户通过输入菜单中的相应功能编号后,可直接输入所要查询的学生姓名,进而获取指定学生的信息,该功能通过方法searchStudentByName实现,实现代码如下:

private static void searchStudentByName(Scanner scanner, StudentManagementSystem sms) { 
    System.out.println("Enter student name to search:"); String searchName = scanner.next(); List<Student> searchResults = sms.searchByName(searchName); if (searchResults.isEmpty()) { 
    System.out.println("No students found!"); } else { 
    System.out.println("Search results:"); for (Student s : searchResults) { 
    System.out.println(s); } } } 

1.3.2.通过major查询学生

用户通过输入菜单中的相应功能编号后,可直接输入所要查询的学生major,进而获取指定学生的信息,该功能通过方法searchStudentByMajor实现,实现代码如下:

private static void searchStudentByMajor(Scanner scanner, StudentManagementSystem sms) { 
    List<Student> searchResults; System.out.println("Enter student major to search:"); String searchMajor = scanner.next(); searchResults = sms.searchByMajor(searchMajor); if (searchResults.isEmpty()) { 
    System.out.println("No students found!"); } else { 
    System.out.println("Search results:"); for (Student s : searchResults) { 
    System.out.println(s); } } } 

1.3.3.通过GPA查询学生

用户通过输入菜单中的相应功能编号后,可直接输入所要查询的学生GPA,进而获取指定学生的信息,该功能通过方法searchStudentByGPA实现,实现代码如下:

private static void searchStudentByGPA(Scanner scanner, StudentManagementSystem sms) { 
    List<Student> searchResults; System.out.println("Enter student GPA to search:"); double searchGpa = scanner.nextDouble(); searchResults = sms.searchByGpa(searchGpa); if (searchResults.isEmpty()) { 
    System.out.println("No students found!"); } else { 
    System.out.println("Search results:"); for (Student s : searchResults) { 
    System.out.println(s); } } } 

1.4.删除学生

用户在输入相应功能编号后,可进入该功能。该功能需要用户通过输入所要删除的学生的id,进而删除id对应的学生的信息。该功能通过方法 removeStudent实现,该方法代码如下:

private static void removeStudent(Scanner scanner, StudentManagementSystem sms) { 
    System.out.println("Enter student ID to remove:"); String removeId = scanner.next(); List<Student> students = sms.getStudents(); boolean removed = false; for (Student s : students) { 
    if (s.getId().equals(removeId)) { 
    sms.removeStudent(s); removed = true; System.out.println("Student removed successfully!\n"); break; } } if (!removed) { 
    System.out.println("Student not found!"); } } 

运行结果如下图所示:删除过程
删除后剩下的学生信息

1.5.退出

2.基本语法讲解

2.1类和对象相关

  • 类的定义和使用:

定义了Main类StudentManagementSystem类Student类
在Main类的main方法中创建了StudentManagementSystem类的对象sms和Scanner类的对象scanner,通过对象来调用类中的方法实现相应功能。

  • 构造函数:
  • 封装:

类中的属性(name、age、gender、id、major、gpa)都被声明为private,这体现了封装的概念,将数据隐藏在类内部,通过公共的getter和setter方法来访问和修改这些属性。

  • 成员变量:

定义了private List students;,这是一个私有的List集合,用于存储Student对象。

2.2流程控制相关

  • 循环结构(while 循环):

使用while循环来持续运行程序,直到running变量变为false。在循环体中展示菜单选项,并根据用户输入执行相应操作。

  • 选择结构(switch – case)

switch – case语句根据用户输入的不同整数值(choice)执行不同的操作,如添加学生、删除学生、按不同条件搜索学生等。

  • 增强 for 循环:

2.3输入输出相关

  • 输入(Scanner 类):

使用Scanner类从控制台读取用户输入。通过scanner.nextInt()读取整数(如选择操作的数字、学生年龄等),scanner.next()读取字符串(如学生姓名、性别、专业等),scanner.nextDouble()读取双精度浮点数(如学生的平均绩点)。

  • 输出(System.out.println):

使用System.out.println()在控制台输出提示信息、操作结果等。

2.4集合相关

  • 列表(List)的使用:

在StudentManagementSystem类中(假设该类中有相应方法),使用List来存储多个学生对象。在删除学生、搜索学生以及展示所有学生信息的操作中,都涉及对List集合的遍历和操作。

  • ArrayList 的使用:

在构造函数StudentManagementSystem()中,通过students = new ArrayList<>();初始化students集合,ArrayList是List接口的一个常用实现类,它可以动态地调整大小。

  • 集合的添加和删除元素:
  • 打印集合:

在输出语句中直接打印包含Student对象的List集合,System.out.println会自动调用集合元素的toString方法进行输出。

2.5字符串相关

  • 字符串比较(equals 方法):

在删除学生的操作中,使用equals()方法比较学生的id字符串,以确定是否找到要删除的学生对象。

  • 字符串比较:

在searchByName和searchByMajor方法中,使用equals()方法比较字符串,例如student.getName().equals(name)和student.getMajor().equals(major),这是比较字符串内容是否相等的正确方式。

  • 浮点数比较

在searchByGpa方法中,使用==来比较浮点数student.getGpa() ==gpa,不过在浮点数比较时,由于浮点数的精度问题,这种方式可能存在风险,更好的做法是使用一个较小的差值范围来判断是否相等。

2.6方法相关

  • getter 和 setter 方法:

提供了一系列的get方法(如getName()、getAge()等)和set方法(如setName()、setAge()等),用于获取和设置类中的私有属性。这是一种常见的编程实践,保证了数据的安全性和可维护性。

  • 重写 toString 方法:

重写了Object类的toString()方法,用于返回对象的字符串表示形式。当需要将Student对象转换为字符串时(例如在打印输出时),会自动调用这个重写后的方法。在上述代码中,重写后的toString()方法返回了包含学生所有属性信息的字符串。

  • 方法的返回值:
  • 调用方法:

3.类功能讲解

该部分主要针对该系统中的四大类进行功能分析讲解。该系统的类主要包括:Main类,Student类,StudentManagementSystem类以及StudentManagementSystemTest类。下面将逐一进行分析讲解

3.1.Main类

3.2.Student类

  1. Student类是一个简单的Java类,用于表示一个学生的实体。这个类包含了学生的基本信息,并提供了一系列的构造函数、getter和setter方法以及一个toString方法。
  2. 类成员变量: private String name;:表示学生的名字。 private int age;:表示学生的年龄。 private String gender;:表示学生的性别。 private String id;:表示学生的唯一标识符,如学号。
    private String major;:表示学生的专业。 private double gpa;:表示学生的平均成绩点(GPA)。
  3. Getter和Setter方法: getName() / setName(String name):获取/设置学生的名字。 getAge() / setAge(int age):获取/设置学生的年龄。 getGender() /
    setGender(String gender):获取/设置学生的性别。 getId() / setId(String
    id):获取/设置学生的ID。 getMajor() / setMajor(String major):获取/设置学生的专业。
    getGpa() / setGpa(double gpa):获取/设置学生的GPA。


  4. 构造函数: public Student(String name, int age, String gender, String id, String major, double
    gpa):这是一个参数化的构造函数,用于创建Student对象时初始化其属性。它接受学生的名字、年龄、性别、ID、专业和GPA作为参数,并将这些值赋给相应的成员变量。

3.3.StudentManagementSystem类

1.类的基本信息
StudentManagementSystem类用于管理学生信息相关的操作。它包含了一个List类型的私有成员变量students,用于存储学生对象。
2.构造函数

  • public StudentManagementSystem():这是类的构造函数,在创建StudentManagementSystem类的对象时会被调用。它初始化students列表,通过newArrayList<>()创建了一个空的ArrayList来存储学生信息。

3.方法

  • public List getStudents():该方法用于获取存储学生信息的students列表。它返回一个List类型的对象,调用者可以通过这个返回值来访问和操作存储在students列表中的学生信息。
  • public List searchByName(String name):这个方法用于根据学生姓名进行搜索。它接受一个String类型的参数name,遍历students列表中的每个Student对象,检查其姓名是否与给定的name相等,如果相等则将该学生对象添加到结果列表result中,最后返回包含所有匹配学生对象的result列表。
  • public List searchByMajor(String major):此方法用于按专业进行搜索。它接受一个String类型的参数major,通过遍历students列表,将专业与给定major匹配的学生对象添加到result列表中,最后返回result列表。
  • public List searchByGpa(double gpa):该方法用于根据平均绩点(gpa)进行搜索。它接受一个double类型的参数gpa,在遍历students列表时,将平均绩点与给定gpa相等的学生对象添加到result列表中,最后返回result列表。

3.4.StudentManagementSystemTest类

1.类的基本信息

  • StudentManagementSystemTest类是一个测试类,用于测试StudentManagementSystem类的功能。

2.main方法中的操作

  • 创建StudentManagementSystem对象
  • 创建Student对象并添加到系统中
  • 执行搜索操作并输出结果
  • 移除学生并输出结果

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129836.html

(0)
上一篇 2025-08-21 16:10
下一篇 2025-08-21 16:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信