本app共编写了3个activity,1.Mainactivity作为主界面。2.surface,用来显示随机出的题。3.showresult,用来打印所有做过的题(含结果),一个类function用来随机出题。APK下载链接http://pan.baidu.com/s/1o7fiFNG

开发时间约6个小时

具体调用、跳转如图1

图一  程序整体结构

接下来具体展示每一个模块。

模块1:class:function

使用java自带函数,Random.nextInt()来获得随机数,类中共有两个public Long类型的数据Former和Latter,Former与Latter分别表示算术中运算符前及运算符之后的两个操作数。类中共有五个函数,分别是

  • public long getRandom(int num)
  • public long setPlus(long former,long latter)
  • public long setMinus(long former,long latter)
  • public long setMutiply(long former,long latter)
  • public long setDivide(long former,long latter)

getrandom函数用来获取随机数,剩余四个用来设置加减乘除的算式,并返回运算结果。具体代码如下

 1 package com.example.shea.caculator;
 2
 3 import java.util.Random;
 4
 5 /**
 6  * Created by shea on 2016/3/10.
 7  */
 8 public class function {
 9     public  long Former=0;
10     public  long Latter=0;
11     public long getRandom(int num){
12         int NUM=num;
13         Random random=new Random();
14         int number=random.nextInt(NUM)+1;
15         return number;
16     }
17     public long setPlus(long former,long latter){
18         return former+latter;
19     }
20     public long setMinus(long former,long latter){
21         long result=0;
22         boolean Flag=true;
23         do {
24             if (former>latter)
25             {
26                 Former=former;
27                 Latter=latter;
28                 Flag=false;
29             }
30             else
31             if (former<latter)
32             {
33                 Former=latter;
34                 Latter=former;
35                 Flag=false;
36             }
37             else {
38                 Former=getRandom(100);
39                 Latter=getRandom(100);
40                 Flag=true;
41             }
42
43
44         }while (Flag);
45         result=Former-Latter;
46         return result;
47     }
48     public long setMutiply(long former,long latter){
49         return former*latter;
50     }
51     public long setDivide(long former,long latter)
52     {
53         long result=0;
54         boolean FLAG=true;
55         do{
56
57             if (former%latter==0)
58             {
59                 result=former/latter;
60                 FLAG=false;
61             }
62             else{
63                 Former=getRandom(100)+1;
64                 Latter=getRandom(19)+1;
65                 former=Former;
66                 latter=Latter;
67                 result=Former/Latter;
68                 System.out.println("============"+Former+"==========="+Latter+"===================");
69             }
70
71         }while (FLAG);
72         return result;
73     }
74 }

模块2:Activity:surface

本模块负责打印由function获得的随机加减乘除运算,真机运行截图如下。图4是完成三十道题之后的弹窗,此时可以选择再做30道,或者回到首页。做使用过程中,可以点击打印题目按钮获得目前做过的题目及答案,也可以点击回到主页按钮,回到主页。

本模块

public long setquestion()函数负责出题,并且使用textview呈现在surface.java上,
在其中使用int CHOOSENUM=random.nextInt(3);随机获得0-3的某个int类型的数,分别对应加减乘除,使用switch case跳转至对应出题方式。

图二

图三

图四

本模块代码如下:

  1 package com.example.shea.caculator;
  2 //ray's work
  3 //2013040101016
  4 //雷翔宇
  5
  6 import android.app.AlertDialog;
  7 import android.content.DialogInterface;
  8 import android.content.Intent;
  9 import android.graphics.Color;
 10 import android.support.v7.app.AppCompatActivity;
 11 import android.os.Bundle;
 12 import android.view.View;
 13 import android.widget.Button;
 14 import android.widget.EditText;
 15 import android.widget.TextView;
 16 import android.widget.Toast;
 17
 18 import java.util.ArrayList;
 19 import java.util.Random;
 20
 21 public class surface extends AppCompatActivity {
 22     private long former=0;
 23     private long latter=0;
 24     private long result=0;
 25     private long count=1;
 26     private long RIGHT=0;
 27     private float percentage=0;
 28     ArrayList<String> arrayList=new ArrayList<String>();
 29
 30     @Override
 31     protected void onCreate(Bundle savedInstanceState) {
 32         super.onCreate(savedInstanceState);
 33         setContentView(R.layout.surface_layout);
 34         final EditText editText= (EditText) findViewById(R.id.INPUTTEXT);
 35         Button next= (Button) findViewById(R.id.next);
 36         Button homepage= (Button) findViewById(R.id.homepage);
 37         Button submit=(Button)findViewById(R.id.submit);
 38         final TextView countnum= (TextView) findViewById(R.id.countnum);
 39         final Button back2home=(Button)findViewById(R.id.backtohome);
 40         setquestion();
 41         back2home.setOnClickListener(new View.OnClickListener() {
 42             @Override
 43             public void onClick(View v) {
 44
 45                 Intent back=new Intent(surface.this,MainActivity.class);
 46                 startActivity(back);
 47             }
 48         });
 49
 50         homepage.setOnClickListener(new View.OnClickListener() {
 51             @Override
 52             public void onClick(View v) {
 53                /* Intent intent = new Intent(surface.this, MainActivity.class);
 54                 startActivity(intent);*/
 55                 StringBuffer partinfo=new StringBuffer("");
 56                 StringBuffer ALLINFO=new StringBuffer("");
 57                 for (int i = 0; i <arrayList.size() ; i++) {
 58                     //allquestions.add(arrayList.get(i));
 59                     String info=  arrayList.get(i);
 60                     partinfo.append(info+"\n");
 61                     //ALLINFO.append(partinfo);
 62                 }
 63                 String allinfo=partinfo.toString();
 64                 Intent intent=new Intent(surface.this,showresult.class);
 65                 intent.putExtra("data",allinfo);
 66                 startActivity(intent);
 67
 68
 69             }
 70         });
 71         submit.setOnClickListener(new View.OnClickListener() {
 72             @Override
 73             public void onClick(View v) {
 74                 String getnum = editText.getText().toString();
 75                 int GETNUM = Integer.valueOf(getnum);
 76                 if (GETNUM == result) {
 77                     Toast.makeText(surface.this, "回答正确~", Toast.LENGTH_SHORT).show();
 78                     RIGHT++;
 79                 } else {
 80                     Toast.makeText(surface.this,"做错了呢~请再细心计算一遍",Toast.LENGTH_SHORT).show();
 81                 }
 82
 83             }
 84         });
 85         next.setOnClickListener(new View.OnClickListener() {
 86             @Override
 87             public void onClick(View v) {
 88                 editText.setText("");
 89                 countnum.setText("已经做了"+count+"道题,做对"+RIGHT+"道\n");count++;
 90                 if (count>30) {
 91                     /*Toast.makeText(surface.this, "今天的30道题已经完成啦,你真棒!~", Toast.LENGTH_LONG).show();*/
 92                     count=30;
 93                     new AlertDialog.Builder(surface.this).setMessage("今天的任务完成啦!").setPositiveButton("查看今天的题目", new DialogInterface.OnClickListener() {
 94                         @Override
 95                         public void onClick(DialogInterface dialog, int which) {
 96                             StringBuffer partinfo=new StringBuffer("");
 97                             StringBuffer ALLINFO=new StringBuffer("");
 98                             for (int i = 0; i <arrayList.size() ; i++) {
 99                                 //allquestions.add(arrayList.get(i));
100                                 String info=  arrayList.get(i);
101                                 partinfo.append(info+"\n");
102                                 //ALLINFO.append(partinfo);
103                             }
104                             String allinfo=partinfo.toString();
105                             Intent intent=new Intent(surface.this,showresult.class);
106                             intent.putExtra("data",allinfo);
107                             startActivity(intent);
108                         }
109                     }).setNegativeButton("再来三十道!", new DialogInterface.OnClickListener() {
110                         @Override
111                         public void onClick(DialogInterface dialog, int which) {
112                             count=1;
113                             countnum.setText("");
114                             setquestion();
115                         }
116                     }).create().show();
117
118
119                         }
120                 else
121                 result=setquestion();
122             }
123         });
124
125     }
126     public long setquestion(){
127         TextView textView= (TextView) findViewById(R.id.textView);
128         function myfunc=new function();
129         former=myfunc.getRandom(100)+1;
130         latter=myfunc.getRandom(100)+1;
131         Random random=new Random();
132         int CHOOSENUM=random.nextInt(3);
133         //int CHOOSENUM = 1;
134         switch (CHOOSENUM)
135         {
136             case 0:{result=myfunc.setPlus(former,latter);
137                 textView.setText(former + "+" + latter+"=");
138                 String text=former + "+" + latter+"="+result;
139                 arrayList.add(text);
140             }
141             break;
142             case 1:{result=myfunc.setDivide(former,latter);
143                 textView.setText(myfunc.Former + "÷" + myfunc.Latter+"=");
144                 String text=myfunc.Former + "÷" + myfunc.Latter+"="+result;
145                 arrayList.add(text);
146             }
147             break;
148             case 2:{
149                 result=myfunc.setMinus(former,latter);
150                 textView.setText(myfunc.Former + "-" + myfunc.Latter+"=");
151                 String text=myfunc.Former + "-" + myfunc.Latter+"="+result;
152                 arrayList.add(text);
153             }
154             break;
155             case 3:{
156                 result=myfunc.setMutiply(former,latter);
157                 textView.setText(myfunc.Former + "×" + myfunc.Latter+"=");
158                 String text=myfunc.Former + "×" + myfunc.Latter+"="+result;
159                 arrayList.add(text);
160             }
161             break;
162         }
163         return result;
164
165     }
166 }

模块3 Activity showresult

本模块负责打印已经做过的所有题目,因为在ACTIVITY:surface中使用intent进行跳转,故使用intent的putextra方法传递所有题目数据,在activity中添加了scrollview及嵌套的textview来展示结果。效果图如下

本模块代码如下

 1 package com.example.shea.caculator;
 2 //ray's work
 3 //2013040101016
 4 //雷翔宇
 5
 6 import android.content.Intent;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.os.Bundle;
 9 import android.view.View;
10 import android.widget.Button;
11 import android.widget.ListView;
12 import android.widget.TextView;
13
14 import java.util.ArrayList;
15
16 public class showresult extends AppCompatActivity {
17
18
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_showresult);
23         Button back2homepage= (Button) findViewById(R.id.back2homepage);
24         TextView textview= (TextView) findViewById(R.id.textView2);
25         Intent i=getIntent();
26         String info=i.getStringExtra("data");
27         textview.setText(info);
28         back2homepage.setOnClickListener(new View.OnClickListener() {
29             @Override
30             public void onClick(View v) {
31                 Intent back2homepage=new Intent(showresult.this,MainActivity.class);
32                 startActivity(back2homepage);
33             }
34         });
35     }
36 }

因时间关系,程序内存在一些错误未能及时更正,还请海涵。

转载于:https://www.cnblogs.com/RayShea/p/5269509.html

基于android平台的出题软件---- 每日30题相关推荐

  1. 基于Android平台的记事本软件(Android Studio项目+报告+app文件)

    移动应用开发技术 期末考核报告 题   目:        基于Android平台的记事本软件             学生姓名     学生学号                           ...

  2. 基于eclipse开发Android天气,基于android平台的天气预报软件的设计与实现.doc

    基于android平台的天气预报软件的设计与实现 摘 要 随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备.因此手机的娱乐应用服务将会有很大的发展空间手机快捷查询软件就是其中的一项. ...

  3. android社交软件。平台,基于Android平台的社交软件设计及实现.pdf

    24 7 计算机技术与发展 Vol. 24 No. 7 第 卷 第 期 2014 7 July 2014 年 月 COMPUTER TECHNOLOGY AND DEVELOPMENT 基于Andro ...

  4. 基于android平台语音日程软件的设计与实现,基于Android平台语音日程软件的设计与实现...

    摘要: 随着移动互联网的发展,智能手机已成为最重要的终端设备,由此产生了以Android平台为代表的新一代操作系统,基于该平台的分布式应用成为移动通信技术领域的研究热点.由于基于Android手机桌面 ...

  5. 基于Android平台的个人理财软件的设计与实现

    摘要 个人理财管理系统是基于Android系统开发的一款手机应用程序.它主要是为了满足人们在快节奏的生活中可以随时记下自己的收支情况的需求.个人理财管理系统与传统的记账方式相比,体现了它的便捷性.安全 ...

  6. [源码和文档分享]基于Android平台的个人理财软件的设计与实现

    摘要 个人理财管理系统是基于Android系统开发的一款手机应用程序.它主要是为了满足人们在快节奏的生活中可以随时记下自己的收支情况的需求.个人理财管理系统与传统的记账方式相比,体现了它的便捷性.安全 ...

  7. 基于android平台的出租打车软件app

    城市生活中,出租车已经成为人们日常出行经常使用的交通工具.但城市里每天上下班时间人流较大,给人的出行带来不便,有些偏远的地区也许只有少数的公交车,上下班时人数又比较多,上不了公交,而这些地方招出租车也 ...

  8. 基于android平台的出租打车软件app-计算机毕业设计

    城市生活中,出租车已经成为人们日常出行经常使用的交通工具.但城市里每天上下班时间人流较大,给人的出行带来不便,有些偏远的地区也许只有少数的公交车,上下班时人数又比较多,上不了公交,而这些地方招出租车也 ...

  9. 基于Android的备忘录软件,基于Android的手机备忘录软件设计

    <基于Android的手机备忘录软件设计>由会员分享,可在线阅读,更多相关<基于Android的手机备忘录软件设计(25页珍藏版)>请在皮匠网上搜索. 1.课程设计报告(本科) ...

最新文章

  1. Scala父类和父特质的执行顺序
  2. mysql性能优化的一些建议
  3. Java和Python安装和编译器使用
  4. [资源]基于 Pytorch 的 TorchGAN开源了!
  5. Android 2.3 r1 中文 API (57) —— ScaleGestureDetector
  6. RookeyFrame 隐藏 首次加载菜单 的伸缩动画
  7. spring中MessageSource的配置使用方法2--ReloadableResourceBundleMessageSource
  8. 阿里云服务器租用报价新鲜出炉(轻量和ECS价格)
  9. ANSYS湿模态分析(一)_51CAE_新浪博客
  10. KIBA 和 Davis 数据集下载 以及部分学习笔记
  11. Peter Norvig:十年学会编程
  12. sqlserver远程连接mysql_sqlserver2005远程连接 mysql
  13. 令人匪夷所思的 Magic 之魔数,你真的不会
  14. BiLSTM+CRF实现AI诗人与长短记忆网络
  15. 自动驾驶技术之——被低估的传感器超声波雷达
  16. Google+ 登录
  17. 今日科技联播:蚂蚁金服回应支付宝法人变更,子弹短信总激活用户超过400万...
  18. go-micro教程 — 第二章 go-micro v3 使用Gin、Etcd
  19. 契约锁集成近20种人事软件,助力HR网上签署“入转调离”文件
  20. 一个数异或同一个数两次,结果还是那个数

热门文章

  1. CSS学习笔记----CSS3自定义字体图标
  2. 程序员的创世传说 第六节 棚户区的怪人
  3. 平陆中学计算机,公示2009学科带头人骨干教师新评名单(公示)
  4. Gogole C++ 编程风格(二)
  5. 3Blue1Brown-线性代数的本质
  6. 佘其炯:关于97工程的思考
  7. C语言学习22.9.4
  8. GPG在PHP中的使用
  9. YoLov3训练自己的数据集(小白手册)
  10. 深度学习(四十八)InfoGAN学习笔记