当前位置: 首页 > news >正文

java课程设计GUI学生信息管理系统

目录

系统内容.. 3

用户界面模块... 4

数据存储模块... 4

信息管理模块... 4

管理模块.. 4

主要模块的算法描述... 4

–简要的语言描述... 4

运行及调试分析(测试数据及测试结果).. 5

课程设计总结... 7

参考文献(至少三个).. 8

附录  程序的源代码清单... 8

Bei.java 界面背景设置... 8

Mune.java 主菜单页面为各程序入口... 9

Search.java 实现搜索功能... 15

Student.java 实现学生数据类型和文件读写... 21

StudentChane.java 实现改变学生信息功能... 26

StudentDele.java 实现删除功能... 30

StudentForm.java  实现添加学生功能.. 37

StudentViewer.java 实现查看所有学生信息... 42

Test.java 实现测试各种功能.. 46

系统内容

题目五:学生信息管理系统设计

学生信息包括:学号,姓名,年龄,性别 等。试设计学生信息管理系统,使之能提供以下功能:

1、系统以菜单方式工作

2、学生信息录入功能--输入

3、学生信息浏览功能--输出

4、学生信息查询功能--算法

按学号查询

按姓名查询

5、学生信息的删除与修改(可选项)

模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)

 用户界面模块

  • 功能:负责与用户交互,展示菜单选项,接收用户输入等。
  • 入口参数:无
  • 出口参数:根据用户的选择,返回相应的结果或触发相应的功能。
  • 函数调用关系:根据用户输入调用相应的功能模块。

 数据存储模块

  • 功能:负责存储学生信息。
  • 入口参数:学生信息。
  • 出口参数:无
  • 函数调用关系:被其他模块调用以存储或检索数据。

 信息管理模块

  • 功能:提供信息的录入、浏览和查询功能。
  • 入口参数:信息、查询条件(学分/课程性质)。
  • 出口参数:课程信息列表或查询结果。
  • 函数调用关系:被用户界面模块调用,根据用户选择执行相应的功能。

 管理模块

  • 功能:提供学生查询功能。
  • 入口参数:学生信息、ID。
  • 出口参数:查询结果(成功/失败)。
  • 函数调用关系:被用户界面模块调用,根据用户选择执行相应的功能

主要模块的算法描述

–简要的语言描述

信息管理模块

录入信息

初始化数据存储模块中的课程信息表。

提示用户输入信息。

接收用户输入的信息。

将信息存储到数据存储模块中的信息表中。

浏览信息

从数据存储模块中的信息表中选择所有信息。

按照一定的格式(如表格)展示信息给用户。

查询信息

提示用户输入查询条件(学分/课程性质)。

根据查询条件从数据存储模块中的课程信息表中选择相应的课程信息。

将查询结果展示给用户。

学生管理模块

学生

提示用户输入学生姓名和ID。

检查输入的学生姓名和ID是否有效。

将学生姓名、学号存储到数据存储模块中。

提示用户成功或失败。

运行及调试分析(测试数据及测试结果)

 

 

 

课程设计总结

本次课程设计的主要目标是设计一个学生选修课程系统,以满足学生、教师和管理员等不同用户的需求。通过本次设计,我深入了解了系统设计和开发的整个过程,从需求分析、设计、实现到测试和部署,每个步骤都让我学到了很多知识。

在设计过程中,我遇到了一些困难和挑战。例如,在设计数据结构时,需要考虑如何合理地存储课程信息和学生选课信息,以及如何设计查询条件以满足按学分查询和按课程性质查询的需求。此外,我还需要考虑如何实现用户界面的友好性和易用性,以及如何保证系统的安全性和稳定性。

在未来的学习和工作中,我将继续应用所学的知识和技能,不断提高自己的能力。同时,我也将不断探索新的技术和方法,以更好地满足用户的需求和提高系统的性能。

《面向对语言程序设计》

《算法导论》是2013年机械工业出版社出版的图书,作者是(美)科曼(Cormen,T.H.)

《软件工程》是2013年机械工业出版社出版的图书 作    者 lan Sommervillez

附录  程序的源代码清单 

Bei.java 界面背景设置

package guiks;

import javax.swing.*;

import java.awt.*;

public class bei extends JPanel {

    private Image backIcon;

    public bei(Image backIcon){

        this.backIcon=backIcon;

    }

    public void paintComponent(Graphics g){

        super.paintComponent(g);

        //绘制背景

        g.drawImage(backIcon,0,0,this.getWidth(),this.getHeight(),null);

    }

}

   

Mune.java 主菜单页面为各程序入口

package guiks;

import javax.imageio.ImageIO;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.lang.reflect.Array;

import java.util.ArrayList;

public class Menu extends JFrame {

    public Menu() throws IOException {

        initializeUI();

        // 假设 students 是从文件或数据库中获取的现有学生信息数组

    }

    private void initializeUI() throws IOException {

        setTitle("学生信息管理");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setSize(700, 500);

        setLocationRelativeTo(null);

        BufferedImage img = ImageIO.read(new File("C:\\Users\\HP\\Desktop\\workcodej\\R.jpg"));

        bei panel = new bei(img);

        // 设置窗口图标

        this.setIconImage(img);

        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        // 添加学生信息按钮

        JButton addBtn = new JButton("添加学生信息");

        addBtn.addActionListener(e -> new StudentForm());

        // 搜索学生信息按钮

        JButton searchBtn = new JButton("搜索学生信息");

        searchBtn.addActionListener(e -> new Search());

        // 查看所有学生信息按钮

        JButton viewAllBtn = new JButton("查看学生信息");

        ArrayList<Student> students = Student.readArrayListFromFile("students.txt");

        viewAllBtn.addActionListener(e -> new StudentViewer(students));

        // 修改学生信息按钮

        JButton modifyBtn = new JButton("修改学生信息");

        modifyBtn.addActionListener(e -> new StudentChange());

        // 删除学生信息按钮

        JButton deleteBtn = new JButton("删除学生信息");

        deleteBtn.addActionListener(e -> new StudentDelete());

        // 设置按钮的字体样式

        Font font = new Font("微软雅黑", Font.PLAIN, 18);

        addBtn.setFont(font);

        searchBtn.setFont(font);

        viewAllBtn.setFont(font);

        modifyBtn.setFont(font);

        deleteBtn.setFont(font);

        // 设置按钮的边距

        addBtn.setMargin(new Insets(10, 10, 10, 10));

        searchBtn.setMargin(new Insets(10, 10, 10, 10));

        viewAllBtn.setMargin(new Insets(10, 10, 10, 10));

        modifyBtn.setMargin(new Insets(10, 10, 10, 10));

        deleteBtn.setMargin(new Insets(10, 10, 10, 10));

        // 添加按钮到面板上

        panel.add(Box.createHorizontalStrut(200)); // 添加20像素宽的水平空白

        panel.add(addBtn);

        panel.add(Box.createRigidArea(new Dimension(0, 10))); // 再次创建一个垂直方向上固定高度为10像素的间距

        panel.add(searchBtn);

        panel.add(Box.createRigidArea(new Dimension(0, 10))); // 再次创建一个垂直方向上固定高度为10像素的间距

        panel.add(viewAllBtn);

        panel.add(Box.createRigidArea(new Dimension(0, 10))); // 再次创建一个垂直方向上固定高度为10像素的间距

        panel.add(modifyBtn);

        panel.add(Box.createRigidArea(new Dimension(0, 10))); // 再次创建一个垂直方向上固定高度为10像素的间距

        panel.add(deleteBtn);

        panel.add(Box.createRigidArea(new Dimension(0, 150))); // 再次创建一个垂直方向上固定高度为10像素的间距

        this.add(panel);

        this.setVisible(true);

    }

    public static void main(String[] args) throws IOException {

        // 用进程launch方法启动菜单窗口创建菜单窗口

        Menu menu = new Menu();

       

           

    }

}

Search.java 实现搜索功能

package guiks;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.io.Serializable;

import java.lang.reflect.Array;

import java.util.ArrayList;

import java.util.List;

public class Search extends JFrame {

    private JTextField searchField;

    private JTextArea resultArea;

    private ArrayList<Student> students; // 使用List来动态管理学生数据

    public Search() {

        initializeUI();

        loadStudents();

    }

    private void initializeUI() {

        setTitle("学生搜索");

        setSize(400, 300);

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        setLocationRelativeTo(null);

        JPanel panel = new JPanel(new BorderLayout(10, 10));

        searchField = new JTextField(20);

        JButton searchButton = new JButton("搜索");

        // 使用lambda表达式简化事件监听器

        searchButton.addActionListener((ActionEvent e) -> {

            String keyword = searchField.getText();

            ArrayList<Student> searchResult = searchStudents(keyword);

            displaySearchResult(searchResult);

        });

        resultArea = new JTextArea(10, 30);

        resultArea.setEditable(false);

        JScrollPane scrollPane = new JScrollPane(resultArea);

        panel.add(new JLabel("输入学生姓名:"), BorderLayout.NORTH);

        panel.add(searchField, BorderLayout.CENTER);

        panel.add(searchButton, BorderLayout.SOUTH);

        panel.add(scrollPane, BorderLayout.EAST);

        add(panel);

        setVisible(true);

    }

    private void loadStudents() {

        students = new ArrayList<>();

        try {

            ArrayList<Student> loadedStudents = Student.readArrayListFromFile("students.txt");

            if (loadedStudents != null) {

                for (Student student : loadedStudents) {

                    students.add(student);

                }

            }

        } catch (Exception e) {

            // 记录异常堆栈,有助于调试

            e.printStackTrace();

            JOptionPane.showMessageDialog(this, "加载学生信息时出错: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);

        }

    }

    private ArrayList<Student> searchStudents(String keyword) {

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

        for (Student student : students) {

            if (student.getName() != null && student.getName().contains(keyword)) {

                result.add(student);

            }

        }

        return result;

    }

    private void displaySearchResult(List<Student> result) {

        resultArea.setText(""); // 清空结果区域

        if (!result.isEmpty()) {

            for (Student student : result) {

                resultArea.append("ID: " + student.getId() + ", 姓名: " + student.getName() + ", 年龄: " + student.getAge() + "\n");

            }

        } else {

            resultArea.setText("未找到匹配的学生信息。");

        }

    }

    public static void main(String[] args) {

        // 使用SwingUtilities.invokeLater确保GUI创建和更新在事件调度线程上执行

        SwingUtilities.invokeLater(() -> new Search());

    }

}

Student.java 实现学生数据类型和文件读写

package guiks;

import java.io.*;

import java.util.ArrayList;

public class Student implements Serializable {

    private String name;

    private int age;

    private String id;

    // 构造函数

    public Student(String name, int age, String id) {

        this.name = name;

        this.age = age;

        this.id = id;

    }

    public Student() {

        // 空构造函数

    }

    // Getters Setters

    // ...

    String getName() {

        return name;

    }

    int getAge(){

        return age;

    }

    void setName(String name) {

        this.name = name;

    }

 

    void setAge(int age) {

        this.age = age;

    }

    String getId() {

        return id;

    }

    void setId(String id) {

        this.id = id;

    }

    public String toString() {

        return   name + " " + age + " " + id;

    }

    public static void writeArrayListToFile(ArrayList<Student> students, String fileName) {

        try (BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(fileName, false));

             ObjectOutputStream out = new ObjectOutputStream(bout)) {

          // 写入对象Student数组

            for (Student student : students) {

                out.writeObject(student);

            }

            System.out.println("学生对象数组已成功写入文件:" + fileName);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    public static void writeObjectToFile(Student students, String fileName) {

        try (BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(fileName, true));

             ObjectOutputStream out = new ObjectOutputStream(bout)) {

            out.writeObject(students);

            System.out.println("学生对象已成功写入文件:" + fileName);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    // 从文件中读取学生对象数组,使用缓冲流提高效率

    public static ArrayList<Student> readArrayListFromFile(String fileName) {

        try (BufferedInputStream bin = new BufferedInputStream(new FileInputStream(fileName));

             ObjectInputStream in = new ObjectInputStream(bin)) {

             // 读取对象数组一行一行的读取,直到没有更多对象可读

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

            while (true) {

                try {

                    Student student = (Student) in.readObject();

                    students.add(student);

                } catch (EOFException e) {

                    break;

                }

            }

            System.out.println("学生对象数组已成功从文件:" + fileName + " 读取");

            return students;} catch (Exception e) {

            e.printStackTrace();

            return null;   }  // 读取失败返回 null  

    }

 

}

StudentChane.java 实现改变学生信息功能

package guiks;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.lang.reflect.Array;

import java.util.ArrayList;

public class StudentChange extends JFrame {

    private JTextField idField;

    private JTextField ageField;

    private JTextField nameField;

    private JButton addButton;

    public StudentChange() {

        initializeUI();

    }

    private void initializeUI() {

        // 创建文本字段和按钮

        idField = new JTextField(10);

        ageField = new JTextField(10);

        nameField = new JTextField(20);

        addButton = new JButton("改变学生信息");

        // 为按钮添加事件监听器

        addButton.addActionListener(new AddButtonListener());

        // 创建界面布局

        JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 10));

        panel.setBorder(BorderFactory.createTitledBorder("学生信息"));

        panel.add(new JLabel("ID:"));

        panel.add(idField);

        panel.add(new JLabel("Age:"));

        panel.add(ageField);

        panel.add(new JLabel("Name:"));

        panel.add(nameField);

        panel.add(addButton);

        // 添加面板到窗体

        add(panel);

        // 设置窗体属性

        setTitle("输入学生信息");

        setSize(700, 500); // 修改了大小以更好地展示组件

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        setVisible(true);

    }

    private class AddButtonListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            try {

                String id = idField.getText();

                int age = Integer.parseInt(ageField.getText());

                String name = nameField.getText();

                // 创建学生对象

                Student newStudent = new Student(name, age, id);

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

                newStudentArray.add(newStudent);

                // 将新学生对象写入文件

                Student.writeArrayListToFile(newStudentArray, "students.txt");

                // 清空文本字段以便输入新数据

                idField.setText("");

                ageField.setText("");

                nameField.setText("");

            } catch (NumberFormatException nfe) {

                JOptionPane.showMessageDialog(StudentChange.this, "年龄必须是数字", "输入错误", JOptionPane.ERROR_MESSAGE);

            }

        }

    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> new StudentChange());

    }

}

StudentDele.java 实现删除功能

package guiks;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.Serializable;

import java.lang.reflect.Array;

import java.util.ArrayList;

public class StudentDelete extends JFrame {

    private JTextField idField;

    private JButton deleteButton;

    public StudentDelete() {

        initializeUI();

    }

    private void initializeUI() {

        // 设置窗体属性

        setTitle("删除学生信息");

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        setSize(300, 150);

        setLocationRelativeTo(null); // 居中显示

        // 创建文本字段和按钮

        idField = new JTextField(10);

        deleteButton = new JButton("删除学生");

        // 创建界面布局

        JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));

        panel.setBorder(BorderFactory.createTitledBorder("学生ID"));

        panel.add(new JLabel("ID:"));

        panel.add(idField);

        panel.add(deleteButton);

        // 为按钮添加事件监听器

        deleteButton.addActionListener(new DeleteButtonListener());

        // 添加面板到窗体

        add(panel);

        // 使窗体可见

        setVisible(true);

    }

    private class DeleteButtonListener implements ActionListener {

        @Override

        public void actionPerformed(ActionEvent e) {

            try {

                String studentId = idField.getText();

                if (studentId.isEmpty()) {

                    JOptionPane.showMessageDialog(StudentDelete.this, "请输入学生ID", "输入错误", JOptionPane.ERROR_MESSAGE);

                    return;

                }

   

                ArrayList<Student> allStudents = Student.readArrayListFromFile("students.txt");

                if (allStudents == null) {

                    JOptionPane.showMessageDialog(StudentDelete.this, "无法读取学生信息", "错误", JOptionPane.ERROR_MESSAGE);

                    return;

                }

   

                Student studentToDelete = null;

                for (Student student : allStudents) {

                    if (student.getId().equals(studentId)) {

                        studentToDelete = student;

                        break;

                    }

                }

   

                if (studentToDelete == null) {

                    JOptionPane.showMessageDialog(StudentDelete.this, "未找到ID " + studentId + " 的学生信息,无法删除。", "删除失败", JOptionPane.ERROR_MESSAGE);

                } else {

                    // 从数组中移除该学生信息

                    ArrayList<Student> updatedStudents = new ArrayList<Student>(allStudents.size() - 1);

                    for (Student student : allStudents) {

                        if (!student.getId().equals(studentId)) {

                            updatedStudents.add(student);

                            System.out.println(student.getId());

                        }

                    }

   

                    // 写入更新后的学生信息数组到文件

                    Student.writeArrayListToFile(updatedStudents, "students.txt");

                    JOptionPane.showMessageDialog(StudentDelete.this, "学生信息删除成功!", "操作成功", JOptionPane.INFORMATION_MESSAGE);

                }

   

                resetFields(); // 清空文本字段

   

            } catch (Exception ex) {

                JOptionPane.showMessageDialog(StudentDelete.this, "删除操作时发生错误: " + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);

            }

        }

        private void resetFields() {

            idField.setText("");

            throw new UnsupportedOperationException("Unimplemented method 'resetFields'");

        }

    }

    public static void main(String[] args) {

       

        SwingUtilities.invokeLater(StudentDelete::new);

    }

}

StudentForm.java  实现添加学生功能

package guiks;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

public class StudentForm extends JFrame {

    private JTextField idField;

    private JTextField ageField;

    private JTextField nameField;

    private JButton addButton;

    public StudentForm() {

        initializeUI();

    }

    private void initializeUI() {

        // 设置窗体属性

        setTitle("添加学生信息");

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        setSize(700, 500);

        setLocationRelativeTo(null); // 居中显示

        // 创建文本字段和按钮

        idField = new JTextField(10);

        ageField = new JTextField(10);

        nameField = new JTextField(20);

        addButton = new JButton("添加学生");

        // 创建界面布局

        // 创建一个新的 JPanel 对象,采用左对齐的流式布局,并指定水平间距为 10,垂直间距为 10

        JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 15));

        // 为面板设置标题边框,标题为"学生信息"

        panel.setBorder(BorderFactory.createTitledBorder("学生信息"));

        /**

         * 在面板中添加显示"ID:"文本的标签组件

         */

        panel.add(new JLabel("ID:"));

        panel.add(idField);

        panel.add(new JLabel("年龄:"));

        panel.add(ageField);

        panel.add(new JLabel("姓名:"));

        panel.add(nameField);

        panel.add(addButton);

        // 为按钮添加事件监听器

        addButton.addActionListener(new AddButtonListener());

        // 添加面板到窗体

        add(panel);

        // 使窗体可见

        setVisible(true);

    }

    private class AddButtonListener implements ActionListener {

        @Override

        public void actionPerformed(ActionEvent e) {

            try {

                String id = idField.getText();

                int age = Integer.parseInt(ageField.getText());

                String name = nameField.getText();

                // 创建学生对象

                Student student = new Student(id, age, name);

                // 将学生对象添加到数组中

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

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

                t = Student.readArrayListFromFile("students.txt");

                students.addAll(t);

                students.add(student);

                Student.writeArrayListToFile(students,"students.txt");

               

               

                // 清空文本字段以便输入新数据

                idField.setText("");

                ageField.setText("");

                nameField.setText("");

                JOptionPane.showMessageDialog(StudentForm.this, "学生信息添加成功!", "操作成功", JOptionPane.INFORMATION_MESSAGE);

            } catch (NumberFormatException nfe) {

                JOptionPane.showMessageDialog(StudentForm.this, "请输入有效的年龄数字", "输入错误", JOptionPane.ERROR_MESSAGE);

            }

        }

    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> new StudentForm());

    }

}

StudentViewer.java 实现查看所有学生信息

package guiks;

import javax.swing.*;

import java.awt.*;

import java.io.Serializable;

import java.lang.reflect.Array;

import java.util.ArrayList;

public class StudentViewer extends JFrame {

    private JTextArea studentTextArea;

    public StudentViewer(ArrayList<Student> students) {

        this.students = students;

        initializeUI();

    }

    private void initializeUI() {

        // 设置窗体属性

        setTitle("查看学生信息");

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置关闭方式

        setSize(600, 400);

        setLocationRelativeTo(null); // 居中显示

        // 创建文本区域,用于显示学生信息

        studentTextArea = new JTextArea(15, 50);

        studentTextArea.setEditable(false); // 设置文本区域不可编辑

        studentTextArea.setLineWrap(true); // 设置自动换行

        studentTextArea.setWrapStyleWord(true); // 设置单词换行

        // 添加滚动条

        JScrollPane scrollPane = new JScrollPane(studentTextArea);

        // 添加显示所有学生信息的按钮

        JButton viewButton = new JButton("查看全部学生信息");

        viewButton.addActionListener(e -> displayAllStudents());

        // 创建界面布局

        JPanel panel = new JPanel(new BorderLayout(10, 10));

        panel.add(viewButton, BorderLayout.NORTH);

        panel.add(scrollPane, BorderLayout.CENTER);

        // 添加面板到窗体

        add(panel);

        // 使窗体可见

        setVisible(true);

    }

    private void displayAllStudents() {

        studentTextArea.setText(""); // 清空文本区域

        for (Student student : students) {

            studentTextArea.append("ID: " + student.getId() + ", 姓名: " + student.getName() + ", 年龄: " + student.getAge() + "\n");

        }

    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> {

            try {

                ArrayList<Student> students = Student.readArrayListFromFile("students.txt");

                if (students == null) {

                    students = new ArrayList<>(); // 如果没有读取到学生信息,初始化为空数组

                }

                new StudentViewer(students);

            } catch (Exception e) {

                JOptionPane.showMessageDialog(null, "加载学生信息时出错: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);

            }

        });

    }

    public ArrayList<Student> students;

}

Test.java 实现测试各种功能

package guiks;

import java.util.ArrayList;

public class test {

    public static void main(String[] args) {

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

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

        Student s1 = new Student("John", 20,"001");

        Student s2 = new Student("Mary", 21,"002");

        list.add(s1);

        list.add(s2);

        Student.writeArrayListToFile(list, "students.txt");

        list2 = Student.readArrayListFromFile("students.txt");

        //打印list2

        for(Student s : list2){

            System.out.println(s.getName() + " " + s.getAge() + " " + s.getId());

        }

    }

}

相关文章:

  • 爬虫阶段思考
  • 【Rust】——所有可能会用到模式的位置
  • Spring Cloud学习:如何实现Gateway 服务网关限流
  • ESP32 esp-idf esp-adf环境安装及.a库创建与编译
  • OpenCV颜色检测
  • 网络编程(六)TCP并发服务器
  • B3996 [洛谷 202406GESP 模拟 三级] 小洛的数字游戏
  • SpringMVC:拦截Mybatis的mapper
  • 如何设计高可用的淘客返利系统
  • Synchronized、volatile与ReentrantLock:比较这些同步机制在Java并发编程中的应用和区别
  • Spring响应式编程之Reactor操作符
  • Kubernetes 托管与非托管有哪些区别?应该怎么选型?
  • LeetCode:503. 下一个更大元素 II(Java 单调栈)
  • 如何在Web开发中创建、删除和修改按钮:实用指南
  • 华为仓颉语言:编程语言的新篇章
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Angular6错误 Service: No provider for Renderer2
  • Electron入门介绍
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • input实现文字超出省略号功能
  • JS+CSS实现数字滚动
  • MD5加密原理解析及OC版原理实现
  • oschina
  • Puppeteer:浏览器控制器
  • Redash本地开发环境搭建
  • 百度地图API标注+时间轴组件
  • 简单数学运算程序(不定期更新)
  • 爬虫模拟登陆 SegmentFault
  • 前端
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何设计一个比特币钱包服务
  • 智能网联汽车信息安全
  • 中文输入法与React文本输入框的问题与解决方案
  • Spring第一个helloWorld
  • #在 README.md 中生成项目目录结构
  • (1)Jupyter Notebook 下载及安装
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (算法二)滑动窗口
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .jks文件(JAVA KeyStore)
  • .net Application的目录
  • .net core使用ef 6
  • .NET Remoting学习笔记(三)信道
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NetCore部署微服务(二)
  • .net对接阿里云CSB服务
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [Android]使用Retrofit进行网络请求