package com.sdbi.JiaQi;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManagr {
public static void main(String[] args) {
//创建Scanner对象
Scanner sc = new Scanner(System.in);
//创建ArrayList集合用于储存学生对象
ArrayList<Student> list = new ArrayList<>();
//搭建主界面菜单
To:
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("请输入您的选择:");
//接收用户键盘录入的选项
String choice = sc.next();
switch (choice) {
case "1":
//System.out.println("添加学生");
addStudent(list);
break;
case "2":
//System.out.println("删除学生");
deleteStudent(list);
break;
case "3":
//System.out.println("修改学生");
updateStudent(list);
break;
case "4":
//System.out.println("查看学生");
queryStudent(list);
break;
case "5":
System.out.println("感谢您的使用");
break To;
default:
System.out.println("您的输入有误");
break;
}
}
}
//修改学生信息的方法
public static void updateStudent(ArrayList<Student> list) {
//判断集合中有无学生对象信息,若没有,给出相应提示
if (list.size() == 0) {
System.out.println("现无学生信息,请添加后重新操作...");
return;
}
//若有,则给出输入提示信息
System.out.println("请输入您要修改的学生学号:");
//键盘接收要修改的学号
Scanner sc = new Scanner(System.in);
String updateSid = sc.next();
//调用getIndex方法,查找该学号学生在集合中的索引位置
int index = getIndex(list, updateSid);
//根据索引判断,该学号在集合中是否存在
if (index == -1) {
//不存在,给出提示
System.out.println("无该学生信息,请重新输入:");
} else {
//存在,接收新的学生信息
System.out.println("请输入新的学生姓名:");
String name = sc.next();
System.out.println("请输入新的学生年龄:");
String age = sc.next();
System.out.println("请输入新的学生地址:");
String address = sc.next();
//将以上信息封装为新的学生对象
Student sut = new Student(updateSid, name, age, address);
//调用集合的set方法,完成修改
list.set(index, sut);
System.out.println("修改成功!");
}
}
//删除学生信息的方法
public static void deleteStudent(ArrayList<Student> list) {
//判断集合中有无学生对象信息,若没有,给出相应提示
if (list.size() == 0) {
System.out.println("现无学生信息,请添加后重新操作...");
return;
}
//若有,则给出输入提示信息
System.out.println("请输入您要删除的学生学号:");
//键盘接收要删除的学号
Scanner sc = new Scanner(System.in);
String deleteSid = sc.next();
//调用getIndex方法,查找该学号学生在集合中的索引位置
int index = getIndex(list, deleteSid);
//根据索引判断,该学号在集合中是否存在
if (index == -1) {
//不存在,给出提示
System.out.println("无该学生信息,请重新输入:");
} else {
//存在,则删除
list.remove(index);
System.out.println("删除成功!");
}
}
//判断学号是否存在的方法
public static int getIndex(ArrayList<Student> list, String sid) {
//假设传入的学号不存在
int index = -1;
//遍历集合,获得每一个学生对象,进行查找
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
//获得每一个学生对象的学号
String id = stu.getId();
//将获得的每一个学号与传入要查找的学号进行比较
if (id.equals(sid)) {
//若该学号存在,则让index记录正确的索引位置
index = i;
break;
}
}
return index;
}
//查看学生信息的方法
public static void queryStudent(ArrayList<Student> list) {
//判断集合中有无学生对象信息,若没有,给出相应提升
if (list.size() == 0) {
System.out.println("现无学生信息,请添加后重新查询...");
return;
}
//存在,展示表头信息
System.out.println("学号\t\t姓名\t\t年龄\t\t住址");
//遍历集合,获得每一个学生对象的信息
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getId() + "\t\t" + stu.getName() + "\t\t" + stu.getAge() + "\t\t" + stu.getAddress());
}
}
//添加学生信息的方法
public static void addStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
//判断要添加的学号是否已存在
String id;
while (true) {
//录入信息的提示
System.out.println("请输入学号:");
id = sc.next();
int index = getIndex(list, id);
if (index == -1) {
//输入的学号不存在,可以结束循环,继续录入其他信息
break;
} else {
//若输入的学号存在,则继续进行循环,直到录入的学号不存在为止,并给出相应的提示
System.out.println("您输入的学号已存在,请重新输入:");
}
}
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println("请输入年龄:");
String age = sc.next();
System.out.println("请输入住址:");
String address = sc.next();
//将键盘录入的信息封装为学生对象
Student student = new Student(id, name, age, address);
//将封装好的学生对象储存到集合中
list.add(student);
//添加成功的学生信息
System.out.println("添加成功!");
}
}
//前提需要用封装的思想创建一个Student类,类中书写好相应的成员变量以及get、set方法,无参、满参构造方法等。