java第一个小项目(学生管理系统ArrayList)

ArrayList的常见的方法:
构造方法:
	public ArrayList<E>();
	//例如:
	ArrayList<String> array = new ArrayList<>();
	//或者:
	ArrayList<String> array = new ArrayList<String>();

添加方法:
		public boolean add(E e)
		public boolean add(int index,E e)
删除指定元素:
		public boolean remove(Object 0)
删除索引处元素,返回被删除元素:
		public E remove(int index)
返回指定索引处的元素:
		public E get(int index)
修改指定索引处元素,返回被修改的元素:
		public E set(int index,E element)
返回集合中的元素的个数:
		public int size()
//学生类
package Demo;

public class Student {
    private String sid;
    private String name;
    private String age;
    private String address;

    public Student() {//无参构造
    }

//有参构造(就是初始化成员变量)
    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;
    }
//这些get set 方法在idea中可以直接用alt + insert快捷键实现,
//不用一个一个的去敲

}






//创建学生测试类(就是管理学生的)


package Demo;

import java.util.Scanner;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;

public class StudentDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Student> array = new ArrayList<>();
        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 num = sc.nextInt();
            switch (num) {
                case 1:
                    System.out.println("添加学生");
                    addStudent(array);
                    break;
                case 2:
                    System.out.println("删除学生");
                    deleteStudent(array);
                    break;
                case 3:
                    System.out.println("修改学生");
                    updateStudent(array);
                    break;
                case 4:
                    System.out.println("查看学生");
                    findAllStudent(array);
                    break;
                case 5:
                    System.out.println("退出");
                    //break;
                    System.exit(0);//JVM退出,就是虚拟机退出

            }
        }

    }

    //增加学生
    public static void addStudent(ArrayList<Student> array) {

        System.out.println("输入学生的学号,姓名,年龄,地址");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        String name = sc.next();
        String age = sc.next();
        String address = sc.next();

        //用这种方法给他赋值要更好一些,这种方式代码简洁
        Student s = new Student(id, name, age, address);

        //这种方法虽然能和上面的代码实现相同的赋值的功能,但是代码过于复杂,而且效率低(老师说的)
        //这种方法一般用于修改的操作中
//        Student s = new Student();
//        s.setName(name);
//        s.setAge(age);
//        s.setSid(id);
//        s.setAddress(address);


        if (array.add(s)) {//AttarList中add函数的返回类型是boolean,就是返回添加成功与否
            System.out.println("添加成功");
        }

    }

    //查看学生信息
    public static void findAllStudent(ArrayList<Student> array) {
        for (int i = 0; i < array.size(); i++) {
            System.out.println(i + "号学生:");

            //System.out.println("\t姓名" + array.get(i));
            //这个语句只是返回了地址,必须要调用get方法得到想要得到的东西

            System.out.println("\t姓名" + array.get(i).getName());
            System.out.println("\t学号" + array.get(i).getSid());
            System.out.println("\t地址" + array.get(i).getAddress());
            System.out.println("\t年龄" + array.get(i).getAge());
        }
    }

    //删除学生信息
    public static void deleteStudent(ArrayList<Student> array) {
        System.out.println("请输入学生的学号");
        Scanner sc = new Scanner(System.in);
        String sid = sc.next();
        int index = -1;//************就是一个flag,用于标记是否存在这个学号的学生,下面有判断的************
        for(int i=0;i<array.size();i++){
            if(sid.equals(array.get(i).getSid())){
                index = i;
                break;
            }
        }

        if(index == -1){
            System.out.println("学号不正确,重新输入");
        }else{
            array.remove(index);
        }

    }

    //修改学生信息
    public static void updateStudent(ArrayList<Student> array) {
        System.out.println("请输入学号");
        Scanner sc = new Scanner(System.in);
        String sid = sc.next();
        System.out.println("输入要修改的姓名,年龄,地址");
        String name = sc.next();
        String age = sc.next();
        String address = sc.next();
        Student student = new Student(sid,name,age,address);
        int index = -1;
        for(int i=0;i<array.size();i++){
            if(sid.equals(array.get(i).getSid())){
                index = -1;
                break;
            }
        }
        if(index == -1){
            System.out.println("学号不正确,请重新输入");
        }else{
            array.set(index,student);
            System.out.println("修改成功");
        }

    }


}
//学到的:

//1.
//这些get set 方法在idea中可以直接用alt + insert快捷键实现,不用一个一个的去敲

//2.  
System.exit(0);//JVM退出,就是虚拟机退出

//3.
//用这种方法给他赋值要更好一些,这种方式代码简洁
        Student s = new Student(id, name, age, address);

        //这种方法虽然能和上面的代码实现相同的赋值的功能,但是代码过于复杂,
        //而且效率低(老师说的)
        //这种方法一般用于修改的操作中
//        Student s = new Student();
//        s.setName(name);
//        s.setAge(age);
//        s.setSid(id);
//        s.setAddress(address);