StudentsManagementSystemProject 案例初步分析报告

功能讲解

本报告旨在分析和讲解一个学生管理系统的实现,该系统通过命令行界面(CLI)与用户交互,提供了四个主要功能:添加学生、显示所有学生、查询学生和退出系统。

1. 添加学生

用户可以通过输入学生的详细信息(如姓名、年龄、性别、ID、专业和GPA)来添加新的学生记录到系统中。系统将这些信息封装在Student类的实例中,并通过StudentManagementSystem类的方法将其添加到内部的数据结构中(如ArrayList)。

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

 

2. 显示所有学生

系统能够列出所有已添加的学生记录,并以一种易于阅读的格式展示它们的详细信息。这通过遍历StudentManagementSystem类中维护的学生列表并打印每个Student对象的toString方法返回的字符串来实现。

private static void showAllStudents(StudentManagementSystem sms) {  
        List<Student> students = sms.getAllStudents();  
        if (students.isEmpty()) {  
            System.out.println("The System Data is empty Now!");  
        } else {  
            for (Student student : students) {  
                System.out.println(student);  
            }  
        }  
    }  

 

3. 查询学生

用户可以通过输入学生的姓名来查询系统中的学生记录。系统会在内部的学生列表中搜索与输入姓名匹配的学生,并返回匹配的结果。如果找到匹配的学生,则按格式打印这些学生的详细信息;如果未找到,则提示用户未找到相关记录。

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

 

4. 退出

用户可以通过选择退出选项来终止程序的运行。这通过修改一个布尔变量(如running)的值来实现,该变量控制程序的主循环是否继续执行。

case 4:  
                    running = false;  
                    System.out.println("Exit Successfully!");  
                    break;  
                default:  
                    System.out.println("Invalid choice!");  

 

 

基本语法讲解

类的定义

  • public class Student {...} 和 public class StudentManagementSystem {...} 分别定义了StudentStudentManagementSystem类,它们封装了相关的属性和方法。
public class Student {}
public class StudentManagementSystem{}
public class StudentManagementSystemTest{}

 

构造函数

  • 构造函数用于初始化对象的属性。例如,Student类的构造函数接受多个参数来设置学生的姓名、年龄等属性。
public Student(String name, int age, String gender, String id, String major, double gpa) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.id = id;
        this.major = major;
        this.gpa = gpa;
    }

 

方法

  • 方法是类中执行特定任务的代码块。Student类中的gettersetter方法用于访问和修改对象的属性。StudentManagementSystem类中的方法则用于管理学生记录,如添加学生、获取所有学生列表和按姓名搜索学生。
 public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return this.age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return this.gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getId() {
        return this.id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getMajor() {
        return this.major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public double getGpa() {
        return this.gpa;
    }

    public void setGpa(double gpa) {
        this.gpa = gpa;
    }

    public String toString() {
        return "Student{name='" + this.name + '\'' + ", age=" + this.age + ", gender='" + this.gender + '\'' + ", id='" + this.id + '\'' + ", major='" + this.major + '\'' + ", gpa=" + this.gpa + '}';
    }

 

静态方法和非静态方法

  • 静态方法可以直接通过类名调用,不需要创建类的实例。但在这个案例中,大部分方法都是非静态的,因为它们需要操作StudentManagementSystem实例的状态(如学生列表)。
public class StudentManagementSystem {  
    private List<Student> students = new ArrayList<>();  
  
    public void addStudent(Student student) {  
        students.add(student);  
    }  
  
    public List<Student> getAllStudents() {  
        return new ArrayList<>(students);  
    }  
  
    public List<Student> searchByName(String name) {  
        List<Student> results = new ArrayList<>();  
        for (Student student : students) {  
            if (student.getName().equals(name)) {  
                results.add(student);  
            }  
        }  
        return results;  
    }  
}

 

 

主方法(main

  • public static void main(String[] args) 是程序的入口点。它创建了一个Scanner对象来从控制台读取输入,并初始化了一个StudentManagementSystem对象来管理学生记录。
public static void main(String[] args) {  
        Scanner scanner = new Scanner(System.in);  
        StudentManagementSystem sms = new StudentManagementSystem();  
        boolean running = true;  }

 

类功能讲解

Student 类

  • 属性:包括nameagegenderidmajorgpa,用于存储学生的详细信息。
  • 方法
    • gettersetter方法用于访问和修改学生的属性。
    • toString方法被重写以返回学生的详细信息字符串,便于打印。

StudentManagementSystem 类

  • 属性:至少包含一个List<Student>来存储所有的学生记录。
  • 方法
    • addStudent(Student student):将一个新的学生记录添加到列表中。
    • getAllStudents():返回包含所有学生记录的列表。
    • searchByName(String name):根据姓名搜索学生记录,并返回匹配结果的列表。

总结

本学生管理系统通过定义StudentStudentManagementSystem类,以及实现相应的功能方法,提供了一个简洁而有效的命令行界面来管理学生记录。该系统利用了Java的基本语法和面向对象编程的特性,如类的定义、构造函数、方法、属性以及集合类的使用。通过本系统的实现,用户可以方便地进行学生记录的添加、显示、查询和退出操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值