package demo06_项目;
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;
}
}
2.学生管理系统的创建,即上述类的调用
package demo06_项目;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManagerSystem {
/*
我们主要在这个类中实现,创建管理系统的主界面,实现增删改查四种功能
*/
/*
1. 我们先用输出语句来构建主界面
2. 键盘录入,用户输入的选择
3. 我们使用switch来实现用户的选择
4. 我们需要使用循环,重新回到主界面
5.创建一个学生集合,用来保存学生对象, 把这个集合对象分别传递给不同的方法【这些方法到时候公用同一个集合】
*/
public static void main(String[] args) {
//我们用来存放学生信息的集合
ArrayList<Student> list = new ArrayList<>();
Student s1 = new Student("001", "田七", 27, "深圳");
list.add(s1); //0
xx:
while (true) {
//1. 我们先用输出语句来构建主界面
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("请输入你要执行的功能:");
//2. 键盘录入,用户输入的选择
Scanner sc = new Scanner(System.in);
String choose = sc.next();
//3. 我们使用switch来实现用户的选择
switch (choose) {
case "1":
// alt + 回车键,可以快速去生成方法
addStudent(list);
break;
case "2":
deleteStudent(list);
break;
case "3":
updateStudent(list);
break;
case "4":
findAllStudent(list);
break;
case "5":
System.out.println("谢谢使用,欢迎下次光临~~");
break xx;
default:
System.out.println("输入的数据有误~~");
}
}
}
/*
1. 我们先用输出语句构建表头信息
2. 遍历集合,获取每一个学生的信息,年龄拼接一个“岁”字
*/
private static void findAllStudent(ArrayList<Student> list) {
//1. 我们先用输出语句构建表头信息
System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
// 2. 遍历集合,获取每一个学生的信息,年龄拼接一个“岁”字
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" + s.getAddress());
}
}
/*
1. 先提示用户输入对应的要修改的学号
2. 需要判断当前的学号是否存在【findIndex()】
3. 如果不存在则给出提示
4. 如果存在则提示要修改的数据[修改姓名,年龄,居住地]
4.1. 创建一个新的学生对象,把修改好的信息保存进去
4.2. 修改到集合中
*/
private static void updateStudent(ArrayList<Student> list) {
//1. 先提示用户输入对应的要修改的学号
System.out.println("请输入要修改的学生的学号");
Scanner sc = new Scanner(System.in);
String id = sc.next();
//2. 需要判断当前的学号是否存在【findIndex()】
int index = findIndex(list, id);
if(index == -1){
System.out.println("该学号不存在,请重新输入");
}else{
//4. 如果存在则提示要修改的数据[修改姓名,年龄,居住地]
System.out.println("请输入学生的新姓名");
String name = sc.next();
System.out.println("请输入学生的新年龄");
int age = sc.nextInt();
System.out.println("请输入学生的新居住地");
String address = sc.next();
//4.1. 创建一个新的学生对象,把修改好的信息保存进去
Student s = new Student(id , name ,age , address);
// 4.2. 修改到集合中
list.set(index ,s);
System.out.println("修改学生信息成功~");
}
}
/*
1. 先提示用户输入要删除的学生的学号
2. 判断当前集合中是否存在该学号【findIndex()】
3. 如果不存在,则给出提示
4. 如果存在,就删除
*/
private static void deleteStudent(ArrayList<Student> list) {
//1. 先提示用户输入要删除的学生的学号
System.out.println("请输入要删除的学生的学号");
Scanner sc = new Scanner(System.in);
String id = sc.next();
//2. 判断当前集合中是否存在该学号
int index = findIndex(list, id);
// 3. 如果不存在,则给出提示
if(index == -1){
System.out.println("该学号不存在,请重新输入");
}else{
// 4. 如果存在,就删除
//集合删除元素 list.remove(索引、元素)
list.remove(index);
System.out.println("删除成功~");
}
}
/*
1. 先提示用户输入对应的信息
2. 使用键盘录入去接收
3. 需要创建一个学生对象,把键盘输入的数据保存成一个学生对象
4. 把学生对象保存到集合中
*/
private static void addStudent(ArrayList<Student> list) {
//1. 先提示用户输入对应的信息
//2. 使用键盘录入去接收
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的学号");
String id;
while (true) {
id = sc.next();
int index = findIndex(list, id);
if (index == -1) {
//集合中不存在该索引
break;
} else {
System.out.println("该学号已经存在,请重新输入");
}
}
System.out.println("请输入学生的姓名");
String name = sc.next();
System.out.println("请输入学生的年龄");
int age = sc.nextInt();
System.out.println("请输入学生的居住地");
String address = sc.next();
//3. 需要创建一个学生对象,把键盘输入的数据保存成一个学生对象
Student s = new Student(id, name, age, address);
// 4. 把学生对象保存到集合中
list.add(s);
System.out.println("添加学生信息成功");
System.out.println("当前系统人数为:" + list.size());
}
/*
判断学生集合中,是否有指定的学号,如果有就返回当前学生对应的索引,如果没有就返回-1
1. 我们定义的方法,需要接收一个集合和一个要查找的学号
2. 遍历集合,获取每一个学生对象
3. 再获取每一个学生对象对应的学号 去和 传递过来的学号做比较
4. 如果是相同,就返回对应的索引
5. 如果整个循环都执行完毕,还是找不到,就返回-1
*/
public static int findIndex(ArrayList<Student> list, String id) {
// 2. 遍历集合,获取每一个学生对象
for (int i = 0; i < list.size(); i++) {
//2. 遍历集合,获取每一个学生对象
Student s = list.get(i);
// 3. 再获取每一个学生对象对应的学号 去和 传递过来的学号做比较
if (s.getId().equals(id)) {
//4. 如果是相同,就返回对应的索引
return i;
}
}
// 5. 如果整个循环都执行完毕,还是找不到,就返回-1
return -1;
}
}