新闻中心

J*a制作考试成绩录入界面_面向对象逻辑搭建实例

2025-12-04
浏览次数:
返回列表
答案:通过设计ScoreRecord类封装成绩数据,ScoreManager类管理成绩记录并计算平均分,结合Swing构建图形界面实现输入与展示,最终在Main类中启动程序,形成结构清晰、易于扩展的成绩录入系统。

java制作考试成绩录入界面_面向对象逻辑搭建实例

用J*a制作一个考试成绩录入界面,核心在于合理运用面向对象思想来组织代码结构。下面通过一个简单但完整的实例,展示如何从类设计到界面搭建,实现成绩录入功能。

1. 设计成绩信息类(ScoreRecord)

每个成绩记录应包含学生姓名、科目和分数。我们创建一个ScoreRecord类来封装这些数据。

关键点: 提供构造方法、getter/setter,并可添加验证逻辑。

public class ScoreRecord {
    private String studentName;
    private String subject;
    private double score;

    public ScoreRecord(String studentName, String subject, double score) {
        if (studentName == null || studentName.trim().isEmpty()) {
            throw new IllegalArgumentException("姓名不能为空");
        }
        this.studentName = studentName;
        this.subject = subject;
        this.score = score;
    }

    // Getter 和 Setter
    public String getStudentName() { return studentName; }
    public String getSubject() { return subject; }
    public double getScore() { return score; }

    @Override
    public String toString() {
        return "姓名:" + studentName + ",科目:" + subject + ",成绩:" + score;
    }
}

2. 创建成绩管理类(ScoreManager)

这个类负责存储和管理所有成绩记录,体现“单一职责”原则。

功能包括: 添加成绩、查询全部记录、统计平均分等。

MedPeer科研绘图 MedPeer科研绘图

生物医学领域的专业绘图解决方案,告别复杂绘图,专注科研创新

MedPeer科研绘图 166 查看详情 MedPeer科研绘图
import j*a.util.ArrayList;
import j*a.util.List;

public class ScoreManager {
    private List<ScoreRecord> records;

    public ScoreManager() {
        records = new ArrayList<>();
    }

    public void addRecord(ScoreRecord record) {
        records.add(record);
    }

    public List<ScoreRecord> getAllRecords() {
        return new ArrayList<>(records); // 返回副本避免外部修改
    }

    public double getAverageScore() {
        return records.stream()
                .mapToDouble(ScoreRecord::getScore)
                .*erage()
                .orElse(0.0);
    }
}

3. 构建图形界面(Swing实现)

使用Swing创建一个简单的GUI界面,用户可输入信息并提交。

组件包括: 文本框、标签、按钮、文本域显示结果。

import j*ax.swing.*;
import j*a.awt.*;
import j*a.awt.event.ActionEvent;

public class ScoreInputFrame extends JFrame {
    private JTextField nameField = new JTextField(10);
    private JTextField subjectField = new JTextField(10);
    private JTextField scoreField = new JTextField(10);
    private JTextArea outputArea = new JTextArea(10, 30);
    private ScoreManager manager = new ScoreManager();

    public ScoreInputFrame() {
        setTitle("成绩录入系统");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());

        add(new JLabel("姓名:")); add(nameField);
        add(new JLabel("科目:")); add(subjectField);
        add(new JLabel("分数:")); add(scoreField);

        JButton addButton = new JButton("录入");
        addButton.addActionListener(this::addScore);
        add(addButton);

        outputArea.setEditable(false);
        add(new JScrollPane(outputArea));

        pack();
        setLocationRelativeTo(null);
    }

    private void addScore(ActionEvent e) {
        try {
            String name = nameField.getText().trim();
            String subject = subjectField.getText().trim();
            double score = Double.parseDouble(scoreField.getText().trim());

            ScoreRecord record = new ScoreRecord(name, subject, score);
            manager.addRecord(record);

            outputArea.append(record.toString() + "\n");
            outputArea.append("当前平均分:" + String.format("%.2f", manager.getAverageScore()) + "\n\n");

            // 清空输入框
            nameField.setText("");
            subjectField.setText("");
            scoreField.setText("");

        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(this, "请输入有效的数字分数", "输入错误", JOptionPane.ERROR_MESSAGE);
        } catch (IllegalArgumentException ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "输入错误", JOptionPane.ERROR_MESSAGE);
        }
    }
}

4. 启动主程序

编写main方法启动窗口。

public class Main {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new ScoreInputFrame().setVisible(true);
        });
    }
}

基本上就这些。通过把数据、业务逻辑和界面分离,代码更清晰、易维护。后续可以扩展功能,比如保存到文件、支持多科目统计、异常处理优化等。面向对象的设计让这些扩展变得自然。

以上就是J*a制作考试成绩录入界面_面向对象逻辑搭建实例的详细内容,更多请关注其它相关文章!


# 相关文章  # 松原公司网站建设招标  # 河南seo优化多少钱  # 过山峰seo博客  # 九江网站优化渠道  # 巴南知名网站建设师  # 武汉抖音seo哪家好做  # 挂画品类如何做营销推广  # 茂名网站建设论文总结  # 金华网站优化技术公司  # 医疗机构推广营销合法吗知乎  # 解决问题  # 请输入  # 中文网  # java  # 主程序  # 时长  # 创建一个  # 好了  # 考试成绩  # 面向对象  # stream  # win  # ai  # app  # seo  # js 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法  KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明  双系统安装时,如何设置默认启动系统? msconfig命令了解一下!  迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  痛风发作了怎么办? 快速止痛和后期饮食调理  如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流  小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口  解决 Vaadin 8 中大文件音频播放与定位时出现的 IOException  解决Python单元测试中Mock异常方法调用计数为零的问题  如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单  理解Python模块与全局变量的作用域管理  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正  如何将HTML表格多行数据保存到Google Sheet  Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  yandex入口引擎手机版 yandex安卓版下载入口  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  Pandas DataFrame 多条件优先级排序与排名  天眼查企业查询官网入口 天眼查官方网页版查询  React Hooks最佳实践:动态组件状态管理的组件化方案  CSS Box Model与弹性按钮:维持布局稳定的动画实践  css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项  电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  在WordPress中通过REST API获取BasicAuth保护的远程文章  处理动态列数据:J*a ArrayList的正确初始化与字符累加教程  c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解  win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法  4399免费游戏网址入口 4399小游戏免费入口点开即玩  css链接悬停下划线样式如何自定义_使用::after结合content和transition  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  AO3网页版最新入口合集 Archive of Our Own在线访问指南  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  汽水音乐网页版使用入口_汽水音乐电脑版播放指南  QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  精准捕获:如何在页面中监听除特定元素外的所有点击事件  mcjs网页版流畅运行 mcjs低配电脑畅玩入口  如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构 

搜索