JAVA学生管理系统登陆、注册、添加、删除操作MySQL创建GUI代码
时间: 2023-07-10 20:26:53 浏览: 36
以下是一个简单的Java学生管理系统的登陆、注册、添加、删除操作MySQL的GUI代码示例:
```java
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
public class StudentManagementSystem extends JFrame implements ActionListener {
private JTextField usernameField, nameField, emailField;
private JPasswordField passwordField;
private JButton loginButton, registerButton, addButton, deleteButton;
private Connection conn;
private Statement stmt;
public StudentManagementSystem() {
super("Student Management System");
// Create GUI components
JLabel usernameLabel = new JLabel("Username:");
usernameField = new JTextField(20);
JLabel passwordLabel = new JLabel("Password:");
passwordField = new JPasswordField(20);
loginButton = new JButton("Login");
loginButton.addActionListener(this);
JLabel nameLabel = new JLabel("Name:");
nameField = new JTextField(20);
JLabel emailLabel = new JLabel("Email:");
emailField = new JTextField(20);
registerButton = new JButton("Register");
registerButton.addActionListener(this);
addButton = new JButton("Add");
addButton.addActionListener(this);
deleteButton = new JButton("Delete");
deleteButton.addActionListener(this);
// Layout GUI components
JPanel loginPanel = new JPanel(new GridLayout(3, 2));
loginPanel.add(usernameLabel);
loginPanel.add(usernameField);
loginPanel.add(passwordLabel);
loginPanel.add(passwordField);
loginPanel.add(new JLabel()); // empty cell
loginPanel.add(loginButton);
JPanel registerPanel = new JPanel(new GridLayout(3, 2));
registerPanel.add(nameLabel);
registerPanel.add(nameField);
registerPanel.add(emailLabel);
registerPanel.add(emailField);
registerPanel.add(new JLabel()); // empty cell
registerPanel.add(registerButton);
JPanel buttonPanel = new JPanel(new GridLayout(1, 2));
buttonPanel.add(addButton);
buttonPanel.add(deleteButton);
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(loginPanel, BorderLayout.NORTH);
mainPanel.add(registerPanel, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
// Set up database connection
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "");
stmt = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
// Display GUI
setContentPane(mainPanel);
pack();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == loginButton) {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
try {
ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM users WHERE username='" + username + "' AND password='" + password + "'");
rs.next();
int count = rs.getInt(1);
if (count == 1) {
JOptionPane.showMessageDialog(this, "Login successful!");
} else {
JOptionPane.showMessageDialog(this, "Login failed.");
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (source == registerButton) {
String name = nameField.getText();
String email = emailField.getText();
try {
stmt.executeUpdate("INSERT INTO users (name, email) VALUES ('" + name + "', '" + email + "')");
JOptionPane.showMessageDialog(this, "Registration successful!");
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (source == addButton) {
String name = JOptionPane.showInputDialog(this, "Enter student name:");
if (name != null) {
try {
stmt.executeUpdate("INSERT INTO students (name) VALUES ('" + name + "')");
JOptionPane.showMessageDialog(this, "Student added successfully!");
} catch (Exception ex) {
ex.printStackTrace();
}
}
} else if (source == deleteButton) {
String name = JOptionPane.showInputDialog(this, "Enter student name:");
if (name != null) {
try {
stmt.executeUpdate("DELETE FROM students WHERE name='" + name + "'");
JOptionPane.showMessageDialog(this, "Student deleted successfully!");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new StudentManagementSystem();
}
}
```
注意:这只是一个简单的示例,实际应用中可能需要更多的验证和错误处理。此外,为了安全起见,建议使用参数化查询而不是直接将用户输入插入到SQL查询中,以避免SQL注入攻击。