欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)學生信息管理系統(tǒng)超詳細教程

 更新時間:2025年01月18日 10:29:55   作者:lim№11  
這篇文章主要介紹了一個簡單的Java學生信息管理系統(tǒng),使用ArrayList集合存儲學生對象信息,并實現(xiàn)了添加、刪除、修改和查看學生信息的功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言:

該系統(tǒng)使用Java中的基礎技術,其中采用技術:ArrayList集合儲存學生對象信息,實現(xiàn)了很簡單學生信息管理系統(tǒng),其中有通過控制臺的鍵盤錄入實現(xiàn)了添加學生信息功能,刪除學生信息功能,修改學生信息功能,查看學生信息功能。都有完整代碼,也有注釋。

注:該系統(tǒng)博主按照自己的思路寫的,想到什么寫什么,邏輯可能存在問題或者不完美等,還請見諒,其中詳細介紹了添加學生功能的代碼邏輯以及存儲是的內存圖等,其他功能感覺用到的技術感覺和添加功能的差不多就不做多介紹了。

一、主頁面展示

二、項目結構

首先創(chuàng)建pojo包,以及pojo包下的Student類

service層同理,都創(chuàng)建好后是這樣的

pojo層用于封裝一些實體類,其中我們封裝Student類

service層我們用于封裝業(yè)務邏輯代碼(增刪改查)

Main啟動類我們用于實現(xiàn)主界面

三、封裝Student類

1、封裝學生信息字段代碼部分

package pojo;

public class Student {
    //學生姓名
    private String name;
    //學生年齡
    private int age;
    //學生學號
    private int id;
    //班級信息
    private String team;
}

封裝學生信息字段

  • name  學生名字
  • age     學生年齡
  • id        學生學號
  • team   所屬班級

2、生成Getter和Setter方法

3、生成有參構造方法和無參構造方法

至此學生信息Student類封裝完成

4、Student完整代碼

package pojo;

public class Student {
    //學生姓名
    private String name;
    //學生年齡
    private int age;
    //學生學號
    private int id;
    //班級信息
    private String team;

    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 int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTeam() {
        return team;
    }

    public void setTeam(String team) {
        this.team = team;
    }

    public Student() {
    }

    public Student(String name, int age, int id, String team) {
        this.name = name;
        this.age = age;
        this.id = id;
        this.team = team;
    }

    
    
}

四、service業(yè)務邏輯層StudentDao類封裝實現(xiàn)方法

1、添加學生信息代碼

   Scanner sc = new Scanner(System.in);
    public void addStudent(ArrayList<Student> list) {
        //判斷集合對象的長度,如果list.size()==0則集合中沒有對象,所以創(chuàng)建第一個對象
        if (list.size()==0){
            System.out.println("請輸入學號");
            int id = sc.nextInt();
            System.out.println("請輸入姓名");
            String name = sc.next();
            System.out.println("請輸入年齡");
            int age = sc.nextInt();
            System.out.println("請輸入班級");
            String team = sc.next();
            Student stu = new Student(name, age, id, team);
            list.add(stu);
            System.out.println("添加學生" + stu.getName() + "成功");
        }else {
            //否則集合中已存在對象
            lo:while (true) {
                System.out.println("請輸入學號");
                int id = sc.nextInt();
                //通過遍歷集合查找各個對象的id值
                for (int i = 0; i < list.size(); i++) {
                    Student student = list.get(i);
                    //如果我們通過鍵盤錄入的id值與已有對象的id值相匹配則重新添加信息
                    if (student.getId() == id) {
                        System.out.println("該學號已存在請重新添加:");
                        break lo;
                    }
                    //否則添加信息
                    else {
                        System.out.println("請輸入姓名");
                        String name = sc.next();
                        System.out.println("請輸入年齡");
                        int age = sc.nextInt();
                        System.out.println("請輸入班級");
                        String team = sc.next();
                        Student stu = new Student(name, age, id, team);
                        list.add(stu);
                        System.out.println("添加學生" + stu.getName() + "成功");
                        break lo;
                    }
                }
            }
        }

    }

代碼邏輯解釋 

addStudent()方法通過接受Main啟動類傳入的list集合進行調用和處理

  首先通過 list.size()==0 判斷我們是否是存入第一個學生對象,因為我們學生學號通常是唯一的,而名字,年齡,班級不是唯一的,可以同名等。而我們存入的第一個學生對象是不存在學號重復的問題。所以第一個學生對象則用鍵盤錄入信息傳入 stu 對象,再將stu對象添加到我們的list集合中

例如:

通過list.add(stu);后的內存圖,我也是大概抽象出來,我也不太懂(勿噴)

當我們錄入第二個學生對象信息時,此時list中已存在0索引的stu對象(內存地址001)

則 list.size()==0條件不成立,此時list.size()==1

if(list.size()==0)判斷不過通,則執(zhí)行else

我們通過鍵盤錄入輸入第二個同學的信息,此時通過for循環(huán)遍歷拿到集合中的對象的地址,并賦值給student,此時student的內存地址為001

此時如果我們鍵盤錄入的學號id與集合中001對象的學號id一致的話則給出提示

即當student.getId() == id

該學號已存在請重新添加:

否則 student.getId() != id 則執(zhí)行后面else的代碼添加第二個學生信息并存儲到list集合中,則第二個的對象在集合中的索引為1

2、查詢學生信息功能代碼

    //查詢學生信息功能
    public void printAllStudent(ArrayList<Student> list) {
        //通過Main啟動類中studentDao.addStudent(list)傳入學生對象list集合本身
        // 而ArrayList<Student> list接受
        // list.isEmpty()判斷列表是否包含元素,不包含元素則返回 true,否則返回false
        if (list.isEmpty()) {
            System.out.println("列表中沒有學生信息。");
            return;//彈棧退出
        }else {
            System.out.println("學號\t姓名\t年齡\t班級");
            for (int i = 0; i < list.size(); i++) {
                //遍歷集合

                Student student = list.get(i);
                System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getAge() + "\t" + student.getTeam());
            }
        }

    }

3、刪除學習信息功能代碼

//根據(jù)學生學號刪除學生信息功能
    public void delStudent(ArrayList<Student> list, int id) {
        //通過遍歷集合得到各個對象的id值
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            //若某對象的id值與傳入id值相匹配,從而根據(jù)id刪除信息
            if (student.getId() == id) {
                list.remove(student);
                System.out.println("刪除"+student.getName()+"成功");
                break;
            } else {
                System.out.println("沒有找到學號為:"+student.getId()+"的學號刪除失敗");
                break;
            }

        }
    }

4、修改學生信息功能代碼

//修改學生信息功能
    public void updateStudent(ArrayList<Student> list, int id1) {
        //通過遍歷集合得到集合某索引的對象中的id值與傳入id1值相匹配,從而根據(jù)id修改信息
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            if (student.getId() == id1) {
                    System.out.println("請輸入新的名字:");
                    String name = sc.next();
                    System.out.println("請輸入新的年齡:");
                    int age = sc.nextInt();
                    System.out.println("請輸入新的班級:");
                    String team = sc.next();
                    //其中student.getId()是獲取原對象的id(做到學號不作修改)
                    Student student1 = new Student(name, age,student.getId(), team);
                    /*如果你傳入的學號(num)與集合對象的某個索引匹配,
                    則將新得到的student1插入該索引的對象當中*/
                    list.set(i, student1);
                    System.out.println("修改成功");
                    break;
            }
        }
        System.out.println("沒有"+id1+"該學號");


    }

5、StudentDao類完整代碼

package service;

import pojo.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentDao {

    Scanner sc = new Scanner(System.in);
    //查詢學生信息功能
    public void printAllStudent(ArrayList<Student> list) {
        //通過Main啟動類中studentDao.addStudent(list)傳入學生對象list集合本身
        // 而ArrayList<Student> list接受
        // list.isEmpty()判斷列表是否包含元素,不包含元素則返回 true,否則返回false
        if (list.isEmpty()) {
            System.out.println("列表中沒有學生信息。");
            return;//彈棧退出
        }else {
            System.out.println("學號\t姓名\t年齡\t班級");
            for (int i = 0; i < list.size(); i++) {
                //遍歷集合

                Student student = list.get(i);
                System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getAge() + "\t" + student.getTeam());
            }
        }

    }
    //添加學生信息功能(學生學號是唯一的)
    public void addStudent(ArrayList<Student> list) {
        //判斷集合對象的長度,如果list.size()==0則集合中沒有對象,所以創(chuàng)建第一個對象
        if (list.size()==0){
            System.out.println("請輸入學號");
            int id = sc.nextInt();
            System.out.println("請輸入姓名");
            String name = sc.next();
            System.out.println("請輸入年齡");
            int age = sc.nextInt();
            System.out.println("請輸入班級");
            String team = sc.next();
            Student stu = new Student(name, age, id, team);
            list.add(stu);
            System.out.println("添加學生" + stu.getName() + "成功");
        }else {
            //否則集合中已存在對象
            lo:while (true) {
                System.out.println("請輸入學號");
                int id = sc.nextInt();
                //通過遍歷集合查找各個對象的id值
                for (int i = 0; i < list.size(); i++) {
                    Student student = list.get(i);
                    //如果我們通過鍵盤錄入的id值與已有對象的id值相匹配則重新添加信息
                    if (student.getId() == id) {
                        System.out.println("該學號已存在請重新添加:");
                        break lo;
                    }
                    //否則添加信息
                    else {
                        System.out.println("請輸入姓名");
                        String name = sc.next();
                        System.out.println("請輸入年齡");
                        int age = sc.nextInt();
                        System.out.println("請輸入班級");
                        String team = sc.next();
                        Student stu = new Student(name, age, id, team);
                        list.add(stu);
                        System.out.println("添加學生" + stu.getName() + "成功");
                        break lo;
                    }
                }
            }
        }

    }

//根據(jù)學生學號刪除學生信息功能
    public void delStudent(ArrayList<Student> list, int id) {
        //通過遍歷集合得到各個對象的id值
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            //若某對象的id值與傳入id值相匹配,從而根據(jù)id刪除信息
            if (student.getId() == id) {
                list.remove(student);
                System.out.println("刪除"+student.getName()+"成功");
                break;
            } else {
                System.out.println("沒有找到學號為:"+student.getId()+"的學號刪除失敗");
                break;
            }

        }
    }
//修改學生信息功能
    public void updateStudent(ArrayList<Student> list, int id1) {
        //通過遍歷集合得到集合某索引的對象中的id值與傳入id1值相匹配,從而根據(jù)id修改信息
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            if (student.getId() == id1) {
                    System.out.println("請輸入新的名字:");
                    String name = sc.next();
                    System.out.println("請輸入新的年齡:");
                    int age = sc.nextInt();
                    System.out.println("請輸入新的班級:");
                    String team = sc.next();
                    //其中student.getId()是獲取原對象的id(做到學號不作修改)
                    Student student1 = new Student(name, age,student.getId(), team);
                    /*如果你傳入的學號(num)與集合對象的某個索引匹配,
                    則將新得到的student1插入該索引的對象當中*/
                    list.set(i, student1);
                    System.out.println("修改成功");
                    break;
            }
        }
        System.out.println("沒有"+id1+"該學號");


    }
}

五、Main啟動類編寫系統(tǒng)的主頁面

1、Main啟動類完整代碼

在主頁面定義 ArrayList<Student>  list 集合來儲存學生對象

import pojo.Student;
import service.StudentDao;

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //調用service層中StudentDao中的方法(實例化對象studentDao)(增刪改查)
        StudentDao studentDao = new StudentDao();
        //定義學生對象的一個數(shù)組
        ArrayList<Student> list = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        lo:
        //通過while循環(huán)無限進入我們的系統(tǒng),直到選5退出結束
        while (true) {
            System.out.println("------歡迎來到學生信息管理系統(tǒng)------");
            System.out.println("1 添加學生信息");
            System.out.println("2 刪除學生信息");
            System.out.println("3 修改學生信息");
            System.out.println("4 查看學生信息");
            System.out.println("5 退出");
            System.out.println("請輸入你的選擇:");
            //通過switch-case語句實現(xiàn)我們要選擇的功能
            int choice = sc.nextInt();
            switch (choice) {
                //通過調用studentDao實例化對象中的方法實現(xiàn)(增刪改查)
                case 1:
                    /*向方法中傳入定義的集合本身list
                    以便我們在實現(xiàn)方法時更好調用和處理集合中的每一個學生對象*/
                    studentDao.addStudent(list);
                    break;
                case 2:
                    System.out.print("請輸入你要刪除的學生學號:");
                    int id = sc.nextInt();
                    //向delStudent()函數(shù)傳入list集合,以及鍵盤錄入的學號
                    studentDao.delStudent(list, id);
                    break;
                case 3:
                    System.out.print("請輸入你要修改的學生學號:");
                    int id1 = sc.nextInt();
                    studentDao.updateStudent(list, id1);
                case 4:
                    studentDao.printAllStudent(list);
                    break;
                case 5:
                    System.out.println("退出成功");
                    break lo;

            }


        }

    }
}

總結 

到此這篇關于Java實現(xiàn)學生信息管理系統(tǒng)的文章就介紹到這了,更多相關Java學生信息管理系統(tǒng)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解

    java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解

    這篇文章主要介紹了java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解,需要的朋友可以參考下
    2020-02-02
  • Spring?@Bean?修飾方法時注入?yún)?shù)的操作方法

    Spring?@Bean?修飾方法時注入?yún)?shù)的操作方法

    對于 Spring 而言,IOC 容器中的 Bean 對象的創(chuàng)建和使用是一大重點,Spring 也為我們提供了注解方式創(chuàng)建 bean 對象:使用 @Bean,這篇文章主要介紹了Spring?@Bean?修飾方法時如何注入?yún)?shù),需要的朋友可以參考下
    2023-10-10
  • java實現(xiàn)簡單學生成績管理系統(tǒng)

    java實現(xiàn)簡單學生成績管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單學生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java的中l(wèi)ombok下的@Builder注解用法詳解

    Java的中l(wèi)ombok下的@Builder注解用法詳解

    這篇文章主要介紹了Java的中l(wèi)ombok下的@Builder注解用法詳解,lombok注解在java進行編譯時進行代碼的構建,對于java對象的創(chuàng)建工作它可以更優(yōu)雅,不需要寫多余的重復的代碼,在出現(xiàn)lombok之后,對象的創(chuàng)建工作更提供Builder方法,需要的朋友可以參考下
    2023-11-11
  • SpringBoot實現(xiàn)數(shù)據(jù)源動態(tài)切換的最佳姿勢

    SpringBoot實現(xiàn)數(shù)據(jù)源動態(tài)切換的最佳姿勢

    這篇文章主要為大家詳細介紹一下SpringBoot實現(xiàn)數(shù)據(jù)源動態(tài)切換的最佳姿勢,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • 解決java錯誤:不支持發(fā)行版本5

    解決java錯誤:不支持發(fā)行版本5

    這篇文章主要給大家介紹了關于如何解決java錯誤:不支持發(fā)行版本5的相關資料,發(fā)行版本5是Java5,已經(jīng)是十多年前的版本了,現(xiàn)在已經(jīng)不再被支持,需要的朋友可以參考下
    2023-07-07
  • Java的常見熱門ORM框架優(yōu)缺點區(qū)別

    Java的常見熱門ORM框架優(yōu)缺點區(qū)別

    Java?ORM框架是一種用于將Java對象映射到關系型數(shù)據(jù)庫中的工具,使得開發(fā)人員能夠通過對象操作數(shù)據(jù)庫而不必直接使用SQL查詢,Java開發(fā)變得更加高效和易于維護,選擇適合你的ORM框架是根據(jù)你的需求決定的,比如你的應用場景,數(shù)據(jù)結構和技術水平等
    2024-02-02
  • Java中避免寫嵌套if樣式的代碼詳解

    Java中避免寫嵌套if樣式的代碼詳解

    這篇文章主要給大家介紹了在Java中如何避免寫嵌套if樣式的相關資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。
    2017-07-07
  • SpringBoot構建ORM框架的方法步驟

    SpringBoot構建ORM框架的方法步驟

    本文主要介紹了SpringBoot構建ORM框架的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 實現(xiàn) Java 本地緩存的方法解析

    實現(xiàn) Java 本地緩存的方法解析

    這篇文章主要介紹了實現(xiàn) Java 本地緩存的方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10

最新評論