首页 > 基础资料 博客日记
算数答题小程序
2026-04-22 17:30:02基础资料围观1次
2452531与2452527共同完成的小程序。
一、程序设计思路
本次我们小组合作完成的是一款可视化算术答题小程序,整体设计以简洁实用、交互友好为核心,采用 Java 语言结合 Swing 图形界面实现,不再使用传统的控制台黑框,而是通过窗口化界面提升使用体验。
在功能设计上,我们首先确定了程序的核心需求:随机生成算术题目、提供选项供选择、自动判断答案对错并实时计分。程序整体分为界面搭建、题目生成、交互判断三大模块。界面模块负责创建窗口、题目显示区域、选项按钮及状态提示栏,保证布局清晰、操作简单;题目生成模块通过随机数生成 1 至 50 以内的数字,组成加法算术题,并随机将正确答案分配到四个选项中,同时搭配干扰答案,保证题目的合理性;交互判断模块监听按钮点击事件,获取用户选择的答案,与正确答案对比后给出对错提示,累计得分并自动切换至下一题,完成所有题目后展示最终得分并结束程序。
在合作分工上,我们根据各自擅长的部分进行划分,一人负责图形界面的布局与组件设计,一人负责逻辑代码编写,包括随机题目生成、答案判断与计分逻辑,最后共同调试代码、优化交互细节,确保程序运行稳定、操作流畅。
二 程序代码
点击查看代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
// 中文版答题小程序
public class 答题小程序 extends JFrame implements ActionListener {
// 题目数据
int 数字1, 数字2, 正确答案;
int 当前题号 = 0;
int 得分 = 0;
final int 题目总数 = 10;
// 界面组件(全中文变量名)
JLabel 题目标签;
JButton 选项A, 选项B, 选项C, 选项D;
JLabel 信息标签;
Random 随机数 = new Random();
public 答题小程序() {
// 窗口设置(全中文标题)
setTitle("中文算术答题小程序");
setSize(500, 350);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null); // 窗口居中
setLayout(null);
// 题目显示区
题目标签 = new JLabel("", JLabel.CENTER);
题目标签.setFont(new Font("微软雅黑", Font.PLAIN, 28));
题目标签.setBounds(50, 50, 400, 50);
add(题目标签);
// 四个选项按钮(全中文)
选项A = new JButton("选项A");
选项B = new JButton("选项B");
选项C = new JButton("选项C");
选项D = new JButton("选项D");
选项A.setBounds(80, 130, 150, 50);
选项B.setBounds(260, 130, 150, 50);
选项C.setBounds(80, 200, 150, 50);
选项D.setBounds(260, 200, 150, 50);
选项A.setFont(new Font("微软雅黑", Font.PLAIN, 20));
选项B.setFont(new Font("微软雅黑", Font.PLAIN, 20));
选项C.setFont(new Font("微软雅黑", Font.PLAIN, 20));
选项D.setFont(new Font("微软雅黑", Font.PLAIN, 20));
add(选项A);
add(选项B);
add(选项C);
add(选项D);
// 信息提示区
信息标签 = new JLabel("", JLabel.CENTER);
信息标签.setBounds(50, 260, 400, 30);
信息标签.setFont(new Font("微软雅黑", Font.PLAIN, 16));
add(信息标签);
// 绑定按钮点击事件
选项A.addActionListener(this);
选项B.addActionListener(this);
选项C.addActionListener(this);
选项D.addActionListener(this);
// 开始出题
下一题();
}
// 生成下一道题
void 下一题() {
// 如果题目做完了,显示总分
if (当前题号 >= 题目总数) {
JOptionPane.showMessageDialog(this,
"🎉 答题结束!\n你一共答对了 " + 得分 + " 题\n总分:" + 得分 + " / " + 题目总数);
System.exit(0);
return;
}
// 生成1-50之间的随机数,组成加法题
数字1 = 随机数.nextInt(50) + 1;
数字2 = 随机数.nextInt(50) + 1;
正确答案 = 数字1 + 数字2;
// 更新题目和提示信息(全中文)
题目标签.setText(数字1 + " + " + 数字2 + " = ?");
信息标签.setText("第 " + (当前题号 + 1) + " 题 | 当前得分:" + 得分);
// 给四个按钮设置随机选项,其中一个是正确答案
JButton[] 选项组 = {选项A, 选项B, 选项C, 选项D};
for (JButton 按钮 : 选项组) {
// 先给所有按钮填一个随机错误答案
按钮.setText(String.valueOf(随机数.nextInt(100) + 1));
按钮.setEnabled(true);
}
// 随机选一个按钮放正确答案
选项组[随机数.nextInt(4)].setText(String.valueOf(正确答案));
}
// 按钮点击事件处理
@Override
public void actionPerformed(ActionEvent e) {
JButton 被点击的按钮 = (JButton) e.getSource();
String 用户答案文本 = 被点击的按钮.getText();
int 用户答案 = Integer.parseInt(用户答案文本);
// 判断对错,弹出中文提示框
if (用户答案 == 正确答案) {
得分++;
JOptionPane.showMessageDialog(this, "✅ 回答正确!太棒了!");
} else {
JOptionPane.showMessageDialog(this, "❌ 答错啦,正确答案是:" + 正确答案);
}
// 题号+1,进入下一题
当前题号++;
下一题();
}
// 主方法,程序入口
public static void main(String[] args) {
// 启动窗口
new 答题小程序().setVisible(true);
}
}




四 实验体会
通过这次与同学合作完成编程作业的过程,我们收获良多,也对编程有了更深刻的理解。
首先,编程并非单纯的代码堆砌,而是先理清思路、再逐步实现的过程。在编写程序前,我们先梳理清楚需求与模块划分,避免了编写过程中逻辑混乱、反复修改的问题,这让我们明白清晰的设计思路是高效编程的基础。其次,团队合作极大地提高了完成效率,遇到界面显示异常、逻辑判断错误等问题时,两人一起分析排查,比独自摸索更快速地找到问题根源,也在交流中互相学习,弥补了各自的知识漏洞。
同时,我们也体会到,实用的程序不仅要实现功能,更要注重用户体验。从控制台程序升级为图形界面程序,虽然增加了代码量,但让程序更直观、易用,这让我们意识到编程不仅要追求逻辑正确,还要考虑使用者的感受。此外,调试代码的过程也锻炼了我们的耐心与细心,很多错误并非代码语法问题,而是细节上的疏漏,只有认真排查才能解决。
这次作业让我们不仅巩固了 Java 编程与图形界面开发的知识,更学会了团队协作与问题解决,也激发了我们对编程的兴趣,今后我们会继续练习,尝试编写更完善、更丰富的小程序。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:

