day09 集合基礎、學生管理系統

巨集輝發表於2020-10-28

day09 集合基礎、學生管理系統

1.1 集合概述

可以儲存多個資料的容器

陣列和集合的異同

陣列集合
可以儲存多個資料可以儲存多個資料
長度是固定的長度不固定
可以儲存基本資料型別,也可以儲存引用資料型別只能儲存引用資料型別
  • 泛型的使用
    < E>:就是指定集合儲存的資料型別
    < Student>:學生類
    < int> ❌ 不能引用基本資料型別

1.2ArrayList構造方法和新增方法

增刪改查、獲取集合長度、遍歷集合

語句說明
public ArrayList< E >()建立一個新的集合
public boolean add(E,e)在集合裡新增元素
public boolean add(index i ,E e)在集合index位置加入元素
public boolean remove(Object o)刪除集合中指定元素
public E remove(index)刪除集合index位置的元素
public boolean set(index i,E e)修改集合中index位置的元素為e
public E get(index i)得到集合中index位置的元素
public int ArrayList.size()獲取集合長度

實現程式碼

public class ArrayListDemo01 {
    public static void main(String[] args) {
        //建立一個集合
        ArrayList<String> list = new ArrayList<>();

        //增加集合
        list.add("老童最可愛");
        list.add("老童最可愛");
        list.add("老童最可愛");
        list.add("老張不可愛");
        list.add(1,"老張不可愛");
        System.out.println(list);
        System.out.println(list.get(0));

        //刪除集合
        list.remove("老張不可愛");//注意:每次只能刪一個
        System.out.println(list);

        //修改集合
        list.set(0,"老童不僅可愛還漂亮");
        System.out.println(list);

        //查詢集合
        System.out.println(list.get(0));

        //獲取集合的長度
        System.out.println(list.size());

        //遍歷集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

執行結果
在這裡插入圖片描述

1.3集合儲存物件

建立物件Student,定義名字和年齡,建立有參和無參構造方法
新建測試類
1、建立學生集合
2、通過有參構造方法往集合裡面新增學生物件
3、通過鍵盤錄入新增學生物件
4、遍歷輸出

實現程式碼

public class ArrayListDemo02 {
    public static void main(String[] args) {
        //建立學生集合
        ArrayList<Student> s = new ArrayList<>();

        //往學生集合裡面新增物件
        s.add(new Student("老童",18));
        s.add(new Student("老張",22));

        //通過鍵盤錄入新增學生物件
        System.out.println("請輸入學生姓名和年齡");
        s.add(new Student(new Scanner(System.in).nextLine(),new Scanner(System.in).nextInt()));

        //遍歷輸出
        for (int i = 0; i < s.size(); i++) {
            System.out.println("學生姓名:"+s.get(i).getName()+"  年齡:"+s.get(i).getAge());
        }
    }
}
public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {

        this.name = name;
        this.age = age;
    }

    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;
    }
}

執行結果
在這裡插入圖片描述

學生管理系統

  • 案例需求
  1. 學生管理系統主要功能如下:
  2. 新增學生:通過鍵盤錄入學生資訊,新增到集合中
  3. 刪除學生:通過鍵盤錄入要刪除的學生學號,將該學生物件從集合中刪除
  4. 修改學生:通過鍵盤錄入要修改學生的學號,將該學生物件其他資訊進行修改
  5. 檢視學生:將集合中的學生物件資訊進行展示
  • 實現步驟
  1. 定義學生類,包含以下成員變數
    private String sid 學生id
    private String name 學生姓名
    private String age 學生年齡
    private String address 學生地址

  2. 學生管理系統主介面的搭建步驟
    2.1 用輸出語句完成主介面的編寫
    2.2用Scanner實現鍵盤輸入
    2.3用switch語句完成選擇的功能
    2.4用迴圈完成功能結束後再次返回主介面

  3. 學生管理系統的新增學生功能實現步驟
    3.1 定義一個方法,接受ArrayList集合
    3.2方法內完成新增學生的功能
    1、鍵盤錄入學生資訊
    2、根據錄入的資訊建立學生物件
    3、將學生物件新增到集合中

  4. 學生管理系統的刪除學生功能實現步驟
    1、鍵入要刪除的學生物件id
    2、將對應id的學生資訊進行刪除
    3、若無對應id,則輸出“查無此學生資訊,刪除失敗”

  5. 學生管理系統的修改學生功能實現步驟
    1、鍵入要修改的學生物件id
    2、將對應id的學生資訊進行修改(此處加一個switch語句來選擇要修改的學生資訊種類)
    3、若無對應id,則輸出“查無此學生資訊,修改失敗”

  6. 學生管理系統的檢視學生功能實現步驟
    通過for迴圈將集合中所有學生資訊列印出來

  7. 利用系統命令System.exit(0)退出學生管理系統

  • 學生管理系統原始碼
public class StudentTest {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();

        //主介面顯示
        show();
        Scanner sc = new Scanner(System.in);
        while (true) {
            String line = sc.nextLine();
            chose(line, list);
            show();
        }
    }
    public static void chose(String line, ArrayList list) {
        //Switch進行選擇
        switch (line) {
            case "1":
                System.out.println("新增學生");
                addStuent(list);
                break;
            case "2":
                System.out.println("刪除學生");
                delStudent(list);
                break;
            case "3":
                System.out.println("修改學生");
                modifyStudent(list);
                break;
            case "4":
                System.out.println("檢視所有學生");
                showStudent(list);
                break;
            case "5":
                System.out.println("謝謝使用");
                System.exit(0);//JVM退出
            default:
                System.out.println("您輸入的數字無效");
                break;
        }
    }

    public static void addStuent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        if (list.size() > 0) {
            System.out.println("請輸入學生的id:");
            String sid = sc.nextLine();
            for (int i = 0; i < list.size(); i++) {
                Student obj = (Student) list.get(i);
                if (obj.getSid().equals(sid)) {
                    System.out.println("學生id重複,增加失敗!");
                }
                else {
                    System.out.println("請輸入學生的姓名、年齡、居住地址");
                    list.add(new Student(sid, sc.nextLine(), sc.nextLine(), sc.nextLine()));
                    System.out.println("學生資訊新增成功!");
                    break;
                }
            }
        } else {
            System.out.println("請輸入學生的id、姓名、年齡、居住地址");
            list.add(new Student(sc.nextLine(), sc.nextLine(), sc.nextLine(), sc.nextLine()));
        }
    }

    private static void delStudent(ArrayList list) {
        System.out.println("請輸入需要刪除資訊的學生的id");
        Scanner sc = new Scanner(System.in);
        String sid = sc.nextLine();
        for (int i = 0; i < list.size(); i++) {
            Student obj = (Student) list.get(i);
            System.out.println(obj.getSid());
            if (obj.getSid().equals(sid)) {
                //進行刪除
                list.remove(i);
                System.out.println("學生資訊刪除成功");
            } else
                System.out.println("查無此學生資訊,刪除失敗");
        }

    }

    private static void modifyStudent(ArrayList list) {
        System.out.println("請輸入要修改資訊的學生的id");
        Scanner sc = new Scanner(System.in);
        String sid = sc.nextLine();
        for (int i = 0; i < list.size(); i++) {
            Student obj = (Student) list.get(i);
            if (obj.getSid().equals(sid)) {
                modifyShow();
                String line = sc.nextLine();
                switch (line) {
                    case "1":
                        System.out.println("請輸入要修改的學生姓名");
                        obj.setName(sc.nextLine());
                        System.out.println("學生姓名修改成功!");
                        break;
                    case "2":
                        System.out.println("請輸入要修改的學生年齡");
                        obj.setAge(sc.nextLine());
                        System.out.println("學生年齡修改成功!");
                        break;
                    case "3":
                        System.out.println("請輸入要修改的學生住址");
                        obj.setAge(sc.nextLine());
                        System.out.println("學生住址修改成功!");
                        break;

                    default:
                        System.out.println("輸入的數字有誤!");
                        break;
                }
            } else
                System.out.println("查無此學學生id!");
        }
    }

    public static void showStudent(ArrayList<Student> list) {
        System.out.println("==========學生資訊========");
        for (Student stu : list) {
            System.out.println("學生id:" + stu.getSid() + "   學生姓名:" + stu.getName() + "  學生年齡:" + stu.getAge() + "   學生地址:" + stu.getAddress());
        }
    }

    private static void modifyShow() {
        System.out.println("=======學生資訊修改========");
        System.out.println("請輸入要修改資訊的序號:");
        System.out.println("1 學生姓名");
        System.out.println("2 學生年齡");
        System.out.println("3 學生住址");
    }

    public static void show() {
        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("請輸入要進行的操作:");
        return;
    }
}
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;
    }

}
  • 執行結果
    在這裡插入圖片描述

Memorial Day is 393 days
I miss you
xiaokeai

相關文章