基于调查需求下完成的四则运算,我们完成了主要的3大功能。
第一,普通的填空题运算,这个是传统的运算练习方式,团队都认为这个选项是必要的,好的传统要留下来,在个人经历中,填空练习是一个不错的选择。
第二,选择题的运算,选择题是另一个特别的传统练习方式,选择题可以调转运算者的思维方式,不一定要按部就班运算,例如某些答案可以带入而得出结果。
第三,我们设立了一个提高测试的选项,里面有时间限制的填空题运算,好处是在做惯普通填空题的人可以在自己设立的时间限制下,看看能完成多少道题目,提高每次的效率,从而更好的提高运算能力。
整体燃尽图:
本次实验中团队的分工完成如下:
王俊凯:主要对选择题运算项目的编写。
核心代码:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xuanzeti_layout); ActionBar actionBar = getActionBar();//获取ActionBar对象 actionBar.setDisplayShowHomeEnabled(true);//显示应用程序图标 actionBar.setDisplayHomeAsUpEnabled(true);//将应用程序图标转变为可点击图标,并添加一个返回箭头 btn_next = (Button) findViewById(R.id.buttonnext); btn_next.setOnClickListener(this); btn_FN = (Button) findViewById(R.id.buttonfinishe); btn_FN.setOnClickListener(this); textView = (TextView) findViewById(R.id.textViewtimu); textViewtip = (TextView) findViewById(R.id.textViewtip); btnA = (Button) findViewById(R.id.buttonA); btnA.setOnClickListener(this); btnB = (Button) findViewById(R.id.buttonB); btnB.setOnClickListener(this); btnC = (Button) findViewById(R.id.buttonC); btnC.setOnClickListener(this); btnD = (Button) findViewById(R.id.buttonD); btnD.setOnClickListener(this); CreatCal(); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.buttonA: if(datiflag==true){textViewtip.setText("你已答过此题!!");break;}datiflag=true; if (Integer.parseInt(this.btnA.getText().toString().substring(2)) == trueResult) { textViewtip.setText("选择正确!"); counter++; all++; } else { textViewtip.setText("选择错误!"); all++; } break; case R.id.buttonB: if(datiflag==true){textViewtip.setText("你已答过此题!!");break;}datiflag=true; if (Integer.parseInt(this.btnB.getText().toString().substring(2)) == trueResult) { textViewtip.setText("选择正确!"); counter++; all++; } else { textViewtip.setText("选择错误!"); all++; } break; case R.id.buttonC: if(datiflag==true){textViewtip.setText("你已答过此题!!");break;}datiflag=true; if (Integer.parseInt(this.btnC.getText().toString().substring(2)) == trueResult) { textViewtip.setText("选择正确!"); counter++; all++; } else { textViewtip.setText("选择错误!"); all++; } break; case R.id.buttonD: if(datiflag==true){textViewtip.setText("你已答过此题!!");break;} datiflag=true; if (Integer.parseInt(this.btnD.getText().toString().substring(2)) == trueResult) { textViewtip.setText("选择正确!"); counter++; all++; } else { textViewtip.setText("选择错误!"); all++; } break; case R.id.buttonnext: CreatCal(); break; case R.id.buttonfinishe: textViewtip.setText("你一共答了" + all + "题,对了"+counter+"题");// +",正确率为:" Toast.makeText(this, "答题结束!", Toast.LENGTH_LONG).show(); break; } } public int CreatCal() { datiflag=false; int i1, i2; char[] h = { '+', '-', 'x', '÷' }; i1 = (int) (Math.random() * 3); i2 = (int) (Math.random() * 4); num1 = (int) (Math.random() * 100 + 1); num3 = (int) (Math.random() * 100 + 1); if (i2 == 3) num2 = (int) (Math.random() * 10 + 1) * num3; else num2 = (int) (Math.random() * 100 + 1); textView.setText(num1 + "" + h[i1] + "" + num2 + h[i2] + num3 + "="); trueResult = core.Cal(i1, i2, num1, num2, num3); rand = (int) (Math.random() * 3); switch (rand) { case 0: btnA.setText("A." + trueResult); btnB.setText("B." + (trueResult + 10)); btnC.setText("C." + (trueResult + 20)); btnD.setText("D." + (trueResult + 30)); break; case 1: btnA.setText("A." + (trueResult - 10)); btnB.setText("B." + trueResult); btnC.setText("C." + (trueResult + 10)); btnD.setText("D." + (trueResult + 20)); break; case 2: btnA.setText("A." + (trueResult - 20)); btnB.setText("B." + (trueResult - 10)); btnC.setText("C." + trueResult); btnD.setText("D." + (trueResult + 10)); break; case 3: btnA.setText("A." + (trueResult - 30)); btnB.setText("B." + (trueResult - 20)); btnC.setText("C." + (trueResult - 10)); btnD.setText("D." + this.CreatCal()); break; } return trueResult; }
王逸辉:主要对计时练习运算项目的编写。
核心代码:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.jishi_layout); btn_next = (Button) findViewById(R.id.b2); btn_next.setOnClickListener(this); btn_PD = (Button) findViewById(R.id.button1); btn_PD.setOnClickListener(this); text = (EditText) findViewById(R.id.editText1); textView = (TextView) findViewById(R.id.textView2); textViewtip = (TextView) findViewById(R.id.textView5); ActionBar actionBar = getActionBar();//获取ActionBar对象 actionBar.setDisplayShowHomeEnabled(true);//显示应用程序图标 actionBar.setDisplayHomeAsUpEnabled(true);//将应用程序图标转变为可点击图标,并添加一个返回箭头 CreatCal(); final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer); Button btnStart = (Button) findViewById(R.id.btnStart); Button btnStop = (Button) findViewById(R.id.btnStop); Button btnRest = (Button) findViewById(R.id.btnReset); final EditText edtSetTime = (EditText) findViewById(R.id.edt_settime); btnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("--开始记时---"); String ss = edtSetTime.getText().toString(); if (!(ss.equals("") && ss != null)) { startTime = Integer.parseInt(edtSetTime.getText() .toString()); } // 设置开始讲时时间 chronometer.setBase(SystemClock.elapsedRealtime()); // 开始记时 chronometer.start(); } }); btnStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 停止 chronometer.stop(); } }); // 重置 btnRest.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { chronometer.setBase(SystemClock.elapsedRealtime()); a = b = c = 0; } }); chronometer .setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer chronometer) { // 如果开始计时到现在超过了startime秒 if (SystemClock.elapsedRealtime() - chronometer.getBase() > startTime * 1000) { chronometer.stop(); // 给用户提示 showDialog(); } } }); } protected void showDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); // builder.setIcon(R.drawable.eb28d25); builder.setTitle("警告") .setMessage("时间到,完成题目个数为" + c + "正确题目个数为" + a + "错误题目个数为" + b) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); AlertDialog dialog = builder.create(); dialog.show(); }
罗凯杰丶马志磊:主要对填空题运算项目的编写,整体布局的制作和BUG的提出与修正。
核心代码:布局那些代码太多了,而且分散,这里就不作介绍了...
public void CreatCal() { int i1, i2; char[] h = { '+', '-', 'x', '÷' }; i1 = (int) (Math.random() * 3); i2 = (int) (Math.random() * 4); num1 = (int) (Math.random() * 100 + 1); num3 = (int) (Math.random() * 100 + 1); if(i2==3) num2 = (int) (Math.random() * 10 + 1)*num3; else num2 = (int) (Math.random() * 100 + 1); textView.setText(num1 + "" + h[i1] + "" + num2 + h[i2] + num3 + "="); trueResult = core.Cal(i1, i2, num1, num2, num3); // trueResult=core.Add(i1,i2,num1,num2,num3); /* * switch (i1) { case 0: trueResult=core.Add(num1, num2); * * break; case 1: trueResult=core.Subtraction(num1, num2); break; case * 2: trueResult=core.multiplication(num1, num2); break; case 3: * trueResult=core.Division(num1, num2); break; } */ } public void checkout(int trueResult) { String test = text.getText().toString(); if (test != null && test.length() > 0) { result = Integer.parseInt(this.text.getText().toString()); if (result == trueResult) { this.textViewtip.setText("答案正确!"); } else { this.textViewtip.setText("错误,正确答案是:" + this.trueResult); } // 处理代码 } else { // 可以弹出警告 Toast.makeText(this, "输入不能为空!", Toast.LENGTH_LONG).show(); } }
每个人都有做出自己的工作量,有不懂和不适宜的地方,我们都会开会进行讨论,互相帮助完成项目。
第三阶段贡献分:
王俊凯 30
王逸辉 30
罗凯杰 20
马志磊 20
以下是我们程序的主要界面及应用:
完成软件后,我们在推广方面也下了不少功夫,比如在某些社交网站上上传我们的软件推介,向一些有需求的用户推介,在之前作调查的用户中也有期待我们结果的用户,我们也给他们发送软件下载,希望他们用了好评后推广出去。
推广链接:http://pan.baidu.com/s/1sjSvnKp
我们团队存放代码的GITHUB的地址https://github.com/masion