使用 字符流和和GUI类 编程实现以下功能

(1)设计图形化界面,至少包括文本类控件类。接收从键盘输入姓名、学号、成绩,并保存到文本文件中,重复进行。(2)从文件中读取各学生的成绩,并计算所有学生成绩的平均值、最大值和最小值,排序后输出到另一文本文件。
较为简单版本(直接创建相应的文本文档,降低了难度)
缺点:当计算成绩之后,再添加学生信息,无法读取之前录入的学生信息
效果图在这里插入图片描述

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.Collections;
import java.util.Vector;


public class Question_5 {
    public static void main(String[]args) throws Exception{
        JFrame myFrame=new JFrame("录入学生信息");
        myFrame.setBounds(100,100,400,250);
        myFrame.setResizable(false);
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.setLayout(new FlowLayout(FlowLayout.CENTER));

        JPanel NamePanel=new JPanel();
        JLabel NameLabel=new JLabel("Name:");
        JTextField NameText=new JTextField(30);
        NamePanel.add(NameLabel);
        NamePanel.add(NameText);

        JPanel IDPanel=new JPanel();
        JLabel IDLabel=new JLabel("       ID:");
        JTextField IDText=new JTextField(30);
        IDPanel.add(IDLabel);
        IDPanel.add(IDText);

        JPanel MarkPanel=new JPanel();
        JLabel MarkLabel=new JLabel(" Mark :");
        JTextField MarkText=new JTextField(30);
        MarkPanel.add(MarkLabel);
        MarkPanel.add(MarkText);

        JPanel ResultPanel=new JPanel();
        JLabel MaxLabel=new JLabel("Max:");
        JTextField MaxText=new JTextField(5);
        JLabel AverageLabel=new JLabel("Average:");
        JTextField AverageText=new JTextField(5);
        JLabel MinLabel=new JLabel("Min:");
        JTextField MinText=new JTextField(5);
        ResultPanel.add(MaxLabel);
        ResultPanel.add(MaxText);
        ResultPanel.add(AverageLabel);
        ResultPanel.add(AverageText);
        ResultPanel.add(MinLabel);
        ResultPanel.add(MinText);

        JPanel  ElectPanel=new JPanel();
        JButton AddBtn=new JButton("      Add     ");
        JButton ConBtn=new JButton("Continue");
        JButton CounterBtn=new JButton("Counter");
        ElectPanel.add(AddBtn);
        ElectPanel.add(ConBtn);
        ElectPanel.add(CounterBtn);

        myFrame.add(NamePanel);
        myFrame.add(IDPanel);
        myFrame.add(MarkPanel);
        myFrame.add(ResultPanel);
        myFrame.add(ElectPanel);
        myFrame.setVisible(true);

        File StudentFile=new File("D:\\JAVA_Code_Homework\\4\\Student.txt");
        File StudentMark=new File("D:\\JAVA_Code_Homework\\4\\StudentMark.txt");
        FileOutputStream Fos=new FileOutputStream(StudentFile);
        FileInputStream  fis=new FileInputStream(StudentFile);
        FileOutputStream fos=new FileOutputStream(StudentMark);
        AddBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    String Ins=NameText.getText()+" "+IDText.getText()+"#"+MarkText.getText()+"\n";
                    byte[] bytes=new byte[1024];
                    bytes=Ins.getBytes();
                    Fos.write(bytes,0,bytes.length);
                    System.out.println("信息录入成功");
                }catch(IOException e1){
                    System.out.println(e1);

                }

            }
        });

        ConBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                NameText.setText("");
                IDText.setText("");
                MarkText.setText("");
            }
        });

        CounterBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                BufferedReader bf=new BufferedReader(new InputStreamReader(fis));
                String s;
                Vector<Double> MarkArray=new Vector<>(0);
                Double sum=0.0;
                try {
                    while ((s = bf.readLine() )!= null) {
                        String temp=s.substring(s.indexOf('#')+1);
                        MarkArray.add(Double.parseDouble(temp));
                    }
                    Collections.sort(MarkArray);
                    for(int i=0;i<MarkArray.size();i++){
                        sum+=MarkArray.get(i);
                    }
                    MaxText.setText(String.valueOf(MarkArray.get(0)));
                    AverageText.setText(String.valueOf(sum/MarkArray.size()));
                    MinText.setText(String.valueOf(MarkArray.get((MarkArray.size()-1))));
                    String Ins=MaxText.getText()+" "+AverageText.getText()+" "+MinText.getText()+"\n";
                    byte[] b=new byte [1024];
                    b=Ins.getBytes();
                    fos.write(b,0,b.length);
                    System.out.println("成绩录入成功");
                }catch(IOException e1) {

                }

            }
        });

    }

}
图书资料管理信息系统,带源代码、数据库sql文件、课设报告,具备如下基本功能: 1、 系统管理功能有:角色管理、用户管理、修改密码。主要实现系统的安全管理,不同的操作者有不同的权限,可以执行不同的操作。普通读者的权限只能是查询图书及自己的借阅情况;而图书馆管理员可以对图书信息进行管理,如对新书入库,也可以管理用户,如添加新用户和删除不用的账号等。 2、 进书管理功能有:登记基本的图书信息。这部分的功能用于登记新书的书名、作者、出版社、价格、进书的册数、进书日期、ISBN等。 3、 图书入库管理功能有:对新书分编目,及时更新图书库中的图书信息。这部分的功能用于对所购进的新书,按其种学科进行编目,给与唯一的书号;及时更新书库中的图书信息,包括书名、书号、作者、出版社、价格、库存位置和库存册数这些信息,方便读者查询借阅。 4、 查询功能功能有:查询图书的信息,查询读者的借阅情况。这部分的功能主要提供多种方式的查询服务。读者可以根据书名、作者或关键字模糊查询图书信息;读者也可以根据自己的借书证号查询自己的借阅情况,如已借了几本书,借书日期,还书日期,有没有续借等。 5、 借书/还书管理功能有:借书管理、还书管理。这部分的功能是当读者借书时,系统根据借书证号识别读者身份,核对读者的借书信息,做出判断如可不可以借、还可借几本,成功借阅后记录在借书信息并修改书库图书信息。当读者还书时,系统根据借书证号识别读者身份,核对读者的借书信息,做出判断如有没有超期,要不要罚款,需要罚多少等,最后还书成功,修改书库图书信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值