Java+学生信息管理系统+GUI+文件
时间: 2023-09-05 19:13:57 浏览: 46
好的,这个项目可以分为以下几个部分:
1. 学生信息类:定义学生的各种属性,如姓名、学号、性别、年龄、班级等等。
2. 数据存储类:用于将学生信息存储到文件中,可以使用文件输入输出流、对象输入输出流等方式实现。
3. GUI界面类:设计一个简单的界面,包括添加学生、删除学生、修改学生信息、查询学生信息等功能。
4. 控制类:响应用户的操作并调用相应的方法实现对学生信息的增删改查。
下面是一个简单的示例代码:
1. 学生信息类
```java
public class Student {
private String name;
private String id;
private String gender;
private int age;
private String clazz;
public Student(String name, String id, String gender, int age, String clazz) {
this.name = name;
this.id = id;
this.gender = gender;
this.age = age;
this.clazz = clazz;
}
// 省略 getter 和 setter 方法
}
```
2. 数据存储类
```java
public class StudentData {
private static final String FILENAME = "student.dat";
public static void save(List<Student> students) {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILENAME))) {
oos.writeObject(students);
} catch (IOException e) {
e.printStackTrace();
}
}
public static List<Student> load() {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILENAME))) {
return (List<Student>) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
return new ArrayList<>();
}
}
}
```
3. GUI界面类
```java
public class StudentGUI extends JFrame {
private static final int WIDTH = 400;
private static final int HEIGHT = 300;
private JLabel nameLabel = new JLabel("姓名");
private JTextField nameField = new JTextField();
private JLabel idLabel = new JLabel("学号");
private JTextField idField = new JTextField();
private JLabel genderLabel = new JLabel("性别");
private JTextField genderField = new JTextField();
private JLabel ageLabel = new JLabel("年龄");
private JTextField ageField = new JTextField();
private JLabel clazzLabel = new JLabel("班级");
private JTextField clazzField = new JTextField();
private JButton addButton = new JButton("添加");
private JButton deleteButton = new JButton("删除");
private JButton updateButton = new JButton("修改");
private JButton queryButton = new JButton("查询");
private JTable table = new JTable();
private List<Student> students = new ArrayList<>();
public StudentGUI() {
setTitle("学生信息管理系统");
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel inputPanel = new JPanel(new GridLayout(5, 2));
inputPanel.add(nameLabel);
inputPanel.add(nameField);
inputPanel.add(idLabel);
inputPanel.add(idField);
inputPanel.add(genderLabel);
inputPanel.add(genderField);
inputPanel.add(ageLabel);
inputPanel.add(ageField);
inputPanel.add(clazzLabel);
inputPanel.add(clazzField);
JPanel buttonPanel = new JPanel(new FlowLayout());
buttonPanel.add(addButton);
buttonPanel.add(deleteButton);
buttonPanel.add(updateButton);
buttonPanel.add(queryButton);
JScrollPane tableScrollPane = new JScrollPane(table);
setLayout(new BorderLayout());
add(inputPanel, BorderLayout.NORTH);
add(buttonPanel, BorderLayout.CENTER);
add(tableScrollPane, BorderLayout.SOUTH);
addButton.addActionListener(e -> {
String name = nameField.getText();
String id = idField.getText();
String gender = genderField.getText();
int age = Integer.parseInt(ageField.getText());
String clazz = clazzField.getText();
Student student = new Student(name, id, gender, age, clazz);
students.add(student);
StudentData.save(students);
refreshTable();
});
deleteButton.addActionListener(e -> {
int row = table.getSelectedRow();
if (row >= 0) {
students.remove(row);
StudentData.save(students);
refreshTable();
}
});
updateButton.addActionListener(e -> {
int row = table.getSelectedRow();
if (row >= 0) {
String name = nameField.getText();
String id = idField.getText();
String gender = genderField.getText();
int age = Integer.parseInt(ageField.getText());
String clazz = clazzField.getText();
Student student = new Student(name, id, gender, age, clazz);
students.set(row, student);
StudentData.save(students);
refreshTable();
}
});
queryButton.addActionListener(e -> {
String id = JOptionPane.showInputDialog("请输入学号");
if (id != null) {
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId().equals(id)) {
table.setRowSelectionInterval(i, i);
break;
}
}
}
});
students = StudentData.load();
refreshTable();
}
private void refreshTable() {
Object[][] data = new Object[students.size()][5];
for (int i = 0; i < students.size(); i++) {
Student student = students.get(i);
data[i][0] = student.getName();
data[i][1] = student.getId();
data[i][2] = student.getGender();
data[i][3] = student.getAge();
data[i][4] = student.getClazz();
}
String[] columnNames = {"姓名", "学号", "性别", "年龄", "班级"};
table.setModel(new DefaultTableModel(data, columnNames));
}
}
```
4. 控制类
```java
public class StudentController {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new StudentGUI().setVisible(true));
}
}
```
这个项目只是一个简单的示例,还有很多可以改进的地方,比如加入数据校验、排序、分页等功能。希望能对你有所帮助!