java编写一个查询类,类名为StudentSearch 要求:输入学生姓名,单击“查询”按钮,若学生姓名在数据文件(data.txt)中存在,则在多行文本框中显示查询到的学生成绩信息;若姓名在数据文件中不存在,显示查无此人,单击关闭按钮结束程序
时间: 2023-12-05 10:06:13 浏览: 49
以下是一个基本的示例代码,实现了输入学生姓名,查询数据文件中是否存在该学生,并在多行文本框中显示查询到的学生成绩信息。如果姓名不存在,则会弹出提示窗口显示“查无此人”,并结束程序。
```java
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class StudentSearch extends Frame implements ActionListener {
private TextField nameField = new TextField(20);
private TextArea resultArea = new TextArea(10, 30);
private Button searchButton = new Button("查询");
private Button closeButton = new Button("关闭");
public StudentSearch() {
super("学生查询");
setLayout(new FlowLayout());
add(new Label("请输入学生姓名:"));
add(nameField);
add(searchButton);
add(closeButton);
add(resultArea);
searchButton.addActionListener(this);
closeButton.addActionListener(this);
pack();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
String name = nameField.getText().trim();
if (name.equals("")) {
return;
}
try {
BufferedReader br = new BufferedReader(new FileReader("data.txt"));
String line;
boolean found = false;
while ((line = br.readLine()) != null) {
String[] parts = line.split(",");
if (parts[0].equals(name)) {
resultArea.append(line + "\n");
found = true;
break;
}
}
if (!found) {
JOptionPane.showMessageDialog(this, "查无此人");
}
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == closeButton) {
System.exit(0);
}
}
public static void main(String[] args) {
StudentSearch search = new StudentSearch();
search.setVisible(true);
}
}
```
在这个示例代码中,我们创建了一个名为 `StudentSearch` 的类,继承自 `Frame` 类,并实现了 `ActionListener` 接口以处理按钮的点击事件。在类的构造函数中,我们创建了一个文本输入框和两个按钮,用于输入学生姓名、查询和关闭程序。我们还创建了一个多行文本框,用于显示查询到的学生成绩信息。
在 `actionPerformed` 方法中,我们首先判断点击的按钮是查询按钮还是关闭按钮。如果是查询按钮,我们从文本输入框中获取学生姓名,并尝试打开数据文件(data.txt)进行查询。我们使用 `BufferedReader` 类逐行读取数据文件,然后使用 `split` 方法将每一行数据分割成一个字符串数组。如果当前行数据的第一个元素(也就是学生姓名)与查询的姓名相同,则将该行数据添加到多行文本框中,并将 `found` 标志设为 true。最后,如果查询不到该学生,则弹出一个提示窗口。
如果点击的是关闭按钮,则直接退出程序。在 `main` 方法中,我们创建了一个 `StudentSearch` 对象,并将其设置为可见。