本文实例为大家分享了java实现登录注册界面的具体代码,供大家参考,具体内容如下
数据库设计既然只是一个登录和注册的界面,数据库方面就只设计一个Admin表,表内有三个值。
id就存登录所需要的账号;
name存名字;
password存储密码
Admin.java
这个类代表用户的实体类,包含三个变量,并对其进行封装
private String id; //帐号
private String name; //姓名
private String password; //密码
Login_Register.java
主程序的入口,创建一个JFrame窗口,窗口包括两个待输入的文本框,以及登录和注册两个按钮。
其中代码框使用JPasswordField类,这样就会使密码文本框中的内容显示星号。
为登录和注册加监听器。
Login.java
在Login_Register中点击登录按钮后就会创建一个新的Login类,该类中会有一个JudgeAdmin方法,用于连接数据库,判断账号密码是否正确。
如果账号正确,会弹出登录成功的窗口,否则弹出账号或密码错误的窗口。
AdminRegister.java
用户注册的图形化界面,包含四个文本框和一个注册按钮。当点击注册按钮时,会创建一个新的Register类,把文本框中的变量传入Register类。
Register.java
用于判断传来的数据是否符合规则,并向数据库添加新用户,
当用户名和账号为空时,会弹出相应的窗口。
并且要求密码框和确认密码框中的密码完全一致,否则不能注册。
如果所有的条件都满足,向数据库中添加数据,并弹出注册成功的窗口。
Admin.java
package src;
/*
管理员实体
*/
public class Admin {
private String id; //编号
private String name; //姓名
private String password; //密码
void setID(String id) {
this.id=id;
}
void setName(String name) {
this.name=name;
}
void setPassword(String password) {
this.password=password;
}
String getID() {
return this.id;
}
String getName() {
return this.name;
}
String getPassword() {
return this.password;
}
}
Login_Register.java
package src;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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 Login_Register extends JFrame{
Login_Register() {
init();
}
//登录界面初始化
public void init() {
JFrame frame = new JFrame("登录");
frame.setLayout(null);
JLabel nameStr = new JLabel("账号:");
nameStr.setBounds(250, 200, 100, 25);
frame.add(nameStr);
JLabel passwordStr = new JLabel("密码:");
passwordStr.setBounds(250, 250, 100, 25);
frame.add(passwordStr);
JTextField userID = new JTextField();
userID.setBounds(300, 200, 150, 25);
frame.add(userID);
JPasswordField password = new JPasswordField();
password.setBounds(300, 250, 150, 25);
frame.add(password);
JButton buttonlogin = new JButton("登录");
buttonlogin.setBounds(275, 300, 70, 25);
frame.add(buttonlogin);
JButton buttonregister = new JButton("注册");
buttonregister.setBounds(375, 300, 70, 25);
frame.add(buttonregister);
frame.setBounds(400, 100, 800, 640);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//为登录按钮添加监听器
buttonlogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String ID = userID.getText();
String passwd = new String (password.getPassword());
//创建一个Admin用户,把输入框中的用户名密码和提出来
Admin admin = new Admin();
admin.setID(ID);
admin.setPassword(passwd);
//登录
Login login = new Login();
login.setAdmin(admin);
if(login.JudgeAdmin()==0) {
//弹出账号或密码错误的窗口
JOptionPane.showMessageDialog(null, "账号或密码错误", "账号或密码错误", JOptionPane.WARNING_MESSAGE);
//清除密码框中的信息
password.setText("");
//清除账号框中的信息
userID.setText("");
//System.out.println("登陆失败");
} else {
//弹出登录成功的窗口
JOptionPane.showMessageDialog(null, "登陆成功", "登陆成功", JOptionPane.NO_OPTION);
//点击确定后会跳转到主窗口
frame.setVisible(false);
}
}
});
//为注册按钮添加监听器
buttonregister.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//注册页面
frame.setVisible(false);
AdminRegister ar = new AdminRegister();
}
});
}
public static void main(String []args) {
//主程序
//登录窗口
Login_Register login_register = new Login_Register();
}
}
Login.java
package src;
/*
处理用户登录
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Login {
Admin admin;
void setAdmin(Admin admin) {
this.admin=admin;
//System.out.println(this.admin.getPassword()+" " + this.admin.getID());
}
/*
* JudgeAdmin()方法
* 判断Admin的ID和密码是否正确,如果正确,显示登录成功
* 如果错误,弹出一个窗口,显示账号或密码错误
*/
private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/hotelsql?serverTimezone=UTC&characterEncoding=utf-8";
private String user = "root";
private String password = "12481632";
public boolean login(Admin admin) throws SQLException, ClassNotFoundException {
String sql="select * from admin where id=? and password=?";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, admin.getID());
ps.setString(2, admin.getPassword());
ResultSet rs = ps.executeQuery();
int ans = 0;
if(rs.next()) {
ans = 1;
}
rs.close();
ps.close();
conn.close();
if(ans == 1) {
return true;
}
else return false;
}
int JudgeAdmin() {
try {
if(login(this.admin)) {
System.out.println("登录成功");
return 1;
}else {
return 0;
}
}catch(Exception e) {
//e.printStackTrace();
//System.out.println("!!!!!!!!!");
}
return 0;
}
}
AdminRegister.java
package src;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/*
* 管理员注册界面
*
*/
public class AdminRegister extends JFrame{
AdminRegister () {
init();
}
void init() {
JFrame frame = new JFrame("注册管理员账号");
frame.setLayout(null);
JLabel nameStr = new JLabel("用户名:");
nameStr.setBounds(250, 150, 100, 25);
frame.add(nameStr);
JLabel IDStr = new JLabel("账号:");
IDStr.setBounds(250, 200, 100, 25);
frame.add(IDStr);
JLabel passwordStr = new JLabel("密码:");
passwordStr.setBounds(250, 250, 100, 25);
frame.add(passwordStr);
JLabel confrimStr = new JLabel("确认密码:");
confrimStr.setBounds(250, 300, 100, 30);
frame.add(confrimStr);
JTextField userName = new JTextField();
userName.setBounds(320, 150, 150, 25);
frame.add(userName);
JTextField userID = new JTextField();
userID.setBounds(320, 200, 150, 25);
frame.add(userID);
JPasswordField password = new JPasswordField();
password.setBounds(320, 250, 150, 25);
frame.add(password);
JPasswordField confrimPassword = new JPasswordField();
confrimPassword.setBounds(320, 300, 150, 25);
frame.add(confrimPassword);
JButton buttonregister = new JButton("注册");
buttonregister.setBounds(350, 350, 70, 25);
frame.add(buttonregister);
frame.setBounds(400, 100, 800, 640);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//为注册按钮增加监听器
buttonregister.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = userName.getText();
String ID = userID.getText();
String passwd = new String (password.getPassword());
String confrimpasswd = new String (confrimPassword.getPassword());
//创建Register类
Register register = new Register();
register.setID(ID);
register.setName(name);
register.setPassword(passwd);
register.setconfirmpasswd(confrimpasswd);
//如果注册成功,返回登录界面
try {
if(register.JudgeRegister()) {
frame.setVisible(false);
Login_Register login_register = new Login_Register();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
}
}
Register.java
package src;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class Register {
String name;
String ID;
String password;
String confirmpassword;
private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/hotelsql?serverTimezone=UTC&characterEncoding=utf-8";
private String user = "root";
private String sqlpassword = "12481632";
void setName(String name) {
this.name = name;
}
void setID(String ID) {
this.ID = ID;
}
void setPassword(String password) {
this.password = password;
}
void setconfirmpasswd(String confirmpassword) {
this.confirmpassword = confirmpassword;
}
//判断注册的账号是否符合规则
boolean JudgeRegister() throws SQLException, ClassNotFoundException {
if(this.name.equals("")) {
JOptionPane.showMessageDialog(null, "用户名不能为空!", "用户名", JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.ID.equals("")) {
JOptionPane.showMessageDialog(null, "账号不能为空!", "账号为空", JOptionPane.ERROR_MESSAGE);
return false;
}
if(this.password.equals("")) {
JOptionPane.showMessageDialog(null, "密码不能为空!", "密码为空", JOptionPane.ERROR_MESSAGE);
return false;
}
if(!this.password.equals(this.confirmpassword)) {
JOptionPane.showMessageDialog(null, "两次输入的密码不一致!", "密码不一致", JOptionPane.ERROR_MESSAGE);
return false;
}
//符合规则,弹出注册成功的窗口,并将账号添加数据库
JOptionPane.showMessageDialog(null, "注册成功");
addAdmin();
return true;
}
//向数据库添加Admin账户
void addAdmin() throws ClassNotFoundException, SQLException {
String sql="insert into admin (id, name, password) values (?,?,?)";
Class.forName(driver);
try {
Connection conn = DriverManager.getConnection(url, user, sqlpassword);
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, this.ID);
ps.setString(2, this.name);
ps.setString(3, this.password);
ps.executeUpdate();
ps.close();
conn.close();
}catch(SQLException ex) {
System.out.println("添加用户失败!");
}
}
}