用java 写一个职工工资管理系统的代码要求为相关信息包括有:职工号、姓名、月工资、岗位、年龄、性别等信息。 系统要求实现如下功能: 1)系统功能以菜单方式工作(用Swing设计界面); 2)数据的输入; 3)职工信息数据修改; 4)数据的列表展示; 5)数据的删除,并且弹出是否确认删除窗口确认删除 取消不删除并关闭窗口 6)数据的查找,通常以两种方式进行查找,如姓名、记录号(或学号、职工号等); 7)退出系统。
时间: 2024-03-24 22:39:36 浏览: 14
好的,以下是一个基本的职工工资管理系统的 Java 代码实现,包含上述要求:
```java
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;
public class SalaryManager {
private JFrame frame;
private JTable table;
private JTextField txtId;
private JTextField txtName;
private JTextField txtSalary;
private JTextField txtPosition;
private JTextField txtAge;
private JTextField txtGender;
private List<Worker> workers = new ArrayList<Worker>();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SalaryManager window = new SalaryManager();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public SalaryManager() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 600, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.NORTH);
JLabel lblId = new JLabel("职工号:");
panel.add(lblId);
txtId = new JTextField();
panel.add(txtId);
txtId.setColumns(10);
JLabel lblName = new JLabel("姓名:");
panel.add(lblName);
txtName = new JTextField();
panel.add(txtName);
txtName.setColumns(10);
JLabel lblSalary = new JLabel("月工资:");
panel.add(lblSalary);
txtSalary = new JTextField();
panel.add(txtSalary);
txtSalary.setColumns(10);
JLabel lblPosition = new JLabel("岗位:");
panel.add(lblPosition);
txtPosition = new JTextField();
panel.add(txtPosition);
txtPosition.setColumns(10);
JLabel lblAge = new JLabel("年龄:");
panel.add(lblAge);
txtAge = new JTextField();
panel.add(txtAge);
txtAge.setColumns(10);
JLabel lblGender = new JLabel("性别:");
panel.add(lblGender);
txtGender = new JTextField();
panel.add(txtGender);
txtGender.setColumns(10);
JPanel panel_1 = new JPanel();
frame.getContentPane().add(panel_1, BorderLayout.CENTER);
panel_1.setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane();
panel_1.add(scrollPane, BorderLayout.CENTER);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"\u804C\u5DE5\u53F7", "\u59D3\u540D", "\u6708\u5DE5\u8D44", "\u5C97\u4F4D", "\u5E74\u9F84", "\u6027\u522B"
}
) {
Class[] columnTypes = new Class[] {
Integer.class, String.class, Double.class, String.class, Integer.class, String.class
};
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
});
scrollPane.setViewportView(table);
JPanel panel_2 = new JPanel();
frame.getContentPane().add(panel_2, BorderLayout.SOUTH);
JButton btnSave = new JButton("保存");
btnSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取输入值
int id = Integer.parseInt(txtId.getText());
String name = txtName.getText();
double salary = Double.parseDouble(txtSalary.getText());
String position = txtPosition.getText();
int age = Integer.parseInt(txtAge.getText());
String gender = txtGender.getText();
// 创建 Worker 对象并添加到列表中
Worker worker = new Worker(id, name, salary, position, age, gender);
workers.add(worker);
// 更新表格数据
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addRow(new Object[] { id, name, salary, position, age, gender });
// 清空输入框
txtId.setText("");
txtName.setText("");
txtSalary.setText("");
txtPosition.setText("");
txtAge.setText("");
txtGender.setText("");
}
});
panel_2.add(btnSave);
JButton btnUpdate = new JButton("修改");
btnUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取选中行的索引
int selectedRow = table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(frame, "请先选择要修改的数据");
return;
}
// 获取输入值
int id = Integer.parseInt(txtId.getText());
String name = txtName.getText();
double salary = Double.parseDouble(txtSalary.getText());
String position = txtPosition.getText();
int age = Integer.parseInt(txtAge.getText());
String gender = txtGender.getText();
// 更新选中行的数据
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.setValueAt(id, selectedRow, 0);
model.setValueAt(name, selectedRow, 1);
model.setValueAt(salary, selectedRow, 2);
model.setValueAt(position, selectedRow, 3);
model.setValueAt(age, selectedRow, 4);
model.setValueAt(gender, selectedRow, 5);
}
});
panel_2.add(btnUpdate);
JButton btnDelete = new JButton("删除");
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取选中行的索引
int selectedRow = table.getSelectedRow();
if (selectedRow == -1) {
JOptionPane.showMessageDialog(frame, "请先选择要删除的数据");
return;
}
// 弹出确认窗口
int result = JOptionPane.showConfirmDialog(frame, "确定要删除该数据吗?", "确认删除", JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION) {
// 从列表中删除选中行的数据
workers.remove(selectedRow);
// 从表格中删除选中行的数据
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.removeRow(selectedRow);
}
}
});
panel_2.add(btnDelete);
JButton btnSearchByName = new JButton("按姓名查找");
btnSearchByName.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String name = JOptionPane.showInputDialog(frame, "请输入要查找的姓名");
if (name == null || name.isEmpty()) {
return;
}
// 遍历列表查找匹配的数据
for (int i = 0; i < workers.size(); i++) {
Worker worker = workers.get(i);
if (worker.getName().equals(name)) {
// 选中匹配的数据
table.setRowSelectionInterval(i, i);
return;
}
}
// 没有匹配的数据,弹出提示窗口
JOptionPane.showMessageDialog(frame, "没有找到匹配的数据");
}
});
panel_2.add(btnSearchByName);
JButton btnSearchById = new JButton("按职工号查找");
btnSearchById.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String idStr = JOptionPane.showInputDialog(frame, "请输入要查找的职工号");
if (idStr == null || idStr.isEmpty()) {
return;
}
// 解析输入值
int id = Integer.parseInt(idStr);
// 遍历列表查找匹配的数据
for (int i = 0; i < workers.size(); i++) {
Worker worker = workers.get(i);
if (worker.getId() == id) {
// 选中匹配的数据
table.setRowSelectionInterval(i, i);
return;
}
}
// 没有匹配的数据,弹出提示窗口
JOptionPane.showMessageDialog(frame, "没有找到匹配的数据");
}
});
panel_2.add(btnSearchById);
JButton btnQuit = new JButton("退出系统");
btnQuit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
panel_2.add(btnQuit);
}
}
```
这个代码实现了一个简单的职工工资管理系统,包含输入、修改、列表展示、删除、查找、退出等功能,并使用了 Swing 设计了简单的用户界面。您可以根据实际需求进行修改和扩展。