軟工作業:黃金點游戲。跟我結對編程的是楊曉帥,我班編程能力較強的一位同學。我們自學了java,用java編寫了這個程序,用時兩天。
楊曉帥的博客園鏈接:http://www.cnblogs.com/fench/ coding鏈接:https://coding.net/u/fench
思路:采用二維數組:第一行用於存儲用戶輸入原始數據,第二行用於存儲中間數據(第一行的與G值做差的絕對值),第三行用於保存用戶得分。優點:易於實現,結構簡單。
工作過程:楊曉帥是一個認真的,負責任的同學,我對java不太熟悉,他會仔細的給我講解代碼的明細,幫助我理解程序。他的態度認真,和善。
分工:前期:我負責界面設計 和 代碼的檢查 中期:我負責代碼的檢查,bug檢查 后期:我負責App測試
楊曉帥負責算法的實現,界面優化 楊曉帥負責編碼和bug訂正 楊曉帥負界面的優化,代碼調試
App界面設計:


第一版代碼:實現具體的功能
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; //總人數
int count = 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;
Button submit ;
Button clean;
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();
}
});
}
}
App界面設計:初始界面
APP測試:
第一局輸入數據 第一局得分 第二局開始

代碼測試圖集:

App測試其他圖集:

附錄:
android studio 項目 代碼:https://coding.net/u/Clyln/p/softwarehomework---android-APK/git
App下載地址A(歡迎試玩):https://coding.net/u/Clyln/p/softwarehomework---android-APK/git/tree/master
