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());

        }

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/735386.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于CSDN的Markdown文本编辑器的博客界面优化 | HTML | 文本标签 | 图像标签 | 个人主页引导

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 今天毛毛张分享的内容是如何在CSDN的Markdown编辑器中实现上图的效果&#xff0c;如果觉得能帮助到你的话就点击个人主页点点关注吧❗ 文章目录 1.前言2.基础知识3.字…

Sword and Shield Animations(劈砍防御剑盾带动画动作)

这是一个动画资产包,为剑和盾牌用户提供手工制作的成对动画和空闲。包括8向步行和跑步动画、攻击、跳跃、冲刺、向下状态移动和过渡、躲避、阻挡、蹒跚、各种配对终结者动画等。 一切你需要把剑和盾牌战士带到生活中。 动画总数:115 攻击19 区块5 关闭状态14 Evade 5 怠速9 跳…

Sequelize入门及简单的增删改查

前言 学习一下NodeJS怎么使用Sequelize怎么查询数据库数据 一、Sequelize是什么&#xff1f; Sequelize 是一个基于 promise 的 Node.js ORM, 二、搭建项目 1.安装过程 npm i -g sequelize-cli //全局安装sequelize-clinpm i sequelize mysql2 //安装sequelize和mysql2…

AI视频教程下载-与ChatGPT结合的UX用户体验/UI用户界面设计策略

Revolutionize UX_UI_ AI-Design Strategies with ChatGPT 提升你的设计工具包&#xff1a;使用ChatGPT、Figma和Miro的AI驱动UX/UI策略 50个创新UX提示 了解人工智能的基础知识。介绍ChatGPT及其底层技术。区分不同AI模型及其在设计中的应用。将AI工具融入设计工作流程的策略…

【Java基础】

Java基础常见面试题总结(上) 基础概念与常识 Java 语言有哪些特点? 简单易学&#xff08;语法简单&#xff0c;上手容易&#xff09;&#xff1b;面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff1b;平台无关性&#xff08; Java 虚拟机实现…

JAVA期末复习2

目录 一、Java基础知识 1. 下面几个标识符中&#xff0c;哪些是命名正确的 (A) 2. 分析以下代码&#xff0c;哪些是合法的 (C) 3. 以下代码的执行结果是&#xff08; B &#xff09; 4. 下面哪个不是java中的关键字&#xff1f;&#xff08; B &#xff09; 5. 下面对数组…

Javase.图书管理系统基本框架

图书管理系统基本框架 1.核心类介绍2. book包详解2.1 Book 类2.1.2 代码展示2.1.2 代码解析 2.2 BookList 类2.2.2 代码展示2.2.2 代码解析 2.3Book类和BookList类的联系 3. 用户角色与管理3.1 User 类3.1.1 代码展示3.1.2 代码解析 3.2 adminUser 类3.2.1 代码展示3.2.2代码解…

Spring-bean

Spring 网站&#xff1a;spring.io 两个方面&#xff1a; 简化开发&#xff1a; IoCAOP 框架整合&#xff1a; MyBatis SpringFrameWork系统架构&#xff08;上层依赖下层&#xff09; 解决问题&#xff08;代码耦合度高——模块与模块之间的依赖程度&#xff09; 目标&am…

SARscape——中值滤波

目录 一、算法原理1、概述2、参考文献 二、软件操作三、结果展示1、原始图像2、滤波结果 一、算法原理 1、概述 中值滤波是把局部区域中的中间亮度值作为区域中心点像元的输出值。当取定的局部区域为&#xff13;&#xff58;&#xff13;的正方形时&#xff0c;区域共有&…

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇WinRS命令WinRM管理RDP终端密码喷射点CrackMapExec

红队内网攻防渗透 1. 内网横向移动1.1 内网横向移动方法分类1.2 WinRM&WinRS1.2.1 利用条件1.2.1.1 探针可用1.2.1.2 连接执行1.2.1.3 CS上线利用1.2.1.3.1 反向连接上线1.2.1.4 CS内置模块1.2.1.5 其他解决1.3 RDP1.3.1 探针连接1.3.2 连接执行1.3 CrackMapExec-密码喷射1…

MyBatis Plus Generator代码生成

一、MyBatis Plus Generator MyBatis Plus是一个功能强大的持久层框架&#xff0c;它简化了MyBatis的使用&#xff0c;提供了许多便捷的功能。其中&#xff0c;MyBatis Plus Generator是一个强大的代码生成器&#xff0c;可以帮助我们快速地根据数据库表结构生成对应的实体类、…

DVWA 靶场 SQL Injection (Blind) 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

微型操作系统内核源码详解系列五(五):cm3下Pendsv切换任务上篇

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…

C++初学者指南第一步---8.类型系统(基础)

C初学者指南第一步—8.类型系统&#xff08;基础&#xff09; 文章目录 C初学者指南第一步---8.类型系统&#xff08;基础&#xff09;1.用const声明常量2.类型别名3.类型推导 auto4.常量表达式&#xff1a;constexpr (C11) 1.用const声明常量 语法&#xff1a; Type const v…

君子小人的格局、境界

子曰&#xff1a;君子怀德&#xff0c;小人怀土&#xff1b;君子怀刑&#xff0c;小人怀惠。 直译&#xff1a;君子怀念道德&#xff0c;小人怀念乡土&#xff1b;君子关心法度&#xff0c;小人关心恩惠。 这里的君子与小人只是体现格局、境界的不同&#xff1b; 君子怀的是德…

Windows环境利用 OpenCV 中 CascadeClassifier 分类器识别人眼 c++

Windows环境中配置OpenCV 关于在Windows环境中配置opencv的说明&#xff0c;具体可以参考&#xff1a;VS2022 配置OpenCV开发环境详细教程。 CascadeClassifier 分类器 CascadeClassifier 是 OpenCV 库中的一个类&#xff0c;它用于实现一种快速的物体检测算法&#xff0c;称…

一些3D数据集的简单介绍

一、Objaverse 1.0 Objaverse 1.0: a large dataset of objects with 800K (and growing) 3D models with descriptive captions, tags and animations. Assets not only belong to varied categories like animals, humans, and vehicles, but also include interiors and ex…

【课程总结】Day10:卷积网络的基本组件

前言 由于接下来的课程内容将围绕计算机视觉展开&#xff0c;其中接触最多的内容是卷积、卷积神经网络等…因此&#xff0c;本篇内容将从卷积入手&#xff0c;梳理理解&#xff1a;卷积的意义、卷积在图像处理中的作用以及卷积神经网络的概念&#xff0c;最后利用pytorch搭建一…

Vue76-路由对浏览器历史记录的影响

一、push模式 默认是push 二、replace模式 替换当前记录&#xff01; &#xff08;当前指针指向的那一条记录&#xff09; 三、小结