6


1 选题

选题一

算术运算测试

题目要求

 

实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确。

 

使用Java知识

 

Java基本输入输入出、运算符、循环、选择分支;数组,mysqGUI

选题二

猜数游戏

题目要求

计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。

使用Java知识

 

循环、分支、变量、判断、常用类等;GUI

 


2 系统需求分析

2.1 系统可行性分析

一、算数运算测试

1.技术可行性

本次程序运用的是Eclipse这个软件,采用的JAVA语言,JAVA面向对象,所以技术上是可行的。

2.经济可行性

因为本次程序使用的Eclipse软件是免费的,在这个软件上就能满足我们的需求,不需要额外的开销所以经济上也是可行的。

3.操作可行性

本次程序只需要用户有这个软件并配置好环境变量并且安装windowbuilder插件就可以使用,操作简单便捷,符合大部分用户的使用习惯。因此在操作上是可行的。

4.法律可行性

在法律许可范围内。

2.2 系统需求分析

1.通过与老师和同学交流,完成了简单的运算算数测试,实现了十道100以内加减法数学题,根据题目算出答案,与用户输入答案对比,判断做题是否正确,若正确,则分数加1分,若答错,则不加分,最后计算分数总和,每道题1分,共计10分。

2.功能模块图

 

2-1 算数测试运算模块图

 

 

 

2-2 猜数游戏模块图

2.3进度安排

阶段一进度安排如表3-1所示。

3-1 进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

2小时

需求分析

需求说明,功能模块图

设计阶段

2小时

系统设计

设计说明-可以画流程图;数据库设计

实现阶段

3小时

编写代码

项目工程源代码

3小时

系统测试

进行黑盒测试(功能测试)-测试说明

运行阶段

4小时

部署、运行

系统使用说明、运维报告、录制视频

 


3 系统设计

3.1 系统设计

10道计算题:

获得两个随机数和一个字符,获得随机字符方法为,获得一个01的随机数若为1则是“+”,否则为“-”。定义一个字符数组存放题目,并设计GUI界面将10道题目显示出来。在每个题目加一个文本框获得用户输入的答案。在界面下方设置一个按钮并监听,点击按钮弹窗显示用户正确的题数

猜数字:

随机生成一个1-100的数字。对用GUI进行界面布局设置,设置一个文本框来获得用户猜测的数字,并设置一个按钮监听;点击按钮弹窗显示猜对,猜大,猜小。

3.2文件设计


4系统实现

4.1 代码实现

猜数字游戏

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Cai extends JFrame {
private JPanel contentPane;
int a=(int)(Math.random()*99)+1;    //
生成一个随机数
TextField num;
JPanel p = new JPanel();
public Cai() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
Container container = this.getContentPane();
contentPane.setLayout(new GridLayout(3,2,5,5));
num = new TextField(5);
JPanel p1 = new JPanel();
JLabel label = new JLabel("
你想猜:");
p1.add(label,FlowLayout.LEFT);
container.add(p1);
add(num);

 JButton button = new JButton("
提交");
   container.add(button);
   button.addActionListener(new Mybutton(this));


}

10道计算题

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.SwingConstants;
public class Jisuan extends JFrame {
//
属性
public JPanel contentPane;
public TextField[] num = new TextField[10]; //
文本框
public JFrame Jframe = new JFrame();
public  JPanel[] p = new JPanel[11];//
题目
int[] answer1 = new int[10]; 
 int zhengqueshu=0;
 Timu timu = new Timu();
//
方法
 public Jisuan() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 400);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
Container container = this.getContentPane();
contentPane.setLayout(new GridLayout(11, 2, 10,10));
for(int i=1;i<10;i++){
p[i] = new JPanel();
}
for(int i=1;i<10;i++){
num[i] = new TextField(5);          //
文本框
String labe = timu.getTimu(i);      //
获得题目
JLabel label = new JLabel();        //
显示题目和文本框
label.setText(labe);
p[i].add(label,FlowLayout.LEFT);
p[i].add(num[i]);
container.add(p[i]);
answer1[i]=timu.answer[i];

}
    JButton button = new JButton("
提交"); //提交按钮
    container.add(button);
    button.addActionListener(new Mychuangkou());//
监听按钮

 }
 
 
 class Mychuangkou extends JDialog implements ActionListener{     //
监听提交按钮
  public void actionPerformed(ActionEvent e){
   this.setVisible(true);
   this.setBounds(170, 170, 350, 280);
   Container container = this.getContentPane();
   contentPane.setLayout(new GridLayout(3, 1, 10,10));
   for(int i=1;i<10;i++) {       //
将用户输入的结果和正确结果对比
  if(answer1[i]==Integer.parseInt(num[i].getText()))
  {
  zhengqueshu++;//
正确题数
  }
  }
   JPanel p1 = new JPanel();
   String s = "
共作对"+zhengqueshu+"道题";
   JLabel pp = new JLabel();
   pp.setText(s);
   p1.add(pp,FlowLayout.LEFT);
   container.add(p1);
  
   }
 }
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
     Jisuan frame = new Jisuan();
     frame.setVisible(true);
   }
  });
 }
}

public class Timu {  //生成题目类
 //
属性
  String [] Timu = new String [10];
  int yunSuanFu;
  int[] 
answer = new int[10];
  int a,b;
 //
方法
 String getTimu(int i){
  yunSuanFu=(int)(Math.random()*2);
  a=(int)(Math.random()*99)+1;
  b=(int)(Math.random()*99)+1;
  Timu[i]=a+Yunsuanfu(yunSuanFu)+b+"=";
  
answer[i]=jisuan(a,b,yunSuanFu);
  return Timu[i];
 }

 String Yunsuanfu(int index){   // 获得运算符
  String string=" ";
  switch(index){
  case 0:
   string="+";
   break;
  case 1:
   string="-";
   break;
  }
 return string;
}
 
 int jisuan(int a,int b,int index){  //
计算题目的正确答案
  int sum=0;
  switch(index){
  case 0:
   sum=a+b;
   break;
  case 1:
   sum=a-b;
   break;
  }
  return sum;
 }
}

 

4.2 运行界面实现

 

4.2.2 1

4.2.3 1

4.2.1 1

 

 

 

 


4.2.4

 

 

 


 

5结论和心得

对项目完成情况总结,并写出个人的心得,要求积极正面、切合实际。

结论:使用了GUI图形界面,用Java中的Swing类实现了10道计算题和猜数字的小程序运行。其实窗体的菜单也是有监听事件的,MenuListener,具体用法如其他监听事件一样。比较耗费事件的任务可以使用SwingWorker来达到多线程的目的,如我在任务间歇需要更新进度条,这样主类可以继承Thread,耗时任务放在SwingWorker类实现即可。

 

 

心得:Java思想:Java是一门面向对向语言,他定义一切都是对象 面向对象,就是面对现实;现实中的一切都是对象,他们有分类,就产生了; 他们有不同,类和类之间的不同,使用类来区分; 同一个类中不同的对象的区别,使用成员区分。所以,面向对象的内部逻辑是分类。 面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为。这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。


1 选题

选题一

算术运算测试

题目要求

 

实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确。

 

使用Java知识

 

Java基本输入输入出、运算符、循环、选择分支;数组,mysqGUI

选题二

猜数游戏

题目要求

计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。

使用Java知识

 

循环、分支、变量、判断、常用类等;GUI

 


2 系统需求分析

2.1 系统可行性分析

一、算数运算测试

1.技术可行性

本次程序运用的是Eclipse这个软件,采用的JAVA语言,JAVA面向对象,所以技术上是可行的。

2.经济可行性

因为本次程序使用的Eclipse软件是免费的,在这个软件上就能满足我们的需求,不需要额外的开销所以经济上也是可行的。

3.操作可行性

本次程序只需要用户有这个软件并配置好环境变量并且安装windowbuilder插件就可以使用,操作简单便捷,符合大部分用户的使用习惯。因此在操作上是可行的。

4.法律可行性

在法律许可范围内。

2.2 系统需求分析

1.通过与老师和同学交流,完成了简单的运算算数测试,实现了十道100以内加减法数学题,根据题目算出答案,与用户输入答案对比,判断做题是否正确,若正确,则分数加1分,若答错,则不加分,最后计算分数总和,每道题1分,共计10分。

2.功能模块图

 

2-1 算数测试运算模块图

 

 

 

2-2 猜数游戏模块图

2.3进度安排

阶段一进度安排如表3-1所示。

3-1 进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

2小时

需求分析

需求说明,功能模块图

设计阶段

2小时

系统设计

设计说明-可以画流程图;数据库设计

实现阶段

3小时

编写代码

项目工程源代码

3小时

系统测试

进行黑盒测试(功能测试)-测试说明

运行阶段

4小时

部署、运行

系统使用说明、运维报告、录制视频

 


3 系统设计

3.1 系统设计

10道计算题:

获得两个随机数和一个字符,获得随机字符方法为,获得一个01的随机数若为1则是“+”,否则为“-”。定义一个字符数组存放题目,并设计GUI界面将10道题目显示出来。在每个题目加一个文本框获得用户输入的答案。在界面下方设置一个按钮并监听,点击按钮弹窗显示用户正确的题数

猜数字:

随机生成一个1-100的数字。对用GUI进行界面布局设置,设置一个文本框来获得用户猜测的数字,并设置一个按钮监听;点击按钮弹窗显示猜对,猜大,猜小。

3.2文件设计


4系统实现

4.1 代码实现

猜数字游戏

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Cai extends JFrame {
private JPanel contentPane;
int a=(int)(Math.random()*99)+1;    //
生成一个随机数
TextField num;
JPanel p = new JPanel();
public Cai() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
Container container = this.getContentPane();
contentPane.setLayout(new GridLayout(3,2,5,5));
num = new TextField(5);
JPanel p1 = new JPanel();
JLabel label = new JLabel("
你想猜:");
p1.add(label,FlowLayout.LEFT);
container.add(p1);
add(num);

 JButton button = new JButton("
提交");
   container.add(button);
   button.addActionListener(new Mybutton(this));


}

10道计算题

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.SwingConstants;
public class Jisuan extends JFrame {
//
属性
public JPanel contentPane;
public TextField[] num = new TextField[10]; //
文本框
public JFrame Jframe = new JFrame();
public  JPanel[] p = new JPanel[11];//
题目
int[] answer1 = new int[10]; 
 int zhengqueshu=0;
 Timu timu = new Timu();
//
方法
 public Jisuan() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 400);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
Container container = this.getContentPane();
contentPane.setLayout(new GridLayout(11, 2, 10,10));
for(int i=1;i<10;i++){
p[i] = new JPanel();
}
for(int i=1;i<10;i++){
num[i] = new TextField(5);          //
文本框
String labe = timu.getTimu(i);      //
获得题目
JLabel label = new JLabel();        //
显示题目和文本框
label.setText(labe);
p[i].add(label,FlowLayout.LEFT);
p[i].add(num[i]);
container.add(p[i]);
answer1[i]=timu.answer[i];

}
    JButton button = new JButton("
提交"); //提交按钮
    container.add(button);
    button.addActionListener(new Mychuangkou());//
监听按钮

 }
 
 
 class Mychuangkou extends JDialog implements ActionListener{     //
监听提交按钮
  public void actionPerformed(ActionEvent e){
   this.setVisible(true);
   this.setBounds(170, 170, 350, 280);
   Container container = this.getContentPane();
   contentPane.setLayout(new GridLayout(3, 1, 10,10));
   for(int i=1;i<10;i++) {       //
将用户输入的结果和正确结果对比
  if(answer1[i]==Integer.parseInt(num[i].getText()))
  {
  zhengqueshu++;//
正确题数
  }
  }
   JPanel p1 = new JPanel();
   String s = "
共作对"+zhengqueshu+"道题";
   JLabel pp = new JLabel();
   pp.setText(s);
   p1.add(pp,FlowLayout.LEFT);
   container.add(p1);
  
   }
 }
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
     Jisuan frame = new Jisuan();
     frame.setVisible(true);
   }
  });
 }
}

public class Timu {  //生成题目类
 //
属性
  String [] Timu = new String [10];
  int yunSuanFu;
  int[] 
answer = new int[10];
  int a,b;
 //
方法
 String getTimu(int i){
  yunSuanFu=(int)(Math.random()*2);
  a=(int)(Math.random()*99)+1;
  b=(int)(Math.random()*99)+1;
  Timu[i]=a+Yunsuanfu(yunSuanFu)+b+"=";
  
answer[i]=jisuan(a,b,yunSuanFu);
  return Timu[i];
 }

 String Yunsuanfu(int index){   // 获得运算符
  String string=" ";
  switch(index){
  case 0:
   string="+";
   break;
  case 1:
   string="-";
   break;
  }
 return string;
}
 
 int jisuan(int a,int b,int index){  //
计算题目的正确答案
  int sum=0;
  switch(index){
  case 0:
   sum=a+b;
   break;
  case 1:
   sum=a-b;
   break;
  }
  return sum;
 }
}

 

4.2 运行界面实现

4.2.2 1

4.2.3 1

4.2.1 1

 

 

 

 


4.2.4

 

 

 

 

 

5结论和心得

对项目完成情况总结,并写出个人的心得,要求积极正面、切合实际。

结论:使用了GUI图形界面,用Java中的Swing类实现了10道计算题和猜数字的小程序运行。其实窗体的菜单也是有监听事件的,MenuListener,具体用法如其他监听事件一样。比较耗费事件的任务可以使用SwingWorker来达到多线程的目的,如我在任务间歇需要更新进度条,这样主类可以继承Thread,耗时任务放在SwingWorker类实现即可。

 

心得:Java思想:Java是一门面向对向语言,他定义一切都是对象 面向对象,就是面对现实;现实中的一切都是对象,他们有分类,就产生了; 他们有不同,类和类之间的不同,使用类来区分; 同一个类中不同的对象的区别,使用成员区分。所以,面向对象的内部逻辑是分类。 面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为。这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。

 

posted @ 2021-06-29 23:43  inHeart  阅读(70)  评论(0)    收藏  举报