Translate

воскресенье, 20 мая 2012 г.

Пишем простое приложение на android для создания тестов. Считывание ответов.

  Осталось только "оживить" процесс.



  Функция LoadQuestion() выбирает случайный вопрос, пишет на кнопки соответствующие тексты, и заносит в специальную переменную правильный ответ:

private void LoadQuestion() {
         int qs=(int)System.currentTimeMillis()%QUESTIONS;
         Question.setText(Ques[qs]);
         for (int i=0;i<VARIANTS;i++){
            Answers[i].setText(AnsMatrix[i][qs]);
         }
         current_right=RightAnswers[qs]-1;
  }

qs - номер случайно выбранного вопроса. Он рассчитывается как остаток от деления системного времени в миллисекундах (прошедших от 1 января 1970 года) на общее количество вопросов теста.

current_right - переменная, равная номеру правильного ответа.

  Эту процедуру надо исполнить в onCreate() после загрузки всех вопросов из базы.


  Заведем переменные wrong и right (счетчики правильных и неправильных ответов) - обе в 0, а также переменных time и total_time (первая - текущее количество вопросов с начала теста, вторая - количество вопросов в тесте) - начальные значение тоже = 0.


  Повесим событие на нажатие кнопок:

@Override
    public void onClick(View arg0) {
        if (arg0==Question){
            wrong++;
        }
        else{
            wrong++;
            for (int i=0;i<VARIANTS;i++){
                if (arg0==Answers[i]){
                    if (current_right==i){
                        wrong--;
                        right++;
                    }
                }
            }
        }

        time++;
        LoadQuestion();
        if (time==total_time){
            Stats();
            time=0;
            right=0;
            wrong=0;
        }
    }

  Если нажата кнопка с вопросом, сразу пишем, что вопрос неправильный и либо переходим к следующему вопросу, либо выводим статистику и начинаем новы тест.

  В противном случае сначала посчитаем ответ неправильным и начнем разбираться: пройдемся по всем кнопкам с ответами, и, если нажата кнопка с конкретным индексом, проверим, соответствует ли индекс номеру правильного ответа. Если да - прибавляем 1 к правильным и убираем 1 из неправильных ответов.
 После проверки прибавим количество прошедших вопросов. Если оно совпадает с общим количеством вопросов теста, обнулим все показатели и вызовем процедуру Stats():

  private void Stats() {
        double rating=Math.round(((double)right/((double)right+(double)wrong))*100);
        String stat="";
        stat+=getString(R.string.note1);
        stat+=" "+right+" ";
        stat+=getString(R.string.note2);
        stat+=" "+total_time+". ";
        stat+=getString(R.string.note3);
        stat+=" "+(rating+"").substring(0,(rating+"").length()-2);
        Toast.makeText(this, stat, Toast.LENGTH_LONG).show();
    }

Сначала рассчитываем процент правильных ответов, затем формируем строку stat и выводим ее с помощью Toast


  Скачать исходник всей программы можно здесь

Комментариев нет:

Отправить комментарий

Related Posts Plugin for WordPress, Blogger...