javaSwing+MySQl实现图书馆登录页面(完整)

页面
在这里插入图片描述

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.SQLException;
import java.util.Random;

class Login1 {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        DataBaseConnect connect = new DataBaseConnect();
//        connect.getConnection();
//       connect.Insert("黄洪飞","123456");
        connect.Insert("胡彩月", "123456");
//       connect.Delete("haungg","23132");
        Login login = new Login();
        login.LoginJFrame();
    }
}

class Login extends JFrame implements ActionListener {
    //登录、注册、取消
    JButton btnLogin, btnRegister, btnCancel;
    JPanel pnlSouth, pnlNorth, pnlCenter1, pnlCenter2;//注册面板
    private JLabel jLabel1,jlabel;
    private JLabel jLabelPassWord;
    private JTextField jTextFieldUser,jtextField;
    private JPasswordField jPasswordField;
    static String user, passWord;
    private JPanel imagePanel;
    Code code=new Code();
//    ImageIcon imageIcon=new ImageIcon("E:\\java\\Login.jpg");
////    private ImageIcon background=new ImageIcon("E:\\java\\Login.jpg");;
//    JFrame jFrame = new JFrame("图书管理系统");
    public void LoginJFrame() {
        JFrame jFrame = new JFrame("图书管理系统");

        ImageIcon imageIcon = new ImageIcon("E:\\java\\Login.jpg");
        JLabel label = new JLabel(imageIcon);
        label.setBounds(0, 0, imageIcon.getIconWidth(), imageIcon.getIconHeight());
        jFrame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
        JPanel panel = (JPanel) jFrame.getContentPane();
        panel.setOpaque(false);
        jFrame.setLayout(null);

        jTextFieldUser = new JTextField(15);
        pnlNorth = new JPanel();
        jLabel1 = new JLabel("欢迎进入图书管理系统!");
        jLabel1.setFont(new Font("宋体", Font.BOLD, 24));
        pnlNorth.add(jLabel1);
        pnlNorth.setOpaque(false);
        pnlNorth.setBounds(100, 50, 300, 59);
        jFrame.add(pnlNorth);
        //登录
        pnlCenter1 = new JPanel();
        pnlCenter2 = new JPanel();
        JLabel jLabelUser = new JLabel(" 用 户:");
        jLabelUser.setFont(new Font("宋体", Font.BOLD, 16));
        jLabelUser.setOpaque(false);
        jTextFieldUser = new JTextField(15);
        pnlCenter1.add(jLabelUser);
        pnlCenter1.add(jTextFieldUser);
        pnlCenter1.setOpaque(false);

        pnlCenter1.setBounds(100, 100, 300, 60);
        jFrame.add(pnlCenter1);
        //密码
        jLabelPassWord = new JLabel("密 码:");
        jLabelPassWord.setFont(new Font("宋体", Font.BOLD, 16));
        jPasswordField = new JPasswordField(15);
        pnlCenter2.add(jLabelPassWord);
        pnlCenter2.add(jPasswordField);
        pnlCenter2.setBounds(100, 150, 300, 60);
        pnlCenter2.setOpaque(false);
        //验证码
        jlabel=new JLabel("验证码");
        jlabel.setFont(new Font("宋体",Font.BOLD,16));
        jtextField=new JTextField(6);
        JPanel jPanelCenter=new JPanel();
        jPanelCenter.add(jlabel);
        jPanelCenter.add(jtextField);
        jPanelCenter.add(code);
        jPanelCenter.setBounds(100,200,300,60);
        jPanelCenter.setOpaque(false);
        jFrame.add(jPanelCenter);
        System.out.println(code.generateCode());
        //登录
        jFrame.add(pnlCenter2);
        pnlSouth = new JPanel();
        btnLogin = new JButton("登录");
        btnLogin.addActionListener(this);
        btnRegister = new JButton("注册");
        btnRegister.addActionListener(this);
        btnCancel = new JButton("取消");
        btnCancel.addActionListener(this);
        pnlSouth.add(btnLogin);
        pnlSouth.add(btnRegister);
        pnlSouth.add(btnCancel);
        pnlSouth.setOpaque(false);
        pnlSouth.setBounds(130, 250, 300, 50);
        jFrame.add(pnlSouth);
        jFrame.setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());
        jFrame.setVisible(true);
        jFrame.setLocation(300, 300);
        jFrame.setResizable(false);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public String getUser() {

        return this.user;
    }

    public String getPassWord() {
        return this.passWord;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //登录
        DataBaseConnect connect = new DataBaseConnect();
        if (e.getSource() == btnLogin) {
            String user = jTextFieldUser.getText();
            String passWord = jPasswordField.getText();
            Login.user = user;
            Login.passWord = passWord;
            String codes=jtextField.getText();
            if (user.equals("")) {
                JOptionPane.showMessageDialog(this, "请输入账号");
            } else if (user.length() != 0) {
                try {
                    if (connect.Select(user, passWord)) {
                        if(codes.equals(code.getCode())) {
                            JOptionPane.showMessageDialog(this, "恭喜您,登陆成功!");
                            setVisible(false);
                            dispose();
                            new MenuJFrame();
                        }
                        else{
                            JOptionPane.showMessageDialog(this, "输入验证码有误!");
                        }
                    } else {
                        JOptionPane.showMessageDialog(this, "该账号不存在!");
                    }
                } catch (SQLException | ClassNotFoundException ex) {
                    ex.printStackTrace();
                }
            }
        }
        //注册
        else if (e.getSource() == btnRegister) {
            String user = jTextFieldUser.getText();
            String password = jPasswordField.getText();
            try {
                boolean result = connect.Insert(user, password);
                if (result) {
                    connect.Insert(user, password);
                    JOptionPane.showMessageDialog(this, "恭喜,注册成功");
//                    setVisible(false);
//                    dispose();
//                    new MenuJFrame();

                } else {
                    JOptionPane.showMessageDialog(this, "该账号已经存在!");
                }
            } catch (SQLException | ClassNotFoundException ex) {
                ex.printStackTrace();
            }

        } else if (e.getSource() == btnCancel) {
            JOptionPane.showMessageDialog(this, "告辞");
            System.exit(0);
        }
    }
}
class Code extends JComponent implements MouseListener {

    public static String codes;  //自动生成的验证码

    private int width, height = 40;  //设置验证码高度、宽度

    private int codesLength = 4;  //设置代码长度

    private Random random = new Random(); //生成数字的方法

    public Code() {
        width = this.codesLength * 16 + (this.codesLength - 1) * 10; //根据验证码长度设置宽度
        setPreferredSize(new Dimension(width, height));  //设置背景大小
        setSize(width, height);  //设置验证码长度和宽度
        this.addMouseListener(this);
        setToolTipText("点击可更换验证码");
    }

    //得到生成的验证码
    public int getCodesLength() {
        return codesLength;
    }


    //设置验证码的长度
    public void setCodesLength(int codeLength) {
        if (codesLength < 4) {
            this.codesLength = 4;
        } else {
            this.codesLength = codeLength;
        }

    }

    public String getCode() {
        return codes;
    }


    //让验证码产生随机的颜色
    public Color getRandColor(int min, int max) {

        if (min > 255)
            min = 255;
        if (max > 255)
            max = 255;
        int red = random.nextInt(max - min) + min;
        int green = random.nextInt(max - min) + min;
        int blue = random.nextInt(max - min) + min;
        return new Color(red, green, blue);
    }

    // 设置验证码具体的数字或字母是什么
    protected String generateCode() {
        char[] codes = new char[this.codesLength];
        for (int i = 0, len = codes.length; i < len; i++) {
            if (random.nextBoolean()) {
                codes[i] = (char) (random.nextInt(10) + 48);
            } else {
                codes[i] = (char) (random.nextInt(26) + 97);
            }
        }
        Code.codes = new String(codes);
        return Code.codes;
    }


    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (this.codes == null || this.codes.length() != this.codesLength) {  //判断生成的验证码是否为空或超出长度
            this.codes = generateCode();
        }
        width = this.codesLength * 16 + (this.codesLength - 1) * 10;
        super.setSize(width, height);  //接口使用,验证码字体大小
        super.setPreferredSize(new Dimension(width, height));//接口使用,验证码背景大小
        Font mFont = new Font("Arial", Font.BOLD | Font.ITALIC, 25);  //设置字体和字体大小
        g.setFont(mFont);  //设置对象
        //绘制出验证码的背景的矩形轮廓
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(getRandColor(200, 250));
        g2d.fillRect(0, 0, width, height);
        g2d.setColor(getRandColor(180, 200));
        g2d.drawRect(0, 0, width - 1, height - 1);
        //绘制出验证码背景的线
        int i = 0, len = 150;
        for (; i < len; i++) {
            int x = random.nextInt(width - 1);
            int y = random.nextInt(height - 1);
            int x1 = random.nextInt(width - 10) + 10;
            int y1 = random.nextInt(height - 4) + 4;
            g2d.setColor(getRandColor(180, 200));
            g2d.drawLine(x, y, x1, y1);
        }


        //绘制出验证码的具体字母
        i = 0;
        len = this.codesLength;
        FontMetrics fm = g2d.getFontMetrics();
        int base = (height - fm.getHeight()) / 2 + fm.getAscent();
        for (; i < len; i++) {
            int b = random.nextBoolean() ? 1 : -1;
            g2d.rotate(random.nextInt(10) * 0.01 * b);
            g2d.setColor(getRandColor(20, 130));
            g2d.drawString(codes.charAt(i) + "", 16 * i + 10, base);
        }
    }

    //下一个验证码
    public void nextCode() {
        generateCode();
        repaint();
        ;
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        codes = generateCode();
        repaint();
//        nextCode();
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }
}

账号密码数据库:

import java.sql.*;

class DataBaseConnect {
    private static final String USER = "root";
    private static final String PASS = "123456";
    private Connection connection;
    private PreparedStatement sql;
    private ResultSet resultSet;

    Connection getConnection() throws SQLException, ClassNotFoundException {
        String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
        Class.forName(JDBC_DRIVER);
        String DB_URl = "jdbc:mysql://root@localhost:3306/library?characterEncoding=utf8";
        connection = DriverManager.getConnection(DB_URl, USER, PASS);
        System.out.println("数据库链接成功");
        return connection;
    }

    public void CloseConnection(Connection connection) throws SQLException {
        if (connection != null)
            connection.close();
    }

    public boolean Select(String user, String pass) throws SQLException, ClassNotFoundException {
        connection = this.getConnection();
        sql = connection.prepareStatement("select *from library.db_账户 ");
        int flag = 0;
        try {
            resultSet = sql.executeQuery();
            while (resultSet.next()) {
                String username = resultSet.getString("username");
                String passWord = resultSet.getString("password");
                if (user.equals(username) && pass.equals(passWord))
                    flag = 1;
            }
        } catch (Exception e) {
            e.printStackTrace();

        }
        if (flag == 1)
            return true;
        else
            return false;
    }

    public boolean Insert(String user, String password) throws SQLException, ClassNotFoundException {
        connection = this.getConnection();
//     sql=connection.prepareStatement("insert into library.db_book(ID,username, password) values(?,?,?)");
        boolean result = this.Select(user, password);
        if (!result) {
            sql = connection.prepareStatement("insert into library.db_账户(username, password) values(?,?)");
//          sql.setInt(1,0);
            sql.setString(1, user);
            sql.setString(2, password);
            sql.executeUpdate();
            return true;
        } else {
            return false;
        }
    }

    public void Delete(String user, String password) throws SQLException, ClassNotFoundException {
        connection = this.getConnection();
        boolean result = this.Select(user, password);
        if (!result) {
            sql = connection.prepareStatement("delete from library.db_账户 where username=?");
            sql.setString(1, user);
//           sql.setString(2,password);
            sql.executeUpdate();

        }
    }

    //更新数据库用户信息
    public void UpData(String user, String passWord) throws SQLException, ClassNotFoundException {
        connection = this.getConnection();
        sql = connection.prepareStatement("update library.db_账户 set username=? where password=?");
        sql.setString(1, user);
        sql.setString(2, passWord);
        sql.executeUpdate();
    }

    public String AddBook(String bookName, String bookAuthor, String bookTime, int number) throws SQLException, ClassNotFoundException {
        connection = this.getConnection();
        sql = connection.prepareStatement("insert into library.db_book(BookName, BookAuthor, BookTime, BookNumber) values(?,?,?,?)");
        sql.setString(1, bookName);
        sql.setString(2, bookAuthor);
        sql.setString(3, bookTime);
        sql.setInt(4, number);
        sql.executeUpdate();
        return "添加书籍成功";
    }

    public boolean SelectBook(String bookName) throws SQLException, ClassNotFoundException {
        connection = this.getConnection();
        sql = connection.prepareStatement("select *from library.db_book ");
        resultSet = sql.executeQuery();
        int flag = 0;
        while (resultSet.next()) {
            String book = resultSet.getString("BookName");
            if (bookName.equals(book))
                flag = 1;
        }
        if (flag == 1)
            return true;
        else
            return false;
    }

    public void DeleteBook(String bookName) throws SQLException, ClassNotFoundException {
        connection = this.getConnection();
        sql = connection.prepareStatement("delete from library.db_book where BookName=?");
        sql.setString(1, bookName);
//           sql.setString(2,password);
        sql.executeUpdate();

    }
}

发布了73 篇原创文章 · 获赞 81 · 访问量 9958

猜你喜欢

转载自blog.csdn.net/qq_41910353/article/details/102990482
今日推荐