200 lines
7.4 KiB
Java
200 lines
7.4 KiB
Java
package com.example;
|
|
|
|
import javax.swing.*;
|
|
import javax.swing.table.DefaultTableModel;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
|
|
public class UserManagement extends JFrame implements ActionListener {
|
|
|
|
JMenuBar menuBar;
|
|
JMenuItem addItem, deleteItem, updateItem, refreshItem;
|
|
private JTable table;
|
|
private DefaultTableModel tableModel;
|
|
|
|
public UserManagement() {
|
|
super("用户信息管理");
|
|
|
|
// 菜单栏
|
|
menuBar = new JMenuBar();
|
|
setJMenuBar(menuBar);
|
|
|
|
addItem = new JMenuItem("添加用户");
|
|
deleteItem = new JMenuItem("删除用户");
|
|
updateItem = new JMenuItem("修改用户");
|
|
refreshItem = new JMenuItem("刷新数据");
|
|
|
|
menuBar.add(addItem);
|
|
menuBar.add(deleteItem);
|
|
menuBar.add(updateItem);
|
|
menuBar.add(refreshItem);
|
|
|
|
addItem.addActionListener(this);
|
|
deleteItem.addActionListener(this);
|
|
updateItem.addActionListener(this);
|
|
refreshItem.addActionListener(this);
|
|
|
|
// 表格模型
|
|
String[] columnNames = {"用户名", "密码", "身份"};
|
|
tableModel = new DefaultTableModel(columnNames, 0) {
|
|
@Override
|
|
public boolean isCellEditable(int row, int column) {
|
|
return false; // 不直接在表格里改
|
|
}
|
|
};
|
|
table = new JTable(tableModel);
|
|
|
|
JScrollPane scrollPane = new JScrollPane(table);
|
|
add(scrollPane, BorderLayout.CENTER);
|
|
|
|
setSize(600, 400);
|
|
setLocationRelativeTo(null);
|
|
|
|
// 初始加载
|
|
loadData();
|
|
setVisible(true);
|
|
}
|
|
|
|
// 加载 identity=user 的数据
|
|
private void loadData() {
|
|
Jdbc jdbc = new Jdbc();
|
|
try {
|
|
ResultSet rs = jdbc.query("SELECT username,password,identity FROM user WHERE identity='user'");
|
|
tableModel.setRowCount(0);
|
|
while (rs.next()) {
|
|
Object[] row = {
|
|
rs.getString("username"),
|
|
rs.getString("password"),
|
|
rs.getString("identity")
|
|
};
|
|
tableModel.addRow(row);
|
|
}
|
|
rs.close();
|
|
jdbc.close();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
JOptionPane.showMessageDialog(this, "加载数据失败: " + e.getMessage());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
// 添加用户
|
|
if (e.getSource() == addItem) {
|
|
JFrame frame = new JFrame("添加用户");
|
|
frame.setLayout(new GridLayout(5, 2));
|
|
JLabel nameLabel = new JLabel("用户名:");
|
|
JTextField nameField = new JTextField();
|
|
JLabel passLabel = new JLabel("密码:");
|
|
JPasswordField passField = new JPasswordField();
|
|
JButton addButton = new JButton("添加");
|
|
JButton cancelButton = new JButton("取消");
|
|
|
|
frame.add(nameLabel); frame.add(nameField);
|
|
frame.add(passLabel); frame.add(passField);
|
|
frame.add(addButton); frame.add(cancelButton);
|
|
|
|
addButton.addActionListener(ev -> {
|
|
String username = nameField.getText();
|
|
String password = passField.getText();
|
|
|
|
Jdbc jdbc = new Jdbc();
|
|
try {
|
|
jdbc.update("INSERT INTO user (username,password,email,phone,identity) VALUES ('"
|
|
+ username + "','" + password + "','user')");
|
|
jdbc.close();
|
|
loadData();
|
|
frame.dispose();
|
|
} catch (SQLException ex) {
|
|
JOptionPane.showMessageDialog(frame, "添加失败: " + ex.getMessage());
|
|
}
|
|
});
|
|
|
|
cancelButton.addActionListener(ev -> frame.dispose());
|
|
frame.setSize(400, 250);
|
|
frame.setLocationRelativeTo(null);
|
|
frame.setVisible(true);
|
|
}
|
|
|
|
// 删除用户
|
|
else if (e.getSource() == deleteItem) {
|
|
int row = table.getSelectedRow();
|
|
if (row == -1) {
|
|
JOptionPane.showMessageDialog(this, "请先选择要删除的用户!");
|
|
return;
|
|
}
|
|
String username = (String) tableModel.getValueAt(row, 0);
|
|
int confirm = JOptionPane.showConfirmDialog(this, "确定删除用户: " + username + " ?", "确认", JOptionPane.YES_NO_OPTION);
|
|
if (confirm == JOptionPane.YES_OPTION) {
|
|
Jdbc jdbc = new Jdbc();
|
|
try {
|
|
jdbc.update("DELETE FROM user WHERE username='" + username + "'");
|
|
jdbc.close();
|
|
loadData();
|
|
} catch (SQLException ex) {
|
|
JOptionPane.showMessageDialog(this, "删除失败: " + ex.getMessage());
|
|
}
|
|
}
|
|
}
|
|
|
|
// 修改用户(选中一行后弹窗修改)
|
|
else if (e.getSource() == updateItem) {
|
|
int row = table.getSelectedRow();
|
|
if (row == -1) {
|
|
JOptionPane.showMessageDialog(this, "请先选择要修改的用户!");
|
|
return;
|
|
}
|
|
String oldUsername = (String) tableModel.getValueAt(row, 0);
|
|
|
|
JFrame frame = new JFrame("修改用户");
|
|
frame.setLayout(new GridLayout(5, 2));
|
|
JTextField nameField = new JTextField((String) tableModel.getValueAt(row, 0));
|
|
JTextField passField = new JTextField((String) tableModel.getValueAt(row, 1));
|
|
JTextField emailField = new JTextField((String) tableModel.getValueAt(row, 2));
|
|
JTextField phoneField = new JTextField((String) tableModel.getValueAt(row, 3));
|
|
JButton saveButton = new JButton("保存");
|
|
JButton cancelButton = new JButton("取消");
|
|
|
|
frame.add(new JLabel("用户名:")); frame.add(nameField);
|
|
frame.add(new JLabel("密码:")); frame.add(passField);
|
|
frame.add(new JLabel("邮箱:")); frame.add(emailField);
|
|
frame.add(new JLabel("电话:")); frame.add(phoneField);
|
|
frame.add(saveButton); frame.add(cancelButton);
|
|
|
|
saveButton.addActionListener(ev -> {
|
|
String username = nameField.getText();
|
|
String password = passField.getText();
|
|
String email = emailField.getText();
|
|
String phone = phoneField.getText();
|
|
|
|
Jdbc jdbc = new Jdbc();
|
|
try {
|
|
jdbc.update("UPDATE user SET username='" + username + "', password='" + password + "', email='" + email + "', phone='" + phone + "' WHERE username='" + oldUsername + "'");
|
|
jdbc.close();
|
|
loadData();
|
|
frame.dispose();
|
|
} catch (SQLException ex) {
|
|
JOptionPane.showMessageDialog(frame, "修改失败: " + ex.getMessage());
|
|
}
|
|
});
|
|
|
|
cancelButton.addActionListener(ev -> frame.dispose());
|
|
frame.setSize(400, 250);
|
|
frame.setLocationRelativeTo(null);
|
|
frame.setVisible(true);
|
|
}
|
|
|
|
// 刷新数据
|
|
else if (e.getSource() == refreshItem) {
|
|
loadData();
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
new UserManagement();
|
|
}
|
|
}
|