利用Mysql和java制作用户登录界面

#题目要求#

在Java用使用GUI面板进行用户登录操作,其中用户登录所需的账号密码存储在数据库中,要根据输入的账号密码是否正确来判断是否登录成功,并提出弹窗提示,然后再进行跳转到操作页面......

#思路,步骤#

1.首先需要再数据库中创建库和所需表

2.确定表中所需的主键和外键(本题需要的仅为主键,外键要求在后续体现)

3.在java中创建entry,dao,service,(util),view包并创建相应类

4.细节步骤在具体代码部分体现

#代码实现#

1.数据库,表的创建

第一部分需要用到的只有user表,但在实际操作中建议大家在进行实践前列出所有表然后找到对应关系再操作。这一部分就不进行细致化讲解了,我是在Navicat中直接创建的(很方便)。

2.util—operate方法类

向本体各部分具体操作提供了数据库和java的连接

private static final String URL = "jdbc:mysql://localhost:3306/8_13_project(创建表的库名,自己定义)?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai(让数据库同步时间的操作直接复制粘贴就好)";
    private static final String CLASSNAME = "com.mysql.cj.jdbc.Driver";(事先导入的jar包下的Driver,该题全部操作的前提是该包)
    private static final String USER = "root";
    private static final String PASSWORD = "******";(创建数据库时自己设定的账号密码)

/*
	 * 获得链接
	 */

	public static Connection getConnection() {
		try {
			Class.forName(CLASSNAME);
			return DriverManager.getConnection(URL, USER, PASSWORD);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {

		}
		return null;
	}

	/*
	 * 获得语句对象
	 */

	public static PreparedStatement getPrepareStatement(Connection conn, String sql) {
		try {
			return conn.prepareStatement(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {

		}
		return null;
	}

	/*
	 * 查询
	 */

	public static ResultSet query(PreparedStatement ps) {
		try {
			return ps.executeQuery();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {

		}
		return null;
	}

	

	/*
	 * 关闭
	 */

	public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
		try {
			rs.close();
			ps.close();
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			
		}
	}
}

3.entry—User类

根据user表中的字段来定义User类中的属性,记得提供get,set方法

4.dao—UserDao(数据访问对象,用于java和user表的连接后的具体操作)

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import entry.User;
import util.operate;

public class UserDao {

	public User queryByUsername(User user) {
		Connection conn = operate.getConnection();
		String sql = "select * from user where username=? and password=?";
		PreparedStatement ps = operate.getPrepareStatement(conn, sql);
		ResultSet rs = null;
		try {
			// 传入参数
			ps.setString(1, user.getUserName());
			ps.setString(2, user.getPassword());
			// 将ps带入数据库进行查询
			rs = operate.query(ps);
			if (rs.next()) {
				User s = new User();
				s.setId(rs.getInt(1));
				s.setUserName(rs.getString(2));
				s.setPassword(rs.getString(3));
				s.setGender(rs.getString(4));
				return s;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			operate.close(rs, ps, conn);
		}
		return null;
	}

	
}

5.service—UserService

用于GUI面板功能的实现和调用UserDao的方法

package service;

import java.util.List;

import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import dao.UserDao;
import entry.User;
import view.userVew;

public class UserService {
	UserDao dao = new UserDao();

	public void login(User user) {
		User s = dao.queryByUsername(user);
		if (s != null) {
			JOptionPane.showMessageDialog(null, "登录成功");
			// 跳转页面
			userVew frame = new userVew();
			frame.setVisible(true);
			frame.setLocationRelativeTo(null);
		} else {
			JOptionPane.showMessageDialog(null, "登录失败,用户名或者密码错误");
		}
	}
	
	
}

6.view—panel(用户面板创建)

package view;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import entry.User;
import service.UserService;

import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class panel extends JFrame {

	private JPanel contentPane;
	private JTextField usernameField;
	private JTextField passwordField_1;
	private UserService userService = new UserService();

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					panel frame = new panel();
					frame.setVisible(true);
					frame.setLocationRelativeTo(null);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public panel() {
		setTitle("\u4E60\u9898\u96C6");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 1068, 707);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		usernameField = new JTextField();
		usernameField.setBounds(179, 166, 632, 57);
		contentPane.add(usernameField);
		usernameField.setColumns(10);
		
		passwordField_1 = new JTextField();
		passwordField_1.setBounds(179, 312, 632, 57);
		contentPane.add(passwordField_1);
		passwordField_1.setColumns(10);
		
		JButton selectButton = new JButton("\u767B\u5F55");
		selectButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				User user = new User();
				user.setUserName(usernameField.getText());
				user.setPassword(passwordField_1.getText());
				userService.login(user);
			}
		});
		selectButton.setBounds(413, 462, 165, 47);
		contentPane.add(selectButton);
		
		JLabel lblNewLabel = new JLabel("\u7528\u6237\u540D");
		lblNewLabel.setBounds(179, 141, 81, 21);
		contentPane.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("\u5BC6\u7801");
		lblNewLabel_1.setBounds(179, 285, 81, 21);
		contentPane.add(lblNewLabel_1);
	}
}

面板展示:

#成果展示#

下图为跳转后页面,为后续制作步骤,别急嘿嘿嘿

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的用JavaMySQL制作登录界面的示例代码。在这个例子中,我们将使用JDBC连接MySQL数据库,并使用Swing库创建登录界面。 首先,需要导入必要的库: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; ``` 然后,创建一个JFrame窗口,并在其中添加用户名和密码的输入框以及登录按钮: ```java public class LoginFrame extends JFrame implements ActionListener { private JLabel label1, label2; private JTextField tf; private JPasswordField pf; private JButton loginBtn; public LoginFrame() { setTitle("登录"); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); label1 = new JLabel("用户名: "); label2 = new JLabel("密 码: "); tf = new JTextField(20); pf = new JPasswordField(20); loginBtn = new JButton("登录"); loginBtn.addActionListener(this); JPanel panel = new JPanel(new GridLayout(3, 1)); panel.add(label1); panel.add(tf); panel.add(label2); panel.add(pf); panel.add(loginBtn); add(panel); setVisible(true); } } ``` 接下来,我们需要添加一个ActionListener来处理登录按钮的点击事件。在这个事件中,我们将从输入框中获取用户名和密码,并使用JDBC连接MySQL数据库进行身份验证: ```java public class LoginFrame extends JFrame implements ActionListener { // ... public void actionPerformed(ActionEvent e) { String username = tf.getText(); String password = new String(pf.getPassword()); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/login", "root", "password"); ps = conn.prepareStatement("SELECT * FROM users WHERE username = ? AND password = ?"); ps.setString(1, username); ps.setString(2, password); rs = ps.executeQuery(); if (rs.next()) { JOptionPane.showMessageDialog(null, "登录成功!"); } else { JOptionPane.showMessageDialog(null, "用户名或密码错误!"); } } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (ps != null) ps.close(); if (conn != null) conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } } } } ``` 在这个示例中,我们假设数据库名为login,用户名为root,密码为password,表名为users,列名为username和password。 最后,我们需要在main方法中创建LoginFrame并显示它: ```java public class Main { public static void main(String[] args) { new LoginFrame(); } } ``` 这就是一个简单的用JavaMySQL制作登录界面的示例代码。当然,实际开发中还需要考虑安全性、异常处理等问题,这里只是提供一个基本的参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值