JAVA GUI 学生信息管理系统(Swing)(详细)
1号全栈玩家 2024-06-26 15:05:18 阅读 88
项目名称: 学生信息管理系统
样品展示:
学生管理系统
系统简介(思维):
该项目用于学习巩固java知识,包含很多知识应用,(注意:本篇文章项目不含数据库内容,采取IO流代替写进文本,保存数据),与君共同成长学习,源代码加微:wxzhangguangpeng
技术需求:
java基础知识面向对象IO流异常处理Swing程序设计
实现步骤(并不规范,个人思路):
第一步:注册界面
新建类:Register,继承JFrame类窗体基础调整新建标签将标签加入到窗体容器中如下
package StudentManagementSystem12;
import javax.swing.*;
import java.awt.*;
public class Register extends JFrame{
public Register() {
setTitle("StudentManagementSystem");
setBounds(600, 200, 350, 300);//窗体标题
setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭方式的设置
Container c1 = getContentPane();//将窗体变为容器
JPanel jPanel1 = new JPanel(new BorderLayout()); // 使用 BorderLayout布局管理器
JLabel jLabel1 = new JLabel("Register");//用标签写出标题
Font font = new Font("Arial", Font.PLAIN, 40);//调整字体大小和样式
jLabel1.setFont(font);
jLabel1.setForeground(Color.BLACK);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);//标题位置
jPanel1.add(jLabel1, BorderLayout.NORTH); // 将 JLabel 添加到北部
c1.add(jPanel1);
setVisible(true);//显示窗体
}
public static void main(String[] args) {
new Register();
}
}
添加用户名和密码的文本框和文字标签,用SpringLayout布局管理器来规划位置添加三个按钮,也用SpringLayout布局管理器来规划位置根据事件监听器的知识进行按钮的制定HomePage可以不设置监听器完整的注册注册代码文件如下(账号文件位置需要自己修改)
package StudentManagementSystem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class Register extends JFrame {
public JTextField textField1;
public JPasswordField textField2;
public JPasswordField textField3;
public Register() {
setTitle("StudentManagementSystem");
setBounds(600, 200, 350, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c1 = getContentPane();
JPanel jPanel1 = new JPanel(new BorderLayout()); // 使用 BorderLayout
JLabel jLabel1 = new JLabel("Register");
Font font = new Font("Arial", Font.PLAIN, 40);
jLabel1.setFont(font);
jLabel1.setForeground(Color.BLACK);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jPanel1.add(jLabel1, BorderLayout.NORTH); // 将 JLabel 添加到北部
SpringLayout layout = new SpringLayout();
JPanel panel = new JPanel(layout);
JLabel label1 = new JLabel("Enter name:");
textField1 = new JTextField(20);
JLabel label2 = new JLabel("Enter password:");
textField2 = new JPasswordField(20);
JLabel label3 = new JLabel("Re-entered Password:");
textField3 = new JPasswordField(20);
// 添加组件到 SpringLayout 面板
panel.add(label1);
panel.add(textField1);
panel.add(label2);
panel.add(textField2);
panel.add(label3);
panel.add(textField3);
// 定义组件之间的约束关系
layout.putConstraint(SpringLayout.WEST, label1, 5, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, label1, 5, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, textField1, 64, SpringLayout.EAST, label1);
layout.putConstraint(SpringLayout.NORTH, textField1, 5, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, label2, 5, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, label2, 10, SpringLayout.SOUTH, textField1);
layout.putConstraint(SpringLayout.WEST, textField2, 40, SpringLayout.EAST, label2);
layout.putConstraint(SpringLayout.NORTH, textField2, 10, SpringLayout.SOUTH, textField1);
layout.putConstraint(SpringLayout.WEST, label3, 5, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, label3, 10, SpringLayout.SOUTH, textField2);
layout.putConstraint(SpringLayout.WEST, textField3, 5, SpringLayout.EAST, label3);
layout.putConstraint(SpringLayout.NORTH, textField3, 10, SpringLayout.SOUTH, textField2);
SpringLayout layout1 = new SpringLayout();
JPanel p1 = new JPanel(layout);
JButton jb1 = new JButton("Sign up");
jb1.addActionListener(new jb1action());
JButton jb2 = new JButton("Clean");
jb2.addActionListener(new jb2action());
JButton jb3 = new JButton("HomePage");
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new HomePage();
}
});
panel.add(jb1);
panel.add(jb2);
panel.add(jb3);
layout.putConstraint(SpringLayout.WEST, jb1, 30, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, jb1, 10, SpringLayout.SOUTH, textField3);
layout.putConstraint(SpringLayout.WEST, jb2, 20, SpringLayout.EAST, jb1);
layout.putConstraint(SpringLayout.NORTH, jb2, 10, SpringLayout.SOUTH, textField3);
layout.putConstraint(SpringLayout.WEST, jb3, 20, SpringLayout.EAST, jb2);
layout.putConstraint(SpringLayout.NORTH, jb3, 10, SpringLayout.SOUTH, textField3);
jPanel1.add(panel, BorderLayout.CENTER); // 将 SpringLayout 的 panel 添加到中部
c1.add(jPanel1);
setVisible(true);
}
private class jb1action implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Map<String, String> UInfor = new HashMap<>();
String filePath = "D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\Register.txt";
try {
// 创建一个文件读取对象
FileReader fileReader = new FileReader(filePath);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
String[] parts = line.split(" : ");
if (parts.length == 2) {
String key = parts[0];
String value = parts[1];
UInfor.put(key, value);
}
}
bufferedReader.close();
} catch (IOException ex) {
System.out.println("读取文件时出现错误:" + ex.getMessage());
}
String getUseName = textField1.getText();
char[] ch1 = textField2.getPassword();
String getGetPassword1 = new String(ch1);
char[] ch2 = textField3.getPassword();
String getGetPassword2 = new String(ch2);
if (getGetPassword1.equals(getGetPassword2)){
JOptionPane.showMessageDialog(Register.this,"Register successfully!");
UInfor.put(getUseName,getGetPassword1);
File file = new File("D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\Register.txt");
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(file);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
for (Map.Entry<String, String> entry : UInfor.entrySet()) {
String line = entry.getKey() + " : " + entry.getValue();
try {
bufferedWriter.write(line);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
try {
bufferedWriter.newLine();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
try {
bufferedWriter.close();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
System.out.println("HashMap内容已写入文件:" + file);
dispose();
}else{
JOptionPane.showMessageDialog(Register.this,"Password and Re-entered Password do not match!");
textField2.setText("");
textField3.setText("");
}
}
}
private class jb2action implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
textField1.setText("");
textField2.setText("");
textField3.setText("");
}
}
}
第二步:登陆界面
新建类:Login窗体设置,组件设置读取账号文本判断用户名和密码登陆成功,转换界面完整代码如下:
package StudentManagementSystem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class Login extends JFrame {
public JTextField textField1;
public JPasswordField textField2;
public Login(){
setTitle("StudentManagementSystem");
setBounds(600, 200, 350, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c1 = getContentPane();
JPanel jPanel1 = new JPanel(new BorderLayout()); // 使用 BorderLayout
JLabel jLabel1 = new JLabel("Login");
Font font = new Font("Arial", Font.PLAIN, 40);
jLabel1.setFont(font);
jLabel1.setForeground(Color.BLACK);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jPanel1.add(jLabel1, BorderLayout.NORTH); // 将 JLabel 添加到北部
SpringLayout layout = new SpringLayout();
JPanel panel = new JPanel(layout);
JLabel label1 = new JLabel("Enter name:");
textField1 = new JTextField(20);
JLabel label2 = new JLabel("Enter password:");
textField2 = new JPasswordField(20);
// 添加组件到 SpringLayout 面板
panel.add(label1);
panel.add(textField1);
panel.add(label2);
panel.add(textField2);
// 定义组件之间的约束关系
layout.putConstraint(SpringLayout.WEST, label1, 5, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, label1, 5, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, textField1, 64, SpringLayout.EAST, label1);
layout.putConstraint(SpringLayout.NORTH, textField1, 5, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, label2, 5, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, label2, 10, SpringLayout.SOUTH, textField1);
layout.putConstraint(SpringLayout.WEST, textField2, 40, SpringLayout.EAST, label2);
layout.putConstraint(SpringLayout.NORTH, textField2, 10, SpringLayout.SOUTH, textField1);
SpringLayout layout1 = new SpringLayout();
JPanel p1 = new JPanel(layout);
JButton jb1 = new JButton("Login up");
jb1.addActionListener(new jb1action());
JButton jb2 = new JButton("Clean");
jb2.addActionListener(new jb2action());
JButton jb3 = new JButton("Sign up");
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Register();
}
});
panel.add(jb1);
panel.add(jb2);
panel.add(jb3);
layout.putConstraint(SpringLayout.WEST, jb1, 30, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, jb1, 10, SpringLayout.SOUTH, textField2);
layout.putConstraint(SpringLayout.WEST, jb2, 20, SpringLayout.EAST, jb1);
layout.putConstraint(SpringLayout.NORTH, jb2, 10, SpringLayout.SOUTH, textField2);
layout.putConstraint(SpringLayout.WEST, jb3, 20, SpringLayout.EAST, jb2);
layout.putConstraint(SpringLayout.NORTH, jb3, 10, SpringLayout.SOUTH, textField2);
jPanel1.add(panel, BorderLayout.CENTER); // 将 SpringLayout 的 panel 添加到中部
c1.add(jPanel1);
setVisible(true);
}
private class jb2action implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
textField1.setText("");
textField2.setText("");
}
}
private class jb1action implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String filePath = "D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\Register.txt";
Map<String, String> UInfor = new HashMap<>();
FileReader fileReader;
{
try {
fileReader = new FileReader(filePath);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
String[] parts = line.split(" : ");
if (parts.length == 2) {
String key = parts[0];
String value = parts[1];
UInfor.put(key, value);
}
}
bufferedReader.close();
} catch (IOException ex) {
System.out.println("读取文件时候出现错误:"+ex.getMessage());
}
}
String getUseName = textField1.getText();
char[] ch1 = textField2.getPassword();
String getGetPassword1 = new String(ch1);
boolean flag = UInfor.containsKey(getUseName);
if (flag && UInfor.get(getUseName).equals(getGetPassword1)){
JOptionPane.showMessageDialog(Login.this,"Login successfully!");
new HomePage();
dispose();
}else {
JOptionPane.showMessageDialog(Login.this,"User name or password error!");
textField1.setText("");
textField2.setText("");
}
}
}
}
第三步:学生类
package StudentManagementSystem;
import java.io.Serializable;
public class Student implements Serializable {
private String name;
private String age;
private String id;
private String grade;
private String gender;
public Student() {
}
public Student(String name, String age, String id, String grade, String gender) {
this.name = name;
this.age = age;
this.id = id;
this.grade = grade;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "name='" + name + '\'' +
", age='" + age + '\'' +
", id='" + id + '\'' +
", grade='" + grade + '\'' +
", gender='" + gender + '\'';
}
}
第四步: 添加学生界面
废话不多说,上代码(关于文件路径,请君自行修改):
package StudentManagementSystem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
public class AddStudent extends JFrame {
public AddStudent() {
setTitle("StudentManagementSystem");
setBounds(600, 200, 400, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container container = getContentPane();
SpringLayout layout = new SpringLayout();
JPanel mainPanel = new JPanel(layout);
JLabel titleLabel = new JLabel("Add Student");
Font titleFont = new Font("Arial", Font.PLAIN, 30);
titleLabel.setFont(titleFont);
titleLabel.setForeground(Color.BLACK);
JLabel nameLabel = new JLabel("Enter your name:");
JTextField nameField = new JTextField(15);
JLabel ageLabel = new JLabel("Select your age:");
String[] ages = {"Under 18", "18-30", "30-50", "50+"};
JComboBox<String> ageComboBox = new JComboBox<>(ages);
JLabel idLabel = new JLabel("Enter your ID:");
JTextField idField = new JTextField(15);
JLabel gradeLabel = new JLabel("Select your grade:");
String[] grades = {"Freshman", "Sophomore", "Junior", "Senior"};
JComboBox<String> gradeComboBox = new JComboBox<>(grades);
JLabel genderLabel = new JLabel("Select your gender:");
JRadioButton maleRadioButton = new JRadioButton("Male");
JRadioButton femaleRadioButton = new JRadioButton("Female");
ButtonGroup genderGroup = new ButtonGroup();
genderGroup.add(maleRadioButton);
genderGroup.add(femaleRadioButton);
JPanel genderPanel = new JPanel();
genderPanel.add(maleRadioButton);
genderPanel.add(femaleRadioButton);
JButton addButton = new JButton("Add Student");
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (nameField.getText().isEmpty()){
JOptionPane.showMessageDialog(AddStudent.this,"Name must be filled in!");
}else {
String gender = "";
if (maleRadioButton.isSelected()) {
gender = "Male";
} else if (femaleRadioButton.isSelected()) {
gender = "Female";
}
Student student = new Student(nameField.getText(), ageComboBox.getSelectedItem().toString(),idField.getText(),gradeComboBox.getSelectedItem().toString(),gender);
System.out.println(student);
// 从文件中读取 studentList
//读取
ArrayList<Student> list;
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\students.dat"))) {
list = (ArrayList<Student>) ois.readObject();
System.out.println("Student list has been read from the file.");
} catch (IOException | ClassNotFoundException xe) {
xe.printStackTrace();
list = new ArrayList<>(); // 如果读取失败,则初始化一个新的列表
}
//写入
list.add(student);
System.out.println(list.toString());
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\students.dat"))) {
oos.writeObject(list);
System.out.println("Student list has been written to the file.");
} catch (IOException ex) {
ex.printStackTrace();
}
JOptionPane.showMessageDialog(AddStudent.this,"Student added successfully!");
}
}
});
JButton HomePage = new JButton("HomePage");
HomePage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new HomePage();
dispose();
}
});
mainPanel.add(titleLabel);
mainPanel.add(nameLabel);
mainPanel.add(nameField);
mainPanel.add(ageLabel);
mainPanel.add(ageComboBox);
mainPanel.add(idLabel);
mainPanel.add(idField);
mainPanel.add(gradeLabel);
mainPanel.add(gradeComboBox);
mainPanel.add(genderLabel);
mainPanel.add(genderPanel);
mainPanel.add(addButton);
mainPanel.add(HomePage);
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, titleLabel, 0, SpringLayout.HORIZONTAL_CENTER, mainPanel);
layout.putConstraint(SpringLayout.NORTH, titleLabel, 10, SpringLayout.NORTH, mainPanel);
layout.putConstraint(SpringLayout.WEST, nameLabel, 10, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, nameLabel, 50, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, nameField, 10, SpringLayout.EAST, nameLabel);
layout.putConstraint(SpringLayout.NORTH, nameField, 46, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, ageLabel, 10, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, ageLabel, 30, SpringLayout.SOUTH, nameLabel);
layout.putConstraint(SpringLayout.WEST, ageComboBox, 10, SpringLayout.EAST, ageLabel);
layout.putConstraint(SpringLayout.NORTH, ageComboBox, 26, SpringLayout.SOUTH, nameLabel);
layout.putConstraint(SpringLayout.WEST, idLabel, 10, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, idLabel, 30, SpringLayout.SOUTH, ageLabel);
layout.putConstraint(SpringLayout.WEST, idField, 10, SpringLayout.EAST, idLabel);
layout.putConstraint(SpringLayout.NORTH, idField, 26, SpringLayout.SOUTH, ageLabel);
layout.putConstraint(SpringLayout.WEST, gradeLabel, 10, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, gradeLabel, 30, SpringLayout.SOUTH, idLabel);
layout.putConstraint(SpringLayout.WEST, gradeComboBox, 10, SpringLayout.EAST, gradeLabel);
layout.putConstraint(SpringLayout.NORTH, gradeComboBox, 26, SpringLayout.SOUTH, idLabel);
layout.putConstraint(SpringLayout.WEST, genderLabel, 10, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, genderLabel, 30, SpringLayout.SOUTH, gradeLabel);
layout.putConstraint(SpringLayout.WEST, genderPanel, 10, SpringLayout.EAST, genderLabel);
layout.putConstraint(SpringLayout.NORTH, genderPanel, 26, SpringLayout.SOUTH, gradeLabel);
layout.putConstraint(SpringLayout.WEST, addButton, 70, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, addButton, 30, SpringLayout.SOUTH, genderPanel);
layout.putConstraint(SpringLayout.WEST, HomePage, 130, SpringLayout.WEST, addButton);
layout.putConstraint(SpringLayout.NORTH, HomePage, 30, SpringLayout.SOUTH, genderPanel);
container.add(mainPanel);
setVisible(true);
}
}
第五步: 展现学生信息界面
废话不多说,上代码(关于文件路径,请君自行修改):
package StudentManagementSystem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
public class CheckStudent extends JFrame {
private String text = "Show : \n";
private JTextArea textArea;
private JTextField nameField;
public CheckStudent(){
setTitle("StudentManagementSystem");
setBounds(600, 200, 500, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c1 = getContentPane();
SpringLayout layout = new SpringLayout();
JPanel mainPanel = new JPanel(layout);
JLabel titleLabel = new JLabel("Check Student");
Font font = new Font("Arial", Font.PLAIN, 40);
titleLabel.setFont(font);
titleLabel.setForeground(Color.BLACK);
titleLabel.setHorizontalAlignment(SwingConstants.CENTER);
JLabel nameLabel = new JLabel("Enter the query name:");
nameField = new JTextField(7);
JButton jb1 = new JButton(" Query");
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text = "Show : \n";
ArrayList<Student> list;
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\students.dat"))) {
list = (ArrayList<Student>) ois.readObject();
System.out.println("Student list has been read from the file.");
} catch (IOException | ClassNotFoundException xe) {
xe.printStackTrace();
list = new ArrayList<>(); // 如果读取失败,则初始化一个新的列表
}
String namecheck = nameField.getText();
for (Student student : list) {
if (student.getName().equals(namecheck)){
text += student.toString() + "\n";
}
}
if (text.equals("Show : \n")){
JOptionPane.showMessageDialog(CheckStudent.this,"Students with this name can't be found!");
}
textArea.setText(text);
}
});
JButton jb2 = new JButton("Show all");
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ArrayList<Student> list;
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\students.dat"))) {
list = (ArrayList<Student>) ois.readObject();
System.out.println("Student list has been read from the file.");
} catch (IOException | ClassNotFoundException xe) {
xe.printStackTrace();
list = new ArrayList<>(); // 如果读取失败,则初始化一个新的列表
}
text = "Show : \n";
for (Student student : list) {
text += student.toString() + "\n";
}
System.out.println(text);
textArea.setText(text);
}
});
JButton jb3 = new JButton("Clean");
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
nameField.setText("");
}
});
textArea = new JTextArea(12,51);
textArea.setText(text);
JScrollPane scrollPane = new JScrollPane(textArea);
JButton jb4 = new JButton("HomePage");
jb4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new HomePage();
dispose();
}
});
mainPanel.add(titleLabel);
mainPanel.add(nameLabel);
mainPanel.add(nameField);
mainPanel.add(jb1);
mainPanel.add(jb2);
mainPanel.add(jb3);
mainPanel.add(scrollPane);
mainPanel.add(jb4);
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, titleLabel, 0, SpringLayout.HORIZONTAL_CENTER, mainPanel);
layout.putConstraint(SpringLayout.NORTH, titleLabel, 10, SpringLayout.NORTH, mainPanel);
layout.putConstraint(SpringLayout.WEST, nameLabel, 10, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, nameLabel, 70, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, nameField, 10, SpringLayout.EAST, nameLabel);
layout.putConstraint(SpringLayout.NORTH, nameField, 70, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, jb1, 230, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, jb1, 65, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, jb2, 10, SpringLayout.EAST, jb1);
layout.putConstraint(SpringLayout.NORTH, jb2, 65, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, jb3, 10, SpringLayout.EAST, jb2);
layout.putConstraint(SpringLayout.NORTH, jb3, 65, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, scrollPane, 10, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, scrollPane, 30, SpringLayout.NORTH, nameLabel);
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, jb4, 0, SpringLayout.HORIZONTAL_CENTER, mainPanel);
layout.putConstraint(SpringLayout.NORTH, jb4, 200, SpringLayout.NORTH, scrollPane);
c1.add(mainPanel);
setVisible(true);
}
}
第六步: 删除学生信息界面
废话不多说,上代码(关于文件路径,请君自行修改):
package StudentManagementSystem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
public class DeleteStudentInfo extends JFrame {
private JTextField nameField;
public DeleteStudentInfo(){
setTitle("StudentManagementSystem");
setBounds(600, 200, 500, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c1 = getContentPane();
SpringLayout layout = new SpringLayout();
JPanel mainPanel = new JPanel(layout);
JLabel titleLabel = new JLabel("Delete Student Info");
Font font = new Font("Arial", Font.PLAIN, 40);
titleLabel.setFont(font);
titleLabel.setForeground(Color.BLACK);
titleLabel.setHorizontalAlignment(SwingConstants.CENTER);
JLabel nameLabel = new JLabel("Enter the delete name:");
nameField = new JTextField(17);
JButton jb1 = new JButton("Delete");
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ArrayList<Student> list;
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\students.dat"))) {
list = (ArrayList<Student>) ois.readObject();
System.out.println("Student list has been read from the file.");
} catch (IOException | ClassNotFoundException xe) {
xe.printStackTrace();
list = new ArrayList<>(); // 如果读取失败,则初始化一个新的列表
}
String namedelete = nameField.getText();
Iterator it = list.iterator();
boolean flag = true;
while (it.hasNext()){
Student stu = (Student) it.next();
if (namedelete.equals(stu.getName())){
it.remove();
flag = false;
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\jdk\\code\\GUI\\src\\StudentManagementSystem\\students.dat"))) {
oos.writeObject(list);
System.out.println("Student list has been written to the file.");
} catch (IOException ex) {
ex.printStackTrace();
}
JOptionPane.showMessageDialog(DeleteStudentInfo.this,"Delete succeeded!");
}
}
if (flag){
JOptionPane.showMessageDialog(DeleteStudentInfo.this,"Delete failed, this person cannot be found!");
}
}
});
JButton jb2 = new JButton("HomePage");
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new HomePage();
dispose();
}
});
mainPanel.add(titleLabel);
mainPanel.add(nameLabel);
mainPanel.add(nameField);
mainPanel.add(jb1);
mainPanel.add(jb2);
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, titleLabel, 0, SpringLayout.HORIZONTAL_CENTER, mainPanel);
layout.putConstraint(SpringLayout.NORTH, titleLabel, 10, SpringLayout.NORTH, mainPanel);
layout.putConstraint(SpringLayout.WEST, nameLabel, 90, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, nameLabel, 70, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, nameField, 10, SpringLayout.EAST, nameLabel);
layout.putConstraint(SpringLayout.NORTH, nameField, 70, SpringLayout.NORTH, titleLabel);
layout.putConstraint(SpringLayout.WEST, jb1, 140, SpringLayout.WEST, mainPanel);
layout.putConstraint(SpringLayout.NORTH, jb1, 70, SpringLayout.NORTH, nameLabel);
layout.putConstraint(SpringLayout.WEST, jb2, 40, SpringLayout.EAST, jb1);
layout.putConstraint(SpringLayout.NORTH, jb2, 70, SpringLayout.NORTH, nameLabel);
c1.add(mainPanel);
setVisible(true);
}
}
第七步: 主页功能界面
废话不多说,上代码(关于文件路径,请君自行修改):
package StudentManagementSystem;
import StudentManagementSystem.Register;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class HomePage extends JFrame {
public HomePage(){
setTitle("StudentManagementSystem");
setBounds(600, 200, 350, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c1 = getContentPane();
c1.setLayout(new GridLayout(5, 1)); // 设置为2行1列的GridLayout
JButton jb1 = new JButton("Register");
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Register();
dispose();
}
});
JButton jb2 = new JButton("Login");
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Login();
dispose();
}
});
JButton jb3 = new JButton("Add student");
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new AddStudent();
dispose();
}
});
JButton jb4 = new JButton("CheckStudent");
jb4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new CheckStudent();
dispose();
}
});
JButton jb5 = new JButton("Delete Student Info");
jb5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new DeleteStudentInfo();
dispose();
}
});
c1.add(jb1);
c1.add(jb2);
c1.add(jb3);
c1.add(jb4);
c1.add(jb5);
setVisible(true);
}
}
第七步: 运行界面
废话不多说,上代码(关于文件路径,请君自行修改):
package StudentManagementSystem;
public class Game {
public static void main(String[] args) {
new Login();
}
}
第七步:注意事项
将上述界面找一个idea逐一复制新建到一个文件夹中路径记得自己更换要原代码,需要指导弄的可以评论找我哦
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。