用Java写一个登录注册
时间: 2023-07-18 09:33:49 浏览: 44
好的,下面是一个简单的登录注册系统的Java代码实现。这里使用MySQL数据库,以及Swing库实现界面。
1. 数据库设计
首先需要在MySQL中创建一个名为user的数据库,包括一个名为users的表格,定义字段为id、username和password。
```sql
CREATE DATABASE user;
USE user;
CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY unique_username (username)
);
```
2. 界面设计
使用Swing库实现登录界面和注册界面:
```java
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginRegisterSystem {
public static void main(String[] args) {
// 创建登录界面
JFrame loginFrame = new JFrame("登录");
loginFrame.setSize(300, 200);
loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel loginPanel = new JPanel();
loginFrame.add(loginPanel);
// 添加用户名输入框
JLabel nameLabel = new JLabel("用户名:");
JTextField nameField = new JTextField(20);
loginPanel.add(nameLabel);
loginPanel.add(nameField);
// 添加密码输入框
JLabel passwordLabel = new JLabel("密码:");
JPasswordField passwordField = new JPasswordField(20);
loginPanel.add(passwordLabel);
loginPanel.add(passwordField);
// 添加登录按钮
JButton loginButton = new JButton("登录");
loginPanel.add(loginButton);
// 登录按钮点击事件
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String password = new String(passwordField.getPassword());
boolean success = login(name, password);
if (success) {
JOptionPane.showMessageDialog(loginFrame, "登录成功!");
} else {
JOptionPane.showMessageDialog(loginFrame, "用户名或密码错误!");
}
}
});
// 创建注册界面
JFrame registerFrame = new JFrame("注册");
registerFrame.setSize(300, 200);
registerFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel registerPanel = new JPanel();
registerFrame.add(registerPanel);
// 添加用户名输入框
JLabel registerNameLabel = new JLabel("用户名:");
JTextField registerNameField = new JTextField(20);
registerPanel.add(registerNameLabel);
registerPanel.add(registerNameField);
// 添加密码输入框
JLabel registerPasswordLabel = new JLabel("密码:");
JPasswordField registerPasswordField = new JPasswordField(20);
registerPanel.add(registerPasswordLabel);
registerPanel.add(registerPasswordField);
// 添加注册按钮
JButton registerButton = new JButton("注册");
registerPanel.add(registerButton);
// 注册按钮点击事件
registerButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = registerNameField.getText();
String password = new String(registerPasswordField.getPassword());
boolean success = register(name, password);
if (success) {
JOptionPane.showMessageDialog(registerFrame, "注册成功!");
} else {
JOptionPane.showMessageDialog(registerFrame, "用户名已存在!");
}
}
});
// 创建主界面
JFrame mainFrame = new JFrame("主界面");
mainFrame.setSize(300, 200);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
mainFrame.add(mainPanel);
JLabel mainLabel = new JLabel("欢迎登录!");
mainPanel.add(mainLabel);
// 显示登录界面
loginFrame.setVisible(true);
// 切换到注册界面
JButton toRegisterButton = new JButton("没有账号?注册一个");
loginPanel.add(toRegisterButton);
toRegisterButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
loginFrame.setVisible(false);
registerFrame.setVisible(true);
}
});
// 切换到登录界面
JButton toLoginButton = new JButton("已有账号?返回登录");
registerPanel.add(toLoginButton);
toLoginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
registerFrame.setVisible(false);
loginFrame.setVisible(true);
}
});
}
}
```
3. 功能实现
实现登录和注册功能,需要使用JDBC连接数据库:
```java
import java.sql.*;
public class LoginRegisterSystem {
// 数据库连接信息
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost/user";
private static final String USER = "root";
private static final String PASSWORD = "123456";
// 登录方法
private static boolean login(String name, String password) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
boolean success = false;
try {
// 注册JDBC驱动
Class.forName(JDBC_DRIVER);
// 打开连接
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 执行查询
stmt = conn.createStatement();
String sql = "SELECT * FROM users WHERE username='" + name + "' AND password='" + password + "'";
rs = stmt.executeQuery(sql);
// 判断查询结果
if (rs.next()) {
success = true;
} else {
success = false;
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return success;
}
// 注册方法
private static boolean register(String name, String password) {
Connection conn = null;
Statement stmt = null;
boolean success = false;
try {
// 注册JDBC驱动
Class.forName(JDBC_DRIVER);
// 打开连接
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 执行查询
stmt = conn.createStatement();
String sql = "INSERT INTO users (username, password) VALUES ('" + name + "', '" + password + "')";
int cnt = stmt.executeUpdate(sql);
// 判断查询结果
if (cnt == 1) {
success = true;
} else {
success = false;
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
try {
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return success;
}
}
```
这只是一个简单的框架,具体的实现还需要根据具体需求进行调整。例如,可以添加输入校验、密码加密等增强安全性。