java集合综合练习 学生管理系统


学生管理系统是一个常见的练习项目,它可以帮助你加深对Java集合的理解和应用。下面是一个Java集合综合练习的学生管理系统实现方案:

  1. 定义一个Student类,包括以下属性:学号(id)、姓名(name)、性别(gender)、年龄(age)和专业(major)。
public class Student {
    private int id;
    private String name;
    private String gender;
    private int age;
    private String major;

    public Student(int id, String name, String gender, int age, String major) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.major = major;
    }

    // 省略getter和setter方法
}
  1. 创建一个包含Student对象的ArrayList集合,用于存储所有学生的信息。
ArrayList<Student> students = new ArrayList<>();
  1. 编写一个添加学生信息的方法addStudent,该方法接受一个Student对象作为参数,并将该对象添加到students集合中。
public void addStudent(Student student) {
    students.add(student);
}
  1. 编写一个显示所有学生信息的方法showAllStudents,该方法遍历students集合,并输出每个学生的信息。
public void showAllStudents() {
    for (Student student : students) {
        System.out.println("学号:" + student.getId() + ",姓名:" + student.getName() + ",性别:" + student.getGender() + ",年龄:" + student.getAge() + ",专业:" + student.getMajor());
    }
}
  1. 编写一个按学号查找学生信息的方法findStudentById,该方法接受一个学号作为参数,并在students集合中查找该学号对应的学生信息。
public Student findStudentById(int id) {
    for (Student student : students) {
        if (student.getId() == id) {
            return student;
        }
    }
    return null;
}
  1. 编写一个按姓名查找学生信息的方法findStudentsByName,该方法接受一个姓名作为参数,并在students集合中查找该姓名对应的所有学生信息。
public ArrayList<Student> findStudentsByName(String name) {
    ArrayList<Student> result = new ArrayList<>();
    for (Student student : students) {
        if (student.getName().equals(name)) {
            result.add(student);
        }
    }
    return result;
}
  1. 编写一个按专业查找学生信息的方法findStudentsByMajor,该方法接受一个专业作为参数,并在students集合中查找该专业对应的所有学生信息。
public ArrayList<Student> findStudentsByMajor(String major) {
    ArrayList<Student> result = new ArrayList<>();
    for (Student student : students) {
        if (student.getMajor().equals(major)) {
            result.add(student);
        }
    }
    return result;
}
  1. 编写一个修改学生信息的方法updateStudent,该方法接受一个Student对象作为参数,并根据该对象的学号修改对应的学生信息。
public void updateStudent(Student student) { for (int i = 0; i < students.size(); i++) { if (students.get(i).getId() == student.getId()) { students.set(i, student); return; } } }
  1. 编写一个删除学生信息的方法deleteStudent,该方法接受一个学号作为参数,并从students集合中删除该学号对应的学生信息。
```java
public void deleteStudent(int id) {
    for (int i = 0; i < students.size(); i++) {
        if (students.get(i).getId() == id) {
            students.remove(i);
            return;
        }
    }
}
  1. 最后,编写一个简单的主程序,测试上述方法的功能。
public static void main(String[] args) {
    StudentManager manager = new StudentManager();

    // 添加学生信息
    manager.addStudent(new Student(1, "张三", "男", 20, "计算机科学与技术"));
    manager.addStudent(new Student(2, "李四", "女", 21, "软件工程"));
    manager.addStudent(new Student(3, "王五", "男", 22, "电子信息工程"));

    // 显示所有学生信息
    manager.showAllStudents();

    // 按学号查找学生信息
    Student student1 = manager.findStudentById(1);
    System.out.println("学号为1的学生信息:" + student1.getName() + "," + student1.getGender() + "," + student1.getMajor());

    // 按姓名查找学生信息
    ArrayList<Student> students = manager.findStudentsByName("李四");
    System.out.println("姓名为李四的学生信息:");
    for (Student student : students) {
        System.out.println(student.getName() + "," + student.getGender() + "," + student.getMajor());
    }

    // 按专业查找学生信息
    ArrayList<Student> students2 = manager.findStudentsByMajor("计算机科学与技术");
    System.out.println("专业为计算机科学与技术的学生信息:");
    for (Student student : students2) {
        System.out.println(student.getName() + "," + student.getGender() + "," + student.getMajor());
    }

    // 修改学生信息
    Student student2 = new Student(2, "李小四", "女", 21, "软件工程");
    manager.updateStudent(student2);
    System.out.println("修改后的学生信息:");
    manager.showAllStudents();

    // 删除学生信息
    manager.deleteStudent(1);
    System.out.println("删除学号为1的学生信息后:");
    manager.showAllStudents();
}

完整的学生管理系统代码如下:

import java.util.ArrayList;

public class Student {
    private int id;
    private String name;
    private String gender;
    private int age;
    private String major;

    public Student(int id, String name, String gender, int age, String major) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.major = major;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }

    public int getAge() {
        return age;
    }

    public String getMajor() {
        return major;
    }

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

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

public class StudentManager {
    private ArrayList<Student> students;

    public StudentManager() {
        students = new ArrayList<Student>();
    }

    public void addStudent(Student student) {
        students.add(student);
    }

    public void showAllStudents() {
        System.out.println("所有学生信息:");
        for (Student student : students) {
            System.out.println(student.getName() + "," + student.getGender() + "," + student.getMajor());
        }
    }

    public Student findStudentById(int id) {
        for (Student student : students) {
            if (student.getId() == id) {
                return student;
            }
        }
        return null;
    }

    public ArrayList<Student> findStudentsByName(String name) {
        ArrayList<Student> result = new ArrayList<Student>();
        for (Student student : students) {
            if (student.getName().equals(name)) {
                result.add(student);
            }
        }
        return result;
    }

    public ArrayList<Student> findStudentsByMajor(String major) {
        ArrayList<Student> result = new ArrayList<Student>();
        for (Student student : students) {
            if (student.getMajor().equals(major)) {
                result.add(student);
            }
        }
        return result;
    }

    public void updateStudent(Student student) {
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getId() == student.getId()) {
                students.set(i, student);
                return;
            }
        }
    }

    public void deleteStudent(int id) {
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getId() == id) {
                students.remove(i);
                return;
            }
        }
    }
}

public class Main {
    public static void main(String[] args) {
        StudentManager manager = new StudentManager();

        // 添加学生信息
        manager.addStudent(new Student(1, "张三", "男", 20, "计算机科学与技术"));
        manager.addStudent(new Student(2, "李四", "女", 21, "软件工程"));
        manager.addStudent(new Student(3, "王五", "男", 22, "电子信息工程"));

        // 显示所有学生信息
        manager.showAllStudents();

        // 按学号查找学生信息
        Student student1 = manager.findStudentById(1);
        System.out.println("学号为1的学生信息:" + student1.getName() + "," + student1.getGender() + "," + student1.getMajor());

        // 按姓名查找学生
ArrayList<Student> students1 = manager.findStudentsByName("张三");
    System.out.println("姓名为张三的学生信息:");
    for (Student student : students1) {
        System.out.println(student.getName() + "," + student.getGender() + "," + student.getMajor());
    }

    // 按专业查找学生信息
    ArrayList<Student> students2 = manager.findStudentsByMajor("软件工程");
    System.out.println("专业为软件工程的学生信息:");
    for (Student student : students2) {
        System.out.println(student.getName() + "," + student.getGender() + "," + student.getMajor());
    }

    // 更新学生信息
    Student student2 = new Student(2, "李四", "男", 22, "计算机科学与技术");
    manager.updateStudent(student2);

    // 显示更新后的所有学生信息
    manager.showAllStudents();

    // 删除学生信息
    manager.deleteStudent(3);

    // 显示删除后的所有学生信息
    manager.showAllStudents();
}
}

在这个学生管理系统中,我们使用了 Java 集合框架中的 ArrayList 类来存储学生信息,通过 add() 方法添加学生信息,通过 get() 方法和 for 循环遍历集合中的元素,通过 set() 方法修改集合中的元素,通过 remove() 方法删除集合中的元素。此外,我们还使用了 getter 和 setter 方法来访问和修改类的属性。

在 StudentManager 类中,我们定义了 addStudent()、showAllStudents()、findStudentById()、findStudentsByName()、findStudentsByMajor()、updateStudent() 和 deleteStudent() 方法来实现添加学生信息、显示所有学生信息、按学号查找学生信息、按姓名查找学生信息、按专业查找学生信息、更新学生信息和删除学生信息的功能。

在 Main 类中,我们创建了一个 StudentManager 对象,调用其各个方法来测试系统的各项功能。可以根据具体需求对代码进行修改和扩展。

除了 ArrayList 外,Java 集合框架中还有其他常用的集合类,如 LinkedList、HashSet、TreeSet、HashMap、TreeMap 等。这些集合类各有特点,可以根据具体需求选择合适的集合类来存储数据。

  • LinkedList

LinkedList 是一个链表实现的集合类,它可以高效地进行插入、删除操作,但查找元素的效率较低。由于链表中的元素不是连续存储的,因此访问元素时需要遍历整个链表。LinkedList 还实现了 Queue 和 Deque 接口,可以用于实现队列和双端队列等数据结构。

  • HashSet

HashSet 是一个基于哈希表实现的集合类,它可以快速地进行添加、删除和查找操作。由于 HashSet 中的元素是无序的,因此不能按照索引来访问元素。HashSet 还实现了 Set 接口,可以用于实现集合操作。

  • TreeSet

TreeSet 是一个基于红黑树实现的集合类,它可以自动按照元素的顺序进行排序,并且支持高效的插入、删除和查找操作。由于 TreeSet 中的元素是有序的,因此可以按照索引来访问元素。TreeSet 还实现了 SortedSet 接口,可以用于实现有序集合操作。

  • HashMap

HashMap 是一个基于哈希表实现的键值对集合类,它可以快速地进行添加、删除和查找操作。由于 HashMap 中的键值对是无序的,因此不能按照索引来访问元素。HashMap 还实现了 Map 接口,可以用于实现映射操作。

  • TreeMap

TreeMap 是一个基于红黑树实现的键值对集合类,它可以自动按照键的顺序进行排序,并且支持高效的插入、删除和查找操作。由于 TreeMap 中的键值对是有序的,因此可以按照索引来访问元素。TreeMap 还实现了 SortedMap 接口,可以用于实现有序映射操作。

在使用这些集合类时,需要注意它们的特点和适用场景,避免选择不合适的集合类导致程序效率低下或出现错误。


原文链接:codingdict.net