用android去写一个小程序

枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述用android去写一个小程序相关的知识,希望能为你提供帮助。
前言:
          软工的一个小作业:实现“黄金分割小游戏”, 需要结对编程,队友:陈乐云        共用时两天。
早期思路设计:
          采用键值对的形式,以Map作为存储结构。优点:能够将数据与用户对应,缺点:采用java实现过于复杂,工程量过大,需要消耗大量资源,类型转换容易出错。
后期思路设计:
          采用二维数组:第一行用于存储用户输入原始数据,第二行用于存储中间数据(第一行的与G值做差的绝对值),第三行用于保存用户得分。
          优点:实现简单,易于运算
   
分工:
      前期:陈乐云负界面设计 和 代码的检查              中期: 陈乐云负责代码的检查,bug检查            后期:陈乐云负责App测试                                        我负责算法的实现,界面优化                                            我负责编码和bug订正                                                          我负界面的优化,代码调试
App界面设计过程:

用android去写一个小程序

文章图片

用android去写一个小程序

文章图片

第一版代码:              第一版代码只是简单的实现后台的部分逻辑,主要用于测试逻辑的准确性,并没有做具体的测试。
package cn.sau.Test; import java.util.Arrays; import java.util.Collection; public class testGolden { static int number = 10; public static void main(String[] args) { double[][] array = new double[10][3]; for(int i = 0 ; i< number; i++) { for(int j = 0 ; j< 2; j++) if(j==0) array[i][j]=i+10; else { array[i][2]=0; array[i][j] = 0; } } //平均值 double average= 0; for(int i = 0; i< number; i++){ average = average +array[i][0]; } int x = number; average = average /x; //G值 double G =average *0.618; //相近度 for(int i = 0; i< number; i++){ array[i][1] = Math.abs(array[i][0] -average); }//min:最近; max:最远 double min = array[0][1]; double max = array[0][1]; for(int i = 1; i< number; i++){ if(min > array[i][1]){ min =array[i][1]; } if(max< array[i][1]){ max =array[i][1]; } } System.out.println("max:"+max +"\\n min:" +min); //统计得分 for(int i = 0; i< number; i++){ if(array[i][1]==min){ array[i][2] =number; } else if(array[i][1] == max){ array[i][2]=-2; } }for(int i = 0 ; i< 10; i++) {System.out.print(array[i][2] +"\\n"); } }}

第二版代码:      第二版代码主要是在第一个版的基础上,实现对android平台的移植,比进行了大量的测试。
package com.example.m.goldengame10; import android.app.AlertDialog; import android.content.DialogInterface; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /* 黄金分割小游戏1.0版本 实现以下功能: 单机操作 固定用户为10 2016/10/16 作者:Finch & xiaoPang */public class MainActivity extends AppCompatActivity {int number =10; //总人数 intcount = 1; //局数判断 double[][] array = new double[10][3]; TextView news ; EditText user1 ; EditText user2; EditText user3 ; EditText user4; EditText user5; EditText user6 ; EditText user7 ; EditText user8 ; EditText user9 ; EditText user10; Buttonsubmit ; Buttonclean; protected void onCreate(Bundle savedInstanceState) { Log.v("Button","on"); for(int i = 0; i< number; i++){ array[i][0]=0; array[i][1]=0; array[i][2]=0; }super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); news =(TextView)findViewById(R.id.news); user1 = (EditText)findViewById(R.id.user1); user2 = (EditText)findViewById(R.id.user2); user3 = (EditText)findViewById(R.id.user3); user4 = (EditText)findViewById(R.id.user4); user5 = (EditText)findViewById(R.id.user5); user6 = (EditText)findViewById(R.id.user6); user7 = (EditText)findViewById(R.id.user7); user8 = (EditText)findViewById(R.id.user8); user9 = (EditText)findViewById(R.id.user9); user10 = (EditText)findViewById(R.id.user10); submit =(Button)findViewById(R.id.submit); clean =(Button)findViewById(R.id.clean); submit.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){news.setText("第"+count+"局得分"); array[0][0] =Double.parseDouble( user1.getText().toString()); array[1][0] =Double.parseDouble( user2.getText().toString()); array[2][0] =Double.parseDouble( user3.getText().toString()); array[3][0] =Double.parseDouble( user4.getText().toString()); array[4][0] =Double.parseDouble( user5.getText().toString()); array[5][0] =Double.parseDouble( user6.getText().toString()); array[6][0] =Double.parseDouble( user7.getText().toString()); array[7][0] =Double.parseDouble( user8.getText().toString()); array[8][0] =Double.parseDouble( user9.getText().toString()); array[9][0] =Double.parseDouble( user10.getText().toString()); //平均值 double average= 0; for(int i = 0; i< number; i++){ average = average +array[i][0]; } int x = number; average = average /x; //G值 double G =average *0.698; //相近度 for(int i = 0; i< number; i++){ array[i][1] = Math.abs(array[i][0] -G); }//min:最近; max:最远 double min = array[0][1]; double max = array[0][1]; for(int i = 1; i< number; i++){ if(min > array[i][1]){ min =array[i][1]; } if(max< array[i][1]){ max =array[i][1]; } }//统计得分 for(int i = 0; i< number; i++){ if(array[i][1]==min){ array[i][2] =array[i][2] + number; } else if(array[i][1] == max){ array[i][2]=array[i][2]-2; } }user1.setText(String.valueOf(array[0][2])); user2.setText(String.valueOf(array[1][2])); user3.setText(String.valueOf(array[2][2])); user4.setText(String.valueOf(array[3][2])); user5.setText(String.valueOf(array[4][2])); user6.setText(String.valueOf(array[5][2])); user7.setText(String.valueOf(array[6][2])); user8.setText(String.valueOf(array[7][2])); user9.setText(String.valueOf(array[8][2])); user10.setText(String.valueOf(array[9][2])); count++; //每提交一次,局数加一 } }); clean.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){//初始化 for(int i= 0; i< number; i++){ array[i][0]=0; array[i][1]=0; news.setText("开始第"+count+"局,请输入数值"); news.setTextSize(30); } //自动清空数据 user1.getText().clear(); user2.getText().clear(); user2.getText().clear(); user3.getText().clear(); user4.getText().clear(); user5.getText().clear(); user6.getText().clear(); user7.getText().clear(); user8.getText().clear(); user9.getText().clear(); user10.getText().clear(); } }); } }

【用android去写一个小程序】App界面设计:
   
用android去写一个小程序

文章图片

  App测试:
用android去写一个小程序

文章图片
                       
用android去写一个小程序

文章图片
                 
用android去写一个小程序

文章图片
                   
用android去写一个小程序

文章图片

       
  代码测试图集:
                 
用android去写一个小程序

文章图片
   
用android去写一个小程序

文章图片

 
  App测试其他图集:
 
用android去写一个小程序

文章图片

 
 
  总结:针对本次作业,我们还有很多需要完善的地方:1,未能实现联机模式,导致用户体验不好
                                                                                                                                          2,界面设计过于简陋,体验稍差
                                                                                                                                          3,算法实现未能考虑人数不确定性
      当然,我们会在后期系统的学习java和android后,会及时的做出更正。
  附:
  android studio 项目 代码:https://git.coding.net/fench/GodlenGame-on-android.git   App下载地址A(欢迎试玩):GoldernGameAPK         队友陈乐云的博客链接:http://www.cnblogs.com/clyln/  coding账号:https://coding.net/u/Clyln),                                                                                                                                                                                                                                                                                                                                finch                                                                                                                                                                                                                                                                                                                                                                                                        2016-10-17
 

    推荐阅读