学生管理系统是一个常见的练习项目,它可以帮助你加深对Java集合的理解和应用。下面是一个Java集合综合练习的学生管理系统实现方案:
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方法 }
ArrayList<Student> students = new ArrayList<>();
public void addStudent(Student student) { students.add(student); }
public void showAllStudents() { for (Student student : students) { System.out.println("学号:" + student.getId() + ",姓名:" + student.getName() + ",性别:" + student.getGender() + ",年龄:" + student.getAge() + ",专业:" + 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<>(); 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<>(); 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; } } }
```java public void deleteStudent(int id) { for (int i = 0; i < students.size(); i++) { if (students.get(i).getId() == id) { students.remove(i); return; } } }
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 还实现了 Queue 和 Deque 接口,可以用于实现队列和双端队列等数据结构。
HashSet 是一个基于哈希表实现的集合类,它可以快速地进行添加、删除和查找操作。由于 HashSet 中的元素是无序的,因此不能按照索引来访问元素。HashSet 还实现了 Set 接口,可以用于实现集合操作。
TreeSet 是一个基于红黑树实现的集合类,它可以自动按照元素的顺序进行排序,并且支持高效的插入、删除和查找操作。由于 TreeSet 中的元素是有序的,因此可以按照索引来访问元素。TreeSet 还实现了 SortedSet 接口,可以用于实现有序集合操作。
HashMap 是一个基于哈希表实现的键值对集合类,它可以快速地进行添加、删除和查找操作。由于 HashMap 中的键值对是无序的,因此不能按照索引来访问元素。HashMap 还实现了 Map 接口,可以用于实现映射操作。
TreeMap 是一个基于红黑树实现的键值对集合类,它可以自动按照键的顺序进行排序,并且支持高效的插入、删除和查找操作。由于 TreeMap 中的键值对是有序的,因此可以按照索引来访问元素。TreeMap 还实现了 SortedMap 接口,可以用于实现有序映射操作。
在使用这些集合类时,需要注意它们的特点和适用场景,避免选择不合适的集合类导致程序效率低下或出现错误。
原文链接:codingdict.net