简易的GUI图书管理系统(数据库Mysql)

基本的思路就是一个Mysql的连接工具类,然后就是GUI图形界面显示。我这里主要是使用了DefaultTableModel来添加行数据

图片资源:在setbag中图片可自行寻找。随时替换

一个完善的图书管理系统必须具备的:

1、登录界面

2、显示图书界面

3、操作界面

4、显示操作后的图书界面

那么我们直接来看代码:

connect连接类:

package com.library.liuzhi;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.spi.DirStateFactory.Result;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/*
 * author:Mr.Liu
 * date:2020/5/22 10:33
 * 在conn_tool中加上基本的增删改查功能
 */

public class conn_tool {
    Statement statement;
    Connection conn;

public static void main(String[] args) throws Exception {
        new conn_tool();

}

public conn_tool() throws Exception {
        // 驱动程序名  
        String driver = "com.mysql.jdbc.Driver";
        // URL指向要访问的数据库名Database(注意红色的地方是在插入数据库数据交互时(比如:中文 在数据库显示:???)避免乱码使用了UTF-8)
        String url = "jdbc:mysql://localhost:3306/Liuzhi? useUnicode=true&characterEncoding=utf8";
        // MySQL配置时的用户名
        String username = "root";
        // MySQL配置时的密码 
        String password = "root";
        // 加载驱动程序    
        Class.forName(driver);
        // 连续数据库 
        conn = DriverManager.getConnection(url, username, password);
        if (!conn.isClosed()) {
            System.out.println("Succeeded connecting to the Database!");
        }
    }
    //添加用户名和密码
    public void add_admin(String username, String password) {
        try {
            // statement用来执行SQL语句   
            if (!username.equals("") && !password.equals("")) {

String sql = "INSERT INTO admin VALUES ('" + username + "',"
                        + "'" + password + "')";

try {
                    statement = conn.createStatement();
                    statement.execute(sql);
                } catch (SQLException e) {
                    JOptionPane.showMessageDialog(null, "用户名已存在", "Tips",
                            JOptionPane.ERROR_MESSAGE);
                }
            }
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //更新修改数据
    public void select_query(String book_con, String book_name,
            String book_price) {
        try {
            statement = conn.createStatement();
            // UPDATE library_store SET book_name='Paaa',book_price='10' WHERE
            // book_con=001
            String sql = "UPDATE library_store SET book_name='" + book_name
                    + "',book_price='" + book_price + "'" + "  WHERE book_con="
                    + book_con;
            statement = conn.createStatement();
            int count=statement.executeUpdate(sql);
            if(count>0){
                JOptionPane.showMessageDialog(null, "更新成功", "Tips",
                        JOptionPane.OK_CANCEL_OPTION);
            }else{
                JOptionPane.showMessageDialog(null, "更新失败(编号不存在)", "Tips",
                        JOptionPane.ERROR_MESSAGE);
            }
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

}
    //添加图书信息
    public boolean add_bookstore(String book_name, String book_con,
            String book_price) {
        try {
            // statement用来执行SQL语句   
            if (!book_name.equals("") && !book_con.equals("")
                    && !book_price.equals("")) {
                statement=conn.createStatement();
                String sql = "INSERT INTO library_store VALUES ('" + book_name
                        + "'," + "'" + book_con + "','" + book_price + "')";
                int count=statement.executeUpdate(sql);
                if(count>0){
                    JOptionPane.showMessageDialog(null, "添加数据成功", "Tips",
                            JOptionPane.OK_CANCEL_OPTION);
                }else{
                    JOptionPane.showMessageDialog(null, "添加失败(编号重复)", "Tips",
                            JOptionPane.ERROR_MESSAGE);
                }
                return true;
            }
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            JOptionPane.showMessageDialog(null, "图书编号已存在", "Tips",
                    JOptionPane.ERROR_MESSAGE);
        }
        return false;
    }
    //刷新数据库数据
    public ResultSet update_bookstore() throws Exception {
        // statement用来执行SQL语句   
        statement = conn.createStatement();
        String sql = "SELECT * FROM library_store";
        ResultSet result = statement.executeQuery(sql);
        return result;
    }
    //删除数据库行数据
    public void delete_data(String data) {
        // statement用来执行SQL语句   
        try {
            statement = conn.createStatement();
            String sql = "DELETE FROM library_store WHERE book_con=" + data;
            statement = conn.createStatement();
            int count=statement.executeUpdate(sql);
            if(count>0){
                JOptionPane.showMessageDialog(null, "成功删除", "Tips",
                        JOptionPane.OK_CANCEL_OPTION);
            }else{
                JOptionPane.showMessageDialog(null, "编号不存在", "Tips",
                        JOptionPane.ERROR_MESSAGE);
            }
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            
            e.printStackTrace();
        }
        // DELETE FROM library_store WHERE book_con=001
        
    }

public boolean Login_Test(String username, String password) {
        try {
            // statement用来执行SQL语句    
            statement = conn.createStatement();
            String sql = "SELECT username,passwords FROM admin WHERE username='"
                    + username + "' AND" + " passwords='" + password + "'";
            ResultSet result = statement.executeQuery(sql);
            while (result.next()) {
                String user = result.getString("username");
                String pass = result.getString("passwords");
                if (user.equals(username) && pass.equals(password)) {
                    return true;
                } else {
                    return false;
                }
            }
            result.close();
            conn.close();
            return false;

} catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

return true;
    }

}

2、界面登录

package com.library.liuzhi;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Login_view extends JFrame{
    JButton select, reseach;
    JLabel jl1,jl2;
    JTextField jt1,jt2;
    static Login_view log;
    public static void main(String[] args) {
        log=new Login_view();
    }
   public Login_view(){
        this.setDefaultCloseOperation(0);
        this.setSize(new Dimension(450, 450));
        this.setResizable(false);
        this.setLocationRelativeTo(null);
        this.setLayout(null);        
        
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                String str = "是否退出图书管理系统界面";
                // 添加消息对话框
                if (JOptionPane.showConfirmDialog(null, str, "退出管理系统界面",
                        JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                    System.exit(0); // 退出
                }
            }
        });
        jl1=new JLabel("用 户 名:");
        jt1=new JTextField(30);
        jl1.setBounds(50, 120, 50, 50);
        jt1.setBounds(120, 135, 250, 20);
        this.add(jl1);
        this.add(jt1);
        jl2=new JLabel("密       码:");    
        jt2=new JTextField(30);
        jl2.setBounds(50, 180, 50, 50);
        jt2.setBounds(120, 195, 250, 20);
        this.add(jl2);
        this.add(jt2);
        select = new JButton("Login");
        select.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent arg0) {
                try {
                    boolean flag=new conn_tool().Login_Test(jt1.getText(), jt2.getText());
                    if(flag){
                        jt1.setText("");
                        jt2.setText("");
                        JOptionPane.showMessageDialog(null, "登录成功", "Tips", JOptionPane.OK_CANCEL_OPTION);
                        log.dispose();
                        new book_store().setVisible(true);
                    }
                    else{
                        JOptionPane.showMessageDialog(null, "账号或密码不存在", "Tips", JOptionPane.ERROR_MESSAGE);
                        jt1.setText("");
                        jt2.setText("");
                        
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
        });
        reseach = new JButton("Register");
        reseach.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent arg0) {
                try {
                    new conn_tool().add_admin(jt1.getText(), jt2.getText());
                    jt1.setText("");
                    jt2.setText("");
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    JOptionPane.showMessageDialog(null, "用户名已存在", "Tips",JOptionPane.OK_CANCEL_OPTION);
                }
                
            }
        });
        select.setBounds(120, 280, 100, 30);
        reseach.setBounds(250, 280, 100, 30);
        this.add(select);
        this.add(reseach);
        this.setVisible(true);
        setbg();
   }
   public void setbg(){
        ((JPanel)this.getContentPane()).setOpaque(false);
        ImageIcon img = new ImageIcon("../com.liuzhi.test/1.jpeg"); 
        JLabel background = new JLabel(img);
        this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE)); 
       background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight()); 
    }
}

3、显示图书信息界面

package com.library.liuzhi;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.Vector;
import java.util.concurrent.BrokenBarrierException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.border.EmptyBorder;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.text.html.HTMLDocument.Iterator;

import org.junit.Test;

public class book_store extends JFrame {

/**
     * @param args
     */
    JButton select, add, delete, update;
    static book_store book;
    DefaultTableModel tableModel;
    JTable ja;
    JTextField jt;
    JLabel jl, j2, j3, j4;
    boolean flush_flag = true;

public book_store() {
        this.setTitle("Library Store");
        this.setDefaultCloseOperation(0);
        this.setSize(new Dimension(600, 600));
        this.setResizable(false);
        this.setLocationRelativeTo(null);
        this.setLayout(null);
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                String str = "是否退出图书管理系统界面";
                // 添加消息对话框
                if (JOptionPane.showConfirmDialog(null, str, "退出管理系统界面",
                        JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                    System.exit(0); // 退出
                }
            }
        });
        jl = new JLabel("XXXX图书借阅系统");
        jl.setBounds(230, 30, 150, 30);
        j2 = new JLabel("图书名称");
        j2.setBounds(140, 70, 150, 30);
        j3 = new JLabel("图书编号");
        j3.setBounds(270, 70, 150, 30);
        j4 = new JLabel("图书价格");
        j4.setBounds(400, 70, 150, 30);
        this.add(jl);
        this.add(j2);
        this.add(j3);
        this.add(j4);
        ja = new JTable(0, 3);
        tableModel = (DefaultTableModel) ja.getModel();
        ja.setBounds(100, 100, 390, 390);
        DefaultTableCellRenderer r = new DefaultTableCellRenderer();
        r.setHorizontalAlignment(JLabel.CENTER);
        ja.setDefaultRenderer(Object.class, r);
        ja.setEnabled(false);
        this.add(ja);
        update = new JButton("Updata");
        update.setBounds(50, 500, 120, 30);
        add = new JButton("Add");
        add.setBounds(175, 500, 120, 30);
        delete = new JButton("Delete");
        delete.setBounds(300, 500, 120, 30);
        select = new JButton("Flush");
        select.setBounds(425, 500, 120, 30);
        this.add(select);
        this.add(add);
        this.add(delete);
        this.add(update);
        onClickListerner(add, 1);
        onClickListerner(update, 2);
        onClickListerner(delete, 3);
        onClickListerner(select, 4);
        this.setVisible(true);
        setbg();
    }

//添加行数据
    public void add_row(String bookname, String bookcon, String bookprice) {
        tableModel = (DefaultTableModel) ja.getModel();
        Object[] all = { bookname, bookcon, bookprice };
        tableModel.addRow(all);

}

static boolean flag = true;
    static ResultSet result;

public void onClickListerner(JButton click, int i) {
        switch (i) {
        // 数据表显示增加后的数据
        case 1:
            click.addActionListener(new ActionListener() {

@Override
                public void actionPerformed(ActionEvent arg0) {
                    try {
                        flag = true;
                        new book_add_store().setVisible(true);
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
            break;
        // 数据表显示所有的被查找的数据
        case 2:
            click.addActionListener(new ActionListener() {

@Override
                public void actionPerformed(ActionEvent arg0) {
                    try {
                        flag = true;
                        new modify_panle().setVisible(true);
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
            break;
        // 数据表显示删除操作后的数据
        case 3:
            click.addActionListener(new ActionListener() {

@Override
                public void actionPerformed(ActionEvent arg0) {
                    /* 清空数据集合 */
                    flag = true;
                    new delete_panle();
                }
            });
            break;
        // 刷新整个数据表
        case 4:
            click.addActionListener(new ActionListener() {

@Override
                public void actionPerformed(ActionEvent arg0) {
                    if (flag)
                        try {
                            /* 清空数据集合 */
                            ((DefaultTableModel) ja.getModel()).getDataVector()
                                    .clear();
                            conn_tool tool = new conn_tool();
                            result = tool.update_bookstore();
                            while (result.next()) {
                                String bookname = result.getString("book_name");
                                String bookcon = result.getString("book_con");
                                String bookprice = result
                                        .getString("book_price");
                                add_row(bookname, bookcon, bookprice);
                            }
                            flag = false;
                            result.close();
                            tool.conn.close();
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                }

});
            break;

default:
            break;
        }
    }
    //设置窗体背景
    public void setbg() {
        ((JPanel) this.getContentPane()).setOpaque(false);
        ImageIcon img = new ImageIcon("../com.liuzhi.test/图片.jpeg");
        JLabel background = new JLabel(img);
        this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
        background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
    }

}
//删除操作界面
class delete_panle extends JFrame{
    JTextField jt1;
    JLabel jl;
    JButton ok;
    public  delete_panle(){
    this.setDefaultCloseOperation(0);
    this.setResizable(false);
    this.setLocationRelativeTo(null);
    this.setSize(new Dimension(300, 300));
    this.setLayout(null);
    this.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            String str = "是否退出图书编号删除界面";
            // 添加消息对话框
            if (JOptionPane.showConfirmDialog(null, str, "退出图书编号删除界面",
                    JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                dispose();// 本窗口销毁,释放内存资源// 退出
            }
        }
    });
    jl = new JLabel("编号删除");
    jl.setBounds(120, 70, 150, 30);
    jt1 = new JTextField();
    jt1.setBounds(20, 135, 250, 20);
    ok = new JButton("确定");
    ok.setBounds(100, 180, 80, 20);
    ok.addActionListener(new ActionListener() {

@Override
        public void actionPerformed(ActionEvent arg0) {
            try {
                conn_tool tool=new conn_tool();
                tool.delete_data(jt1.getText());
                tool.conn.close();
                dispose();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });
    this.add(ok);
    this.add(jl);
    this.add(jt1);
    this.setVisible(true);
    }
}
//更新操作界面
class modify_panle extends JFrame {
    JTextField jt1, jt2, jt3;
    JLabel jl, j2, j3, j4;
    JButton ok;

public modify_panle() {
        this.setDefaultCloseOperation(0);
        this.setResizable(false);
        this.setLocationRelativeTo(null);
        this.setSize(new Dimension(450, 450));
        this.setLayout(null);
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                String str = "是否退出图书修改界面";
                // 添加消息对话框
                if (JOptionPane.showConfirmDialog(null, str, "退出修改界面",
                        JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                    dispose();// 本窗口销毁,释放内存资源// 退出
                }
            }
        });
        jl = new JLabel("xxx图书修改界面");
        jl.setBounds(150, 30, 150, 30);
        j2 = new JLabel("图书名称");
        j3 = new JLabel("图书编号");
        j4 = new JLabel("图书价格");
        jt1 = new JTextField();
        jt2 = new JTextField();
        jt3 = new JTextField();
        j2.setBounds(50, 180, 80, 50);
        jt1.setBounds(120, 135, 250, 20);
        j3.setBounds(50, 120, 80, 50);
        jt2.setBounds(120, 195, 250, 20);
        j4.setBounds(50, 240, 80, 50);
        jt3.setBounds(120, 255, 250, 20);
        ok = new JButton("确定");
        ok.setBounds(190, 315, 80, 20);
        ok.addActionListener(new ActionListener() {

@Override
            public void actionPerformed(ActionEvent arg0) {
                try {
                    conn_tool tool = new conn_tool();
                    tool.select_query(jt1.getText(), jt2.getText(),
                            jt3.getText());
                    dispose();
                    tool.conn.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
        this.add(ok);
        this.add(jl);
        this.add(j2);
        this.add(j3);
        this.add(j4);
        this.add(jt1);
        this.add(jt2);
        this.add(jt3);
        this.setVisible(true);
    }
}
//添加操作界面
class book_add_store extends JFrame {
    JTextField jt1, jt2, jt3;
    JLabel jl, j2, j3, j4;
    JButton ok;

public book_add_store() {
        this.setDefaultCloseOperation(0);
        this.setResizable(false);
        this.setLocationRelativeTo(null);
        this.setSize(new Dimension(450, 450));
        this.setLayout(null);
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                String str = "是否退出图书添加界面";
                // 添加消息对话框
                if (JOptionPane.showConfirmDialog(null, str, "退出添加界面",
                        JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                    dispose();// 本窗口销毁,释放内存资源// 退出
                }
            }
        });
        jl = new JLabel("xxx图书添加界面");
        jl.setBounds(150, 30, 150, 30);
        j2 = new JLabel("图书名称");
        j3 = new JLabel("图书编号");
        j4 = new JLabel("图书价格");
        jt1 = new JTextField();
        jt2 = new JTextField();
        jt3 = new JTextField();
        j2.setBounds(50, 120, 80, 50);
        jt1.setBounds(120, 135, 250, 20);
        j3.setBounds(50, 180, 80, 50);
        jt2.setBounds(120, 195, 250, 20);
        j4.setBounds(50, 240, 80, 50);
        jt3.setBounds(120, 255, 250, 20);
        ok = new JButton("确定");
        ok.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent arg0) {
                try {
                    conn_tool tool = new conn_tool();
                    boolean ll=tool.add_bookstore(jt1.getText(), jt2.getText(), jt3.getText());
                    dispose();
                    tool.conn.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
        ok.setBounds(190, 315, 80, 20);
        this.add(ok);
        this.add(jl);
        this.add(j2);
        this.add(j3);
        this.add(j4);
        this.add(jt1);
        this.add(jt2);
        this.add(jt3);
        this.setVisible(false);
    }
}

结尾:一个简单的图形界面图书管理系统就做好了,有些地方可能还没做好,希望大家可以指正出来,毕竟学习是无止境的!!!

简易的GUI图书管理系统(数据库Mysql)相关推荐

  1. 基于 Java+MySQL 的桌面 GUI 图书管理系统【100010417】

    基于 Java 的桌面 GUI 图书管理系统 第一章 绪论 1.1 编写目的 明确图书管理系统的详细需求,提供使用单位确认系统的功能和性能,作为软件设计人员的设计依据和使用单位的验收标准,对图书管理系 ...

  2. java计算机毕业设计图书管理系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计图书管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计图书管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S架构 开 ...

  3. 图书管理系统数据库综合应用

    图书管理系统数据库综合练习用到下面三个关系表: CARD      借书卡.    CNO 卡号,NAME   姓名,CLASS 班级 BOOKS     图书.      BNO 书号,BNAME ...

  4. 图书管理系统-数据库设计

    选题背景 依照图书管理系统的要求,完成如下任务 设计适合此应用需求的规范化的数据库: 建立ODBC数据源: 创建数据库连接: 制作一个具有安全性控制(权限管理和视图管理等)的数据库访问程序. 数据项 ...

  5. 【JavaSE】图书管理系统之MySQL版本

    目录 一.项目演示 1. 数据库数据演 2.管理员 3.用户 1.登录注册 2.借阅与归还数据库变换​​​​​​​ 二.项目分析 三.环境 1.ideal 2.MySQL5.7 3.数据库驱动包 四. ...

  6. ASP.NET MVC CODE FIRST 图书管理系统 数据库

    ASP .NET MVC CODE FIRST 图书管理系统 本项目最后更新于2018-7-4,可能会因为没有更新而失效.如已失效或需要修正,请提issue! 我使用VS2017进行开发,框架是.NE ...

  7. 图书管理系统 数据库课程实验设计

    本课设系软件工程大二学生作,拙笔狂言,恭请斧正. 开发工具:Eclipse 2020-12,Microsoft SQL server 2012 程序语言:Java 引 言 选题题目:图书管理系统 选题 ...

  8. C# 图书管理系统(MySQL)——属性设计(三)

    目录 1.窗体Form属性设计 2. 文本框控件:TextBox(输入用户名及密码) 3.单选按钮控件:RadioButton 4.按钮 :Button 5.下拉框:comboBox 1.窗体Form ...

  9. 橘猫图书管理系统--数据库原理期末项目

    需求分析 图书馆作为文学的聚集地和展示平台,书籍是从古至今文化传递记载的介质.图书馆是高校不可缺少的基础设施,图书馆管理系统是图书馆正常运转的关键.此次数据库课程设计采用C++语言编写程序,实现图书登 ...

最新文章

  1. SpringSide 3 中的 Struts 2
  2. 华为mate20 android,华为MateRS对比华为mate20RS,终于让安卓手机坐上了头等舱!
  3. 牛客网题目——不用四则运算符号,计算两个数字的和
  4. Okhttp使用简析——Android网络请求框架(一)
  5. 倾心家教安卓案例开发代码_开发一个APP多少钱?
  6. markdown的基础语言
  7. 常见电容器图片_工业机器视觉的常见应用与施努卡VisionMax视觉系统介绍
  8. 计算机二级java邓伦单_2010年3月计算机等级考试二级Java笔试试题(文字版)
  9. 阿里面试记录-程序上机
  10. python银行排队系统仿真_单片机实现银行排队叫号系统Proteus仿真
  11. Excel导入SQL datetime的处理
  12. 2021年8月NOC全国中小学信息技术创新与实践大赛 软件创意编程小学高年级组Python决赛题解析
  13. lattice开发错误集合
  14. 快速幂与快速矩阵幂(以大数下的斐波那契数列为例)
  15. h5打开麦克风权限录音_微信H5录音实现
  16. python作业-5
  17. 虚拟现实技术需要学计算机吗,虚拟现实学习要掌握哪些核心技术
  18. [生存志] 第67节 夫差信谗杀伍员
  19. w311m linux驱动下载,腾达W311MI网卡驱动
  20. 常见的作业调度和进程调度算法

热门文章

  1. 告别 .com网址时代,Opera浏览器实现用Emoji符号打开网站
  2. 计算机安全原理与实践第3版PDF,windows安全原理与技术.pdf
  3. 简单易懂的理解java开发中的 DO、BO、DTO、VO、AO都是什么✌
  4. 腾讯2022应届生校招总包40W
  5. 清华张钹院士专刊文章:迈向第三代人工智能(全文收录)
  6. Pycharm专业版最新版下载安装(社区版和专业版并存)
  7. 车载网络技术详解 —— 车载网络系统基础(✨您绝不可错过的呕心力作✨)
  8. Windows 10系统如何添加网络打印机?
  9. 财报汇总 | 可口可乐、埃森哲、圆通、海亮教育等9家企业发布业绩
  10. 面试连环炮之分布式锁