java实现登录注册


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

public class LoginRegisterGUI {
private JFrame frame;
private JPanel panel;
private JTextField usernameField;
private JPasswordField passwordField;
private JButton loginButton, registerButton;

public LoginRegisterGUI() {
// 初始化窗口
frame = new JFrame("用户登录/注册");
frame.setSize(350, 250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);

// 初始化面板
panel = new JPanel();
frame.add(panel);
placeComponents(panel);

frame.setVisible(true);
}

private void placeComponents(JPanel panel) {
panel.setLayout(null);

// 用户名标签和输入框
JLabel userLabel = new JLabel("用户名:");
userLabel.setBounds(50, 30, 80, 25);
panel.add(userLabel);

usernameField = new JTextField(20);
usernameField.setBounds(140, 30, 150, 25);
panel.add(usernameField);

// 密码标签和输入框
JLabel passwordLabel = new JLabel("密码:");
passwordLabel.setBounds(50, 70, 80, 25);
panel.add(passwordLabel);

passwordField = new JPasswordField(20);
passwordField.setBounds(140, 70, 150, 25);
panel.add(passwordField);

// 登录按钮
loginButton = new JButton("登录");
loginButton.setBounds(50, 120, 100, 30);
panel.add(loginButton);

// 注册按钮
registerButton = new JButton("注册");
registerButton.setBounds(190, 120, 100, 30);
panel.add(registerButton);

// 绑定事件
loginButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleLogin();
}
});

registerButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleRegister();
}
});
}

// 处理登录
private void handleLogin() {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());

if (SQLiteDBHelper.loginUser(username, password)) {
JOptionPane.showMessageDialog(frame, "登录成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(frame, "用户名或密码错误!", "错误", JOptionPane.ERROR_MESSAGE);
}
}

// 处理注册
private void handleRegister() {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());

if (SQLiteDBHelper.registerUser(username, password)) {
JOptionPane.showMessageDialog(frame, "注册成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(frame, "注册失败,用户名可能已存在!", "错误", JOptionPane.ERROR_MESSAGE);
}
}

public static void main(String[] args) {
// 确保数据库表已创建
SQLiteDBHelper.createTable();

// 启动GUI
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new LoginRegisterGUI();
}
});
}
}




import java.sql.*;

public class SQLiteDBHelper {
private static final String URL = "jdbc:sqlite:users.db";

// 创建数据库连接
public static Connection connect() {
try {
return DriverManager.getConnection(URL);
} catch (SQLException e) {
System.out.println("数据库连接失败: " + e.getMessage());
return null;
}
}

// 创建用户表
public static void createTable() {
String createTableSQL = "CREATE TABLE IF NOT EXISTS users (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT," +
"username TEXT NOT NULL UNIQUE," +
"password TEXT NOT NULL);";

try (Connection conn = connect(); Statement stmt = conn.createStatement()) {
stmt.execute(createTableSQL);
} catch (SQLException e) {
System.out.println("创建表失败: " + e.getMessage());
}
}

// 用户注册
public static boolean registerUser(String username, String password) {
String insertSQL = "INSERT INTO users (username, password) VALUES (?, ?)";

try (Connection conn = connect();
PreparedStatement pstmt = conn.prepareStatement(insertSQL)) {
pstmt.setString(1, username);
pstmt.setString(2, password);
pstmt.executeUpdate();
return true;
} catch (SQLException e) {
System.out.println("注册失败: " + e.getMessage());
return false;
}
}

// 用户登录
public static boolean loginUser(String username, String password) {
String querySQL = "SELECT * FROM users WHERE username = ? AND password = ?";

try (Connection conn = connect();
PreparedStatement pstmt = conn.prepareStatement(querySQL)) {
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
return rs.next();
} catch (SQLException e) {
System.out.println("登录失败: " + e.getMessage());
return false;
}
}
}


posted on   shenhshihao  阅读(4)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示