思路
硬币有正反面,我们可以简单的用0和1,去替代,然后结果我们可以直接去查询数据库的内容
1.先看项目结构
2.登入界面
做一个简单的项目登入界面,我是用插件可视化,直接拖动的,下面是一个插件安装的教程,创建教程Eclipse开发环境下Java可视化界面编程_eclipse可视化界面代码-CSDN博客
选中这个,可以直接拖动你想要拖动的内容
选中你要拖动的内容,放进去就行了,我就不做演示,毕竟是一年的东西有点忘记了0.0
我们再去写连接数据库的JDBC层,死东西我就不讲了
package com.test.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBConnection {
// 加载jdbc连接mysql驱动
public final static String driver = "com.mysql.cj.jdbc.Driver";
// 连接mysql数据库的地址
public final static String url = "jdbc:mysql://localhost:3306/life";
// 连接mysql的用户名
public final static String user = "root";
// 连接mysql的密码
public final static String pwd = "123";
// 静态代码块加载jdbc的驱动
static {
// driver点击用Surround with打印出异常
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 获取连接对象
public static Connection getConn() {
try {
return DriverManager.getConnection(url, user, pwd);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 关闭连接,保证mysql的资源释放,能够充分运用
public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 验证jdbc类的使用
public static void main(String[] args) {
System.out.println(getConn());
}
}
3.验证登入
先给登入按钮添加一个监听事件,去执行验证登入的逻辑
写一个LoginDao去验证登入
package com.test.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.test.jdbc.DBConnection;
public class LoginDAO {
public boolean validateUser(String username, String password) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 1.连接mysql
conn = DBConnection.getConn();
// 2.预编译sql执行
String sql = "SELECT * FROM login WHERE Username = ? AND Password = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
if (rs.next()) {
return true; // 如果验证通过,返回 true
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 3.关闭数据库连接和相关资源
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
}
查询到了数据就会返回一个true,注册功能也是一样的
4.随机生成一个数组
我是直接用一个数组去随机生成了1,2组成了一个数组串,用判断写一个正反面
5.写一个Dao层查询随机生成的数组
点击查找我的好运就可以出现一个面板,把查询到的结果去显示在面板中,数据库的内容我没有写,可以直接去写一下
这是数组生成和图片正反面显示的页面
package com.test.ui;
import javax.swing.*;
import com.test.dao.ShowDao;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random ra = new Random();
int one = ra.nextInt(2) + 1;
int two = ra.nextInt(2) + 1;
int three = ra.nextInt(2) + 1;
int four = ra.nextInt(2) + 1;
int five = ra.nextInt(2) + 1;
// 随机组合的五个数字再变成int类型
String numberStr = String.valueOf(one) + String.valueOf(two) + String.valueOf(three) + String.valueOf(four)
+ String.valueOf(five);
int number = Integer.parseInt(numberStr);
StringBuilder meesage = ShowDao.getLuckiness(number);
// 创建主窗口
JFrame frame = new JFrame("随机数字面板");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建数字面板
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1, 5));
// 创建正面和反面的图像对象
ImageIcon positiveImage = new ImageIcon("C:/Users/eclipse-workspace/life/src/com/my/picture/正面.png");
ImageIcon negativeImage = new ImageIcon("C:/Users/eclipse-workspace/life/src/com/my/picture/反面.png");
int imageSize = 100; // 图片大小
// 创建数字标签
JLabel label1 = createLabel(one, positiveImage, negativeImage, imageSize);
JLabel label2 = createLabel(two, positiveImage, negativeImage, imageSize);
JLabel label3 = createLabel(three, positiveImage, negativeImage, imageSize);
JLabel label4 = createLabel(four, positiveImage, negativeImage, imageSize);
JLabel label5 = createLabel(five, positiveImage, negativeImage, imageSize);
// 将数字标签添加到数字面板
panel.add(label1);
panel.add(label2);
panel.add(label3);
panel.add(label4);
panel.add(label5);
// 创建查询运气值的按钮
JButton luckButton = new JButton("查找我的运气值");
JButton replayButton = new JButton("再来一次");
luckButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 计算运气值
StringBuilder message = ShowDao.getLuckiness(number);
Show s = new Show(message.toString());
// 将StringBuilder转换为字符串,并传递给Show的构造方法
s.setVisible(true);
}
});
replayButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 重新再来一次
// 关闭当前窗口
frame.dispose();
// 重新启动应用程序
Main.main(null);
}
});
// 创建按钮面板并添加按钮
JPanel buttonPanel = new JPanel();
buttonPanel.add(luckButton);
buttonPanel.add(replayButton);
// 将数字面板和按钮面板添加到主窗口中
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
// 计算屏幕的中心位置
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int centerX = (screenSize.width - frame.getWidth()) / 2;
int centerY = (screenSize.height - frame.getHeight()) / 2;
// 移动主窗口到中心位置
frame.setLocation(centerX, centerY);
// 显示窗口
frame.pack();
frame.setVisible(true);
}
// 创建图像标签
private static JLabel createLabel(int number, ImageIcon positiveImage, ImageIcon negativeImage, int size) {
Image image;
if (number == 1) {
image = positiveImage.getImage();
} else if (number == 2) {
image = negativeImage.getImage();
} else {
// 处理无效数字情况
return new JLabel("无效数字");
}
// 缩放图像
Image resizedImage = image.getScaledInstance(size, size, Image.SCALE_SMOOTH);
ImageIcon scaledImageIcon = new ImageIcon(resizedImage);
// 出现数字
// JLabel label = new JLabel(String.valueOf(number), scaledImageIcon, SwingConstants.CENTER);
// 隐藏数字
JLabel label = new JLabel(scaledImageIcon, SwingConstants.CENTER);
label.setHorizontalTextPosition(SwingConstants.CENTER);
label.setVerticalTextPosition(SwingConstants.BOTTOM);
return label;
}
public void setVisible(boolean b) {
// TODO Auto-generated method stub
}
}
package com.test.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.test.jdbc.DBConnection;
public class ShowDao {
public static StringBuilder getLuckiness(int number) {
String sql = "SELECT Luckiness FROM LuckyNumbers WHERE Number = ?";
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
// 定义一个StringBuilder用于接收数据库查询到的内容
StringBuilder sb=new StringBuilder();
try {
conn = DBConnection.getConn();
pst = conn.prepareStatement(sql);
pst.setInt(1, number);
rs = pst.executeQuery();
while (rs.next()) {
// 将查询出的内容添加到list中
sb.append(rs.getString("Luckiness"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (rs != null)
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
if (pst != null)
pst.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
if (conn != null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return sb;
}
}
项目源码,里面有jar包,链接: https://pan.baidu.com/s/1gl3t8Fp1s_-OJg65EPy3Yw 提取码: 3fyy