实验要求

编写一个算术测试的小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确,ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案,MainClass是软件主类。

代码

MainClass.java

public class MainClass {public static void main(String[] args) {ComputerFrame frame;frame = new ComputerFrame();frame.setTitle("算数测试");frame.setBounds(100, 100, 650, 180);}}

ComputerFrame.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class ComputerFrame extends JFrame {JMenuBar menubar;JMenu choiceGrade;JMenuItem grade1, grade2;JTextField textOne, textTwo, textResult;JButton getProblem, giveAnswer;JLabel operatorLabel, message;Teacher teacherzhang;ComputerFrame() {teacherzhang = new Teacher();teacherzhang.setMaxInteger(20);setLayout(new FlowLayout());menubar = new JMenuBar();choiceGrade = new JMenu("选择级别");grade1 = new JMenuItem("幼儿级别");grade2 = new JMenuItem("儿童级别");grade1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {teacherzhang.setMaxInteger(10);}});grade2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {teacherzhang.setMaxInteger(50);}});choiceGrade.add(grade1);choiceGrade.add(grade2);menubar.add(choiceGrade);setJMenuBar(menubar);textOne = new JTextField(5);textTwo = new JTextField(5);textResult = new JTextField(5);operatorLabel = new JLabel("+");operatorLabel.setFont(new Font("Arial", Font.BOLD, 20));message = new JLabel("你还没有回答");getProblem = new JButton("获取题目");giveAnswer = new JButton("确认答案");add(textOne);add(operatorLabel);add(textTwo);add(new JLabel("="));add(textResult);add(giveAnswer);add(message);add(getProblem);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.setActionCommand("getProblem");textResult.setActionCommand("answer");giveAnswer.setActionCommand("answer");teacherzhang.setJTextField(textOne, textTwo, textResult);teacherzhang.setJLabel(operatorLabel, message);getProblem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {teacherzhang.actionPerformed(e);}});giveAnswer.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {teacherzhang.actionPerformed(e);}});textResult.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {teacherzhang.actionPerformed(e);}});setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}}

Teacher.java

import java.awt.*;
import java.awt.event.*;
import java.util.Random;import javax.swing.*;public class Teacher {int numberOne, numberTwo;String operator = "";boolean isRight;Random random;int maxInteger;JTextField textOne, textTwo, textResult;JLabel operatorLabel, message;Teacher() {random = new Random();}public void setMaxInteger(int n) {maxInteger = n;}public void actionPerformed(ActionEvent e) {String str = e.getActionCommand();if (str.equals("getProblem")) {numberOne = random.nextInt(maxInteger) + 1;numberTwo = random.nextInt(maxInteger) + 1;double d = Math.random();if (d >= 0.5)operator = "+";elseoperator = "-";textOne.setText("" + numberOne);textTwo.setText("" + numberTwo);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);} else if (str.equals("answer")) {String answer = textResult.getText();try {int result = Integer.parseInt(answer);if (operator.equals("+")) {if (result == numberOne + numberTwo)message.setText("你的回答正确");elsemessage.setText("你的回答错误");} else if (operator.equals("-")) {if (result == numberOne - numberTwo)message.setText("你的回答正确");elsemessage.setText("你的回答错误");}} catch (NumberFormatException ex) {message.setText("请输入数字字符");}}}public void setJTextField(JTextField... t) {textOne = t[0];textTwo = t[1];textResult = t[2];}public void setJLabel(JLabel... label) {operatorLabel = label[0];message = label[1];}
}

运算结果

Java 15.8.1 实验1 算术测试相关推荐

  1. 用java实现一个算术测试软件,最新Java算术测试

    <最新Java算术测试>由会员分享,可在线阅读,更多相关<最新Java算术测试(8页珍藏版)>请在人人文库网上搜索. 1.精品文档组件及事件处理1实验1算术测试一,实验目的学习 ...

  2. Java 11.8 上机实验 算数测试 (Java程序设计精编教程 第三版)

    实验要求 编写一个算术测试的小软件,用来训练小学生的算术能力.程序由3个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确,ComputerFrame对象负责为算术 ...

  3. Java——编写一个算术测试小软件

    问题描述: 编写一个算术测试小软件,用来训练小学生的算术能力.程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确:ComputerFrame类对象提供的GUI界面看 ...

  4. java算术测试软件_Java——编写一个算术测试小软件

    问题描述: 编写一个算术测试小软件,用来训练小学生的算术能力.程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确:ComputerFrame类对象提供的GUI界面看 ...

  5. Java 15 转正了,国内几大互联网公司均有贡献,其中腾讯最为突出!

    25 岁的 Java 2020 年是 Java 诞生的第 25 个年头.在过去的这些年中,Java 在过去增强功能的推动下为用户提供了超过二十年的创新,例如 Java 5 中的泛型,Java 8 中的 ...

  6. java第一次课必修实验答案,Java第一次实验报告

    北京电子科技学院(BESTI) 实验报告 课程:Java实验   班级:201352     姓名:池彬宁  学号:20135212 成绩:             指导教师:娄佳鹏   实验日期:1 ...

  7. 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告

    2017-2018-2 20165301 实验三<Java面向对象程序设计>实验报告 一.敏捷开发与XP实践-1 实验要求: 在IDEA中使用工具(Code->Reformate C ...

  8. java编写程序上机实验,《Java程序设计》上机实验

    <<Java程序设计>上机实验>由会员分享,可在线阅读,更多相关<<Java程序设计>上机实验(19页珍藏版)>请在技术文库上搜索. 1.tor的安装及 ...

  9. java计算机毕业设计计算机实验课程学习系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计计算机实验课程学习系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计计算机实验课程学习系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目 ...

最新文章

  1. 必须去收藏14个响应式布局的前端开发框架
  2. android -------- NDK 入门指南
  3. linux系统 opt扩容,Linux系统扩容根目录磁盘空间的操作方法
  4. .net mysql-connector-net连接mysql
  5. linux服务器重启init 6和reboot区别
  6. ORACLE11.2.0.1升级到11.2.0.3
  7. 串口通信之波特率计算
  8. springboot分层构建Docker镜像实践,统统都会!
  9. 时间差太大导致Windows时间同步无法自动更新时间
  10. 网络安全策略和网络安全机制
  11. Tengine + BabaSSL ,让国密更易用
  12. html最多显示两行,css 实现两行或多行文本溢出显示省略号(...)
  13. [微传感器]PID控制结合电路的通俗理解
  14. elasticsearch es sum求和统计用法
  15. nike air max polska 2016 ważne jest
  16. 寄居蟹与海葵c语言大作业,寄居蟹和海葵是什么关系?海葵刺细胞保护寄居蟹(共生者)...
  17. selenium 下拉框失焦定位
  18. sonicwall NSA-2600 防火墙基本介绍
  19. 分享玄学硬件调试问题
  20. 微软安全软件OneCare Live

热门文章

  1. 雨过天晴了。。。。。
  2. 中国阿里巴巴云拓展企业发条链面向全球市场
  3. Codeforces 1215E. Marbles
  4. Latex 字体整理
  5. 【JY】ETABS塑性铰参数详解
  6. git在项目中常用命令和项目流程中涉及到步骤分析
  7. onlyoffice mysql_onlyOffice安装与使用
  8. 看完一个在校大学生的 Java 学习历程,我觉得我还能学得更多
  9. 新手必备!免费原画素材网站!
  10. 基于物联网的智能厨房安全监测系统-总论