(十)ArrayList&&學生管理系統

Kryze-發表於2020-10-11

集合基礎

一、集合

1)集合概述:程式設計的時候如果要儲存多個資料,使用長度固定的陣列儲存格式,不一定滿足我們的需求,更適應不了變化的需求,此時就應該選擇集合

2)集合類的特點:提供一種儲存空間可變的儲存模型,儲存的資料容量可以改變

3)ArrayList<E>:可調整大小的陣列實現;是一種特殊的資料型別,叫泛型,在出現E的地方使用引用資料型別替換即可,如ArrayList<String>,ArrayList<Student>

4)ArrayList構造方法和新增方法

方法名說明
public ArrayList()建立一個空的集合物件
public boolean add(E e)將指定的元素追加到此集合的末尾
public void add(int index, E element)在此集合中的指定位置插入指定元素

範例:

package ArrayListTest;

import java.util.ArrayList;

public class ArrayListTest {
    public static void main(String[] args) {
        //ArrayList構造方法
        //建立一個空的集合物件
        ArrayList<String> array = new ArrayList<String>();//表示該集合中儲存的是String型別
        //輸出集合
        System.out.println("array:"+array);
        //將指定元素追加到此集合的末尾
        array.add("Hello");
        System.out.println("array:"+array);
        //在此集合中的指定位置插入指定的元素
        array.add(1,"World");
        array.add(0,"Test");
        System.out.println("array:"+array);
        //輸出結果:array:[Test, Hello, World]
    }
}

5)ArrayList常用方法

方法名說明
public boolea remove(Object o)刪除指定的元素,返回刪除是否成功
public E remove(int index)刪除指定索引處的元素,返回被刪除的元素
public E set(int index, E element)修改指定索引的元素,返回被修改的元素
public E get(int index)返回指定索引處的元素
public int size()返回集合中的元素個數

範例:

package ArrayListTest;

import java.util.ArrayList;

public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> array = new ArrayList<String>();
            array.add("Hello");
            array.add("World");
            array.add("Test");
        System.out.println(array);
            array.remove("Hello");
        System.out.println(array);
            array.remove(1);
        System.out.println(array);
            array.set(0,"set");
        System.out.println(array);
        System.out.println(array.get(0));
        System.out.println(array.size());
        /*輸出結果:[Hello, World, Test]
                 [World, Test]
                 [World]
                 [set]
                 set
                 1
        */

    }
}

6)案例分析:儲存學生物件並遍歷

建立一個儲存學生物件的集合,儲存3個學生物件,使用程式實現在控制檯遍歷該集合

範例:

package ArrayListTest;

import java.util.ArrayList;

public class ArrayListTest {
    public static void main(String[] args) {

        ArrayList<Student> array = new ArrayList<Student>();

        Student s1 = new Student("小明",30);
        Student s2 = new Student("小張",29);
        Student s3 = new Student("小紅",27);
        Student s4 = new Student("小美",26);

        array.add(s1);
        array.add(s2);
        array.add(s3);
        array.add(s3);

        for(int i  =0 ;i< array.size();i++){
            Student s = array.get(i); //集合是什麼型別,左邊儲存的物件就是什麼型別
            System.out.println(s.getName()+","+s.getAge());
        }

    }

}

7)案例分析:建立一個儲存學生物件的集合,儲存3個學生物件,使用程式實現在控制檯遍歷該集合,學生的姓名和年齡來自於鍵盤錄入

範例:

package ArrayListTest;

import java.util.*;

public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<Student>  array = new ArrayList<Student>();
        System.out.println("請錄入三個學生:");

        for (int i=0;i<3;i++){
            addStudent(array);
        }
        for (int i=0;i<3;i++){
            Student s = array.get(i);
            System.out.println(s.getName()+","+s.getAge());
        }
    }

    public static void addStudent(ArrayList<Student> array){
        Student s = new Student();
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入學生姓名:");
        String name = sc.nextLine();
        s.setName(name);
        System.out.println("請輸入學生年齡:");
        String Age = sc.nextLine();
        s.setAge(Age);

        array.add(s);
    }
}

二、學生管理系統

用程式實現學生管理系統以下功能:新增學生、刪除學生、修改學生、檢視所有學生、退出

學生具有屬性:學號、姓名、年齡、居住地

學生管理系統實現思路:定義學生類、主介面的程式碼編寫、新增學生的程式碼編寫、檢視學生的程式碼編寫、刪除學生的程式碼編寫、修改學生的程式碼編寫

生成構造方法、getter、 setter方法:Alt+insert

範例:

package StudentManger;

import java.util.*;

public class StudentManger {
    public static void main(String[] args) {
        //用於儲存學生資訊的集合
        ArrayList<Student> array = new ArrayList<Student>();
        while(true) {
            System.out.println();
            //輸出語句完成主介面的編寫
            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實現鍵盤錄入資料
            Scanner sc = new Scanner(System.in);
            int choice = sc.nextInt();
            //用switch完成操作的選擇
            switch (choice) {
                case 1:
                    System.out.println("新增學生");
                    addStudent(array);
                    break;
                case 2:
                    System.out.println("刪除學生");
                    removeStudent(array);
                    break;
                case 3:
                    System.out.println("修改學生");
                    changeStudent(array);
                    break;
                case 4:
                    System.out.println("檢視所有學生");
                    getStudent(array);
                    break;
                case 5:
                    System.out.println("謝謝使用");
                    System.exit(0);//JVM退出
            }
        }
    }
    public static void addStudent(ArrayList<Student> array){
        //鍵盤錄入學生物件所需要的資料
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入學生學號:");
        String sid = sc.nextLine();
        for(int i=0;i< array.size();i++){
            Student s = array.get(i);
            if(s.getSid().equals(sid)){
                System.out.println("學號重複,請重新輸入");
                return;
            }
        }
        System.out.println("請輸入學生姓名:");
        String name = sc.nextLine();
        System.out.println("請輸入學生年齡:");
        String age = sc.nextLine();
        System.out.println("請輸入學生地址:");
        String address = sc.nextLine();
        //新建一個新的學生物件
        Student s = new Student(name,age,sid,address);
        //將學生物件新增到集合中

        array.add(s);
        //給出新增成功提示
        System.out.println("新增學生成功!");
    }
    public static  void removeStudent(ArrayList<Student> array){
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入你要刪除的學生的學號");
        String sid = sc.nextLine();
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            if(s.getSid().equals(sid)){ //字串的比較用equals
                array.remove(s);
                System.out.println("刪除學生成功");
            }else{
                System.out.println("該資訊不存在,請重新輸入");
            }
        }

    }
    public static  void getStudent(ArrayList<Student> array){
        if(array.size()==0){
            System.out.println("無資訊,請先新增資訊再查詢");
            //return; //這裡這個語句可以省略else
        }
        else {//輸出表頭
            System.out.println("學號\t\t\t姓名\t\t年齡\t\t居住地");//\t就是tab鍵
            //遍歷Array
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "歲\t" + s.getAdress());
            }
        }
    }
    public static void changeStudent(ArrayList<Student> array){
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入要修改的學生學號:");
        String sid = sc.nextLine();
        for (int i=0;i< array.size();i++){
            Student s = array.get(i);
            if(s.getSid().equals(sid)){
                break;
            }else {
                System.out.println("該資訊不存在,請重新輸入");
                return;
            }
        }
        System.out.println("請輸入學生新姓名:");
        String name =sc.nextLine();
        System.out.println("請輸入學生新年齡:");
        String age =sc.nextLine();
        System.out.println("請輸入學生新地址:");
        String address =sc.nextLine();

        for(int i=0;i<array.size();i++){
            Student s = array.get(i);
            if(s.getSid().equals(sid)){
                s.setName(name);
                s.setAge(age);
                s.setAdress(address);
                System.out.println("修改學生資訊成功!");
                break;
            }
        }

    }
}
class Student {

    private String name;
    private String age;
    private String sid;
    private String address;

    public Student(){

    }

    public Student(String name , String age ,String sid,String address  ){
        this.name = name;
        this.age = age;
        this.sid = sid;
        this.address = address;
    }


    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return this.name;
    }

    public void setAge(String age){
        this.age = age;
    }

    public String getAge(){
        return  this.age;
    }

    public void setSid(String sid){
        this.sid = sid;
    }

    public String getSid(){
        return this.sid;
    }

    public void setAdress(String adress){
        this.address = adress;
    }

    public String getAdress(){
        return  this.address;
    }
}

相關文章