java-实验报告- 副本

更新时间:2023-09-19 04:22:01 阅读量: 小学教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Java实验报告

学院:计算机科学与技术学院 班级: 软件工程 班 学号: 姓名:

一、 实验名称:算术测试

二 、实验目的:学习处理ActionEvent事件

三 、实验要求:编写一个算术测试小软件,用来训练小学生的算术能力。

程序有3个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案者的答案是否正确。ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是软件的主类。

四 、实验过程:

package cn.edu.xust.qingzhi; import java.awt.*; import java.awt.event.*; import java.util.Random;

import javax.swing.*; public class MainClass { public static void main(String[] args)

{ }

ComputerFrame frame; frame=new ComputerFrame(); frame.setTitle(\算术测试\frame.setBounds(100,100,650,180);

}

class ComputerFrame extends JFrame {

JMenuBar menubar; JMenu choiceGrade;

JMenuItem grade1,grade2;

JTextField textOne,textTwo,textResult; JButton getProblem,giveAnwser; 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);//【代码1】创建textone,其可见字符长是5; textTwo=new JTextField(5); textResult=new JTextField(5);

operatorLabel=new JLabel(\

operatorLabel.setFont(new Font(\ message=new JLabel(\你还没有回答呢\ getProblem=new JButton(\获取题目\ giveAnwser=new JButton(\确认答案\

add(getProblem); add(textOne);

add(operatorLabel); add(textTwo);

add(new JLabel(\ add(textResult);

add(giveAnwser); add(message);

textResult.requestFocus(); textOne.setEditable(false);

textTwo.setEditable(false); getProblem.setActionCommand(\

textResult.setActionCommand(\ giveAnwser.setActionCommand(\

teacherZhang.setJTextField(textOne,textTwo,textResult);

teacherZhang.setJLabel(operatorLabel,message);

getProblem.addActionListener(teacherZhang); //【代码2】将teacherZhang注册为

getProblem的ActionEvent事件监听器 giveAnwser.addActionListener(teacherZhang);//【代码3】将teacherZhang注册为giveAnwser的ActionEvent事件监听器 textResult.addActionListener(teacherZhang);//【代码4】将teacherZhang注册为textResult的ActionEvent事件监听器

}

setVisible(true);

validate();

setDefaultCloseOperation(DISPOSE_ON_CLOSE); }

class Teacher implements ActionListener {

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(\ numberOne=random.nextInt(maxInteger)+1;//1到maxInteger之间的随机数 }

numberTwo=random.nextInt(maxInteger)+1;

double d=Math.random(); //获取0-1之间的随机数 if(d>=0.5) operator=\else operator=\

textOne.setText(\textTwo.setText(\operatorLabel.setText(operator); message.setText(\请回答:\textResult.setText(null);

else if(str.equals(\

String anwser=textResult.getText(); try{

int result=Integer.parseInt(anwser); if(operator.equals(\

if(result==numberOne+numberTwo) message.setText(\你回答正确\

else

message.setText(\你回答错误\

}

else if (operator.equals(\ if(result==numberOne-numberTwo) message.setText(\你回答正确\

else

message.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];

五 、实验结果:

六 、实验总结:通过这次的实验我学会了组件的属性和功能,还

有处理组件上发生的界面事件,其中还要掌握事件源,监视器,处理事件的接口等等。学会了使用随机函数。

本文来源:https://www.bwwdw.com/article/gcrh.html

Top