提到数组大家肯定不会陌生,但我们也知道数组有个缺点就是在创建时就确定了长度,之后就不能更改长度。所以Java官方向我们提供了ArrayList这个可变长的容器。其实ArrayList底层也是用数组进行实现的,今天我们就自己使用数组实现ArrayList的功能。
使用ArrayList实现学生成绩的查询和删除功能可以按照以下步骤进行:
定义学生类及其成员变量,如参考资料中的段落3所示。
创建一个ArrayList对象,用来存放学生信息。
ArrayList<Student> students = new ArrayList<>();
public static void addStudent(ArrayList<Student> students) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入学号:");
String sid = scanner.nextLine();
System.out.print("请输入姓名:");
String name = scanner.nextLine();
System.out.print("请输入年龄:");
String age = scanner.nextLine();
System.out.print("请输入地址:");
String address = scanner.nextLine();
Student student = new Student(sid, name, age, address);
students.add(student);
System.out.println("添加成功!");
}
public static void removeStudent(ArrayList<Student> students, int index) {
if (index < 0 || index >= students.size()) {
System.out.println("删除失败:查无此人!");
return;
}
Student student = students.remove(index);
System.out.println("删除成功:" + student.toString());
}
public static void getStudent(ArrayList<Student> students, int index) {
if (index < 0 || index >= students.size()) {
System.out.println("查询失败:查无此人!");
return;
}
Student student = students.get(index);
System.out.println(student.toString());
}
while (true) {
System.out.println("------欢迎使用学生成绩管理系统------");
System.out.println("1.添加学生\t2.删除学生\t3.查询学生\t4.退出系统");
System.out.print("请选择操作:");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
switch (choice) {
case 1:
addStudent(students);
break;
case 2:
System.out.print("请输入要删除学生的索引:");
int removeIndex = scanner.nextInt();
removeStudent(students, removeIndex);
break;
case 3:
System.out.print("请输入要查询学生的索引:");
int getIndex = scanner.nextInt();
getStudent(students, getIndex);
break;
case 4:
System.out.println("已退出!");
System.exit(0);
default:
System.out.println("输入有误,请重新输入!");
}
}
最终的完整代码如下:
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManagementSystem {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
while (true) {
System.out.println("------欢迎使用学生成绩管理系统------");
System.out.println("1.添加学生\t2.删除学生\t3.查询学生\t4.退出系统");
System.out.print("请选择操作:");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
switch (choice) {
case 1:
addStudent(students);
break;
case 2:
System.out.print("请输入要删除学生的索引:");
int removeIndex = scanner.nextInt();
removeStudent(students, removeIndex);
break;
case 3:
System.out.print("请输入要查询学生的索引:");
int getIndex = scanner.nextInt();
getStudent(students, getIndex);
break;
case 4:
System.out.println("已退出!");
System.exit(0);
default:
System.out.println("输入有误,请重新输入!");
}
}
}
public static void addStudent(ArrayList<Student> students) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入学号:");
String sid = scanner.nextLine();
System.out.print("请输入姓名:");
String name = scanner.nextLine();
System.out.print("请输入年龄:");
String age = scanner.nextLine();
System.out.print("请输入地址:");
String address = scanner.nextLine();
Student student = new Student(sid, name, age, address);
students.add(student);
System.out.println("添加成功!");
}
public static void removeStudent(ArrayList<Student> students, int index) {
if (index < 0 || index >= students.size()) {
System.out.println("删除失败:查无此人!");
return;
}
Student student = students.remove(index);
System.out.println("删除成功:" + student.toString());
}
public static void getStudent(ArrayList<Student> students, int index) {
if (index < 0 || index >= students.size()) {
System.out.println("查询失败:查无此人!");
return;
}
Student student = students.get(index);
System.out.println(student.toString());
}
}
class Student {
private String sid;
private String name;
private String age;
private String address;
public Student(String sid, String name, String age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"sid='" + sid + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
", address='" + address + '\'' +
'}';
}
}