用Java写出利用GUI和数据库,参考【例14-数据库编程应用举例】,实现一个注册和登录程序。注册时,应向用户提示“注册成功!”或“id不能重复”;登录时,应向用户提示“登录成功”或“登录失败,重新登录”。

时间: 2023-09-24 10:02:28 浏览: 36
好的,这里是一个用Java实现的注册和登录程序,使用了Swing作为GUI界面,MySQL作为数据库。 首先,我们需要在MySQL中创建一个名为"users"的表,用来存储用户的ID、用户名和密码信息。表结构如下: ``` CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50), password VARCHAR(50) ); ``` 接下来,我们需要编写Java代码来连接数据库,创建GUI界面,并实现注册和登录功能。下面是完整的代码: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; public class RegisterLogin extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; // GUI组件 private JLabel label1 = new JLabel("ID:"); private JLabel label2 = new JLabel("用户名:"); private JLabel label3 = new JLabel("密码:"); private JTextField textField1 = new JTextField(); private JTextField textField2 = new JTextField(); private JPasswordField passwordField = new JPasswordField(); private JButton button1 = new JButton("注册"); private JButton button2 = new JButton("登录"); // 数据库连接相关 private Connection conn = null; private Statement stmt = null; public RegisterLogin() { // 设置GUI界面 setTitle("注册和登录"); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setResizable(false); JPanel panel1 = new JPanel(new GridLayout(3, 2)); panel1.add(label1); panel1.add(textField1); panel1.add(label2); panel1.add(textField2); panel1.add(label3); panel1.add(passwordField); JPanel panel2 = new JPanel(new FlowLayout()); panel2.add(button1); panel2.add(button2); Container contentPane = getContentPane(); contentPane.add(panel1, BorderLayout.CENTER); contentPane.add(panel2, BorderLayout.SOUTH); // 添加事件监听器 button1.addActionListener(this); button2.addActionListener(this); // 连接数据库 try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); stmt = conn.createStatement(); } catch (Exception e) { e.printStackTrace(); } } public void actionPerformed(ActionEvent e) { if (e.getSource() == button1) { // 注册 String id = textField1.getText(); String username = textField2.getText(); String password = new String(passwordField.getPassword()); try { // 检查ID是否已经存在 ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE id = " + id); if (rs.next()) { JOptionPane.showMessageDialog(this, "id不能重复"); } else { // 插入新用户 stmt.executeUpdate("INSERT INTO users (id, username, password) VALUES (" + id + ", '" + username + "', '" + password + "')"); JOptionPane.showMessageDialog(this, "注册成功!"); } } catch (Exception ex) { ex.printStackTrace(); } } else if (e.getSource() == button2) { // 登录 String id = textField1.getText(); String password = new String(passwordField.getPassword()); try { // 检查用户是否存在 ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE id = " + id + " AND password = '" + password + "'"); if (rs.next()) { JOptionPane.showMessageDialog(this, "登录成功"); } else { JOptionPane.showMessageDialog(this, "登录失败,重新登录"); } } catch (Exception ex) { ex.printStackTrace(); } } } public static void main(String[] args) { RegisterLogin frame = new RegisterLogin(); frame.setVisible(true); } } ``` 在代码中,我们首先创建了GUI界面,并将按钮添加了事件监听器。然后,在构造函数中连接了MySQL数据库,并创建了Statement对象。在事件监听器中,我们根据用户的操作来执行相应的SQL语句,实现了注册和登录功能,并使用JOptionPane类来显示提示信息。最后,我们在main方法中创建了RegisterLogin对象并显示GUI界面。 需要注意的是,在实际使用中,我们应该将连接数据库的相关信息(如数据库地址、用户名和密码)保存在配置文件中,并使用Properties类或其他相关类来读取配置信息,以提高程序的安全性和可维护性。

相关推荐

最新推荐

recommend-type

Java GUI编程实现在线聊天室

主要为大家详细介绍了Java GUI编程实现在线聊天室,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Java将数据库的数据展示到JTable表格中

Mysql数据库内容展示写死版 import javax.swing.*; import java.awt.*; import java.sql.*; public class XieSiBan extends JFrame { public static void main(String[] args) { try { // 加载MySql驱动 Class....
recommend-type

java利用多线程和Socket实现猜拳游戏

主要为大家详细介绍了java利用多线程和Socket实现猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

基于GUI的网络通信程序设计.docx

1. 设计一个基于GUI的客户-服务器的通信应用程序,如图1,图2所示。 图1 Socket通信服务器端界面 图2 Socket通信客户端界面 2.图1为Socket通信服务器端界面,点击该界面中的【Start】按钮,启动服务器监
recommend-type

java GUI实现五子棋游戏

主要为大家详细介绍了java GUI实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

list根据id查询pid 然后依次获取到所有的子节点数据

可以使用递归的方式来实现根据id查询pid并获取所有子节点数据。具体实现可以参考以下代码: ``` def get_children_nodes(nodes, parent_id): children = [] for node in nodes: if node['pid'] == parent_id: node['children'] = get_children_nodes(nodes, node['id']) children.append(node) return children # 测试数
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。