码迷,mamicode.com
首页 > 移动开发 > 详细

四则运算手机开发版

时间:2016-04-06 16:53:02      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

一、题目

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

二、思路

  四则运算出题应用
  1.输入出题数 ,点击Confirm  ( 1<=n<=MAXNUMBER)
  2.提交成功后,显示第一道题目
  3.点击Last和Next可切换题目
  4.点击Submit后,核对题目正确与否,并输出答对题数
  
  注意:
  1.答案保留一位小数
  2.除法总是用较大的数除以较小的数

  1 package com.example.example07;
  2 
  3 /*
  4  * 四则运算出题应用
  5  * 1.输入出题数 ,点击Confirm  ( 1<=n<=MAXNUMBER)
  6  * 2.提交成功后,显示第一道题目
  7  * 3.点击Last和Next可切换题目
  8  * 4.点击Submit后,核对题目正确与否,并输出答对题数
  9  * 
 10  * 注意:
 11  * 1.答案保留一位小数
 12  * 2.除法总是用较大的数除以较小的数
 13  */
 14 
 15 import java.text.DecimalFormat;
 16 
 17 import android.os.Bundle;
 18 import android.app.Activity;
 19 import android.view.Menu;
 20 import android.view.View;
 21 import android.view.View.OnClickListener;
 22 import android.widget.Button;
 23 import android.widget.EditText;
 24 import android.widget.TextView;
 25 import android.widget.Toast;
 26 
 27 public class MainActivity extends Activity {
 28 
 29     private int index = 0; // 当前题数
 30     private int NUMBER = 0;; // 题目总数
 31     private static final int MAXNUMBER = 100; // 最大出题数
 32     private static final int MAXVALUE = 100; // 每道题目的最大值
 33     private boolean isSubmit = false; // 是否提交
 34     private String[] QUESTION = new String[MAXNUMBER]; // 题目集合
 35     private double[] ANSWER = new double[MAXNUMBER]; // 答案集合
 36     private double[] USER_ANSWER = new double[MAXNUMBER]; // 用户答案集合
 37     private boolean[] ANSWER_CHECK = new boolean[MAXNUMBER]; // 用户答案判定
 38     
 39     //声明控件
 40     private EditText et_number,et_answer,et_question; //题目数输入框 答案输入框 题目显示框
 41     private Button btn_confirm,btn_last,btn_next,btn_submit; //确定题数 上一题 下一题 提交题目
 42     private TextView tv_count,tv_check,tv_judge;
 43     
 44     @Override
 45     protected void onCreate(Bundle savedInstanceState) {
 46         super.onCreate(savedInstanceState);
 47         setContentView(R.layout.activity_main);
 48         
 49         // 获取控件
 50         et_question = (EditText)findViewById(R.id.et_question); // 题目显示
 51         et_number = (EditText)findViewById(R.id.et_number); // 题数
 52         et_answer = (EditText)findViewById(R.id.et_answer); // 答案
 53         btn_confirm = (Button)findViewById(R.id.btn_confirm); // 确定题数
 54         btn_last = (Button)findViewById(R.id.btn_last); // 上一题
 55         btn_next = (Button)findViewById(R.id.btn_next); // 下一题
 56         btn_submit = (Button)findViewById(R.id.btn_submit); // 提交题目
 57         tv_count = (TextView)findViewById(R.id.tv_count); // 显示当前题目数
 58         tv_check = (TextView)findViewById(R.id.tv_check); // 输出答对题数
 59         tv_judge = (TextView)findViewById(R.id.tv_judge); // 判定正确与否
 60         
 61         // 确定输入题数按钮
 62         btn_confirm.setOnClickListener(new OnClickListener() {
 63             
 64             @Override
 65             public void onClick(View arg0) {
 66                 // 如果输入题数范围正确
 67                 if(inputNumber()){ 
 68                     et_number.setEnabled(false); // 题数不可再输入
 69                     btn_confirm.setEnabled(false); // Confirm按钮不可用
 70                     NUMBER = Integer.parseInt(et_number.getText().toString()); // 获取题目数
 71                     getQuestion(); // 获取题目
 72                     showItem(index); // 显示题目
 73                     
 74                     // 激活选题按钮
 75                     btn_next.setOnClickListener(new NextClick());
 76                     btn_last.setOnClickListener(new LastClick());
 77                 }
 78             }
 79         });
 80         
 81         // 提交按钮
 82         btn_submit.setOnClickListener(new OnClickListener() {
 83             
 84             @Override
 85             public void onClick(View arg0) {
 86                 if (inputNumber()) {
 87                     if (!isSubmit) {
 88                         if (check()) {
 89                             btn_submit.setText("重置");
 90                             isSubmit = true;
 91                             et_answer.setEnabled(false);
 92                         }
 93                     } else {
 94                         // 重置函数
 95                         reset();
 96                         btn_submit.setText("提交");
 97                         isSubmit = false;
 98                         et_answer.setEnabled(true);
 99                     }
100                 }
101             }
102         });
103     }
104     
105     /*
106      * 输入题数判断
107      */
108     private boolean inputNumber(){
109         int temp = 0;
110         try{
111             temp = Integer.parseInt(et_number.getText().toString());
112         }catch(Exception e){
113             e.printStackTrace();
114             return false;
115         }
116         
117         if(temp >= 1 && temp <= MAXNUMBER){
118             return true;
119         }
120         else{
121             return false;
122         }
123     }
124     
125     // 输出所有100以内加减乘除的式子
126     private void getQuestion(){
127         String equ = "";
128         int symbol = 0,leftValue = 0,rightValue = 0;
129         DecimalFormat df = new DecimalFormat(".00"); // 保留两位小数
130         for(int i = 0;i < NUMBER;i++){
131             equ = "";
132             symbol = (int)(1+Math.random()*4); // 符号 1 + 2 - 3 * 4 /
133             leftValue = (int)(1+Math.random()*MAXVALUE); // 左边的数
134             rightValue = (int)(1+Math.random()*MAXVALUE);// 右边的数
135             switch(symbol){
136             case 1:{
137                 equ = equ + leftValue + "\t\t\t+\t\t\t" + rightValue;
138                 ANSWER[i] = leftValue + rightValue;
139                 break;
140             }
141             case 2:{
142                 equ = equ + leftValue + "\t\t\t-\t\t\t" + rightValue;
143                 ANSWER[i] = leftValue - rightValue;
144                 break;
145             }
146             case 3:{
147                 equ = equ + leftValue + "\t\t\t*\t\t\t" + rightValue;
148                 ANSWER[i] = leftValue * rightValue;
149                 break;
150             }
151             case 4:{
152                 double tempLeft = Math.max(leftValue, rightValue);
153                 double tempRight = Math.min(leftValue,rightValue);
154                 equ = equ + tempLeft + "\t\t\t/\t\t\t" + tempRight;
155                 ANSWER[i] = tempLeft / tempRight;
156                 break;
157             }
158             }
159             
160             QUESTION[i] = equ + "\t\t\t=";
161             ANSWER[i] = Double.parseDouble(df.format(ANSWER[i]));
162         }
163     }
164     
165     // 显示第i题的题目
166     private void showItem(int i){
167         et_question.setText(QUESTION[i]);
168         index = i;
169         tv_count.setText(""+(index+1)+"/"+NUMBER);
170         if(USER_ANSWER[i]!=0.0){
171             et_answer.setText(""+USER_ANSWER[i]);
172         }
173         
174         // 如果提交
175         if(isSubmit){
176             if(ANSWER_CHECK[index] == true){
177                 tv_judge.setText("√");
178                 Toast.makeText(getApplicationContext(), "回答正确" ,Toast.LENGTH_SHORT).show();
179             }
180             else{
181                 tv_judge.setText("×");
182                 Toast.makeText(getApplicationContext(), "正确答案为"+ANSWER[index],Toast.LENGTH_SHORT).show();
183             }
184         }
185         
186         // 获取焦点
187         et_answer.requestFocus();
188     }
189     
190     // 上一题按钮
191     class LastClick implements OnClickListener{
192 
193         @Override
194         public void onClick(View arg0) {
195             // TODO Auto-generated method stub
196             if(index == 0){
197                 Toast.makeText(getApplicationContext(), "这已经是第一题",Toast.LENGTH_SHORT).show();
198             }
199             else{
200                 if(!et_answer.getText().toString().equals("")){  // 输入非空
201                     try{
202                         USER_ANSWER[index] = Double.parseDouble(et_answer.getText().toString());
203                     }catch(Exception e){
204                         e.printStackTrace();
205                         return;
206                     }
207                 }
208                 // 显示上一题
209                 index--;
210                 et_answer.setText("");
211                 showItem(index);
212             }
213         }
214         
215     }
216     
217     // 下一题按钮
218     class NextClick implements OnClickListener{
219 
220         @Override
221         public void onClick(View arg0) {
222             // TODO Auto-generated method stub
223             if(index == NUMBER-1){
224                 Toast.makeText(getApplicationContext(), "这已经是最后一题",Toast.LENGTH_SHORT).show();
225             }
226             else{
227                 // 如果输入非空
228                 if(!et_answer.getText().toString().equals("")){
229                     try{
230                         USER_ANSWER[index] = Double.parseDouble(et_answer.getText().toString());
231                     }catch(Exception e){
232                         e.printStackTrace();
233                         return;
234                     }
235                 }
236                 
237                 // 显示下一题
238                 index++;
239                 et_answer.setText("");
240                 showItem(index);
241             }
242         }
243         
244     }
245     
246     // 核对答案
247     private boolean check(){
248         
249         // 判定最后一道题目
250         if(!et_answer.getText().toString().equals("")){
251             try{
252                 USER_ANSWER[index] = Double.parseDouble(et_answer.getText().toString());
253             }catch(Exception e){
254                 e.printStackTrace();
255                 return false;
256             }
257         }
258         
259         // 核对所有题目
260         int right = 0; // 答对题数
261         for(int i = 0;i < NUMBER;i++){
262             if(ANSWER[i] == USER_ANSWER[i]){
263                 right++;
264                 ANSWER_CHECK[i] = true;
265             }
266         }
267         
268         // 判定提交时正在显示的题目
269         if(ANSWER_CHECK[index] == true){
270             tv_judge.setText("√");
271             Toast.makeText(getApplicationContext(), "回答正确" ,Toast.LENGTH_SHORT).show();
272         }
273         else{
274             tv_judge.setText("×");
275             Toast.makeText(getApplicationContext(), "正确答案为"+ANSWER[index],Toast.LENGTH_SHORT).show();
276         }
277         
278         String str = "此次答题共" + NUMBER + "道题,答对" + right + "题。";
279         tv_check.setText(str);
280         
281         return true;
282     }
283     
284     // 重置函数
285     private void reset(){
286         // 重置变量
287         index = 0;
288         NUMBER = 0;
289         ANSWER = new double[MAXNUMBER];
290         QUESTION = new String[MAXNUMBER];
291         USER_ANSWER = new double[MAXNUMBER];
292         ANSWER_CHECK = new boolean[MAXNUMBER];
293         
294         // 重置控件
295         btn_confirm.setEnabled(true);
296         et_number.setEnabled(true);
297         tv_count.setText("0/0");
298         et_answer.setText("");
299         tv_check.setText("");
300         tv_judge.setText("");
301         et_number.setText("");
302         et_question.setText("");
303         
304     }
305     
306     
307 }
 

 四、实验截图

技术分享

技术分享

 

四则运算手机开发版

标签:

原文地址:http://www.cnblogs.com/zhangyao999/p/5359820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!