现要求你使用java编程实现以下内容:编写一个学生类student,包含的属性有学号、姓名、性别、年龄等,将所有学生存储在一个数组中,编写学生管理程序实现如下操作:(1)增加一个学生;(2)根据学号删除某个学生;(3)将所有学生年龄增加一岁;(4)按数组中顺序显示所有学生信息;(5)将所有学生按姓名排序输出。
时间: 2023-05-29 21:04:41 浏览: 87
请见以下代码:
```
import java.util.Arrays;
import java.util.Scanner;
public class StudentManagementSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Student[] students = new Student[0];
while (true) {
System.out.println("请选择操作:");
System.out.println("1.增加学生");
System.out.println("2.删除学生");
System.out.println("3.所有学生年龄增加一岁");
System.out.println("4.按数组中顺序显示所有学生信息");
System.out.println("5.将所有学生按姓名排序输出");
int choice = scanner.nextInt();
switch (choice) {
case 1:
students = addStudent(students, scanner);
break;
case 2:
students = deleteStudent(students, scanner);
break;
case 3:
addAge(students);
break;
case 4:
showStudents(students);
break;
case 5:
sortByName(students);
showStudents(students);
break;
default:
System.out.println("输入错误,请重新选择!");
break;
}
}
}
private static Student[] addStudent(Student[] students, Scanner scanner) {
System.out.println("请输入学号:");
int id = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入姓名:");
String name = scanner.nextLine();
System.out.println("请输入性别:");
String gender = scanner.nextLine();
System.out.println("请输入年龄:");
int age = scanner.nextInt();
Student student = new Student(id, name, gender, age);
Student[] newStudents = Arrays.copyOf(students, students.length + 1);
newStudents[newStudents.length - 1] = student;
System.out.println("学生添加成功!");
return newStudents;
}
private static Student[] deleteStudent(Student[] students, Scanner scanner) {
System.out.println("请输入要删除学生的学号:");
int id = scanner.nextInt();
int index = -1;
for (int i = 0; i < students.length; i++) {
if (students[i].getId() == id) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("找不到该学生!");
return students;
} else {
Student[] newStudents = new Student[students.length - 1];
for (int i = 0; i < index; i++) {
newStudents[i] = students[i];
}
for (int i = index + 1; i < students.length; i++) {
newStudents[i - 1] = students[i];
}
System.out.println("学生删除成功!");
return newStudents;
}
}
private static void addAge(Student[] students) {
for (int i = 0; i < students.length; i++) {
students[i].setAge(students[i].getAge() + 1);
}
System.out.println("所有学生年龄增加一岁成功!");
}
private static void showStudents(Student[] students) {
for (int i = 0; i < students.length; i++) {
System.out.println(students[i].toString());
}
}
private static void sortByName(Student[] students) {
Arrays.sort(students, (s1, s2) -> s1.getName().compareTo(s2.getName()));
System.out.println("所有学生按姓名排序成功!");
}
}
class Student {
private int id;
private String name;
private String gender;
private int age;
public Student(int id, String name, String gender, int age) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "学号:" + id + ",姓名:" + name + ",性别:" + gender + ",年龄:" + age;
}
}
```
使用时,可以在main方法中创建Scanner对象,并初始化一个空的学生数组students。然后进入while循环,提示用户选择操作。根据用户的选择,调用相应的方法进行操作。每个方法的实现如下:
- addStudent方法:根据用户输入的信息创建一个新的学生对象,并将其添加到students数组中。使用Arrays.copyOf方法扩展数组,并使用新数组替换原来的数组。
- deleteStudent方法:根据用户输入的学号查找学生对象,如果找到,就创建一个新的数组,并将原来数组中除了该学生对象以外的所有学生对象添加到新数组中,最后将新数组替换原来的数组。如果找不到该学生对象,就直接返回原来的数组。
- addAge方法:遍历students数组,将每个学生对象的年龄加1。
- showStudents方法:遍历students数组,逐个输出每个学生对象的信息。
- sortByName方法:使用Arrays.sort方法按照学生姓名排序。
在每个方法中,根据需要输出相应的提示信息。每个方法的返回值都是一个新的学生数组,以便在修改后将其赋值给students数组。