java实例 学生成绩系统

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.BufferedReader;


// 系统面板
class StudentGUI extends JFrame
{
    // 学生系统成员属性
    int maxscore;
    int minscore;
    double avescore;

    // 标签
    JLabel name;
    JLabel Id;
    JLabel score;

    // 文本框
    JTextField namefield;
    JTextField Idfield;
    JTextField scorefield;

    // 上传按钮
    JButton sendbtn;

    // 获取当前成绩按钮
    JButton getscorebtn;

    // 监听器
    SendPolice sendPolice;
    GetScorePolice getScorePolice;

    // 发送按钮监听器
    private class SendPolice implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            // 文件读入
            try
            {
                // 读入文件对象
                FileWriter filewriter = new FileWriter("C:\\Users\\dell\\Desktop\\2019215053 杨雨润\\学生系统\\学生成绩.txt",true);
                BufferedWriter out = new BufferedWriter(filewriter);  // 输出流
                out.write(namefield.getText() + " " + Idfield.getText() + " " + scorefield.getText() + "\n");

                // 重置输出文本
                namefield.setText("");
                Idfield.setText("");
                scorefield.setText("");

                // 关闭流
                out.close();
            }
            catch(IOException ioe)
            {
                System.out.println(ioe.getMessage());
            }
        }
    }

    // 获取成绩按钮监听器
    private class GetScorePolice implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            try
            {
                // 获取文件内容
                FileReader fileReader = new FileReader("C:\\Users\\dell\\Desktop\\2019215053 杨雨润\\学生系统\\学生成绩.txt");
                BufferedReader in = new BufferedReader(fileReader);      // 读入流

                String score;                                // 每个人的成绩
                String reg = "[\\D]+";                       // 非数字字符
                String studentscore[] = new String[100];     // 所有人的成绩数组
                int sum = 0;                                 // 总分数
                int count = 0;                               // 计算学生数
                maxscore = 0;
                minscore = 1000;

                // 获得成绩
                while((score = in.readLine())!=null)
                {
                    String dig[] = score.split(reg);  // 截取掉非数字字符
                    studentscore[count++] = score;    // 将成绩传入数组中,方便后面排序

                    // 计算总成绩
                    sum = sum + Integer.valueOf(dig[2]);  // 求成绩之和,这里之所以是2,是因为1是“ ”

                    // 计算最高分
                    if(Integer.valueOf(dig[2]) > maxscore)
                        maxscore = Integer.valueOf(dig[2]);

                    // 计算最低分
                    if(Integer.valueOf(dig[2]) < minscore)
                        minscore = Integer.valueOf(dig[2]);

                }

                // 排序
                for(int i = 0; i < count;i++)
                {
                    for(int j = 0;j < count-1;j++)
                    {
                        String z;   // 中转
                        String n1[] = studentscore[j].split(reg);      // 截取数字
                        String n2[] = studentscore[j + 1].split(reg);

                        int num1 = Integer.valueOf(n1[2]);             // 获得第一个人的成绩
                        int num2 = Integer.valueOf(n2[2]);

                        if(num1 < num2)
                        {
                            z = studentscore[j];
                            studentscore[j] = studentscore[j + 1];
                            studentscore[j + 1] = z;
                        }
                    }
                }

                // 将分数写入文件
                try
                {
                    // 文件进行覆盖,每输入一个学生,文件就更新
                    FileWriter fileWriter = new FileWriter("C:\\Users\\dell\\Desktop\\2019215053 杨雨润\\学生系统\\学生排名.txt");
                    BufferedWriter out = new BufferedWriter(fileWriter);

                    // 输出排名
                    out.write("学生成绩排名: " + "\n");
                    for(int i = 0;i < count;i++)
                        out.write(studentscore[i] + "\n");

                    out.write("\n");

                    // 获取平均成绩
                    avescore = (double)sum / count;
                    out.write("平均分:" + String.format("%.3f", avescore) + "\n");  // 保留三位小数

                    // 获得最高分
                    out.write("最高分:" + maxscore + "\n");

                    // 获得最低分
                    out.write("最低分:" + minscore + "\n");

                    // 关闭流
                    in.close();
                    out.close();
                }
                catch (IOException ioe)
                {
                    System.out.println(ioe.getMessage());
                }
            }
            catch (IOException exc)
            {
                System.out.println(exc.getMessage());
            }
        }
    }

    StudentGUI()
    {
        // 窗口设置1
        super("学生系统");
        setSize(500,300);
        setLayout(new FlowLayout(1,10,80));

        // 设置按钮面板
        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout(1,100,0));

        // 标签实例化
        name = new JLabel("姓名:");
        Id = new JLabel("学号:");
        score = new JLabel("成绩:");

        // 监听器实例化
        sendPolice = new SendPolice();
        getScorePolice = new GetScorePolice();

        // 文本框实例化
        namefield = new JTextField(7);
        Idfield = new JTextField(10);
        scorefield = new JTextField(7);

        // 按钮实例化
        sendbtn = new JButton("上传成绩");
        getscorebtn = new JButton("打开成绩单");
        sendbtn.addActionListener(sendPolice);
        getscorebtn.addActionListener(getScorePolice);

        // 添加组件
        add(name);
        add(namefield);
        add(Id);
        add(Idfield);
        add(score);
        add(scorefield);
        add(panel);
        panel.add(sendbtn);
        panel.add(getscorebtn);

        // 窗口设置2
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

public class StudentSys
{
    public static void main(String args[])
    {
        StudentGUI sgui = new StudentGUI();
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值