课堂实验四小学生算术答题系统

📅 2026/7/2 3:06:26
课堂实验四小学生算术答题系统
实验 4 Java Swing 小学生算术答题系统功能支持加减乘除四则运算随机生成整数算术题可切换难度输入答案点击判断对错实时提示统计答对、答错数量界面整洁 Swing 图形窗口代码importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Random;publicclassMathPracticeextendsJFrame{// 界面组件privateJLabellblQuestion;// 题目显示privateJTextFieldtxtAnswer;// 答案输入框privateJButtonbtnCheck;// 判断答案按钮privateJButtonbtnNext;// 下一题按钮privateJComboBoxStringcbLevel;// 难度选择privateJLabellblResultTip;// 对错提示privateJLabellblCount;// 统计对错// 题目数据privateRandomrandomnewRandom();privateintnum1,num2,op;privateintright0,wrong0;publicMathPractice(){initUI();createNewQuestion();}// 初始化界面privatevoidinitUI(){setTitle(小学生算术练习器);setSize(420,280);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);// 窗口居中setLayout(newGridLayout(6,1,10,10));setBorder(BorderFactory.createEmptyBorder(20,20,20,20));// 1. 难度选择行JPanelpanelLevelnewJPanel();panelLevel.add(newJLabel(选择难度));cbLevelnewJComboBox();cbLevel.addItem(简单0~9);cbLevel.addItem(普通0~99);cbLevel.addItem(困难0~999);panelLevel.add(cbLevel);add(panelLevel);// 2. 题目展示lblQuestionnewJLabel(题目,SwingConstants.CENTER);lblQuestion.setFont(newFont(微软雅黑,Font.BOLD,24));add(lblQuestion);// 3. 答案输入行JPanelpanelInputnewJPanel();panelInput.add(newJLabel(你的答案));txtAnswernewJTextField(10);txtAnswer.setFont(newFont(微软雅黑,Font.PLAIN,18));panelInput.add(txtAnswer);add(panelInput);// 4. 按钮行JPanelpanelBtnnewJPanel();btnChecknewJButton(判断对错);btnNextnewJButton(下一题);panelBtn.add(btnCheck);panelBtn.add(btnNext);add(panelBtn);// 5. 对错提示lblResultTipnewJLabel(请输入答案,SwingConstants.CENTER);lblResultTip.setFont(newFont(微软雅黑,Font.BOLD,16));add(lblResultTip);// 6. 统计lblCountnewJLabel(答对0 道 | 答错0 道,SwingConstants.CENTER);add(lblCount);// 绑定按钮事件btnCheck.addActionListener(newCheckListener());btnNext.addActionListener(e-createNewQuestion());}// 生成新题目privatevoidcreateNewQuestion(){// 根据难度获取数值范围intmax;Stringlevel(String)cbLevel.getSelectedItem();if(level.contains(简单))max10;elseif(level.contains(普通))max100;elsemax1000;num1random.nextInt(max);num2random.nextInt(max);oprandom.nextInt(4);// 0 1- 2* 3/// 除法保证整除、除数不为0if(op3){while(num20||num1%num2!0){num1random.nextInt(max);num2random.nextInt(max);}}// 减法保证结果非负if(op1num1num2){inttempnum1;num1num2;num2temp;}// 拼接题目字符串StringopStrswitch(op){case0-;case1--;case2-×;case3-÷;default-;};lblQuestion.setText(num1 opStr num2 ?);// 清空输入框与提示txtAnswer.setText();lblResultTip.setText(请输入答案);lblResultTip.setForeground(Color.BLACK);}// 计算正确答案privateintgetCorrectAnswer(){returnswitch(op){case0-num1num2;case1-num1-num2;case2-num1*num2;case3-num1/num2;default-0;};}// 判断按钮监听器classCheckListenerimplementsActionListener{OverridepublicvoidactionPerformed(ActionEvente){StringinputtxtAnswer.getText().trim();if(input.isEmpty()){lblResultTip.setText(请输入数字答案);lblResultTip.setForeground(Color.ORANGE);return;}intuserAns;try{userAnsInteger.parseInt(input);}catch(NumberFormatExceptionex){lblResultTip.setText(输入不是有效数字);lblResultTip.setForeground(Color.RED);return;}intcorrectgetCorrectAnswer();if(userAnscorrect){right;lblResultTip.setText(回答正确真棒);lblResultTip.setForeground(Color.GREEN);}else{wrong;lblResultTip.setText(答错啦正确答案correct);lblResultTip.setForeground(Color.RED);}// 更新统计lblCount.setText(答对right 道 | 答错wrong 道);}}publicstaticvoidmain(String[]args){// Swing程序建议在事件调度线程启动SwingUtilities.invokeLater(()-{newMathPractice().setVisible(true);});}}结果演示