Java實現學生信息管理系統超詳細教程
前言:
該系統使用Java中的基礎技術,其中采用技術:ArrayList集合儲存學生對象信息,實現了很簡單學生信息管理系統,其中有通過控制臺的鍵盤錄入實現了添加學生信息功能,刪除學生信息功能,修改學生信息功能,查看學生信息功能。都有完整代碼,也有注釋。
注:該系統博主按照自己的思路寫的,想到什么寫什么,邏輯可能存在問題或者不完美等,還請見諒,其中詳細介紹了添加學生功能的代碼邏輯以及存儲是的內存圖等,其他功能感覺用到的技術感覺和添加功能的差不多就不做多介紹了。
一、主頁面展示

二、項目結構

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

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

pojo層用于封裝一些實體類,其中我們封裝Student類
service層我們用于封裝業(yè)務邏輯代碼(增刪改查)
Main啟動類我們用于實現主界面
三、封裝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類封裝實現方法
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、刪除學習信息功能代碼
//根據學生學號刪除學生信息功能
public void delStudent(ArrayList<Student> list, int id) {
//通過遍歷集合得到各個對象的id值
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
//若某對象的id值與傳入id值相匹配,從而根據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值相匹配,從而根據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;
}
}
}
}
}
//根據學生學號刪除學生信息功能
public void delStudent(ArrayList<Student> list, int id) {
//通過遍歷集合得到各個對象的id值
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
//若某對象的id值與傳入id值相匹配,從而根據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值相匹配,從而根據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啟動類編寫系統的主頁面
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();
//定義學生對象的一個數組
ArrayList<Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
lo:
//通過while循環(huán)無限進入我們的系統,直到選5退出結束
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 退出");
System.out.println("請輸入你的選擇:");
//通過switch-case語句實現我們要選擇的功能
int choice = sc.nextInt();
switch (choice) {
//通過調用studentDao實例化對象中的方法實現(增刪改查)
case 1:
/*向方法中傳入定義的集合本身list
以便我們在實現方法時更好調用和處理集合中的每一個學生對象*/
studentDao.addStudent(list);
break;
case 2:
System.out.print("請輸入你要刪除的學生學號:");
int id = sc.nextInt();
//向delStudent()函數傳入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實現學生信息管理系統的文章就介紹到這了,更多相關Java學生信息管理系統內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Maven的porfile與SpringBoot的profile結合使用案例詳解
這篇文章主要介紹了Maven的porfile與SpringBoot的profile結合使用,通過maven的profile功能,在打包的時候,通過-P指定maven激活某個pofile,這個profile里面配置了一個參數activatedProperties,不同的profile里面的這個參數的值不同,需要的朋友可以參考下吧2021-12-12
深入解析IntelliJ IDEA類創(chuàng)建失敗的問題解析與解決方案
在日常Java開發(fā)中,集成開發(fā)環(huán)境(IDE)是我們最親密的伙伴,本文將深入分析一個常見的IntelliJ IDEA錯誤并提供全面的解決方案,感興趣的小伙伴可以了解下2025-08-08
如何解決@SpringBootApplication報錯問題
這篇文章主要介紹了如何解決@SpringBootApplication報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot+Redis?BitMap實現簽到與統計的項目實踐
最近項目里需要集成簽到和統計功能,連續(xù)簽到后會給用戶發(fā)放一些優(yōu)惠券和獎品,以此來吸引用戶持續(xù)在該品臺進行活躍,本文就詳細的介紹一下如何實現,感興趣的可以了解一下2023-09-09

