团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

冲刺第一天

一、Daily Scrum Meeting照片

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

二、每个人的工作

1.今天计划完成的任务

GUI、计时功能、题目生成

2.工作中遇到的困难

刚开始在计时功能模块只能做到秒位,经过查询资料后可以精确到毫秒。

三、发布项目燃尽图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

1.解释说明横纵坐标代表的含义

软件功能个数。

2.解释说明实线虚线代表的含义

平均每日应完成量。

3.理解燃尽图的作用

燃尽图(burn down chart)是在项目完成之前,对需要完成的工作的一种可视化表示。

四、代码签入

1.生成题目的界面设计

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffa726" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="00:00.0"
android:gravity="center"
android:id="@+id/timer"
android:textSize="50sp"
android:textColor="#03a9f4"
android:textStyle="bold"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="400dp"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#b06d15"> <TextView
android:id="@+id/question_1"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold" /> <EditText
android:id="@+id/answer_1"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:background="@drawable/editsharp2"
android:gravity="center"
android:text=""
android:textColor="#000000"
android:textStyle="bold" /> <ImageView
android:id="@+id/RW1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center" /> </LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/question_2"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textStyle="bold"
android:textSize="23sp"/>
<EditText
android:id="@+id/answer_2"
android:background="@drawable/editsharp2"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#000000"
android:textStyle="bold"
android:text=""/>
<ImageView
android:id="@+id/RW2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#b06d15">
<TextView
android:id="@+id/question_3"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textStyle="bold"
android:textSize="23sp"/>
<EditText
android:id="@+id/answer_3"
android:background="@drawable/editsharp2"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#000000"
android:textStyle="bold"
android:text=""/>
<ImageView
android:id="@+id/RW3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"> <TextView
android:id="@+id/question_4"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold" /> <EditText
android:id="@+id/answer_4"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:background="@drawable/editsharp2"
android:gravity="center"
android:text=""
android:textColor="#000000"
android:textStyle="bold" /> <ImageView
android:id="@+id/RW4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center" /> </LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#b06d15">
<TextView
android:id="@+id/question_5"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textStyle="bold"
android:textSize="23sp"/>
<EditText
android:id="@+id/answer_5"
android:background="@drawable/editsharp2"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#000000"
android:textStyle="bold"
android:text=""/>
<ImageView
android:id="@+id/RW5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/question_6"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textStyle="bold"
android:textSize="23sp"/>
<EditText
android:id="@+id/answer_6"
android:background="@drawable/editsharp2"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#000000"
android:textStyle="bold"
android:text=""/>
<ImageView
android:id="@+id/RW6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#b06d15">
<TextView
android:id="@+id/question_7"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textStyle="bold"
android:textSize="23sp"/>
<EditText
android:id="@+id/answer_7"
android:background="@drawable/editsharp2"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#000000"
android:textStyle="bold"
android:text=""/>
<ImageView
android:id="@+id/RW7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/question_8"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textStyle="bold"
android:textSize="23sp"/>
<EditText
android:id="@+id/answer_8"
android:background="@drawable/editsharp2"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#000000"
android:textStyle="bold"
android:text=""/>
<ImageView
android:id="@+id/RW8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#b06d15">
<TextView
android:id="@+id/question_9"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textStyle="bold"
android:textSize="23sp"/> <EditText
android:id="@+id/answer_9"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:background="@drawable/editsharp2"
android:gravity="center"
android:text=""
android:textColor="#000000"
android:textStyle="bold" />
<ImageView
android:id="@+id/RW9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"> <TextView
android:id="@+id/question_10"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_marginLeft="60dp"
android:gravity="center_vertical"
android:text="12/13-23/14="
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold" /> <EditText
android:id="@+id/answer_10"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:background="@drawable/editsharp2"
android:gravity="center"
android:text=""
android:textColor="#000000"
android:textStyle="bold" /> <ImageView
android:id="@+id/RW10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="#b06d15"> </LinearLayout>
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/right_percent"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="30dp"
android:layout_gravity="center"
android:gravity="center"
android:text=" "
android:textStyle="bold"
android:textSize="20sp"
android:textColor="#000000"/>
<Button
android:id="@+id/finish"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_marginLeft="70dp"
android:background="@drawable/buttonsharp"
android:gravity="center"
android:text="答完了"
android:textColor="#FFFFFF"
android:textStyle="bold" /> </LinearLayout>
</LinearLayout>

2.生成题目的功能实现以及正误判断的功能实现

 package com.example.hh.myapplication;

 import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.os.Handler; public class QuestionAcitvity extends AppCompatActivity {
private TextView tvRight_percent;
private TextView Tquestion_1;
private TextView Tquestion_2;
private TextView Tquestion_3;
private TextView Tquestion_4;
private TextView Tquestion_5;
private TextView Tquestion_6;
private TextView Tquestion_7;
private TextView Tquestion_8;
private TextView Tquestion_9;
private TextView Tquestion_10;
private EditText Eanswer_1;
private EditText Eanswer_2;
private EditText Eanswer_3;
private EditText Eanswer_4;
private EditText Eanswer_5;
private EditText Eanswer_6;
private EditText Eanswer_7;
private EditText Eanswer_8;
private EditText Eanswer_9;
private EditText Eanswer_10;
private Button Bfinish;
private ImageView IRW_1=null;
private ImageView IRW_2=null;
private ImageView IRW_3=null;
private ImageView IRW_4=null;
private ImageView IRW_5=null;
private ImageView IRW_6=null;
private ImageView IRW_7=null;
private ImageView IRW_8=null;
private ImageView IRW_9=null;
private ImageView IRW_10=null; int[] image={
R.drawable.error_symbol,
R.drawable.right_symbol
};
public double rightNum;
public static TextView tvTimer;
private double Time=0;
private int Time_minute=0;
private final Handler handler=new Handler(); private final Runnable update_thread = new Runnable() {
@Override
public void run() {
Time++;
if(Time_minute==0){
if(Time<100){
tvTimer.setText("00:0"+Time/10);
}
else
tvTimer.setText("00:"+Time/10);
if(Time==600){
Time_minute++;
Time=0;
}
}
if(Time_minute>0&&Time_minute<10){
if(Time<100){
tvTimer.setText("0"+Time_minute+":0"+Time/10);
}
else
tvTimer.setText("0"+Time_minute+":"+Time/10);
if(Time==600){
Time_minute++;
Time=0;
}
}
if(Time_minute<60&&Time_minute>=10){
if(Time<100){
tvTimer.setText(Time_minute+":0"+Time/10);
}
else
tvTimer.setText(Time_minute+":"+Time/10);
if(Time==600){
Time_minute++;
Time=0;
}
}
if(Time_minute==60){
tvTimer.setText("别做了,洗洗睡吧");
} handler.postDelayed(update_thread, 100);
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.question_print);
final QA_List List=new QA_List(1);
tvTimer=(TextView)findViewById(R.id.timer);
tvRight_percent=(TextView)findViewById(R.id.right_percent);
Tquestion_1=(TextView)findViewById(R.id.question_1);
Tquestion_2=(TextView)findViewById(R.id.question_2);
Tquestion_3=(TextView)findViewById(R.id.question_3);
Tquestion_4=(TextView)findViewById(R.id.question_4);
Tquestion_5=(TextView)findViewById(R.id.question_5);
Tquestion_6=(TextView)findViewById(R.id.question_6);
Tquestion_7=(TextView)findViewById(R.id.question_7);
Tquestion_8=(TextView)findViewById(R.id.question_8);
Tquestion_9=(TextView)findViewById(R.id.question_9);
Tquestion_10=(TextView)findViewById(R.id.question_10);
Eanswer_1=(EditText)findViewById(R.id.answer_1);
Eanswer_2=(EditText)findViewById(R.id.answer_2);
Eanswer_3=(EditText)findViewById(R.id.answer_3);
Eanswer_4=(EditText)findViewById(R.id.answer_4);
Eanswer_5=(EditText)findViewById(R.id.answer_5);
Eanswer_6=(EditText)findViewById(R.id.answer_6);
Eanswer_7=(EditText)findViewById(R.id.answer_7);
Eanswer_8=(EditText)findViewById(R.id.answer_8);
Eanswer_9=(EditText)findViewById(R.id.answer_9);
Eanswer_10=(EditText)findViewById(R.id.answer_10);
IRW_1=(ImageView)findViewById(R.id.RW1);
IRW_2=(ImageView)findViewById(R.id.RW2);
IRW_3=(ImageView)findViewById(R.id.RW3);
IRW_4=(ImageView)findViewById(R.id.RW4);
IRW_5=(ImageView)findViewById(R.id.RW5);
IRW_6=(ImageView)findViewById(R.id.RW6);
IRW_7=(ImageView)findViewById(R.id.RW7);
IRW_8=(ImageView)findViewById(R.id.RW8);
IRW_9=(ImageView)findViewById(R.id.RW9);
IRW_10=(ImageView)findViewById(R.id.RW10);
Bfinish=(Button)findViewById(R.id.finish);
Tquestion_1.setText(List.Qusetion.get(0));
Tquestion_2.setText(List.Qusetion.get(1));
Tquestion_3.setText(List.Qusetion.get(2));
Tquestion_4.setText(List.Qusetion.get(3));
Tquestion_5.setText(List.Qusetion.get(4));
Tquestion_6.setText(List.Qusetion.get(5));
Tquestion_7.setText(List.Qusetion.get(6));
Tquestion_8.setText(List.Qusetion.get(7));
Tquestion_9.setText(List.Qusetion.get(8));
Tquestion_10.setText(List.Qusetion.get(9)); Eanswer_1.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_1.getText().toString().equals(List.Answer.get(0)))
{
IRW_1.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
} else
IRW_1.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_1.setOnFocusChangeListener(null);
Eanswer_1.setKeyListener(null);
}
}
});
Eanswer_2.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_2.getText().toString().equals(List.Answer.get(1)))
{
IRW_2.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_2.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_2.setOnFocusChangeListener(null);
Eanswer_2.setKeyListener(null);
}
}
});
Eanswer_3.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_3.getText().toString().equals(List.Answer.get(2)))
{
IRW_3.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_3.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_3.setOnFocusChangeListener(null);
Eanswer_3.setKeyListener(null);
}
}
});
Eanswer_4.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_4.getText().toString().equals(List.Answer.get(3)))
{
IRW_4.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_4.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_4.setOnFocusChangeListener(null);
Eanswer_4.setKeyListener(null);
}
}
});
Eanswer_5.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_5.getText().toString().equals(List.Answer.get(4)))
{
IRW_5.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_5.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_5.setOnFocusChangeListener(null);
Eanswer_5.setKeyListener(null);
}
}
});
Eanswer_6.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_6.getText().toString().equals(List.Answer.get(5)))
{
IRW_6.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_6.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_6.setOnFocusChangeListener(null);
Eanswer_6.setKeyListener(null);
}
}
});
Eanswer_7.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_7.getText().toString().equals(List.Answer.get(6)))
{
IRW_7.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_7.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_7.setOnFocusChangeListener(null);
Eanswer_7.setKeyListener(null);
}
}
});
Eanswer_8.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_8.getText().toString().equals(List.Answer.get(7)))
{
IRW_8.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_8.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_8.setOnFocusChangeListener(null);
Eanswer_8.setKeyListener(null);
}
}
});
Eanswer_9.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
}
else {
if(Eanswer_9.getText().toString().equals(List.Answer.get(8)))
{
IRW_9.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_9.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_9.setOnFocusChangeListener(null);
Eanswer_9.setKeyListener(null);
}
}
});
Eanswer_10.setOnFocusChangeListener(new View.OnFocusChangeListener(){
public void onFocusChange (View v, boolean hasFocus) {
if(hasFocus) {
//if()
}
else {
if(Eanswer_10.getText().toString().equals(List.Answer.get(9)))
{
IRW_10.setImageDrawable(getResources().getDrawable(image[1]));
rightNum++;
}
else
IRW_10.setImageDrawable(getResources().getDrawable(image[0]));
Eanswer_10.setOnFocusChangeListener(null);
Eanswer_10.setKeyListener(null);
}
}
});
handler.post(update_thread);
Bfinish.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
handler.removeCallbacks(update_thread);
tvRight_percent.setText("正确率:"+rightNum/10*100+"%");
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("one",List.Qusetion.get(0));
editor.apply(); }
}); }
}

五、软件的最新进展和运行截图

  今日我们的团队完成了基本的GUI界面、计时功能以及题目的生成功能。

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

六、今日小结

  1. 团队作业和前面个人作业不同的是需要全体成员共同努力完成目标,由于前期的不适应,所以第一天冲刺效果不怎么理想。
  2. 虽然此次任务时间较为紧迫,但每个组员都认真对待,相信冲刺结束以后会给出满意的答卷。
  3. 今天主要任务是手机客户端的GUI实现和题目的生成,由于组员在此前没有相关的经验,所以花了较多的时间在手机客户端的实现上。
  4. 团队协作需要每一个成员都用心对待,齐心协力一定能完成我们的目标!

冲刺第二天

一、Daily Scrum Meeting照片

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

二、每个人的工作

1.今天计划完成的任务

   判断对错功能, 计算正确率功能。

2.工作中遇到的困难

  在显示对错方面不知用什么方式表达较好,经测试和调试以后决定使用“√”“×”图片。

三、发布项目燃尽图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

四、代码签入

  代码git链接: https://git.coding.net/NianQiFeng/szys.git

五、软件的最新进展和运行截图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

六、今日小结

  1. 经过了第一天的磨合,我们以及慢慢适应团队冲刺的节奏
  2. 今天主要任务是判断对错以及计算正确率,由于我们之前有过相关的程序作业,今天并没有在这个上面纠结太久。
  3. 在分配任务中应该考虑每个成员所擅长的领域,以及协调好大家的时间,做到效率最大化。

冲刺第三天

一、Daily Scrum Meeting照片

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

二、每个人的工作

1.今天计划完成的任务

a.对程序进行改进,使其实现用户输入生成题目的功能

b.对程序界面进行重新设计.

c.设置APP的内置数据库,用来保存错题.

2.工作中遇到的困难

a.由于刚开始没有用户输入需求题目数的功能,所以,对以后的题目生成功能要有改变,可能需要分页显示,所以要对界面进行重新设计.

b.因为我们不太了解如何设置APP的内置数据库,所以需要查找一些参考资料在进行实验,困难比较大.

三、发布项目燃尽图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

四、代码签入

  代码git链接: https://git.coding.net/NianQiFeng/szys.git

五、软件的最新进展和运行截图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

六、今日小结

  1. 今天,在我们小组成员讨论过程中发现了一个问题,就是我们设计的软件忘记了用户输入出题数的功能,所以我们今天不仅对程序进行了改进,还对界面进行了重新设计,来满足程序的需求。

  2. 今天主要任务是改进程序,实现用户输入需求题目数的功能以及APP的内置数据库,由于我们之前有过相关的程序作业,对用户输入功能并没有太大困难,主要是设置APP内置数据库用来保存错题花费我们较长时间。

  3. 每天团队成员之间进行讨论还是很有必要的,通过多人的讨论,能够及时发现我们自己在编程时忽略的问题,及时改正,而不是到最后的时候才发现,如果我们到最后才发现的话,那时我们重新设计需求的工作量就会很多。

冲刺第四天

一、Daily Scrum Meeting照片

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

二、每个人的工作

1.今天计划完成的任务

a.本来我们的四则运算自动生成器输入生成的题目数量是1~10,我们觉得太少,想扩展到1~100题;

b.昨天的时候已经把数据库搭建起来了,但是还没有把数据库和保存错题的机制联系起来,今天希望能够把错的题目保存到我们搭建的这个数据库里面;

c.能够初步完成“错题吧”模块,即点击“错题吧”中的复习功能,所有生成的题目就都是之前做过但是做错的题目。

2.小组内的分工

a.余洋(031)和潘志坚(044)两位组员继续进行需求调研,把我们昨天完善的安卓apk安装包推荐给家里有弟弟妹妹在上小学的同学或者小学数学老师使用,让他们给我们提建议,看看还有哪些功能需要调整和完善;

b.邱文鑫(043)和念其锋(045)两位组员对昨日的调研结果进行调整,即把自动生成1~10题的功能扩展到自动生成1~100题,然后将保存错题的文档导入到我们搭建的数据库当中;

c.林青(047)和黄子敬(052)两位组员负责研究如何在点击复习之后,生成题目的时候能够定位到数据库里我们存储错题的那个文档当中,即生成的题目都是之前做错的题目。

2.工作中遇到的困难

a.在生成题目的过程中,如果用户需要生成的题目数量较大时,偶尔会出现生成重复题目的情况。这个情况不在我们的意料之中,所以比较懵逼。百度上也没有找到类似问题的解决方法,最后我们*在谷歌上面进行搜索,终于在YouTube上面找到解决类似问题的视频;

b.在生成题目数量比较多的时候,需要滚动屏幕才能看到下面的题目,但我们在测试的时候发现我们把最前面的几题的答案输入到方框之后,它先会判断正误,但是当我们往下滚动几页之后,上面的那些结果会消失,目前我们还没找到问题出在哪里,所以还没解决。而且这个问题不在我们的预料之内,因此打乱了我们今天的工作安排,导致大家都一起在讨论解决这个问题而落下了原本需要完成的工作。

三、发布项目燃尽图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

四、代码签入

  代码git链接: https://git.coding.net/NianQiFeng/szys.git

五、软件的最新进展和运行截图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

六、今日小结

1.今天我们是在昨天调研的基础上继续完善我们的功能,用户提出说最多只能生成十道题是远远不够的,所以我们考虑到了要提高这项功能,我们想把这个生成题目的上限提高到100道。但是改善这个功能并没有我们想的那么简答,并不像之前写C语言的时候只需要把n的值置为100即可,这次的修改可以说是牵一发而动全身,需要改的东西特别多,界面也要做相应的修改。刚开始的时候我们也没有什么思路,在百度上查找资料也没有找到类似的,最后*之后在YouTube上面才发现一个类似的指导视频,我们也不断摸石头过河,费了很大的劲才解决这个问题;

2.在我们调整了题目数量之后,又出现了新的问题。就是当生成的题目数量比较多的时候,例如需要生成手机屏幕5页的四则运算题目,而当我们输入第一页的答案之后,继续做后几页的题目的时候,返回第一页时就发现刚刚在第一页输入的答案已经不见了,第一页的答案框又变成了空白的。这个问题给我们小组造成了很大的困扰,不仅到现在还没有解决,还打乱了今天原本的计划,导致今天的计划只完成了一半,所以后面需要再加把劲,把今天落下的半天补充回来。

冲刺第五天

一、Daily Scrum Meeting照片

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

二、每个人的工作

1.今天计划完成的任务

a.继续对数据库进行改进,使得能够链接到错题库。

b.解决填答案时,滑动和到一定时间会使得答案消失的问题

c.解决提交完答案的时候,答案消失的问题

2.工作中遇到的困难

   a.因为我们不太了解如何设置APP的内置数据库,所以需要查找一些参考资料在进行实验,困难比较大.即使内部数据库已经创建成功,但是无法连接到错题库,所以数据库方面卡了很久都没办法解决。

b.对于app的开发,毕竟大家都没有基础,都是重新学起的,所以,在软件的开发过程中,很多问题需要花很多时间去解决,严重拖慢了进度。

三、发布项目燃尽图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

四、代码签入

  代码git链接: https://git.coding.net/NianQiFeng/szys.git

五、软件的最新进展和运行截图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

六、  今日小结

  1. 今天有一个主要内容就是对于数据库的改进,这方面基础薄弱,所以原定昨天就解决的连接数据库问题一直没能解决,毕竟原本设想的太过于简单,原以为只需要创建起数据库然后存储做错的题目即可,但是后面发现并没有那么轻松,毕竟把数据库和app结合在一起是一个大的难点。
  2. 今天解决的第二个问题就是,对于出题做题界面的改进,原本会出现滑动和时间导致原本输入和存储的数据丢失的bug,也是团队查阅了很多资料,才得以解决。
  3. 经过实践,发现团队的配合确实是很关键的,一个人的力量终究有限,但是当一群人聚在一起互相探讨解决问题的时候,会发现其实很多问题都能迎刃而解,这就是团队的力量。

 

冲刺第六天

一、Daily Scrum Meeting照片

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

二、每个人的工作

1.今天计划完成的任务

a. 实现错题储存功能

b.修复出现的BUG

2.工作中遇到的困难

a.用数据库存错题是开始只能实现一行存入,经查阅资料后可实现多行存入。

三、发布项目燃尽图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

四、代码签入

代码git链接: https://git.coding.net/NianQiFeng/szys.git

五、软件的最新进展和运行截图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

六、  今日小结

1.今日主要任务在于修复以前出现的BUG,使程序能更稳定的运行。每次修复都是一个学习的过程,在修复过程中可以让我们积累更多的经验。

2.在数据库的使用上还不够熟练,这方面技能需要提高。

冲刺第七天

一、Daily Scrum Meeting照片

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

二、每个人的工作

1.今天计划完成的任务

a.我们在前几天从0~10题扩展到0~100题之后,我们还是不满足,我们希望可以把这款APP改成可以生成任意数目题量的APP,不论用户输入的数目是多少,系统都能生成相应数量的题目;

b.昨天的时候已经把数据库和保存错题的机制联系起来了,点击“错题吧”模块就可以复习错题,今天希望能够把这个存储过程和调用数据库的过程再完善一下,尝试着优化代码,让生成错题的速度更快;

c.逐步完善“错题吧”模块,我们希望生成错题的数量也可以是任意的,只要需要生成的题目数量小于或等于数据库内保存的错题数量,就可以生成任意数量的题目。

d.我们希望制作一个弹窗,即当用户点击完成练习的时候,会弹出一个提示窗口,报告本次练习用户的成绩单,提醒用户本次练习过程的耗时、正确的题目数以及正确率。

2.小组内的分工

a.余洋(031)和潘志坚(044)两位组员继续进行需求调研,把我们昨天完善的安卓apk安装包推荐给家里有弟弟妹妹在上小学的同学或者小学数学老师使用,让他们给我们提建议,看看还有哪些功能需要调整和完善;

b.邱文鑫(043)把自动生成1~100题的功能再次扩展到可以生成任意数目的题量,然后对这个功能进行测试,看看到达多少题的时候系统是无法支持的;

c.念其锋(045)负责制作用户答题结束时的弹窗,在用户点击“完成”按钮的时候,要立即弹出一个窗口,提醒用户本次训练的耗时、正确的题数以及正确率;

d.林青(047)和黄子敬(052)两位组员负责继续优化“错题吧”模块,使得生成的错题数量也可以时任意的,同时对这个功能进行测试,看看达到多少题目时系统会崩掉。

2.工作中遇到的困难

a.我们在进行测试这个软件的时候发现了一个不大不小的问题,我们发现当我们多次进行训练的时候,即完成每次训练之后没有退出APP而是继续进行下一轮训练时,计时器不会跟着重新启动,而是接着上一轮的时间接着往下走,这个问题可大可小,如果用户每次训练完都退出APP的话就不会有这个问题,但用户一旦连续使用时计时器就会故障。但是我们并不知道问题出在哪里,猜测可能是计时的结束语句存在问题,但是我们还不知道怎么去验证怎么去修改;

b.在生成错题的时候,我们的设想是希望生成的错题数量可以是任意的,只要小于或等于数据库里的错题数目即可。例如,如果我的错题文档里有1000道的错题,那生成错题的数量就可以是1~1000,但是我们在操作的过程出现了一个很诡异的问题,就是它可以自动生成的错题数量是随机的,比如我们在测试的时候先是查询了文档里的错题数量,是912道,但是自动生成是输入912系统会报错,输入500也会报错,最后我们发现200多一点点就是它的上限,给人一种是按比例生成的感觉,但是我们仍然还不清楚问题出在哪里,这一点可能还要下一步的完善。

三、发布项目燃尽图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

四、代码签入

  代码git链接: https://git.coding.net/NianQiFeng/szys.git

五、软件的最新进展和运行截图

团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天

六、今日小结

1.今天是我们第一阶段冲刺的最后一天,所以我们希望在最后一天能够多完成一些任务,多实现一些功能,所以我们在前一天的会议上就给自己提出了比之前几天都要大的任务量,希望能有个完美的结尾。大家也都做得比往常更卖力,但我们还是遇到了很棘手的问题,导致这七天计划完成的小卡片还有一个没有完成,大家还是有点失落的,雄心壮志想做好每一个环节但往往会有意想不到的bug出现打断我们的进度;

2.虽然我们没有还剩一个卡片没有完成,但相对于我们在第一次冲刺开始前的计划来说,我们还是超额完成任务的。因为我们在每天完善功能之后,都会继续把完善好的APP发给一些朋友使用,让他们继续帮我们测试、提建议,所以我们的APP实际上是每一天都在进步的,而且很多完善的功能点是我们最开始没有想到的然后在做的过程中又慢慢摸索到的,这是我们本次冲刺最大的收获;

3.本次冲刺我们团队已经基本上完成了最开始时设想的功能,出题、复习、计时功能都已经实现,同时还把原来限定的1~10以内的题目扩展到任意数量的题目。错题复习方面,即使还不能做到生成任意数目,但已经可以实现在200道题目以下的任意数目,这个对于实际使用中其实已经是够用的,但我们还是会继续完善。我们在用户调研的过程中还新增了弹窗提醒的功能,这可以帮助用户对自己的水平有更准确地定位。总而言之,我对我们团队第一次冲刺的成果非常满意,我们会继续努力的。

上一篇:Tomcat启动时项目反复载入,导致资源初始化两次的问题


下一篇:iOS开发——UI进阶篇(十三)UITabBarController简单使用,qq主流框架