一.流程图
用户登录

计算器

二。GUI界面
用户登录界面

登陆成功

登录失败

(二)计算器

实现计算1+2=3




(二)数据库记录

三。代码实现
(一)计算器代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculatorGUI extends JFrame {
private JTextField displayField;
private static double firstNumber;
private static String operator;
private Connection conn;
public CalculatorGUI() {
setTitle("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
displayField = new JTextField();
displayField.setPreferredSize(new Dimension(200, 30));
displayField.setEditable(false);
JPanel buttonPanel = new JPanel(new GridLayout(5, 5));
String[] buttonLabels = {
"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"0", ".", "=", "+",
"√", "C"
};
for (String label : buttonLabels) {
JButton button = new JButton(label);
button.addActionListener(new ButtonClickListener());
buttonPanel.add(button);
}
setLayout(new FlowLayout());
add(displayField);
add(buttonPanel);
pack();
setLocationRelativeTo(null);
setVisible(true);
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3308", "root", "123456");
} catch (SQLException e) {
e.printStackTrace();
}
}
private class ButtonClickListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String buttonText = ((JButton) event.getSource()).getText();
if (buttonText.matches("[0-9.]")) {
displayField.setText(displayField.getText() + buttonText);
}
if (buttonText.matches("[/+*\\-]")) {
firstNumber = Double.parseDouble(displayField.getText());
operator = buttonText;
displayField.setText("");
}
if (buttonText.equals("=")) {
double secondNumber = Double.parseDouble(displayField.getText());
double result = 0.0;
switch (operator) {
case "+":
result = firstNumber + secondNumber;
break;
case "-":
result = firstNumber - secondNumber;
break;
case "*":
result = firstNumber * secondNumber;
break;
case "/":
result = firstNumber / secondNumber;
break;
}
displayField.setText(String.valueOf(result));
try {
String sql = "INSERT INTO mysql.calculations (first_number, operator, second_number, result) VALUES (?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setDouble(1, firstNumber);
pstmt.setString(2, operator);
pstmt.setDouble(3, secondNumber);
pstmt.setDouble(4, result);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (buttonText.equals("C")) {
displayField.setText("");
}
if (buttonText.equals("√")) {
double number = Double.parseDouble(displayField.getText());
double guess = number / 2.0;
while (Math.abs(guess * guess - number) >= 0.0001) {
guess = (guess + number / guess) / 2.0;
}
displayField.setText(String.valueOf(guess));
}
}
}
public class Main {
public static void main(String[] args) {
CalculatorGUI calculator = new CalculatorGUI();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new CalculatorGUI();
}
});
String url = "jdbc:mysql://localhost:3308/calculations";
String username = "root";
String password = "123456";
try {
Connection conn = DriverManager.getConnection(url, username, password);
String sql = "INSERT INTO your_table (column1, column2) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setDouble(1, firstNumber);
pstmt.setString(2, operator);
pstmt.executeUpdate();
System.out.println("Data inserted successfully!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
(二)用户登录代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginGUI extends JFrame {
private JTextField usernameField;
private JPasswordField passwordField;
public LoginGUI() {
setTitle("用户登录");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
JPanel panel = new JPanel(new GridLayout(3, 2));
JLabel usernameLabel = new JLabel("用户名:");
JLabel passwordLabel = new JLabel("密码:");
usernameField = new JTextField(10);
passwordField = new JPasswordField(10);
JButton loginButton = new JButton("登录");
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
if (username.equals("admin") && password.equals("123")) {
JOptionPane.showMessageDialog(null, "登录成功!");
CalculatorGUI cal = new CalculatorGUI();
} else {
JOptionPane.showMessageDialog(null, "用户名或密码错误!");
}
}
});
panel.add(usernameLabel);
panel.add(usernameField);
panel.add(passwordLabel);
panel.add(passwordField);
panel.add(loginButton);
getContentPane().add(panel);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new LoginGUI().setVisible(true);
}
});
}
}
(三)数据库代码
CREATE TABLE mysql.calculations (
id INT AUTO_INCREMENT,
first_number DOUBLE,
operator CHAR(1),
second_number DOUBLE,
result DOUBLE,
PRIMARY KEY (id)
);
SELECT * FROM mysql.calculations;