JDBC + swing 实例 ——注册登陆界面

介绍

注册登陆小界面,实现了:

  1. 用户的登陆,包括:
    1. 验证用户名密码是否为空
    2. 验证用户名和密码是否正确
    3. 清空输入框
  2. 用户的注册,包括:
    1. 产生新的注册框
    2. 验证注册用户名密码是否为空
    3. 验证密码和确认密码是否一致
    4. 验证用户名是否已存在
    5. 清空输入框
  3. 退出,包括
    1. 退出当前窗口

0. 先放结果图

这里写图片描述

1. 数据库描述

  • 用的是 MySQL
CREATE DATABASE info;
CREATE TABLE info(username VARCHAR(20),password VARCHAR(20));

2. GetConnection 类

  • 获得数据库连接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class GetConnection {

    private static Connection conn = null;

    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/info", "root", "root");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConn() {
        return conn;
    }
}

3. test 类

  • 实现了登陆界面的绘制
  • 实现了登陆和退出的监听器
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

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

public class test extends JFrame{
    private JTextField tusername = null;
    private JPasswordField tpassword = null;

    public void launchFrame() {

        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p3 = new JPanel();
        tusername = new JTextField(15);
        tpassword = new JPasswordField(15);
        JButton bRegister = new JButton("注册");
        JButton bLand = new JButton("登陆");
        JButton bExit = new JButton("退出");

        setLayout(new GridLayout(4,2));
        p1.add(new JLabel("用户名:   "));
        p1.add(tusername);
        add(p1);
        p2.add(new JLabel("用户密码:"));
        p2.add(tpassword);
        add(p2);
        p3.add(bRegister);
        p3.add(bLand);
        p3.add(bExit);
        add(p3);


        bLand.addActionListener(Register());
        bRegister.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new Register().launchRegister();
            }
        });
        bExit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });

        setTitle("注册登陆");
        pack();
        setLocation(300, 300);
        setVisible(true);
    }

    private ActionListener Register() {
        return new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String username = tusername.getText();
                String password = tpassword.getText();
                if(username.length()==0 || password.length()==0) {
                    JOptionPane.showMessageDialog(null, "账号或密码不为空!");
                    Clear();
                    return ;
                }
                try {
                    Connection conn = GetConnection.getConn();
                    Statement stmt = conn.createStatement();
                    ResultSet rs = stmt.executeQuery("SELECT * FROM info");
                    while(rs.next()) {
                        if(rs.getString(1).equals(username) && rs.getString(2).equals(password)) {
                            JOptionPane.showMessageDialog(null, "登陆成功!");
                            Clear();
                            return ;
                        }   
                    }
                    JOptionPane.showMessageDialog(null, "账号或密码错误!");
                } catch (HeadlessException e1) {
                    e1.printStackTrace();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }finally {
                    Clear();
                }
            }

            private void Clear() {
                tusername.setText("");
                tpassword.setText("");
            }
        };
    }

    public static void main(String[] args) throws Exception {
        new test().launchFrame();
    }
}

4. Register 类

  • 实现了注册界面
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

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

public class Register extends JFrame{

    public void launchRegister() {
        JPanel jp1 = new JPanel();
        JPanel jp2 = new JPanel();
        JPanel jp3 = new JPanel();
        JPanel jp4 = new JPanel();
        JTextField t1 = new JTextField(15);
        JPasswordField t2 = new JPasswordField(15);
        JPasswordField t3 = new JPasswordField(15);
        JButton b1 = new JButton("注册");
        JButton b2 = new JButton("退出");

        setLayout(new GridLayout(4,1));
        jp1.add(new JLabel("  用户名:"));
        jp1.add(t1);
        this.add(jp1);

        jp2.add(new JLabel("      密码:"));
        jp2.add(t2);
        this.add(jp2);

        jp3.add(new JLabel("确认密码:"));
        jp3.add(t3);
        this.add(jp3);

        jp4.add(b1);
        jp4.add(b2);
        this.add(jp4);

        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String username = t1.getText();
                String password = t2.getText();
                if(!password.equals(t3.getText())) {
                    JOptionPane.showMessageDialog(null, "密码不一致,请重新输入");
                    Clear(t1, t2, t3);
                    return ;
                }
                if(username.length()==0 || password.length()==0) {
                    JOptionPane.showMessageDialog(null, "账号或密码不为空!");
                    Clear(t1, t2, t3);
                    return ;
                }
                try {
                    Connection conn = GetConnection.getConn();
                    Statement stmt = conn.createStatement();
                    ResultSet rs = stmt.executeQuery("select * from info");
                    while(rs.next()) {
                        if(rs.getString(1).equals(username)) {
                            JOptionPane.showMessageDialog(null, "用户已存在!");
                            Clear(t1, t2, t3);
                            return ;
                        }
                    }
                    stmt.execute("insert info values('" + username + "','" + password + "')");
                    JOptionPane.showMessageDialog(null, "注册成功!");
                    dispose();
                } catch (SQLException e) {
                    e.printStackTrace();
                    JOptionPane.showMessageDialog(null, "注册失败!");
                }
                Clear(t1, t2, t3);
            }

            private void Clear(JTextField t1, JTextField t2, JTextField t3) {
                t1.setText("");
                t2.setText("");
                t3.setText("");
            }
        });

        b2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });


        this.setLocation(400, 400);
        this.pack();
        this.setSize(300,300);
        this.setVisible(true);
    }

}

猜你喜欢

转载自blog.csdn.net/liyuanyue2017/article/details/80516528