java成绩管理系统

文章目录

    • 学生类
    • 接口
    • 增加学生
    • 主函数
       

学生类

    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);
        });
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值