Форум программистов, компьютерный форум CyberForum.ru

Написать программу-тестовик - Android

Восстановить пароль Регистрация
 
 
VG_Jan
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 3
21.11.2016, 17:17     Написать программу-тестовик #1
Приветствую форумчане. На данный момент у меня есть цель написать программу-тестовик, на подобии подготовительных тестовиков ВОУДа, школьной или программы ВУЗов, с базой тестов, и чтобы она базировалась на Андроиде. Имеется Eclipse для разработки, и хотел самостоятельно обучиться азам по-средством видео-уроков, но чувствую, что что-то не идет процесс. Был бы рад советам и рекомендациям со стороны опытных людей. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 110
21.11.2016, 18:01     Написать программу-тестовик #2
Познакомится со sql базой данных.
Создаете базу данных, туда закидываете вопросы с вариантами ответов. Правильные ответы пишутся в одном столбце. Затем разбираетесь с адаптером под Андроид и делаете функцию вывода нужных строк из базы данных вопросов . Варианты ответов перемешиваете тут же. Создаете обработчик принимающий выбранные варианты и определяющий правильные ответы.
Для полноты функций можете создать еще одну базу данных куда будут записываться набранные баллы и показываться в виде графиков-таблиц (нужное подчеркнуть).

Цель ясна, а опыт в других платформах и языках есть? Если нет, то потренируйтесь сначала на котиках используя sql базу данных, адаптер, и другие элементы.
VG_Jan
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 3
21.11.2016, 18:24  [ТС]     Написать программу-тестовик #3
Спасибо вам за дельную подсказку. О SQL не знал. Буду изучать. А не подскажете в каком клиенте работать с этим языком, и применим ли он дальше будет в моей работе при портировании на андроид? Я, как можно догадаться, не особо опытен в этих вещах.
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 446
21.11.2016, 19:18     Написать программу-тестовик #4
Я когда писал подобное, у меня тесты грузились с сервера в виде xml файлов. Поскольку количество вопросов было относительно небольшим (порядка 150 - 200) решил не заморачиваться с БД, а так и сохранял xml. Для выделения правильных ответов использовал различные префиксы у строк с ответами, которые отбрасывал при выводе на экран. На случай, если особо умные тестируемые додумаются открыть файл в текстовом редакторе, для префиксов использовал одинаковые с виду буквы, типа правильные ответы - "с" латинская, неправильные - "с" русская.
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 112
21.11.2016, 19:42     Написать программу-тестовик #5
VG_Jan, SQL Вам пригодится в будущем, при более серьезных приложениях 100%. Да и вообще эта технология широко где используется, например, при в Web технологиях.. сейчас очень много сайтов это php + MySql внутри и HTML + JavaScript снаружи..

Для работы в визуальном представлении можно использовать DB Browser for sqlite" & "SQLite studio....

Для кодинга сам Eclipse...
Паблито
не спать!
1788 / 1522 / 474
Регистрация: 12.05.2014
Сообщений: 5,559
Завершенные тесты: 1
21.11.2016, 19:49     Написать программу-тестовик #6
Цитата Сообщение от Antohsa Посмотреть сообщение
Для кодинга сам Eclipse...
я уже говорил - хватит раздавать по темам совершенно дурацкие советы
ты вводишь людей в заблуждение
они читают это в верят таким как ты на слово, а потом у них начинаются проблемы
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 112
21.11.2016, 19:51     Написать программу-тестовик #7
Паблито, в Eclipse нельзя писать приложения на Android с использованием SQL?
Паблито
не спать!
1788 / 1522 / 474
Регистрация: 12.05.2014
Сообщений: 5,559
Завершенные тесты: 1
21.11.2016, 20:18     Написать программу-тестовик #8
Цитата Сообщение от Antohsa Посмотреть сообщение
в Eclipse нельзя писать приложения на Android с использованием SQL?
я знаю карате, дзюдо, самбо и много других страшных слов
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 112
21.11.2016, 20:20     Написать программу-тестовик #9
Паблито, в общем оффтоп... лучше пишите по делу, а не придирайтесь ко мне...
VG_Jan
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 3
21.11.2016, 20:42  [ТС]     Написать программу-тестовик #10
Так, DB Browser for sqlite Я уже попользовал. В качестве начального значения под номер выделил поле "_id", дальше поле вопроса, и пять полей под варианты ответа, где первое из пяти - правильный вариант. По такой схеме Я создам базу. С базой разобрались.
Теперь, 1) в каком формате лучше сохранить базу; 2) Что самое главное, каким образом писать приложение, на что больше всего уделить внимание, как использовать БД в этом приложении?
Извиняюсь если как-то занудно, но хотелось бы разобраться.
Заранее спасибо.
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 112
21.11.2016, 20:56     Написать программу-тестовик #11
VG_Jan, на устройстве база сохранится в файле. Вам об этом не стоит переживать... БД используйте для хранения данных.. остальные вопросы слишком расплывчаты... Вы лучше начните, буду вопросы - пишите...
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 446
22.11.2016, 03:04     Написать программу-тестовик #12
Создание БД описано в мануалах 100500 раз, тут вопросов нету. Первый возникающий вопрос - откуда и каким образом будет заполняться база данных? Где и в каком формате будут храниться тесты вне приложения?
Я к чему веду - я ничуть не против SQL, очень даже за, когда это нужно. Но я в свое время для хранения тестов не придумал ничего лучше xml. Вполне себе нормальный способ - загружать внешний xml файл и парсить его в базу данных. Но есть ли в этом смысл, если файлы небольшие? Я вот поглядел по своим файлам, если оставить xml с одним тестом, то у теста с наибольшим количеством ответов, причем старался выбрать самые длинные, размер не дотягивает до 3 кб со всеми тегами и префиксами). Ну то есть если очень грубо - в гигабайте памяти смартфона поместится около 400 000 вопросов.
Теперь далее. Может я и глупости пишу, ну да ладно. Из xml каждый тест я парсил в виде csv строки, где первый элемент - вопрос, остальные - ответы. Какой правильный какой неправильный - я уже писал. Потом эта строка путем split превращается в ArrayList, причем количество ответов может быть любым. А если у нас база данных с пятью полями под ответы, а попался тест с шестью ответами - все переделывать? Тут предлагалось делать в таблице БД отдельный столбец для правильных ответов - а если их несколько, или даже все правильные? Все будет дублироваться? Хотя ладно, в защиту любителей SQL - никто не запрещает хранить полученные из xml csv строки в базе данных с одним полем))
Ну а потом в моем варианте все действия происходят в кастомном адаптере - из ArrayList добывается первый item, который вопрос, остальные идут в ТеxtView, предварительно разделяясь на substring(0, 2) - префикс и substring(2) - сам ответ. В том же адаптере есть метод вроде isTrue, который перебирает все ответы и сравнивает их с отмеченными пользователем, например, чекбоксами. Что-то вроде if (checkBox.isChecked == praefix.equals("c_"). То есть вся логика обработки теста находится в адаптере и не захламляет основной код, который используется чисто под статистику - сколько ответов правильных в процентах и т.п.
Извиняюсь за многабукаф.
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 112
22.11.2016, 03:43     Написать программу-тестовик #13
Как я понимаю, SQL целесообразно использовать в том случае, когда необходимо оперативно делать выборку из таблиц, применяя удобный синтаксис этого инструмента (типа SELECT FROM WHERE SORT LIMIT), особенно если много разных связанных по структуре таблиц и записей в них...

Если можно ограничится файлами, не занимаясь написанием своих аналогов SELECT FROM, то их и нужно использовать. Зачем городит огород. Просто первый же ответ был про SQL, эту тему и развили...

SQL, наверное, еще будет намного быстрее работы с файлами, но в данном случае разница будет минимальной, если вообще будет...
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 446
22.11.2016, 03:52     Написать программу-тестовик #14
Цитата Сообщение от Antohsa Посмотреть сообщение
SQL, наверное, еще будет намного быстрее
В моем скромном парке девайсов основной подопытный котик - это Samsung S3 mini, далеко не самый мощный на сегодня. Он с рутом и с отладкой через WiFi, поэтому чаще всего используется. Никаких тормозов на нем замечено не было. Соответственно на S5 mini их тем более не замечал. Про Sony xperia Z5 думаю можно не говорить.
Каюсь, я не тестировал программу на самом старшем (по возрасту) HTC Desire HD, ибо считаю нецелесообразным в наше время ворошить фекалии мамонтов. Но есть подозрение, что и там бы все работало без тормозов))
Причем это с учетом того, что на момент написания программы я еще не дорос до использования RecyclerView и все делалось в обычном ListView.
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 112
22.11.2016, 03:57     Написать программу-тестовик #15
OlegJV, да там разница заметная будет скорее всего, когда Вы будете пытаться сделать сложную выборку из таблицы в 10 000 строк... просто еще дело в том, что файл Вам надо читать полностью (либо до нужного места), а из SQL можно выбрать только то, что нужно...

Всегда одно и тоже можно сделать по разному. По идеи надо расценивать с точки зрения эффективности (быстрота, количество используемых ресурсов), но если приложение простое, а девайс мощный, думаю, что можно сделать так, как удобно.... ну и если руки не из плеч.. =)))
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 446
22.11.2016, 04:14     Написать программу-тестовик #16
У меня при запуске программы xml полностью парсится в ArrayList<String> с вышеупомянутыми csv строками. То есть каждый item - отдельный тест. Потом выборка идет из него - хоть подряд, хоть в случайном порядке, как в настройках указать. Основное преимущество моего метода, как я вижу - не надо париться со структурой таблиц в БД. Ведь тесты могут быть самые разные - разное количество вопросов, или там сначала варианты ответов, а потом надо указать правильные номера, типа "верные ответы 1, 3 и 5". Я с помощью тех же префиксов у строк указывал, какие ответы использовать для выбора, а какие просто отображать на экране. А сделать таблицу в БД, предусматривающую все эти возможные варианты - мозг сломать можно. Ну или просто я еще чайник в SQL.

Добавлено через 5 минут
Вот как вариант, предложите мне структуру таблицы базы данных для таких вот двух тестов:

Тест 1

- Вопрос

1. Правильный ответ
2. Неправильный ответ
3. Правильный ответ
4. Неправильный ответ

Тест 2

- Вопрос

а) Ответ 1
б) Ответ 2
в) Ответ 3

1. верно а.
2. верно а и в.
3. верно б и в.

Я имею в виду, что оба теста в одной таблице должны храниться...
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 112
22.11.2016, 04:32     Написать программу-тестовик #17
table vopros
id | vopors | id_otvet | mult_otvet |

table otvet
id | otvet | otvet_prav|

Две таблицы, одна с вопросами, вторая с ответами...

Соответственно, в таблице с вопросами для одного вопроса будет несколько записей с id ответом
Из таблицы с ответами набираем ответы. Третий столбец указывает правильный ли ответ.

Так можно реализовать Тест 1.

Тест 2, в принципе тоже самое, только стиль другой. Используем multi_otvet в качестве маркера. Логику уже реализуем без SQL.

То есть вот это:

1. верно а.
2. верно а и в.
3. верно б и в.

Набираем рендомно зашивая в одном из вариантов правильный ответ... ну как бы если a истина, b истина, то a && b тоже истина...

Как-то схематично так...

При этом можно легко получить нужный вопрос по id, не читая весь файл целиком...

Добавлено через 4 минуты
если хочется все таки вот это тоже зашить в SQL:
1. верно а.
2. верно а и в.
3. верно б и в.

То третья таблица
id | otvet | otvet_prav | id_voprosa

И по id voprosa, если такие записи есть, выбирать нужные ответы... тогда multi_otvet не нужен...
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 446
22.11.2016, 04:37     Написать программу-тестовик #18
То есть уже три таблицы. Говорю же, чайник я - нифига не понял.

Добавлено через 1 минуту
Прикольно наверное будет эти таблицы заполнять программно...
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 112
22.11.2016, 04:46     Написать программу-тестовик #19
Не так немного, сначала не правильно написал. Более подробно..

Таблица с ответами:

id | otvet | prav | id_vopros
1 | Барсик | true | 1
2 | Васька | true | 1
3 | Мурзик | false | 1
4 | Один | true | 2
5 | Два | true | 2
6 | Пять | false | 2
7 | Черный | true | 3
8 | Белый | true | 3
9 | Красный | false | 3

Таблица с вопросам
id | vopros | multi
1 | Как зовут кота? | true
2 | Сколько пальцев на руке? | false
3 | Какого цвета кетчуп? | false

Берете любой вопрос из таблицы с вопросами, получаете его id, далее из таблицы с ответами выбираете все ответы, где id_vopros = id

Так построить тест 1.

Тест 2, тоже самое, только выборку ответов уже программно делаете...

ну или добавить все таки третью таблицу, но правда не совсем понимаю, зачем...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 04:52     Написать программу-тестовик
Еще ссылки по теме:

Android Хочу написать программу
Нужно написать программу под андроид! Android
Android Хочу написать программу на Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 446
22.11.2016, 04:52     Написать программу-тестовик #20
Ладно, согласен. Но все таки - как это хранить вне приложения? И как добавлять в базу новые тесты?
Yandex
Объявления
22.11.2016, 04:52     Написать программу-тестовик
Ответ Создать тему
Опции темы

Текущее время: 17:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru