需求:实现学生的增删改查
属性:id、姓名、年龄、家庭住址
添加功能:
键盘录入学生信息
id唯一
删除功能:
键盘录入要删除的学生id
id存在删除,id不存在,需要提示不存在,并回到初始菜单
修改功能:
键盘录入要修改的学生id
id存在,继续录入其他信息
id不存在,需要提示不存在,并回到初始菜单
查询功能:
打印所有的学生信息
如果没有学生信息,提示:当前无学生信息,请添加后再查询
如果有学生信息,需要按照以下格式输出
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
// 循环直至退出
// 起名为loop
loop:
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:退出系统");
System.out.println("请输入您的选择:");
Scanner sc = new Scanner(System.in);
String choose = sc.next();
// 根据选择的数字调用方法
switch (choose) {
case "1" -> addStudent(list);
case "2" -> deleteStudent(list);
case "3" -> updateStudent(list);
case "4" -> queryStudent(list);
case "5" -> {
System.out.println("退出系统");
// break loop;
System.exit(0); // 停止虚拟机运行
}
default -> System.out.println("没有这个选项");
}
}
}
// 添加学生
public static void addStudent(ArrayList<Student> list) {
// 键盘录入学生信息
Scanner sc = new Scanner(System.in);
String id;
while (true) {
System.out.println("请输入学生id");
id = sc.next();
if (idCheck(list, id)) {
break;
} else {
System.out.println("id不唯一,请重新输入");
}
}
System.out.println("请输入学生姓名");
String name = sc.next();
System.out.println("请输入学生年龄");
int age = sc.nextInt();
System.out.println("请输入学生地址");
String address = sc.next();
Student s = new Student(id, name, age, address);
list.add(s);
System.out.println("学生信息添加成功");
}
// 删除学生
public static void deleteStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入删除id");
String delId = sc.next();
int index = getIndex(list, delId);
if (index == -1) {
System.out.println("该学生信息不存在,删除失败");
} else {
list.remove(list.get(index));
System.out.println("学生信息删除成功");
}
}
// 修改学生
public static void updateStudent(ArrayList<Student> list) {
// 键盘录入学生信息
Scanner sc = new Scanner(System.in);
String id;
int index;
while (true) {
System.out.println("请输入学生id");
id = sc.next();
if (!idCheck(list, id)) {
index = getIndex(list,id);
break;
} else {
System.out.println("id不存在,请重新输入");
}
}
System.out.println("请输入学生姓名");
String name = sc.next();
System.out.println("请输入学生年龄");
int age = sc.nextInt();
System.out.println("请输入学生地址");
String address = sc.next();
Student s = new Student(id, name, age, address);
list.set(index,s);
System.out.println("学生信息修改成功");
}
// 查询学生
public static void queryStudent(ArrayList<Student> list) {
if (list.size() == 0) {
System.out.println("当前无学生信息,请添加后再查询");
} else {
System.out.println("id\t\t姓名\t\t年龄\t\t家庭住址");
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getId() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "\t\t" + s.getAddress());
}
}
System.out.println("学生信息查询成功");
}
// 判断id在集合中是否存在
public static boolean idCheck(ArrayList<Student> list, String id) {
return getIndex(list, id) == -1;
}
// 通过id获取索引
public static int getIndex(ArrayList<Student> list, String id) {
for (int i = 0; i < list.size(); i++) {
if (id.equals(list.get(i).getId())) {
return i;
}
}
return -1;
}
}
学生类
public class Student {
private String id;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}