最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言:

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

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

一、主頁(yè)面展示

二、項(xiàng)目結(jié)構(gòu)

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

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

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

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

Main啟動(dòng)類我們用于實(shí)現(xiàn)主界面

三、封裝Student類

1、封裝學(xué)生信息字段代碼部分

package pojo;

public class Student {
    //學(xué)生姓名
    private String name;
    //學(xué)生年齡
    private int age;
    //學(xué)生學(xué)號(hào)
    private int id;
    //班級(jí)信息
    private String team;
}

封裝學(xué)生信息字段

  • name  學(xué)生名字
  • age     學(xué)生年齡
  • id        學(xué)生學(xué)號(hào)
  • team   所屬班級(jí)

2、生成Getter和Setter方法

3、生成有參構(gòu)造方法和無(wú)參構(gòu)造方法

至此學(xué)生信息Student類封裝完成

4、Student完整代碼

package pojo;

public class Student {
    //學(xué)生姓名
    private String name;
    //學(xué)生年齡
    private int age;
    //學(xué)生學(xué)號(hào)
    private int id;
    //班級(jí)信息
    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è)務(wù)邏輯層StudentDao類封裝實(shí)現(xiàn)方法

1、添加學(xué)生信息代碼

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

    }

代碼邏輯解釋 

addStudent()方法通過(guò)接受Main啟動(dòng)類傳入的list集合進(jìn)行調(diào)用和處理

  首先通過(guò) list.size()==0 判斷我們是否是存入第一個(gè)學(xué)生對(duì)象,因?yàn)槲覀儗W(xué)生學(xué)號(hào)通常是唯一的,而名字,年齡,班級(jí)不是唯一的,可以同名等。而我們存入的第一個(gè)學(xué)生對(duì)象是不存在學(xué)號(hào)重復(fù)的問(wèn)題。所以第一個(gè)學(xué)生對(duì)象則用鍵盤錄入信息傳入 stu 對(duì)象,再將stu對(duì)象添加到我們的list集合中

例如:

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

當(dāng)我們錄入第二個(gè)學(xué)生對(duì)象信息時(shí),此時(shí)list中已存在0索引的stu對(duì)象(內(nèi)存地址001)

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

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

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

此時(shí)如果我們鍵盤錄入的學(xué)號(hào)id與集合中001對(duì)象的學(xué)號(hào)id一致的話則給出提示

即當(dāng)student.getId() == id

該學(xué)號(hào)已存在請(qǐng)重新添加:

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

2、查詢學(xué)生信息功能代碼

    //查詢學(xué)生信息功能
    public void printAllStudent(ArrayList<Student> list) {
        //通過(guò)Main啟動(dòng)類中studentDao.addStudent(list)傳入學(xué)生對(duì)象list集合本身
        // 而ArrayList<Student> list接受
        // list.isEmpty()判斷列表是否包含元素,不包含元素則返回 true,否則返回false
        if (list.isEmpty()) {
            System.out.println("列表中沒(méi)有學(xué)生信息。");
            return;//彈棧退出
        }else {
            System.out.println("學(xué)號(hào)\t姓名\t年齡\t班級(jí)");
            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、刪除學(xué)習(xí)信息功能代碼

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

        }
    }

4、修改學(xué)生信息功能代碼

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


    }

5、StudentDao類完整代碼

package service;

import pojo.Student;

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

public class StudentDao {

    Scanner sc = new Scanner(System.in);
    //查詢學(xué)生信息功能
    public void printAllStudent(ArrayList<Student> list) {
        //通過(guò)Main啟動(dòng)類中studentDao.addStudent(list)傳入學(xué)生對(duì)象list集合本身
        // 而ArrayList<Student> list接受
        // list.isEmpty()判斷列表是否包含元素,不包含元素則返回 true,否則返回false
        if (list.isEmpty()) {
            System.out.println("列表中沒(méi)有學(xué)生信息。");
            return;//彈棧退出
        }else {
            System.out.println("學(xué)號(hào)\t姓名\t年齡\t班級(jí)");
            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());
            }
        }

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

    }

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

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


    }
}

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

1、Main啟動(dòng)類完整代碼

在主頁(yè)面定義 ArrayList<Student>  list 集合來(lái)儲(chǔ)存學(xué)生對(duì)象

import pojo.Student;
import service.StudentDao;

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

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

            }


        }

    }
}

總結(jié) 

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

相關(guān)文章

  • Maven的porfile與SpringBoot的profile結(jié)合使用案例詳解

    Maven的porfile與SpringBoot的profile結(jié)合使用案例詳解

    這篇文章主要介紹了Maven的porfile與SpringBoot的profile結(jié)合使用,通過(guò)maven的profile功能,在打包的時(shí)候,通過(guò)-P指定maven激活某個(gè)pofile,這個(gè)profile里面配置了一個(gè)參數(shù)activatedProperties,不同的profile里面的這個(gè)參數(shù)的值不同,需要的朋友可以參考下吧
    2021-12-12
  • Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法

    Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法

    這篇文章主要介紹了Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法,詳細(xì)分析了基于Hibernate執(zhí)行批量添加操作的具體步驟與相關(guān)實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-03-03
  • 深入解析IntelliJ IDEA類創(chuàng)建失敗的問(wèn)題解析與解決方案

    深入解析IntelliJ IDEA類創(chuàng)建失敗的問(wèn)題解析與解決方案

    在日常Java開發(fā)中,集成開發(fā)環(huán)境(IDE)是我們最親密的伙伴,本文將深入分析一個(gè)常見的IntelliJ IDEA錯(cuò)誤并提供全面的解決方案,感興趣的小伙伴可以了解下
    2025-08-08
  • 解析Spring Mvc Long類型精度丟失問(wèn)題

    解析Spring Mvc Long類型精度丟失問(wèn)題

    在平時(shí)開發(fā)過(guò)程中,經(jīng)常會(huì)使用long類型作為id的類型,但是在使用過(guò)程中會(huì)導(dǎo)致long類型數(shù)據(jù)轉(zhuǎn)換為number類型時(shí)的后兩位變?yōu)?,今天小編給大家分享Spring Mvc Long類型精度丟失問(wèn)題,需要的朋友參考下吧
    2021-06-06
  • springcloud feign傳輸List的坑及解決

    springcloud feign傳輸List的坑及解決

    這篇文章主要介紹了springcloud feign傳輸List的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 如何解決@SpringBootApplication報(bào)錯(cuò)問(wèn)題

    如何解決@SpringBootApplication報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了如何解決@SpringBootApplication報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Maven 安裝目錄的詳細(xì)介紹

    Maven 安裝目錄的詳細(xì)介紹

    這篇文章主要介紹了Maven 安裝目錄的詳細(xì)介紹的相關(guān)資料,這里對(duì)Maven進(jìn)行了解讀,希望通過(guò)本文可以幫助到大家,需要的朋友可以參考下
    2017-08-08
  • SpringBoot+Redis?BitMap實(shí)現(xiàn)簽到與統(tǒng)計(jì)的項(xiàng)目實(shí)踐

    SpringBoot+Redis?BitMap實(shí)現(xiàn)簽到與統(tǒng)計(jì)的項(xiàng)目實(shí)踐

    最近項(xiàng)目里需要集成簽到和統(tǒng)計(jì)功能,連續(xù)簽到后會(huì)給用戶發(fā)放一些優(yōu)惠券和獎(jiǎng)品,以此來(lái)吸引用戶持續(xù)在該品臺(tái)進(jìn)行活躍,本文就詳細(xì)的介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下
    2023-09-09
  • Spring實(shí)現(xiàn)文件上傳(示例代碼)

    Spring實(shí)現(xiàn)文件上傳(示例代碼)

    Spring可以繼承commons-fileupload插件來(lái)實(shí)現(xiàn)文件上傳的功能。分為前端JSP編寫和后臺(tái)Controller的編寫
    2013-10-10
  • springboot接口多實(shí)現(xiàn)類選擇性注入解決方案

    springboot接口多實(shí)現(xiàn)類選擇性注入解決方案

    這篇文章主要為大家介紹了springboot接口多實(shí)現(xiàn)類選擇性注入解決方案的四種方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評(píng)論

五莲县| 澜沧| 江源县| 包头市| 威远县| 郴州市| 喀喇| 手游| 公主岭市| 舒兰市| 专栏| 贵定县| 剑川县| 日土县| 盘锦市| 吉安县| 普宁市| 晴隆县| 嵩明县| 贵南县| 新营市| 江阴市| 铜陵市| 芮城县| 长阳| 洛浦县| 辰溪县| 柘城县| 宜兴市| 和平区| 精河县| 海原县| 定安县| 宜兴市| 台北县| 莱芜市| 民乐县| 宜章县| 吐鲁番市| 新沂市| 宝丰县|