Java编写一个用户注册与登录的界面,先注册用户名和密码到数据库表user表,再登录
时间: 2024-03-05 15:53:59 浏览: 22
好的,我可以提供一个简单的Java Swing界面程序示例,实现用户注册和登录功能。
首先,需要创建一个名为User的Java类,用于保存用户的用户名和密码信息:
```java
public class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
```
接下来,需要创建一个包含用户名和密码输入框、注册和登录按钮的Swing界面。在用户点击注册按钮时,将输入的用户名和密码信息保存到数据库表user中;在用户点击登录按钮时,从数据库中查询是否存在对应的用户名和密码信息。
下面是一个简单的实现示例:
```java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
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 UserInterface extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField usernameField;
private JPasswordField passwordField;
public UserInterface() {
// 创建用户名和密码输入框
JLabel usernameLabel = new JLabel("用户名");
JLabel passwordLabel = new JLabel("密码");
usernameField = new JTextField(20);
passwordField = new JPasswordField(20);
// 创建注册和登录按钮
JButton registerButton = new JButton("注册");
JButton loginButton = new JButton("登录");
registerButton.addActionListener(this);
loginButton.addActionListener(this);
// 创建面板,并添加组件
JPanel panel = new JPanel();
panel.add(usernameLabel);
panel.add(usernameField);
panel.add(passwordLabel);
panel.add(passwordField);
panel.add(registerButton);
panel.add(loginButton);
add(panel);
// 设置窗口属性
setTitle("用户注册和登录");
setSize(300, 150);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("注册")) {
registerUser();
} else if (e.getActionCommand().equals("登录")) {
loginUser();
}
}
private void registerUser() {
// 获取输入的用户名和密码
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
// 检查用户名和密码是否为空
if (username.isEmpty() || password.isEmpty()) {
JOptionPane.showMessageDialog(this, "用户名和密码不能为空!");
return;
}
// 保存用户信息到数据库表user中
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password")) {
PreparedStatement ps = conn.prepareStatement("INSERT INTO user(username, password) VALUES (?, ?)");
ps.setString(1, username);
ps.setString(2, password);
ps.executeUpdate();
JOptionPane.showMessageDialog(this, "注册成功!");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "注册失败:" + ex.getMessage());
}
}
private void loginUser() {
// 获取输入的用户名和密码
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
// 检查用户名和密码是否为空
if (username.isEmpty() || password.isEmpty()) {
JOptionPane.showMessageDialog(this, "用户名和密码不能为空!");
return;
}
// 从数据库中查询是否存在对应的用户名和密码信息
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password")) {
PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE username = ? AND password = ?");
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
List<User> userList = new ArrayList<>();
while (rs.next()) {
userList.add(new User(rs.getString("username"), rs.getString("password")));
}
if (userList.size() > 0) {
JOptionPane.showMessageDialog(this, "登录成功!");
} else {
JOptionPane.showMessageDialog(this, "用户名或密码错误!");
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "登录失败:" + ex.getMessage());
}
}
public static void main(String[] args) {
new UserInterface();
}
}
```
注意,在运行程序之前需要先创建一个名为test的数据库,并在其中创建一个名为user的表,包含两个字段:username和password。同时,需要将程序中的数据库连接信息(URL、用户名、密码)替换为实际的值。
希望这个示例程序能够对你有所帮助!