使用JDBC和Java GUI实现纯代码设计学生成绩管理系统(包含代码)_学生成绩管理系统jdbc-程序员宅基地

技术标签: java  mysql  安农21jdbc  intellij-idea  数据库  开发语言  

前言

基于mysql 和 IntelliJ设计
使用JAR包:mysql-connector-j-8.0.32.jar

一、设计内容

使用JDBC和Java GUI实现学生信息管理系统

二、设计要求

1.用户登录:实现一个登录功能,要求用户输入用户名和密码进行验证,并提供合适的反馈信息。

2.学生信息管理:实现对学生信息的增加、修改、删除和查询功能。包括学生的姓名、学号、年龄、性别等信息。

3.数据库连接与操作:使用JDBC连接数据库,并实现对数据库的增、删、改、查等操作。

4.错误处理与异常处理:对用户输入的错误进行适当的处理,并进行异常处理,保证程序的稳定性和安全性。

三、设计功能描述

1.用户登录功能:

用户输入用户名和密码进行验证。
在这里插入图片描述
验证成功后,跳转到学生信息管理界面。
提供合适的反馈信息,例如登录成功或登录失败的提示。
在这里插入图片描述

2.学生信息管理功能:

增加学生信息:用户可以输入学生的姓名、学号、年龄、系别等信息,并将其添加到学生信息表中。
修改学生信息:用户可以选择要修改的学生,并可以更新学生的姓名、学号、年龄、系别等信息。
删除学生信息:用户可以选择要删除的学生,并从学生信息表中删除该学生的记录。
查询学生信息:用户可以根据学号或姓名等条件查询学生信息,并显示符合条件的学生记录。
成绩录入与查询功能:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.数据库连接与操作功能:

使用JDBC连接数据库:连接到MySQL数据库,以便进行数据库操作。
实现数据库的增、删、改、查等操作:通过JDBC执行SQL语句,实现对学生信息表和成绩表的增、删、改、查等操作。
错误处理与异常处理功能:

4.对用户输入的错误进行适当的处理:例如,验证用户输入的用户名和密码是否符合要求。
进行异常处理:捕获和处理可能发生的异常,以保证程序的稳定性和安全性。

四、设计模块关系图(流程图或者UML类图)

在这里插入图片描述

五、JDBC主要流程描述

1.JDBC(Java Database Connectivity)是Java语言与数据库之间进行连接和交互的标准API。以下是JDBC的主要流程描述:

2.加载数据库驱动程序:在使用JDBC之前,需要先加载特定数据库的驱动程序。通过使用Class.forName()方法加载数据库驱动程序的类。

3.建立数据库连接:使用DriverManager.getConnection()方法建立与数据库的连接。需要提供数据库的URL、用户名和密码等连接信息。

4.创建Statement或PreparedStatement对象:使用连接对象的createStatement()方法或prepareStatement()方法创建执行SQL语句的Statement或PreparedStatement对象。

5.执行SQL语句:通过调用Statement或PreparedStatement对象的executeQuery()方法(用于执行查询语句)或executeUpdate()方法(用于执行更新、插入或删除语句)来执行SQL语句。

6.处理结果集:如果执行的是查询语句,会返回一个ResultSet对象,可以通过该对象获取查询结果。

7.关闭数据库资源:在使用完数据库连接、Statement对象和ResultSet对象后,需要调用相应的close()方法关闭数据库资源,释放资源和关闭连接。

六、Java GUI界面设计

1.主要使用了Swing库来创建用户界面。以下是涉及到的Java GUI界面设计的要点:

2.使用容器:在界面设计中,使用了JFrame和JPanel等容器来承载其他组件,例如登录界面和学生信息管理界面。

3.使用布局器:为了实现界面的美观和灵活性,使用了不同的布局器来控制组件的位置和大小。常用的布局器包括绝对布局(AbsoluteLayout)、流式布局(FlowLayout)、网格布局(GridLayout)和网格包布局(GridBagLayout)等。

4.使用主要组件:在界面中使用了不同的主要组件,例如菜单栏(JMenuBar)、导航栏(JToolBar)和表格(JTable)等,以便用户进行操作和数据展示。

5.设置组件属性和监听器:通过设置组件的属性,例如文本框(JTextField)的大小、按钮(JButton)的文本等,来定制界面的外观和交互。同时,通过添加监听器(ActionListener、MouseListener等)来响应用户的操作,例如按钮的点击事件。

6.界面跳转:在登录成功后,根据用户权限和操作需求,可以通过界面跳转实现不同模块之间的切换。例如,在登录成功后跳转到学生信息管理界面。

七、数据库描述

项目的数据库使用MySQL,并包含一个名为stuinfo的表来存储学生信息。下面是对该表的描述:
表名:stuinfo
表结构:
id:整型,非空,主键,用于唯一标识学生记录。
name:字符串,长度为20,用于存储学生的姓名。
age:整型,用于存储学生的年龄。
dept:字符串,长度为20,用于存储学生的系别。
该表用于存储学生的基本信息,每个学生的信息会在表中以一条记录的形式进行存储。通过该表,可以实现学生信息的增加、修改、删除和查询功能。
在这里插入图片描述

所有代码设计:

LoginFrame类代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class LoginFrame extends JFrame {
    
    private JTextField usernameField;
    private JPasswordField passwordField;

    public LoginFrame() {
    
        setTitle("登录");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        setSize(300, 200);
        setLocationRelativeTo(null); // 居中显示窗口

        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.setBorder(BorderFactory.createEmptyBorder(0, 20, 20, 20));

        // 添加用户名输入框
        JPanel usernamePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JLabel usernameLabel = new JLabel("用户名:");
        usernameField = new JTextField(20);
        usernamePanel.add(usernameLabel);
        usernamePanel.add(usernameField);
        panel.add(usernamePanel);

        // 添加密码输入框
        JPanel passwordPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JLabel passwordLabel = new JLabel("密码:");
        passwordField = new JPasswordField(20);
        passwordPanel.add(passwordLabel);
        passwordPanel.add(passwordField);
        panel.add(passwordPanel);

        // 添加登录按钮
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        JButton loginButton = new JButton("登录");
        loginButton.addActionListener(new ActionListener() {
    
            public void actionPerformed(ActionEvent e) {
    
                String username = usernameField.getText();
                String password = new String(passwordField.getPassword());
                if (username.equals("CBR") && password.equals("123456")) {
    
                    // 登录成功,关闭登录窗口,打开学生信息管理窗口
                    JOptionPane.showMessageDialog(LoginFrame.this, "登录成功!");
                    dispose(); // 关闭登录窗口
                    new StudentManagementFrame(); // 打开学生信息管理窗口
                } else {
    
                    JOptionPane.showMessageDialog(LoginFrame.this, "用户名或密码错误", "登录失败", JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        buttonPanel.add(loginButton);
        panel.add(buttonPanel);

        add(panel);
        setVisible(true);
    }

    public static void main(String[] args) {
    
        SwingUtilities.invokeLater(new Runnable() {
    
            public void run() {
    
                new LoginFrame();
            }
        });
    }
}

StudentManagementFrame类代码

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.sql.*;


public class StudentManagementFrame extends JFrame {
    
    private JTextField idField;
    private JTextField nameField;
    private JTextField ageField;
    private JTextField deptField;
    private DefaultTableModel tableModel;
    private JComboBox<String> departmentComboBox;

    public StudentManagementFrame() {
    
        setTitle("学生信息管理");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 500);
        setLocationRelativeTo(null);

        JPanel panel = new JPanel(new GridBagLayout());
        panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

        GridBagConstraints constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.insets = new Insets(5, 5, 5, 5);

        // 添加学号输入表格
        JLabel idLabel = new JLabel("学号:");
        idField = new JTextField(20);
        constraints.gridx = 0;
        constraints.gridy = 0;
        panel.add(idLabel, constraints);
        constraints.gridx = 1;
        constraints.gridy = 0;
        panel.add(idField, constraints);

        // 添加姓名输入表格
        JLabel nameLabel = new JLabel("姓名:");
        nameField = new JTextField(20);
        constraints.gridx = 0;
        constraints.gridy = 1;
        panel.add(nameLabel, constraints);
        constraints.gridx = 1;
        constraints.gridy = 1;
        panel.add(nameField, constraints);

        // 添加年龄输入表格
        JLabel ageLabel = new JLabel("年龄:");
        ageField = new JTextField(20);
        constraints.gridx = 0;
        constraints.gridy = 2;
        panel.add(ageLabel, constraints);
        constraints.gridx = 1;
        constraints.gridy = 2;
        panel.add(ageField, constraints);

        // 添加系别输入表格
        JLabel deptLabel = new JLabel("系别:");
        deptField = new JTextField(20);
        constraints.gridx = 0;
        constraints.gridy = 3;
        panel.add(deptLabel, constraints);
        constraints.gridx = 1;
        constraints.gridy = 3;
        panel.add(deptField, constraints);

        // 添加按钮面板
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        constraints.gridx = 0;
        constraints.gridy = 4;
        constraints.gridwidth = 2;
        panel.add(buttonPanel, constraints);

        JButton searchButton = new JButton("查询");
        searchButton.addActionListener(new ActionListener() {
    
            public void actionPerformed(ActionEvent e) {
    
                String id = idField.getText();

                Student student = getStudent(id);
                if (student != null) {
    
                    nameField.setText(student.getName());
                    ageField.setText(String.valueOf(student.getAge()));
                    deptField.setText(student.getDept());
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "学生信息查询成功!");
                } else {
    
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "找不到该学生!");
                    clearFields();
                }
            }
        });
        buttonPanel.add(searchButton);

        JButton addButton = new JButton("添加");
        addButton.addActionListener(new ActionListener() {
    
            public void actionPerformed(ActionEvent e) {
    
                String id = idField.getText();
                String name = nameField.getText();
                String ageText = ageField.getText();
                String dept = deptField.getText();

                if (id.isEmpty() || name.isEmpty() || ageText.isEmpty() || dept.isEmpty()) {
    

                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "请输入完整的学生信息!");
                    return;
                }
                int age;
                try {
    
                    age = Integer.parseInt(ageText);
                } catch (NumberFormatException ex) {
    
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "年龄字段必须为数字!");
                    return;
                }

                if (addStudent(id, name, age, dept)) {
    
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "学生信息添加成功!");
                    clearFields();
                    refreshTable();
                } else {
    
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "学生信息添加失败!");
                }
            }
        });
        buttonPanel.add(addButton);

        JButton updateButton = new JButton("修改");
        updateButton.addActionListener(new ActionListener() {
    
            public void actionPerformed(ActionEvent e) {
    
                String id = idField.getText();
                String name = nameField.getText();
                int age = Integer.parseInt(ageField.getText());
                String dept = deptField.getText();

                if (updateStudent(id, name, age, dept)) {
    
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "学生信息修改成功!");
                    clearFields();
                    refreshTable();
                } else {
    
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "学生信息修改失败!");
                }
            }
        });
        buttonPanel.add(updateButton);

        JButton deleteButton = new JButton("删除");
        deleteButton.addActionListener(new ActionListener() {
    
            public void actionPerformed(ActionEvent e) {
    
                String id = idField.getText();

                if (deleteStudent(id)) {
    
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "学生信息删除成功!");
                    clearFields();
                    refreshTable();
                } else {
    
                    JOptionPane.showMessageDialog(StudentManagementFrame.this, "学生信息删除失败!");
                }
            }
        });
        buttonPanel.add(deleteButton);

        // 创建专业查询菜单
        JLabel departmentLabel = new JLabel("专业:");
        departmentComboBox = new JComboBox<>();
        departmentComboBox.addItem("所有专业");
        departmentComboBox.addItem("计算机科学与技术");
        departmentComboBox.addItem("软件工程");
        departmentComboBox.addItem("信息管理与信息系统");
        departmentComboBox.addItem("电子信息工程");
        departmentComboBox.addActionListener(new ActionListener() {
    
            public void actionPerformed(ActionEvent e) {
    
                String selectedDepartment = (String) departmentComboBox.getSelectedItem();
                if (selectedDepartment.equals("所有专业")) {
    
                    refreshTable();
                } else {
    
                    filterTableByDepartment(selectedDepartment);
                }
            }
        });
        constraints.gridx = 0;
        constraints.gridy = 5;
        panel.add(departmentLabel, constraints);
        constraints.gridx = 1;
        constraints.gridy = 5;
        panel.add(departmentComboBox, constraints);

        // 创建表格模型
        tableModel = new DefaultTableModel();
        tableModel.addColumn("学号");
        tableModel.addColumn("姓名");
        tableModel.addColumn("年龄");
        tableModel.addColumn("系别");

        // 创建表格并设置模型
        JTable table = new JTable(tableModel);

        // 创建滚动面板,将表格放入其中
        JScrollPane scrollPane = new JScrollPane(table);
        constraints.gridx = 0;
        constraints.gridy = 6;
        constraints.gridwidth = 2;
        constraints.weightx = 1.0;
        constraints.weighty = 1.0;
        constraints.fill = GridBagConstraints.BOTH;
        panel.add(scrollPane, constraints);

        // 初始化表格数据
        refreshTable();

        // 添加面板到窗口
        add(panel);
        setVisible(true);
    }

    private void refreshTable() {
    
        tableModel.setRowCount(0);

        List<Student> students = getAllStudents();

        for (Student student : students) {
    
            tableModel.addRow(new Object[]{
    student.getId(), student.getName(), student.getAge(), student.getDept()});
        }
    }

    private void filterTableByDepartment(String department) {
    
        tableModel.setRowCount(0);

        List<Student> students = getStudentsByDepartment(department);

        for (Student student : students) {
    
            tableModel.addRow(new Object[]{
    student.getId(), student.getName(), student.getAge(), student.getDept()});
        }
    }

    private List<Student> getStudentsByDepartment(String department) {
    
        List<Student> students = new ArrayList<>();

        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");
             PreparedStatement statement = connection.prepareStatement("SELECT * FROM stuinfo WHERE dept = ?")) {
    
            statement.setString(1, department);

            ResultSet resultSet = statement.executeQuery();

            while (resultSet.next()) {
    
                String id = resultSet.getString("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                String dept = resultSet.getString("dept");

                Student student = new Student(id, name, age, dept);
                students.add(student);
            }
        } catch (SQLException e) {
    
            e.printStackTrace();
        }

        return students;
    }

    private boolean addStudent(String id, String name, int age, String dept) {
    
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");
             PreparedStatement statement = connection.prepareStatement("INSERT INTO stuinfo (id, name, age, dept) VALUES (?, ?, ?, ?)")) {
    
            statement.setString(1, id);
            statement.setString(2, name);
            statement.setInt(3, age);
            statement.setString(4, dept);

            int rowsAffected = statement.executeUpdate();

            return rowsAffected > 0; // 返回是否添加成功
        } catch (SQLException e) {
    
            e.printStackTrace();
        }
        return false;
    }

    private boolean updateStudent(String id, String name, int age, String dept) {
    
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");
             PreparedStatement statement = connection.prepareStatement("UPDATE stuinfo SET name = ?, age = ?, dept = ? WHERE id = ?")) {
    
            statement.setString(1, name);
            statement.setInt(2, age);
            statement.setString(3, dept);
            statement.setString(4, id);

            int rowsAffected = statement.executeUpdate();

            return rowsAffected > 0; // 返回是否修改成功
        } catch (SQLException e) {
    
            e.printStackTrace();
        }
        return false;
    }

    private boolean deleteStudent(String id) {
    
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");
             PreparedStatement statement = connection.prepareStatement("DELETE FROM stuinfo WHERE id = ?")) {
    
            statement.setString(1, id);

            int rowsAffected = statement.executeUpdate();

            return rowsAffected > 0; // 返回是否删除成功
        } catch (SQLException e) {
    
            e.printStackTrace();
        }
        return false;
    }

    private Student getStudent(String id) {
    
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");
             PreparedStatement statement = connection.prepareStatement("SELECT * FROM stuinfo WHERE id = ?")) {
    
            statement.setString(1, id);

            ResultSet resultSet = statement.executeQuery();

            if (resultSet.next()) {
    
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                String dept = resultSet.getString("dept");

                return new Student(id, name, age, dept);
            }
        } catch (SQLException e) {
    
            e.printStackTrace();
        }
        return null;
    }

    private List<Student> getAllStudents() {
    
        List<Student> students = new ArrayList<>();

        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");
             PreparedStatement statement = connection.prepareStatement("SELECT * FROM stuinfo")) {
    

            ResultSet resultSet = statement.executeQuery();

            while (resultSet.next()) {
    
                String id = resultSet.getString("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                String dept = resultSet.getString("dept");

                Student student = new Student(id, name, age, dept);
                students.add(student);
            }
        } catch (SQLException e) {
    
            e.printStackTrace();
        }

        return students;
    }


    private void clearFields() {
    
        idField.setText("");
        nameField.setText("");
        ageField.setText("");
        deptField.setText("");
    }

    public static void main(String[] args) {
    
        SwingUtilities.invokeLater(new Runnable() {
    
            public void run() {
    
                new StudentManagementFrame();
            }
        });
    }
}

Student类代码

public class Student {
    
    private String id;
    private String name;
    private int age;
    private String dept;

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

    // Getters and setters
    public String getId() {
    
        return id;
    }


    public String getName() {
    
        return name;
    }



    public int getAge() {
    
        return age;
    }



    public String getDept() {
    
        return dept;
    }


}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chenburong2021/article/details/131178491

智能推荐

python中文显示不出来_解决Python词云库wordcloud不显示中文的问题-程序员宅基地

文章浏览阅读2.6k次。解决Python词云库wordcloud不显示中文的问题2018-11-25背景:wordcloud是基于Python开发的词云生成库,功能强大使用简单。github地址:https://github.com/amueller/word_cloudwordcloud默认是不支持显示中文的,中文会被显示成方框。安装:安装命令:pip install wordcloud解决:经过测试发现不支持显示中文..._词云python代码无法输出文字

台式计算机cpu允许温度,玩游戏cpu温度多少正常(台式电脑夏季CPU一般温度多少)...-程序员宅基地

文章浏览阅读1.1w次。随着炎热夏季的到来,当玩游戏正爽的时候,电脑突然死机了,自动关机了,是不是有想给主机一脚的冲动呢?这个很大的原因是因为CPU温度过高导致的。很多新手玩家可能都有一个疑虑,cpu温度多少以下正常?有些说是60,有些说是70,到底多高CPU温度不会死机呢?首先我们先看看如何查看CPU的温度。下载鲁大师并安装,运行鲁大师软件,即可进入软件界面,并点击温度管理,即可看到电脑各个硬件的温度。鲁大师一般情况下..._台式机玩游戏温度多少正常

小白自学Python日记 Day2-打印打印打印!_puthon打印任务收获-程序员宅基地

文章浏览阅读243次。Day2-打印打印打印!我终于更新了!(哭腔)一、 最简单的打印最最简单的打印语句: print(“打印内容”)注意:python是全英的,符号记得是半角下面是我写的例子:然后进入power shell ,注意:你需要使用cd来进入你保存的例子的文件夹,保存时名字应该取为xxx.py我终于知道为什么文件夹取名都建议取英文了,因为进入的时候是真的很麻烦!如果你没有进入正确的文件夹..._puthon打印任务收获

Docker安装:Errors during downloading metadata for repository ‘appstream‘:_"cenerrors during download metadata for repository-程序员宅基地

文章浏览阅读1k次。centos8问题参考CentOS 8 EOL如何切换源? - 云服务器 ECS - 阿里云_"cenerrors during download metadata for repository \"appstream"

尚硅谷_谷粒学苑-微服务+全栈在线教育实战项目之旅_基于微服务的在线教育平台尚硅谷-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏11次。SpringBoot+Maven+MabatisPlusmaven在新建springboot项目引入RELEASE版本出错maven在新建springboot项目引入RELEASE版本出错maven详解maven就是通过pom.xml中的配置,就能够从仓库获取到想要的jar包。仓库分为:本地仓库、第三方仓库(私服)、中央仓库springframework.boot:spring-boot-starter-parent:2.2.1.RELEASE’ not found若出现jar包下载不了只有两_基于微服务的在线教育平台尚硅谷

随便推点

网络学习第六天(路由器、VLAN)_路由和vlan-程序员宅基地

文章浏览阅读316次。路由的概念路由器它称之为网关设备。路由器就是用于连接不同网络的设备路由器是位于OSI模型的第三层。路由器通过路由决定数据的转发。网关的背景:当时每家计算机厂商,用于交换数据的通信程序(协议)和数据描述格式各不相同。因此,就把用于相互转换这些协议和格式的计算机称为网关。路由器与三层交换器的对比路由协议对比路由器的作用:1.路由寻址2.实现不同网络之间相连的功能3.通过路由决定数据的转发,转发策略称为 路由选择。VLAN相关技术什么是VLAN?中文名称叫:虚拟局域网。虚_路由和vlan

设置div背景颜色透明度,内部元素不透明_div设置透明度,里面的内容不透明-程序员宅基地

文章浏览阅读2.8w次,点赞6次,收藏22次。设置div背景颜色透明度,内部元素不透明:.demo{  background-color:rgba(255,255,255,0.15) } 错误方式:.demo{ background-color:#5CACEE;opacity:0.75;} 这样会导致div里面的元素内容和背景颜色一起变透明只针对谷歌浏览器的测试_div设置透明度,里面的内容不透明

Discuz!代码大全-程序员宅基地

文章浏览阅读563次。1.[ u]文字:在文字的位置可以任意加入您需要的字符,显示为下划线效果。2.[ align=center]文字:在文字的位置可以任意加入您需要的字符,center位置center表示居中,left表示居左,right表示居右。5.[ color=red]文字:输入您的颜色代码,在标签的中间插入文字可以实现文字颜色改变。6.[ SIZE=数字]文字:输入您的字体大小,在标签的中间插入文..._discuzcode 大全

iOS NSTimer定时器-程序员宅基地

文章浏览阅读2.6k次。iOS中定时器有三种,分别是NSTimer、CADisplayLink、dispatch_source,下面就分别对这三种计时器进行说明。一、NSTimerNSTimer这种定时器用的比较多,但是特别需要注意释放问题,如果处理不好很容易引起循环引用问题,造成内存泄漏。1.1 NSTimer的创建NSTimer有两种创建方法。方法一:这种方法虽然创建了NSTimer,但是定时器却没有起作用。这种方式创建的NSTimer,需要加入到NSRunLoop中,有NSRunLoop的驱动才会让定时器跑起来。_ios nstimer

Linux常用命令_ls-lmore-程序员宅基地

文章浏览阅读4.8k次,点赞17次,收藏51次。Linux的命令有几百个,对程序员来说,常用的并不多,考虑各位是初学者,先学习本章节前15个命令就可以了,其它的命令以后用到的时候再学习。1、开机 物理机服务器,按下电源开关,就像windows开机一样。 在VMware中点击“开启此虚拟机”。2、登录 启动完成后,输入用户名和密码,一般情况下,不要用root用户..._ls-lmore

MySQL基础命令_mysql -u user-程序员宅基地

文章浏览阅读4.1k次。1.登录MYSQL系统命令打开DOS命令框shengfen,以管理员的身份运行命令1:mysql -u usernae -p password命令2:mysql -u username -p password -h 需要连接的mysql主机名(localhost本地主机名)或是mysql的ip地址(默认为:127.0.0.1)-P 端口号(默认:3306端口)使用其中任意一个就OK,输入命令后DOS命令框得到mysql>就说明已经进入了mysql系统2. 查看mysql当中的._mysql -u user

推荐文章

热门文章

相关标签