四则运算出题(界面版)

设计思想:

实现代码:

//jiangzhongxi 2015/3/19

package count;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Random;

import java.util.Vector;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class Count extends JFrame
implements ActionListener{

JPanel
pa;

JLabel la;//出题标签

JTextArea
tf;//文本区

JLabel la1;//范围标签

JLabel la2;//范围标签

JTextField f1;//最大值

JTextField f2;//最小值

JButton bu;

//选择运算符加减乘除

JLabel l0;

JLabel l1;

JLabel l2;

JLabel l3;

JLabel l4;

JCheckBox cb1;

JCheckBox cb2;

JCheckBox cb3;

JCheckBox cb4;

Boolean flag1;

Boolean flag2;

Boolean flag3;

Boolean flag4;

int a,max;

int b,min;

String str=" ";

JLabel la3;//题目数量

String[]
s={"0","10","20","30","40","50","60"};

JLabel l5;//打印方式

JComboBox  co5;

JComboBox co;//保证行列的整齐

String[]
si={"","1","2","3","4","5"};

public
Count() {

//
TODO Auto-generated constructor stub

this.setSize(1200,
700);

this.setLocation(80,
0);

this.setLayout(null);

Container
cn=this.getContentPane();

pa=new
JPanel()

{

public void paint(Graphics g)

{

Graphics2D g2 = (Graphics2D)
g;

Image img =
Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("1.JPEG"));

g2.drawImage(img, 0, 0,
this);

}

};

cn.add(pa, BorderLayout.CENTER);

la=new
JLabel("四则运算");

la.setFont(new
java.awt.Font("Dialog",1,20));

la.setLocation(600,
40);

la.setSize(100,
40);

this.add(la);

bu=new
JButton("开始出题");

bu.addActionListener(this);

bu.setSize(100,
20);

bu.setLocation(40,
340);

this.add(bu);

tf=new
JTextArea();

tf.setLocation(40,380);

tf.setSize(400,
200);

this.add(tf);

//添加取值范围

la1=new
JLabel("取值范围");

la1.setSize(100,
20);

la1.setLocation(40,
200);

this.add(la1);

f1=new
JTextField();

f1.setSize(40,
20);

f1.setLocation(40,
230);

this.add(f1);

la1=new
JLabel("到");

la1.setSize(20,
20);

la1.setLocation(80,
230);

this.add(la1);

f2=new
JTextField();

f2.setSize(40,
20);

f2.setLocation(100,
230);

this.add(f2);

//打印数量

la3=new
JLabel("打印数量");

la3.setSize(80,
20);

la3.setLocation(40,
150);

this.add(la3);

//选择数量的下拉列表

co=new JComboBox(s);

co.setSize(40, 20);

co.setLocation(110,150);

this.add(co);

//添加加减乘除选择复选框

l0=new JLabel("请选择运算符:");

l0.setSize(120, 20);

l0.setLocation(40, 270);

this.add(l0);

l1=new JLabel("加");

l1.setSize(40, 20);

l1.setLocation(90, 300);

cb1=new JCheckBox();

cb1.setSize(20, 20);

cb1.setLocation(105, 300);

this.add(cb1);

this.add(l1);

flag1=cb1.isSelected();

l2=new JLabel("减");

l2.setSize(40, 20);

l2.setLocation(140, 300);

cb2=new JCheckBox();

cb2.setSize(20, 20);

cb2.setLocation(160, 300);

this.add(cb2);

this.add(l2);

flag2=cb2.isSelected();

l3=new JLabel("乘");

l3.setSize(40, 20);

l3.setLocation(205, 300);

cb3=new JCheckBox();

cb3.setSize(40, 20);

cb3.setLocation(230, 300);

this.add(cb3);

this.add(l3);

cb3.isSelected();

flag3=cb3.isSelected();

l4=new JLabel("除");

l4.setSize(20, 20);

l4.setLocation(275, 300);

cb4=new JCheckBox();

cb4.setSize(40, 20);

cb4.setLocation(300, 300);

this.add(cb4);

this.add(l4);

flag4=cb4.isSelected();

l5=new JLabel("打印方式:每行数目");

l5.setSize(200, 20);

l5.setLocation(40, 100);

this.add(l5);

co5=new JComboBox(si);

co5.setSize(60, 20);

co5.setLocation(160, 100);

this.add(co5);

}

public
static void main(String[] args) {

//
TODO Auto-generated method stub

Count
c=new Count();

c.setVisible(true);//加入主窗体

}

@Override

public
void actionPerformed(ActionEvent e) {

//
TODO Auto-generated method stub

String
g;

g=(String)
co.getSelectedItem();

int
n=Integer.parseInt(g);//获取下拉列表的数值

String
co;

co=(String)co5.getSelectedItem();

int
w=Integer.parseInt(co);

System.out.println(w);

int[] result = new int[100]; //限定不重复

int[] result2 = new int[100]; //限定不重复

for(int k=0;k<100;k++)

{

result[k]=-1;

}

if(e.getSource()==bu)

{

flag4=cb4.isSelected();

flag3=cb3.isSelected();

flag2=cb2.isSelected();

flag1=cb1.isSelected();

String        mi=f1.getText();

min=Integer.parseInt(mi);//获取最小值

String ma=f2.getText();

max=Integer.parseInt(ma);//获取最大值

for(int
m=1;m<=n;m++)

{

int
flag=1;

a
= (int)( Math.random() * (max-min))+min; //在max min 范围内的整数

String
stra;

stra=String.valueOf(a);//将整数转化为字符串

result[m]=a;//将a依次的数值存入整数数组

b
= (int) (Math.random() * (max-min))+min; //在max min 范围内的整数

String
strb;

strb=String.valueOf(b);

result2[m]=b;

//保证第一次比较时a和result【0】不重复

for(int
k=0;k<m;k++)

{

if(a==result[k]&&b==result[k])

{

flag=0;

n=n+1;

}

break;

}

if(flag==1)

{

if(flag1==true&&flag2==true&&flag3==true&&flag4==true)

{

if(a<(min+max)/4)

{

str=str+stra+"+"+strb+"=  ";

}

else
if(a>=(min+max)/4&&a<(max+min)/2)

{

str=str+stra+"-"+strb+"=  ";

}

else
if(a>=(max+min)/2&&a<3*(min+max)/4)

{

str=str+stra+"*"+strb+"=  ";

}

else

{

str=str+stra+"/"+strb+"=  ";

}

if(m%w==0)

{

str=str+"\n";

}

}

else

{

if(flag1==true&&flag2==true)

{

if(a<(max+min)/2)

{

str=str+stra+"+"+strb+"=  ";

}

else

{

str=str+stra+"-"+strb+"=  ";

}

if(m%w==0)

{

str=str+"\n";

}

}

else

{

if(flag1==true&&flag3==true)

{

if(a<(max+min)/2)

{

str=str+stra+"+"+strb+"=  ";

}

else

{

str=str+stra+"*"+strb+"=  ";

}

if(m%w==0)

{

str=str+"\n";

}

}

else

{

if(flag1==true&&flag4==true)

{

if(a<(max+min)/2)

{

str=str+stra+"+"+strb+"=  ";

}

else

{

str=str+stra+"/"+strb+"=  ";

}

if(m%w==0)

{

str=str+"\n";

}

}

else

{

if(flag2==true&&flag3==true)

{

if(a<(max+min)/2)

{

str=str+stra+"-"+strb+"=  ";

}

else

{

str=str+stra+"*"+strb+"=  ";

}

if(m%w==0)

{

str=str+"\n";

}

}

else

{

if(flag2==true&&flag4==true)

{

if(a<(max+min)/2)

{

str=str+stra+"-"+strb+"=  ";

}

else

{

str=str+stra+"/"+strb+"=  ";

}

if(m%w==0)

{

str=str+"\n";

}

}

else

{

if(flag3==true&&flag4==true)

{

if(a<(max+min)/2)

{

str=str+stra+"*"+strb+"=  ";

}

else

{

str=str+stra+"/"+strb+"=  ";

}

if(m%w==0)

{

str=str+"\n";

}

}

else

{

if(flag1==true)

{

str=str+stra+"+"+strb+"=  ";

if(m%w==0)

{

str=str+"\n";

}

}

else
if(flag2==true)

{

str=str+stra+"-"+strb+"=  ";

if(m%w==0)

{

str=str+"\n";

}

}

else
if(flag3==true)

{

str=str+stra+"*"+strb+"=  ";

if(m%w==0)

{

str=str+"\n";

}

}

else

{

str=str+stra+"/"+strb+"=  ";

if(m%w==0)

{

str=str+"\n";

}

}

}

}

}

}

}

}

}

tf.setText(str);

}

}

}

}

}

心得总结:

首先是设计思想带来的问题,大一编程以来几乎很少有文字性的编程思想,写在纸上记录下来,进行比对那么问题来了原本的设计和实际的编程差别很大,首先反思设计思想思考的不全面,或者说用心不够,因为几乎不能够把所有的问题都能提前想到,就是功能也可能在实现的过程中添加一些或者有些由于时间问题只能放弃,接下来说说人月问题,我的感受是总是觉得程序可以在完美比如我还想在程序中加入符合主题的背景和其他一些把界面美化,如果说编程开始的晚我觉得再早的时间也不够你用的,我们永远不能到达最美最精致只能是更好,这就是《梦断代码》里所谓的软件时间啊,多读书多读书。

时间记录日志


学生:


姜中希


 


日期:


3/19/2015


 


教师:


王建民


 


课程:


PSP


 


 


 


 


 


 


 


日期


开始时间


结束时间


净时


活动


备注


3月18日


12:30


18:00


100分钟


设计思想


 


3月18日


19:00


10:30


20分钟


编写程序


 


3月19日


5:58点


7:40


90分钟


编写程序


 


3月18日


16:00分


17:14


30分钟


完善程序记录日志


 

时间: 2024-08-11 05:32:44

四则运算出题(界面版)的相关文章

四则运算界面版结对

四则运算界面版编译环境 Eclipse开发人员 周伟雄 学号 201306114339队友 邵家文 学号 201306114322 博客:http://www.cnblogs.com/shaojiawen/ 1.程序支持正整数四则运算,支持分数,除法保留两个小数2.可以出表达式李含有的负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不带括号3用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数4用户在第一次答题时,需要用户输

网页版的四则运算出题

用javaweb编写的网页版的四则运算出题 这个网页自己可以控制总的出题数目,以及自己所要要求的每行输出的个数, 之后再出题中应用到了随机数,并且在代码中,保证每一道题不是重复的,在一次做题中仅仅出现一次,并且自己还设定了相应的出题规则. 主要代码如下主要分为四个界面. 界面1: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8&qu

随机四则运算1.1版

之前写的四则运算1.0版,现在继续扩充 : <四则运算>题目的功能,要求: 题目避免重复:可以定制数量和打印方式: 可以控制下列参数 (1) 是否有乘除法 (2) 是否有括号 (3) 数值范围 (4) 加减有无负数 (5) 除法有无余数 (6) 是否支持分数(真分数.假分数…) (7) 是否支持小数(精确到多少位?) (8) 打印中每行的间隔 先上图看主要界面,及功能区,如下: 1: 一如既往的用JS来写,自认为在界面上可以做到更美观,功能也可以完全做到, 那么找几个功能来演示,那么就从默认条

四则运算手机开发版

一.题目 每个同学选一个方向,把程序扩展一下:1.让程序能接受用户输入答案,并判定对错.并输出正确的错题数2.把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目.3.把程序变成一个Windows 图形界面的程序.4.把程序变成一个智能手机程序 (你正在用什么手机, 就写那个手机的程序).(可以延期3周后)5.选一个你从来没有学过的编程语言,试一试实现基本功能. 二.思路 四则运算出题应用 1.输入出题数 ,点击Confirm ( 1<=n<=MAXNUMBER) 2.提交成功后,显示

四则运算出题4

1.题目要求: 将之前的四则运算出题,做成手机APP 或以网页版发布,可以让用户答题,并提示结果正确与否. 2.实现思路: 出题思路不变,将开发工具改到eclipse 上,开发成安卓程序: 3.思路整理(实现步骤): 出题步骤不变,按照之前的四则运算程序的思路,将出题结果显示在textview ,用户输入,并可以判断是否正确,并弹出对话框,提示正确与否,并对每一次的判断进行计数,结束时,提示计数结果. 4.源代码: MainActivity.java文件: package com.er.er0;

四则运算 出题项目

项目代码最初是来源自网上的四则运算代码 能实现简单的四则运算出题功能, 不支持括号和累计分数. 使用基于时间产生的1到100的随机数,判断大小来决定运算顺序 改进后能支持真分数的运算,但界面体验不好,还需要优化. 代码链接: https://github.com/q1q2w2w3e3e4/969696

四则运算(android版)

本次安卓开发,我用了四个activity: 代码 MainActivity: package com.example.demon; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; impo

小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作

这是本学期java课中实验大纲里的第一个实验,这里简单做了一个无用户界面版本. import java.util.Random; import java.util.Scanner; public class MathTest { public static void main(String[] args) { // TODO Auto-generated method stub double right = 0; double wrong = 0; /*Scanner sc2 = new Sca

C++四则运算出题器---有答案版

一.实验题目 四则运算扩展----能接受答案并判断对错然后给出成绩. 二.实验思路 在每次输出算式后面输入答案,然后判断对错,对则统计. 稍微优化了一下界面. 三.代码 1 // 12345.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include"iostream" 6 #include<stdlib.h> 7 #include<time.h> 8 #include<ma

结对项目-四则运算出题程序(GUI版)

目录: 一.致搭档(含项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模块部分异常处理说明 八.界面模块的详细设计过程 九.界面模块与计算模块的对接 十.结对过程的描述 十一.结对编程的优缺点 十二.PSP(actual) 一.致搭档:     队友:李庭娟(我很喜欢把这位队友叫娟子,感觉很亲切) 首先非常非常感谢这位结对搭档--娟子,从最初组队到如今合作,始终非常信任