Java登录注册窗体完整代码的实现(连接MYSQL数据库)

本文详细介绍了使用Java实现的一个小型项目,包括注册与登录功能的界面设计、数据库连接与操作(如创建表、查询用户等),以及处理用户输入验证的代码片段。
摘要由CSDN通过智能技术生成

1.项目演示

2.项目说明

在注册窗体,用户名或密码输入不能为空,否则会有弹窗提示,如果输入的用户名存在,也会有弹窗提示。在登录窗体,输入的用户名不存在,也会有弹窗提示,同时用户名或密码不能为空。

3.项目代码

项目代码都放在同一个包下,记得修改你的包名。

3.1.数据库代码

create database gui;
use gui;
create TABLE user
(
    id       int unsigned primary key auto_increment,
    username varchar(20) not null unique,
    password varchar(20) not null
) comment '用户';

insert into user(username, password)
values ('lisi', '111');

3.2.java代码

APP.java
package com.example;

import java.sql.SQLException;


/*
启动程序
 */
public class APP {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        new Login();
    }
}
Connect.java
package com.example;

import java.sql.*;
import java.util.ArrayList;

/**
 * 数据库连接
 */
public class Connect {
    public static ArrayList<User> getUser() throws ClassNotFoundException, SQLException {
        ArrayList<User> list = new ArrayList<>();
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection coon = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/gui", "root", "你的数据库密码");
        Statement st = coon.createStatement();
        ResultSet rs = st.executeQuery("select * from  user");
        while (rs.next()) {
            list.add(new User(rs.getString("username"), rs.getString("password")));
        }
        rs.close();
        st.close();
        coon.close();
        return list;
    }

    public static void editSQL(String sql) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection coon = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/gui", "root", "你的数据库密码");
        Statement st = coon.createStatement();
        st.executeUpdate(sql);
        st.close();
        coon.close();
    }
}
Login.java
package com.example;

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.ArrayList;

/**
 * 登录
 */
public class Login extends JFrame implements ActionListener, MouseListener {
    //账号输入框
    JTextField usernameInput = new JTextField();
    //密码输入框
    JPasswordField passwordInput = new JPasswordField();
    //登录按钮
    JButton loginButton = new JButton("点击登录");
    //注册超链接
    JLabel registerLink = new JLabel("<html><a href=\"\">没有账号?点击注册</a></html>");

    public static ArrayList<User> list;

    public Login() throws SQLException, ClassNotFoundException {
        list = Connect.getUser();
        setFroms();
        setLabel();
    }

    //窗体布局
    public void setFroms() {
        this.setSize(500, 500);
        this.setTitle("登录");
        this.setLocationRelativeTo(null);
        this.setAlwaysOnTop(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setResizable(false);
        this.setLayout(null);
        this.setVisible(true);
    }

    //控件
    public void setLabel() {
        registerLink.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//鼠标移到注册超链接上,鼠标箭头变为手形
        registerLink.setBounds(250, 350, 150, 50);
        this.getContentPane().add(registerLink);
        registerLink.addMouseListener(this);


        loginButton.setBounds(160, 300, 100, 25);
        this.getContentPane().add(loginButton);
        loginButton.addActionListener(this);
        JLabel ts1 = new JLabel("用户名:");
        JLabel ts2 = new JLabel("密码:");
        ts1.setBounds(120, 140, 50, 50);
        this.getContentPane().add(ts1);
        ts2.setBounds(120, 180, 50, 50);
        this.getContentPane().add(ts2);


        usernameInput.setBounds(170, 155, 100, 25);
        this.getContentPane().add(usernameInput);
        passwordInput.setBounds(170, 195, 100, 25);
        this.getContentPane().add(passwordInput);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == loginButton) {
            System.out.println("登录");
            if (usernameInput.getText().isEmpty() || passwordInput.getPassword().length == 0) {
                JOptionPane.showMessageDialog(Login.this, "用户名或密码不能输入为空!");
                return;
            }
            String uname = usernameInput.getText();
            char[] pwd = passwordInput.getPassword();
            String password = new String(pwd);
            int index = getIndex(list, uname);
            if (index < 0) {
                JOptionPane.showMessageDialog(Login.this, "用户名不存在!");
            } else {
                if (password.equals(list.get(index).getPassword())) {
                    JOptionPane.showMessageDialog(Login.this, "登陆成功!");
                } else {
                    JOptionPane.showMessageDialog(Login.this, "用户名或密码错误!");
                }
            }
        }
    }

    @Override
    public void mouseClicked(MouseEvent e) {
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        //超链接逻辑
        Object source = e.getSource();
        if (source == registerLink) {
            System.out.println("注册");
            this.setVisible(false);
            try {
                new Register();
            } catch (SQLException ex) {
                throw new RuntimeException(ex);
            } catch (ClassNotFoundException ex) {
                throw new RuntimeException(ex);
            }
        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }

    //方法,判断输入的用户名是否存在
    public int getIndex(ArrayList<User> list, String username) {
        for (int i = 0; i < list.size(); i++) {
            if (username.equals(list.get(i).getUsername())) {
                return i;
            }
        }
        return -1;
    }
}
Register.java
package com.example;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;


/**
 * 注册
 */
public class Register extends JFrame implements ActionListener {
    //账号输入框
    JTextField usernameInput = new JTextField();
    //密码输入框
    JPasswordField passwordInput1 = new JPasswordField();
    JPasswordField passwordInput2 = new JPasswordField();
    //登录按钮
    JButton registerButton = new JButton("点击注册");

    public static ArrayList<User> list;

    public Register() throws SQLException, ClassNotFoundException {
        list = Connect.getUser();
        setFroms();
        setLabel();
    }

    //窗体布局
    public void setFroms() {
        this.setSize(500, 500);
        this.setTitle("注册");
        this.setLocationRelativeTo(null);
        this.setAlwaysOnTop(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setResizable(false);
        this.setLayout(null);
        this.setVisible(true);
    }

    //控件
    public void setLabel() {


        registerButton.setBounds(160, 300, 100, 25);
        this.getContentPane().add(registerButton);
        registerButton.addActionListener(this);
        JLabel ts1 = new JLabel("用户名:");
        JLabel ts2 = new JLabel("输入密码:");
        JLabel ts3 = new JLabel("确认密码:");
        ts1.setBounds(120, 140, 50, 50);
        this.getContentPane().add(ts1);
        ts2.setBounds(120, 180, 60, 50);
        this.getContentPane().add(ts2);
        ts3.setBounds(120, 220, 60, 50);
        this.getContentPane().add(ts3);


        usernameInput.setBounds(170, 155, 100, 25);
        this.getContentPane().add(usernameInput);
        passwordInput1.setBounds(180, 190, 100, 25);
        this.getContentPane().add(passwordInput1);
        passwordInput2.setBounds(180, 230, 100, 25);
        this.getContentPane().add(passwordInput2);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == registerButton) {
            System.out.println("注册");
            if (usernameInput.getText().isEmpty() || passwordInput1.getPassword().length == 0 ||
                    passwordInput2.getPassword().length == 0) {
                JOptionPane.showMessageDialog(Register.this, "账号或密码不能为空");
                return;
            }
            String uname = usernameInput.getText();
            char[] password1 = passwordInput1.getPassword();
            String pwd1 = new String(password1);
            char[] password2 = passwordInput2.getPassword();
            String pwd2 = new String(password2);
            boolean flag = getFlag(uname, list);
            if (flag) {
                JOptionPane.showMessageDialog(Register.this, "用户名已经存在");
            } else {
                if (pwd2.equals(pwd1)) {
                    String sql = "insert into user(username, password)" +
                            "values ('" + uname + "', '" + pwd2 + "');";
                    try {
                        Connect.editSQL(sql);
                    } catch (ClassNotFoundException ex) {
                        throw new RuntimeException(ex);
                    } catch (SQLException ex) {
                        throw new RuntimeException(ex);
                    }
                    JOptionPane.showMessageDialog(Register.this, "注册成功");
                    try {
                        new Login();
                        this.setVisible(false);
                    } catch (SQLException ex) {
                        throw new RuntimeException(ex);
                    } catch (ClassNotFoundException ex) {
                        throw new RuntimeException(ex);
                    }
                } else {
                    JOptionPane.showMessageDialog(Register.this, "两次密码输入不一致");
                }
            }

        }
    }

    //判断用户名是否重复
    public boolean getFlag(String username, ArrayList<User> list) {
        for (int i = 0; i < list.size(); i++) {
            if (username.equals(list.get(i).getUsername())) {
                return true;
            }
        }
        return false;
    }
}
User.java
package com.example;

public class User {

    private String username;
    private String password;

    public User() {

    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些代码示例,帮助您开始编写Java资产管理系统连接MySQL数据库。 首先,您需要下载并安装MySQL数据库,然后创建一个名为“asset_management”的数据库。在该数据库中,您需要创建一个名为“assets”的表,其中包含以下列:id(INT,主键,自动增加),name(VARCHAR),description(VARCHAR),value(DOUBLE)和acquisition_date(DATE)。 接下来,您需要使用Java连接MySQL数据库。这可以通过使用Java JDBC驱动程序来实现。以下是一个示例代码: ```java import java.sql.*; public class MySQLConnector { private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; private static final String DB_URL = "jdbc:mysql://localhost/asset_management"; private static final String USER = "your_username"; private static final String PASS = "your_password"; public static Connection getConnection() { Connection conn = null; try { Class.forName(JDBC_DRIVER); conn = DriverManager.getConnection(DB_URL, USER, PASS); } catch (Exception e) { e.printStackTrace(); } return conn; } } ``` 这个类使用了静态方法`getConnection()`来连接MySQL数据库。您需要将`your_username`和`your_password`分别替换为您的MySQL用户名和密码。 接下来,您可以编写一个Java类来表示资产,并使用该类在Java中显示和管理资产。以下是一个示例代码: ```java import java.util.Date; public class Asset { private int id; private String name; private String description; private double value; private Date acquisitionDate; public Asset(int id, String name, String description, double value, Date acquisitionDate) { this.id = id; this.name = name; this.description = description; this.value = value; this.acquisitionDate = acquisitionDate; } public int getId() { return id; } public String getName() { return name; } public String getDescription() { return description; } public double getValue() { return value; } public Date getAcquisitionDate() { return acquisitionDate; } } ``` 这个类表示一个资产,并包含`id`,`name`,`description`,`value`和`acquisitionDate`属性。您可以使用这个类来在Java中显示和管理资产。 最后,您需要编写Java以显示和管理资产。以下是一个示例代码: ```java import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.Date; public class AssetManagementSystem extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private static final String[] COLUMNS = {"ID", "Name", "Description", "Value", "Acquisition Date"}; private static final String[] FIELD_NAMES = {"Name", "Description", "Value", "Acquisition Date (YYYY-MM-DD)"}; private JTextField[] fields; private JButton addButton; private JTable table; private DefaultTableModel model; private ArrayList<Asset> assets; public AssetManagementSystem() { super("Asset Management System"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); // Create fields for asset details JPanel fieldPanel = new JPanel(new GridLayout(FIELD_NAMES.length, 2)); fields = new JTextField[FIELD_NAMES.length]; for (int i = 0; i < FIELD_NAMES.length; i++) { fieldPanel.add(new JLabel(FIELD_NAMES[i])); fields[i] = new JTextField(); fieldPanel.add(fields[i]); } add(fieldPanel, BorderLayout.NORTH); // Create add button addButton = new JButton("Add Asset"); addButton.addActionListener(this); add(addButton, BorderLayout.SOUTH); // Create table to display assets model = new DefaultTableModel(COLUMNS, 0); table = new JTable(model); JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); // Load assets from database assets = new ArrayList<>(); try { Connection conn = MySQLConnector.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM assets"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String description = rs.getString("description"); double value = rs.getDouble("value"); Date acquisitionDate = rs.getDate("acquisition_date"); Asset asset = new Asset(id, name, description, value, acquisitionDate); assets.add(asset); model.addRow(new Object[] {id, name, description, value, acquisitionDate}); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } // Configure window setSize(800, 600); setVisible(true); } public static void main(String[] args) { new AssetManagementSystem(); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == addButton) { try { Connection conn = MySQLConnector.getConnection(); PreparedStatement stmt = conn.prepareStatement("INSERT INTO assets (name, description, value, acquisition_date) VALUES (?, ?, ?, ?)"); stmt.setString(1, fields[0].getText()); stmt.setString(2, fields[1].getText()); stmt.setDouble(3, Double.parseDouble(fields[2].getText())); stmt.setDate(4, Date.valueOf(fields[3].getText())); stmt.executeUpdate(); stmt.close(); conn.close(); Asset asset = new Asset(assets.size() + 1, fields[0].getText(), fields[1].getText(), Double.parseDouble(fields[2].getText()), Date.valueOf(fields[3].getText())); assets.add(asset); model.addRow(new Object[] {asset.getId(), asset.getName(), asset.getDescription(), asset.getValue(), asset.getAcquisitionDate()}); for (JTextField field : fields) { field.setText(""); } } catch (Exception ex) { ex.printStackTrace(); } } } } ``` 这个使用`Asset`类表示资产,并在中显示和管理资产。包括一个表格来显示资产,一个文本框来输入新资产的详细信息,以及一个“添加资产”按钮来将新资产添加到数据库和表格中。 当用户单击“添加资产”按钮时,连接MySQL数据库并将新资产添加到数据库和表格中。如果发生任何错误,将打印出堆栈跟踪以帮助您调试代码。 希望这个示例代码可以帮助您开始编写Java资产管理系统连接MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值