编写一个查询类继承JFrame,类名为StudentSearch 要求:输入学生姓名,单击“查询”按钮,若学生姓名在数据文件(data.txt)中存在,则在多行文本框中显示查询到的学生成绩信息;若姓名在数据文件中不存在,显示查无此人,单击“关闭”按钮结束程序
时间: 2023-11-25 17:04:48 浏览: 96
以下是一个简单的实现:
```java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class StudentSearch extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField nameTextField;
private JTextArea resultTextArea;
public StudentSearch() {
super("学生查询");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
nameTextField = new JTextField(20);
panel.add(nameTextField);
JButton searchButton = new JButton("查询");
searchButton.addActionListener(this);
panel.add(searchButton);
resultTextArea = new JTextArea(10, 30);
JScrollPane scrollPane = new JScrollPane(resultTextArea);
add(panel, BorderLayout.NORTH);
add(scrollPane, BorderLayout.CENTER);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("查询")) {
String name = nameTextField.getText();
String result = search(name);
resultTextArea.setText(result);
}
}
private String search(String name) {
String result = "";
boolean found = false;
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
if (parts[0].equals(name)) {
result += line + "\n";
found = true;
}
}
} catch (IOException e) {
e.printStackTrace();
}
if (!found) {
result = "查无此人";
}
return result;
}
public static void main(String[] args) {
new StudentSearch();
}
}
```
这个程序使用了Java的Swing库来创建GUI。在构造函数中创建了一个包含文本框和按钮的面板,以及一个多行文本框。单击按钮时,调用`search`方法来搜索数据文件,如果找到了匹配的行,则将其添加到结果字符串中。如果没有找到匹配的行,则将结果字符串设置为“查无此人”。最后将结果字符串设置为多行文本框的文本。
阅读全文