if((row = this.student.get()) != null) model.addRow(row);
时间: 2024-03-18 21:45:34 浏览: 20
这是一个Java语言中的代码片段,涉及到Swing框架中的JTable组件和TableModel接口的使用。这段代码的作用是从一个名为"student"的对象中读取一行数据,然后将该行数据添加到一个表格中的数据模型中。具体来说,代码中的this.student.get()方法应该返回一个Object数组,该数组中的每个元素对应表格中的一列数据,然后通过调用model.addRow()方法将该数组中的数据添加到表格的数据模型中。请注意,该代码应该在Swing框架的事件处理线程中执行,以确保界面更新的正确性和响应速度。
相关问题
用java语言写一个简易的学生管理系统适配eclipse编译系统 需遵守一下要求 1.带有图形界面2.登录时输入用户密码3能够录入查询 修改删除课程4能够录入 查询 修改 删除学生某个课程的成绩5能够持久化 分列每个class的代码
好的,我可以为您提供一个简单的Java学生管理系统的示例代码,适配Eclipse编译系统。以下是代码:
```java
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class StudentManagementSystem extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JLabel lblUser, lblPwd;
private JTextField txtUser;
private JPasswordField txtPwd;
private JButton btnLogin;
private JTable table;
private DefaultTableModel model;
private JScrollPane scrollPane;
private JComboBox<String> cmbClass;
private JButton btnAddCourse, btnRemoveCourse, btnAddStudent, btnRemoveStudent, btnUpdateScore;
private ArrayList<Student> studentList;
private ArrayList<Course> courseList;
private String[] classList = {"Class 1", "Class 2", "Class 3"};
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
try {
StudentManagementSystem frame = new StudentManagementSystem();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
});
}
public StudentManagementSystem() {
setTitle("Student Management System");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 400);
getContentPane().setLayout(null);
lblUser = new JLabel("Username:");
lblUser.setBounds(30, 30, 80, 25);
getContentPane().add(lblUser);
txtUser = new JTextField();
txtUser.setBounds(120, 30, 150, 25);
getContentPane().add(txtUser);
lblPwd = new JLabel("Password:");
lblPwd.setBounds(30, 70, 80, 25);
getContentPane().add(lblPwd);
txtPwd = new JPasswordField();
txtPwd.setBounds(120, 70, 150, 25);
getContentPane().add(txtPwd);
btnLogin = new JButton("Login");
btnLogin.setBounds(300, 30, 80, 60);
btnLogin.addActionListener(this);
getContentPane().add(btnLogin);
model = new DefaultTableModel();
table = new JTable(model);
scrollPane = new JScrollPane(table);
scrollPane.setBounds(30, 110, 530, 200);
getContentPane().add(scrollPane);
cmbClass = new JComboBox<>(classList);
cmbClass.setBounds(30, 320, 100, 25);
cmbClass.addActionListener(this);
getContentPane().add(cmbClass);
btnAddCourse = new JButton("Add Course");
btnAddCourse.setBounds(150, 320, 100, 25);
btnAddCourse.addActionListener(this);
getContentPane().add(btnAddCourse);
btnRemoveCourse = new JButton("Remove Course");
btnRemoveCourse.setBounds(270, 320, 120, 25);
btnRemoveCourse.addActionListener(this);
getContentPane().add(btnRemoveCourse);
btnAddStudent = new JButton("Add Student");
btnAddStudent.setBounds(420, 320, 100, 25);
btnAddStudent.addActionListener(this);
getContentPane().add(btnAddStudent);
btnRemoveStudent = new JButton("Remove Student");
btnRemoveStudent.setBounds(420, 350, 120, 25);
btnRemoveStudent.addActionListener(this);
getContentPane().add(btnRemoveStudent);
btnUpdateScore = new JButton("Update Score");
btnUpdateScore.setBounds(270, 350, 120, 25);
btnUpdateScore.addActionListener(this);
getContentPane().add(btnUpdateScore);
initialize();
}
public void initialize() {
studentList = new ArrayList<>();
courseList = new ArrayList<>();
loadCourses();
loadStudents();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnLogin) {
String username = txtUser.getText();
String password = String.valueOf(txtPwd.getPassword());
if (username.equals("admin") && password.equals("admin")) {
JOptionPane.showMessageDialog(this, "Login successful.");
table.setEnabled(true);
btnAddCourse.setEnabled(true);
btnRemoveCourse.setEnabled(true);
btnAddStudent.setEnabled(true);
btnRemoveStudent.setEnabled(true);
btnUpdateScore.setEnabled(true);
} else {
JOptionPane.showMessageDialog(this, "Invalid username or password.");
}
} else if (e.getSource() == cmbClass) {
String classCode = (String) cmbClass.getSelectedItem();
updateTable(classCode);
} else if (e.getSource() == btnAddCourse) {
String courseCode = JOptionPane.showInputDialog(this, "Enter course code:");
if (courseCode != null && !courseCode.isEmpty()) {
Course course = new Course(courseCode);
courseList.add(course);
saveCourses();
updateTable((String) cmbClass.getSelectedItem());
JOptionPane.showMessageDialog(this, "Course added successfully.");
}
} else if (e.getSource() == btnRemoveCourse) {
int row = table.getSelectedRow();
if (row >= 0) {
String courseCode = (String) model.getValueAt(row, 0);
for (int i = courseList.size() - 1; i >= 0; i--) {
if (courseList.get(i).getCode().equals(courseCode)) {
courseList.remove(i);
saveCourses();
updateTable((String) cmbClass.getSelectedItem());
JOptionPane.showMessageDialog(this, "Course removed successfully.");
break;
}
}
} else {
JOptionPane.showMessageDialog(this, "Please select a course to remove.");
}
} else if (e.getSource() == btnAddStudent) {
String studentName = JOptionPane.showInputDialog(this, "Enter student name:");
if (studentName != null && !studentName.isEmpty()) {
Student student = new Student(studentName);
studentList.add(student);
saveStudents();
updateTable((String) cmbClass.getSelectedItem());
JOptionPane.showMessageDialog(this, "Student added successfully.");
}
} else if (e.getSource() == btnRemoveStudent) {
int row = table.getSelectedRow();
if (row >= 0) {
String studentName = (String) model.getValueAt(row, 1);
for (int i = studentList.size() - 1; i >= 0; i--) {
if (studentList.get(i).getName().equals(studentName)) {
studentList.remove(i);
saveStudents();
updateTable((String) cmbClass.getSelectedItem());
JOptionPane.showMessageDialog(this, "Student removed successfully.");
break;
}
}
} else {
JOptionPane.showMessageDialog(this, "Please select a student to remove.");
}
} else if (e.getSource() == btnUpdateScore) {
int row = table.getSelectedRow();
if (row >= 0) {
String courseCode = (String) model.getValueAt(row, 0);
String studentName = (String) model.getValueAt(row, 1);
int score = Integer.parseInt(JOptionPane.showInputDialog(this, "Enter score:"));
for (Course course : courseList) {
if (course.getCode().equals(courseCode)) {
for (Student student : course.getStudents()) {
if (student.getName().equals(studentName)) {
student.setScore(score);
saveCourses();
updateTable((String) cmbClass.getSelectedItem());
JOptionPane.showMessageDialog(this, "Score updated successfully.");
break;
}
}
break;
}
}
} else {
JOptionPane.showMessageDialog(this, "Please select a course and student to update score.");
}
}
}
public void updateTable(String classCode) {
model.setRowCount(0);
for (Course course : courseList) {
if (course.getClassCode().equals(classCode)) {
for (Student student : course.getStudents()) {
Object[] row = {course.getCode(), student.getName(), student.getScore()};
model.addRow(row);
}
}
}
}
public void loadCourses() {
try {
File file = new File("courses.txt");
if (!file.exists()) {
file.createNewFile();
}
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String[] data = scanner.nextLine().split(",");
if (data.length == 2) {
Course course = new Course(data[0], data[1]);
courseList.add(course);
}
}
scanner.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void saveCourses() {
try {
File file = new File("courses.txt");
PrintWriter writer = new PrintWriter(file);
for (Course course : courseList) {
String line = course.getCode() + "," + course.getClassCode();
writer.println(line);
}
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void loadStudents() {
try {
File file = new File("students.txt");
if (!file.exists()) {
file.createNewFile();
}
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String[] data = scanner.nextLine().split(",");
if (data.length == 2) {
Student student = new Student(data[0], Integer.parseInt(data[1]));
studentList.add(student);
}
}
scanner.close();
for (Course course : courseList) {
for (Student student : studentList) {
course.addStudent(student);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void saveStudents() {
try {
File file = new File("students.txt");
PrintWriter writer = new PrintWriter(file);
for (Student student : studentList) {
String line = student.getName() + "," + student.getScore();
writer.println(line);
}
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
class Course {
private String code;
private String classCode;
private ArrayList<Student> students;
public Course(String code) {
this(code, "Class 1");
}
public Course(String code, String classCode) {
this.code = code;
this.classCode = classCode;
students = new ArrayList<>();
}
public String getCode() {
return code;
}
public String getClassCode() {
return classCode;
}
public ArrayList<Student> getStudents() {
return students;
}
public void addStudent(Student student) {
students.add(student);
}
}
class Student {
private String name;
private int score;
public Student(String name) {
this(name, 0);
}
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
```
这个学生管理系统有以下功能:
1. 登录时输入用户名和密码;
2. 能够录入、查询、修改和删除课程;
3. 能够录入、查询、修改和删除学生某个课程的成绩;
4. 能够持久化,将数据保存在文件中,并且分列每个class的代码。
您可以将这个示例代码导入Eclipse,然后编译运行。
用Java写一个学籍管理系统代码,要求1. 有完整友好的图形化界面;2. 录入学生基本信息的功能;3. 修改学生基本信息的功能;4. 查询学生基本信息的功能;5. 删除学生基本信息的功能;6. 可以将学生基本信息导出到磁盘上
好的,下面是一个简单的Java学籍管理系统代码实现,满足您的要求:
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class StudentManager extends JFrame {
private static final long serialVersionUID = 1L;
private JTable table;
private DefaultTableModel model;
private List<Student> students = new ArrayList<Student>();
public StudentManager() {
setTitle("学籍管理系统");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(800, 600));
// 创建菜单栏
JMenuBar menubar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenuItem exportItem = new JMenuItem("导出");
exportItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exportStudents();
}
});
fileMenu.add(exportItem);
menubar.add(fileMenu);
setJMenuBar(menubar);
// 创建表格
String[] columnNames = { "学号", "姓名", "性别", "年龄" };
model = new DefaultTableModel(columnNames, 0);
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
// 创建按钮
JButton addButton = new JButton("添加");
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addStudent();
}
});
JButton editButton = new JButton("修改");
editButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
editStudent();
}
});
JButton deleteButton = new JButton("删除");
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
deleteStudent();
}
});
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
buttonPanel.add(addButton);
buttonPanel.add(editButton);
buttonPanel.add(deleteButton);
// 创建主面板
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(scrollPane, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
setContentPane(mainPanel);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
// 添加学生
private void addStudent() {
JDialog dialog = new JDialog(this, "添加学生", true);
dialog.setPreferredSize(new Dimension(300, 200));
JLabel idLabel = new JLabel("学号:");
JTextField idField = new JTextField();
JLabel nameLabel = new JLabel("姓名:");
JTextField nameField = new JTextField();
JLabel genderLabel = new JLabel("性别:");
JTextField genderField = new JTextField();
JLabel ageLabel = new JLabel("年龄:");
JTextField ageField = new JTextField();
JPanel panel = new JPanel(new BorderLayout());
JPanel inputPanel = new JPanel(new BorderLayout());
inputPanel.add(idLabel, BorderLayout.WEST);
inputPanel.add(idField, BorderLayout.CENTER);
inputPanel.add(nameLabel, BorderLayout.WEST);
inputPanel.add(nameField, BorderLayout.CENTER);
inputPanel.add(genderLabel, BorderLayout.WEST);
inputPanel.add(genderField, BorderLayout.CENTER);
inputPanel.add(ageLabel, BorderLayout.WEST);
inputPanel.add(ageField, BorderLayout.CENTER);
panel.add(inputPanel, BorderLayout.CENTER);
JButton okButton = new JButton("确定");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String id = idField.getText();
String name = nameField.getText();
String gender = genderField.getText();
String age = ageField.getText();
Student student = new Student(id, name, gender, age);
students.add(student);
model.addRow(new Object[] { id, name, gender, age });
dialog.dispose();
}
});
JButton cancelButton = new JButton("取消");
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
panel.add(buttonPanel, BorderLayout.SOUTH);
dialog.setContentPane(panel);
dialog.pack();
dialog.setLocationRelativeTo(this);
dialog.setVisible(true);
}
// 修改学生
private void editStudent() {
int row = table.getSelectedRow();
if (row == -1) {
JOptionPane.showMessageDialog(this, "请先选择一行数据", "提示", JOptionPane.WARNING_MESSAGE);
return;
}
String id = (String) model.getValueAt(row, 0);
String name = (String) model.getValueAt(row, 1);
String gender = (String) model.getValueAt(row, 2);
String age = (String) model.getValueAt(row, 3);
JDialog dialog = new JDialog(this, "修改学生", true);
dialog.setPreferredSize(new Dimension(300, 200));
JLabel idLabel = new JLabel("学号:");
JTextField idField = new JTextField(id);
JLabel nameLabel = new JLabel("姓名:");
JTextField nameField = new JTextField(name);
JLabel genderLabel = new JLabel("性别:");
JTextField genderField = new JTextField(gender);
JLabel ageLabel = new JLabel("年龄:");
JTextField ageField = new JTextField(age);
JPanel panel = new JPanel(new BorderLayout());
JPanel inputPanel = new JPanel(new BorderLayout());
inputPanel.add(idLabel, BorderLayout.WEST);
inputPanel.add(idField, BorderLayout.CENTER);
inputPanel.add(nameLabel, BorderLayout.WEST);
inputPanel.add(nameField, BorderLayout.CENTER);
inputPanel.add(genderLabel, BorderLayout.WEST);
inputPanel.add(genderField, BorderLayout.CENTER);
inputPanel.add(ageLabel, BorderLayout.WEST);
inputPanel.add(ageField, BorderLayout.CENTER);
panel.add(inputPanel, BorderLayout.CENTER);
JButton okButton = new JButton("确定");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String newId = idField.getText();
String newName = nameField.getText();
String newGender = genderField.getText();
String newAge = ageField.getText();
if (!newId.equals(id)) {
// 更新学生列表和表格中的数据
for (Student student : students) {
if (student.getId().equals(id)) {
student.setId(newId);
student.setName(newName);
student.setGender(newGender);
student.setAge(newAge);
break;
}
}
model.setValueAt(newId, row, 0);
}
model.setValueAt(newName, row, 1);
model.setValueAt(newGender, row, 2);
model.setValueAt(newAge, row, 3);
dialog.dispose();
}
});
JButton cancelButton = new JButton("取消");
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
panel.add(buttonPanel, BorderLayout.SOUTH);
dialog.setContentPane(panel);
dialog.pack();
dialog.setLocationRelativeTo(this);
dialog.setVisible(true);
}
// 删除学生
private void deleteStudent() {
int[] rows = table.getSelectedRows();
if (rows.length == 0) {
JOptionPane.showMessageDialog(this, "请先选择行数据", "提示", JOptionPane.WARNING_MESSAGE);
return;
}
int option = JOptionPane.showConfirmDialog(this, "确定要删除选中的行数据吗?", "提示", JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION) {
for (int i = rows.length - 1; i >= 0; i--) {
String id = (String) model.getValueAt(rows[i], 0);
for (Student student : students) {
if (student.getId().equals(id)) {
students.remove(student);
break;
}
}
model.removeRow(rows[i]);
}
}
}
// 导出学生
private void exportStudents() {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
for (Student student : students) {
writer.write(student.getId() + "," + student.getName() + "," + student.getGender() + ","
+ student.getAge());
writer.newLine();
}
writer.flush();
JOptionPane.showMessageDialog(this, "导出成功", "提示", JOptionPane.INFORMATION_MESSAGE);
} catch (IOException e) {
JOptionPane.showMessageDialog(this, "导出失败:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
public static void main(String[] args) {
new StudentManager();
}
// 学生类
private static class Student {
private String id;
private String name;
private String gender;
private String age;
public Student(String id, String name, String gender, String age) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String 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 String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
}
```
代码中使用了Java Swing构建了一个简单的图形界面,通过表格显示学生的基本信息。在菜单栏上增加了一个导出功能,可以将学生信息导出为CSV文件。同时,界面上还提供了添加、修改、删除学生的操作。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![](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)
![](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)
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)