学生类
class Student {
private int id;
private String name;
private String gender;
private int age;
private double chinese_score;
private double math_score;
private double english_score;
private double sum;
private double avg;
public Student(int id, String name, String gender, int age, double chinese_score, double math_score, double english_score) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
this.chinese_score = chinese_score;
this.math_score = math_score;
this.english_score = english_score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getChinese_score() {
return chinese_score;
}
public void setChinese_score(double chinese_score) {
this.chinese_score = chinese_score;
}
public double getMath_score() {
return math_score;
}
public void setMath_score(double math_score) {
this.math_score = math_score;
}
public double getEnglish_score() {
return english_score;
}
public void setEnglish_score(double english_score) {
this.english_score = english_score;
}
public double getSum() {
this.sum = (this.chinese_score + this.math_score + this.english_score);
return this.sum;
}
public double getAvg() {
this.avg = (this.chinese_score + this.math_score + this.english_score) / 3;
return this.avg;
}
@Override
public String toString() {
return "Student [学号=" + id + ", 名字=" + name + ", 性别=" + gender + ", 年龄=" + age + ", 语文="
+ chinese_score + ", 数学=" + math_score + ", 英语=" + english_score + ", 总分=" + sum
+ ", 平均分=" + avg + "]";
}
}
接口
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
增加,修改,查询,删除,文本,界面 (学生)
private JTextField idField, nameField, genderField, ageField, chineseField, mathField, englishField;
private JButton addButton, deleteButton, searchButton, updateButton, showAllButton, exitButton;
private JTextArea outputArea;
private List<Student> students;
public StudentSystemGUI() {
setTitle("学生管理系统");
setSize(900, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 2));
// 添加输入框和按钮
panel.add(new JLabel("学号:"));
idField = new JTextField();
panel.add(idField);
// 姓名
panel.add(new JLabel("姓名:"));
nameField = new JTextField();
panel.add(nameField);
// 性别
panel.add(new JLabel("性别:"));
genderField = new JTextField();
panel.add(genderField);
// 年龄
panel.add(new JLabel("年龄:"));
ageField = new JTextField();
panel.add(ageField);
// 语文
panel.add(new JLabel("语文:"));
chineseField = new JTextField();
panel.add(chineseField);
// 数学
panel.add(new JLabel("数学:"));
mathField = new JTextField();
panel.add(mathField);
// 英语
panel.add(new JLabel("英语:"));
englishField = new JTextField();
panel.add(englishField);
// 添加姓名、性别、年龄、各科成绩的输入框
panel.add(new JLabel());
panel.add(new JLabel());
addButton = new JButton("添加学生");
panel.add(addButton);
deleteButton = new JButton("删除学生");
panel.add(deleteButton);
searchButton = new JButton("查询学生");
panel.add(searchButton);
updateButton = new JButton("改学生信息");
panel.add(updateButton);
showAllButton = new JButton("展示所有学生成绩信息");
panel.add(showAllButton);
exitButton = new JButton("退出系统");
panel.add(exitButton);
outputArea = new JTextArea();
outputArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(outputArea);
// 添加面板到窗体
Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.NORTH);
contentPane.add(scrollPane, BorderLayout.CENTER);
// 添加按钮
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
int id = Integer.parseInt(idField.getText());
String name = nameField.getText();
String gender = genderField.getText();
int age = Integer.parseInt(ageField.getText());
double chineseScore = Double.parseDouble(chineseField.getText());
double mathScore = Double.parseDouble(mathField.getText());
double englishScore = Double.parseDouble(englishField.getText());
// Student对象并添加到列表
Student newStudent = new Student(id, name, gender, age, chineseScore, mathScore, englishScore);
students.add(newStudent);
// 清除输入框内容
clearInputFields();
outputArea.append("学生添加成功。\n");
// 保存到文件
saveStudentsToFile(students, "students.txt");
} catch (NumberFormatException ex) {
// 如果转换失败,说明输入的数据格式不正确
outputArea.append("输入数据格式错误,请检查后重试。\n");
}
}
});
//删
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
int idToDelete = Integer.parseInt(idField.getText());
boolean removed = false;
for (Student student : new ArrayList<>(students)) {
if (student.getId() == idToDelete) {
students.remove(student);
removed = true;
break;
}
}
if (removed) {
outputArea.append("学生已成功删除。\n");
clearInputFields();
} else {
outputArea.append("未找到指定ID的学生。\n");
}
saveStudentsToFile(students, "students.txt");
} catch (NumberFormatException ex) {
outputArea.append("请输入有效的学生ID。\n");
}
}
});
//查
searchButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
int idToSearch = Integer.parseInt(idField.getText());
for (Student student : students) {
if (student.getId() == idToSearch) {
outputArea.append("找到学生信息:\n" + student + "\n");
return;
}
}
outputArea.append("未找到该学生。\n");
} catch (NumberFormatException ex) {
outputArea.append("请输入有效的学生ID。\n");
}
}
});
//展示所有学生成绩信息
showAllButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showAllStudents(students);
}
});
//修改
updateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
int idToUpdate = Integer.parseInt(idField.getText());
for (Student student : students) {
if (student.getId() == idToUpdate) {
student.setName(nameField.getText());
student.setGender(genderField.getText());
student.setAge(Integer.parseInt(ageField.getText()));
student.setChinese_score(Double.parseDouble(chineseField.getText()));
student.setMath_score(Double.parseDouble(mathField.getText()));
student.setEnglish_score(Double.parseDouble(englishField.getText()));
outputArea.append("学生信息更新成功。\n");
clearInputFields();
saveStudentsToFile(students, "students.txt");
return;
}
}
outputArea.append("未找到指定ID的学生。\n");
} catch (NumberFormatException ex) {
outputArea.append("输入数据格式错误,请检查后重试。\n");
}
}
});
exitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0); // 关闭应用程序
}
});
setVisible(true);
}
//保存信息在txt
private static void saveStudentsToFile(List<Student> students, String filePath) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
for (Student student : students) {
writer.write(student.getId() + "," + student.getName() + "," + student.getGender() + "," +
student.getAge() + "," + student.getChinese_score() + "," + student.getMath_score() + "," +
student.getEnglish_score());
writer.newLine();
}
} catch (IOException e) {
System.err.println("保存文件时发生错误: " + e.getMessage());
}
}
// 添加清除输入框
private void clearInputFields() {
idField.setText("");
nameField.setText("");
genderField.setText("");
ageField.setText("");
chineseField.setText("");
mathField.setText("");
englishField.setText("");
}
private List<Student> readStudentsFromFile(String filePath) throws IOException {
List<Student> students = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
String[] attributes = line.split(",");
students.add(new Student(
Integer.parseInt(attributes[0]),
attributes[1],
attributes[2],
Integer.parseInt(attributes[3]),
Double.parseDouble(attributes[4]),
Double.parseDouble(attributes[5]),
Double.parseDouble(attributes[6])
));
}
} catch (IOException e) {
// 将错误信息输出到outputArea
outputArea.append("读取文件时发生错误: " + e.getMessage() + "\n");
throw e; // 重新抛出异常,以便在调用处可以决定如何处理
}
return students;
}
private void showAllStudents(List<Student> students) {
outputArea.append("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总分\t平均分\n");
for (Student student : students) {
outputArea.append(student.getId() + "\t" + student.getName() + "\t" + student.getGender() + "\t" + student.getAge() + "\t" + student.getChinese_score() + "\t" + student.getMath_score() + "\t" + student.getEnglish_score() + "\t" + student.getSum() + "\t" + student.getAvg() + "\n");
}
outputArea.append("\n");
}
主函数
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
StudentSystemGUI gui = new StudentSystemGUI();
// 初始化students列表,读取文件等操作
try {
gui.students = gui.readStudentsFromFile("students.txt");
} catch (IOException e) {
gui.outputArea.append("读取文件时发生错误: " + e.getMessage() + "\n");
}
// 显示所有学生信息
gui.showAllStudents(gui.students);
});
}