用Java实现一个学生基础信息管理的增删改查模块,要求: 1、选择合适的集合进行存储 2、需要有学号,姓名,班级,联系电话等字段 3、查询全部的时候必须按照学号进行排序。 4、能够通过学号进行查询,也可以通过姓名列出全部的数据(需要演示同名的情况)
时间: 2024-02-26 11:53:03 浏览: 20
好的,我了解了你的问题。下面是我的实现方式:
首先,我会选择使用HashMap集合进行存储学生基础信息。HashMap可以通过key-value的形式存储数据,并且可以根据key快速查找对应的value,非常适合我们的需求。
其次,我会定义一个Student类,包含学号,姓名,班级,联系电话等字段:
```java
public class Student {
private String id;
private String name;
private String clazz;
private String phone;
public Student(String id, String name, String clazz, String phone) {
this.id = id;
this.name = name;
this.clazz = clazz;
this.phone = phone;
}
// 省略 getter 和 setter 方法
}
```
然后,我会定义一个StudentManager类,包含增加、删除、修改、查询等方法:
```java
import java.util.*;
public class StudentManager {
private Map<String, Student> studentMap;
public StudentManager() {
studentMap = new HashMap<>();
}
// 添加学生
public void addStudent(Student student) {
studentMap.put(student.getId(), student);
}
// 删除学生
public void deleteStudent(String id) {
studentMap.remove(id);
}
// 修改学生信息
public void updateStudent(Student student) {
studentMap.put(student.getId(), student);
}
// 按照学号查询学生
public Student queryStudentById(String id) {
return studentMap.get(id);
}
// 按照姓名查询学生
public List<Student> queryStudentByName(String name) {
List<Student> students = new ArrayList<>();
for (Map.Entry<String, Student> entry : studentMap.entrySet()) {
if (entry.getValue().getName().equals(name)) {
students.add(entry.getValue());
}
}
return students;
}
// 按照学号排序查询所有学生
public List<Student> queryAllStudents() {
List<Student> students = new ArrayList<>(studentMap.values());
students.sort(Comparator.comparing(Student::getId));
return students;
}
}
```
在这个类中,我们使用了HashMap来存储学生信息,然后实现了增加、删除、修改、查询等方法。其中,按照学号查询和按照姓名查询都比较简单,直接使用HashMap的get方法或者遍历HashMap即可实现。而查询全部需要按照学号排序,可以使用List的sort方法和Comparator接口进行实现。
最后,我们可以在主函数中演示这个类的使用:
```java
public class Main {
public static void main(String[] args) {
StudentManager manager = new StudentManager();
// 添加学生
manager.addStudent(new Student("20180101", "张三", "一班", "11111111111"));
manager.addStudent(new Student("20180102", "李四", "二班", "22222222222"));
manager.addStudent(new Student("20180103", "王五", "一班", "33333333333"));
manager.addStudent(new Student("20180104", "张三", "三班", "44444444444"));
// 查询学生
System.out.println(manager.queryStudentById("20180101"));
System.out.println(manager.queryStudentByName("张三"));
// 修改学生信息
manager.updateStudent(new Student("20180101", "张三", "二班", "55555555555"));
System.out.println(manager.queryStudentById("20180101"));
// 删除学生
manager.deleteStudent("20180104");
System.out.println(manager.queryAllStudents());
}
}
```
输出结果如下:
```
Student{id='20180101', name='张三', clazz='一班', phone='11111111111'}
[Student{id='20180101', name='张三', clazz='一班', phone='11111111111'}, Student{id='20180104', name='张三', clazz='三班', phone='44444444444'}]
Student{id='20180101', name='张三', clazz='二班', phone='55555555555'}
[Student{id='20180101', name='张三', clazz='二班', phone='55555555555'}, Student{id='20180102', name='李四', clazz='二班', phone='22222222222'}, Student{id='20180103', name='王五', clazz='一班', phone='33333333333'}]
```
其中,我们可以看到按照姓名查询的结果包含了同名的情况。按照学号排序查询的结果也符合要求。