Java创建图形界面(GUI),创建一个学生管理界面,实现录入,查询,删除,更改等操作
时间: 2024-03-11 13:49:21 浏览: 83
好的,我可以为您提供一个简单的 Java 学生管理系统的示例代码,供您参考。这个学生管理系统包括一个主界面和一个学生信息编辑界面,您可以在主界面中执行查询、添加、修改和删除操作,然后在学生信息编辑界面中查看和编辑具体的学生信息。
这里使用了 Java Swing 框架,以便创建图形用户界面。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
// 学生类
class Student {
private String name;
private String id;
private String major;
public Student(String name, String id, String major) {
this.name = name;
this.id = id;
this.major = major;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
public String getMajor() {
return major;
}
public void setName(String name) {
this.name = name;
}
public void setId(String id) {
this.id = id;
}
public void setMajor(String major) {
this.major = major;
}
}
// 学生管理系统主界面
class MainFrame extends JFrame {
private ArrayList<Student> students;
private JTextField searchField;
private JTable table;
private JButton addButton;
private JButton editButton;
private JButton deleteButton;
public MainFrame() {
super("学生管理系统");
students = new ArrayList<Student>();
students.add(new Student("小明", "001", "计算机科学与技术"));
students.add(new Student("小红", "002", "信息管理与信息系统"));
students.add(new Student("小刚", "003", "软件工程"));
// 创建主界面
JPanel panel = new JPanel(new BorderLayout());
getContentPane().add(panel);
// 创建搜索框和搜索按钮
JPanel searchPanel = new JPanel();
searchField = new JTextField(20);
searchPanel.add(searchField);
JButton searchButton = new JButton("搜索");
searchPanel.add(searchButton);
panel.add(searchPanel, BorderLayout.NORTH);
// 创建表格
String[] columnNames = {"姓名", "学号", "专业"};
Object[][] rowData = new Object[students.size()][3];
for (int i = 0; i < students.size(); i++) {
rowData[i][0] = students.get(i).getName();
rowData[i][1] = students.get(i).getId();
rowData[i][2] = students.get(i).getMajor();
}
table = new JTable(rowData, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
panel.add(scrollPane, BorderLayout.CENTER);
// 创建操作按钮
JPanel buttonPanel = new JPanel();
addButton = new JButton("添加");
buttonPanel.add(addButton);
editButton = new JButton("编辑");
buttonPanel.add(editButton);
deleteButton = new JButton("删除");
buttonPanel.add(deleteButton);
panel.add(buttonPanel, BorderLayout.SOUTH);
// 设置界面属性
setSize(600, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
// 绑定事件处理程序
searchButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String searchText = searchField.getText();
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getName().equals(searchText) ||
students.get(i).getId().equals(searchText) ||
students.get(i).getMajor().equals(searchText)) {
table.setRowSelectionInterval(i, i);
table.scrollRectToVisible(table.getCellRect(i, 0, true));
break;
}
}
}
});
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new EditFrame(students, -1);
}
});
editButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int index = table.getSelectedRow();
if (index >= 0) {
new EditFrame(students, index);
} else {
JOptionPane.showMessageDialog(MainFrame.this, "请选择一行学生信息!");
}
}
});
deleteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int index = table.getSelectedRow();
if (index >= 0) {
students.remove(index);
refreshTable();
} else {
JOptionPane.showMessageDialog(MainFrame.this, "请选择一行学生信息!");
}
}
});
}
// 刷新表格数据
public void refreshTable() {
String[] columnNames = {"姓名", "学号", "专业"};
Object[][] rowData = new Object[students.size()][3];
for (int i = 0; i < students.size(); i++) {
rowData[i][0] = students.get(i).getName();
rowData[i][1] = students.get(i).getId();
rowData[i][2] = students.get(i).getMajor();
}
table.setModel(new DefaultTableModel(rowData, columnNames));
}
}
// 学生信息编辑界面
class EditFrame extends JFrame {
private ArrayList<Student> students;
private int index;
private JTextField nameField;
private JTextField idField;
private JTextField majorField;
public EditFrame(ArrayList<Student> students, int index) {
super("编辑学生信息");
this.students = students;
this.index = index;
// 创建编辑界面
JPanel panel = new JPanel(new GridLayout(4, 2));
getContentPane().add(panel);
panel.add(new JLabel("姓名:"));
nameField = new JTextField();
panel.add(nameField);
panel.add(new JLabel("学号:"));
idField = new JTextField();
panel.add(idField);
panel.add(new JLabel("专业:"));
majorField = new JTextField();
panel.add(majorField);
JButton saveButton = new JButton("保存");
panel.add(saveButton);
JButton cancelButton = new JButton("取消");
panel.add(cancelButton);
// 设置界面属性
setSize(400, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
// 加载学生信息
if (index >= 0) {
Student student = students.get(index);
nameField.setText(student.getName());
idField.setText(student.getId());
majorField.setText(student.getMajor());
}
// 绑定事件处理程序
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String id = idField.getText();
String major = majorField.getText();
if (name.isEmpty() || id.isEmpty() || major.isEmpty()) {
JOptionPane.showMessageDialog(EditFrame.this, "请填写完整的学生信息!");
} else if (index >= 0) {
Student student = students.get(index);
student.setName(name);
student.setId(id);
student.setMajor(major);
((MainFrame) SwingUtilities.getWindowAncestor(EditFrame.this)).refreshTable();
dispose();
} else {
students.add(new Student(name, id, major));
((MainFrame) SwingUtilities.getWindowAncestor(EditFrame.this)).refreshTable();
dispose();
}
}
});
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
}
}
// 主程序入口
public class StudentManagementSystem {
public static void main(String[] args) {
new MainFrame();
}
}
```
这个示例代码包括了一个 `Student` 类,用于存储学生信息,一个 `MainFrame` 类,用于创建主界面,以及一个 `EditFrame` 类,用于创建学生信息编辑界面。在 `MainFrame` 中,我们使用了 `JTextField`、`JTable`、`JButton` 等控件,以便实现各种操作。在 `EditFrame` 中,我们使用了文本框和按钮控件,以便编辑和保存学生信息。
这个示例代码实现了基本的查询、添加、修改和删除操作,但是还有很多功能可以进一步扩展和完善,例如数据校验、数据存储等等。
阅读全文
相关推荐
![java](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![html](https://img-home.csdnimg.cn/images/20241231044918.png)