Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
VG_Jan
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 3
#1

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

21.11.2016, 17:17. Просмотров 531. Ответов 21
Метки нет (Все метки)

Приветствую форумчане. На данный момент у меня есть цель написать программу-тестовик, на подобии подготовительных тестовиков ВОУДа, школьной или программы ВУЗов, с базой тестов, и чтобы она базировалась на Андроиде. Имеется Eclipse для разработки, и хотел самостоятельно обучиться азам по-средством видео-уроков, но чувствую, что что-то не идет процесс. Был бы рад советам и рекомендациям со стороны опытных людей. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 17:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Написать программу-тестовик (Программирование Android):

Хочу написать программу
Здравствуйте. Раньше я изучал программирование под андроид и основы Java. Надо...

Написать программу Шрифт
Привет, Ребят... Такой вопрос.... как написать саму как программу (Шрифт.apk),...

Хочу написать программу на Android
Всем привет! Ситуация такова: Решил сделать приложение на Android,а знаний в...

Написать простейшую программу для Android
Нужно написать простейшую программу в универ. Задание скину в личку.

Кто может программу написать на андроид?
Если есть умельцы для быстрой связи пишите <cut>

Нужно написать программу под Android
Всем доброго времени суток. Очень нужна помощь, по написанию программы под...

21
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
21.11.2016, 18:01 #2
Познакомится со sql базой данных.
Создаете базу данных, туда закидываете вопросы с вариантами ответов. Правильные ответы пишутся в одном столбце. Затем разбираетесь с адаптером под Андроид и делаете функцию вывода нужных строк из базы данных вопросов . Варианты ответов перемешиваете тут же. Создаете обработчик принимающий выбранные варианты и определяющий правильные ответы.
Для полноты функций можете создать еще одну базу данных куда будут записываться набранные баллы и показываться в виде графиков-таблиц (нужное подчеркнуть).

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

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

Для кодинга сам Eclipse...
1
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
21.11.2016, 19:49 #6
Цитата Сообщение от Antohsa Посмотреть сообщение
Для кодинга сам Eclipse...
я уже говорил - хватит раздавать по темам совершенно дурацкие советы
ты вводишь людей в заблуждение
они читают это в верят таким как ты на слово, а потом у них начинаются проблемы
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
21.11.2016, 19:51 #7
Паблито, в Eclipse нельзя писать приложения на Android с использованием SQL?
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
21.11.2016, 20:18 #8
Цитата Сообщение от Antohsa Посмотреть сообщение
в Eclipse нельзя писать приложения на Android с использованием SQL?
я знаю карате, дзюдо, самбо и много других страшных слов
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
21.11.2016, 20:20 #9
Паблито, в общем оффтоп... лучше пишите по делу, а не придирайтесь ко мне...
0
VG_Jan
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 3
21.11.2016, 20:42  [ТС] #10
Так, DB Browser for sqlite Я уже попользовал. В качестве начального значения под номер выделил поле "_id", дальше поле вопроса, и пять полей под варианты ответа, где первое из пяти - правильный вариант. По такой схеме Я создам базу. С базой разобрались.
Теперь, 1) в каком формате лучше сохранить базу; 2) Что самое главное, каким образом писать приложение, на что больше всего уделить внимание, как использовать БД в этом приложении?
Извиняюсь если как-то занудно, но хотелось бы разобраться.
Заранее спасибо.
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
21.11.2016, 20:56 #11
VG_Jan, на устройстве база сохранится в файле. Вам об этом не стоит переживать... БД используйте для хранения данных.. остальные вопросы слишком расплывчаты... Вы лучше начните, буду вопросы - пишите...
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
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_"). То есть вся логика обработки теста находится в адаптере и не захламляет основной код, который используется чисто под статистику - сколько ответов правильных в процентах и т.п.
Извиняюсь за многабукаф.
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
22.11.2016, 03:43 #13
Как я понимаю, SQL целесообразно использовать в том случае, когда необходимо оперативно делать выборку из таблиц, применяя удобный синтаксис этого инструмента (типа SELECT FROM WHERE SORT LIMIT), особенно если много разных связанных по структуре таблиц и записей в них...

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

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

Всегда одно и тоже можно сделать по разному. По идеи надо расценивать с точки зрения эффективности (быстрота, количество используемых ресурсов), но если приложение простое, а девайс мощный, думаю, что можно сделать так, как удобно.... ну и если руки не из плеч.. =)))
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
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. верно б и в.

Я имею в виду, что оба теста в одной таблице должны храниться...
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
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 не нужен...
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.11.2016, 04:37 #18
То есть уже три таблицы. Говорю же, чайник я - нифига не понял.

Добавлено через 1 минуту
Прикольно наверное будет эти таблицы заполнять программно...
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
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, тоже самое, только выборку ответов уже программно делаете...

ну или добавить все таки третью таблицу, но правда не совсем понимаю, зачем...
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.11.2016, 04:52 #20
Ладно, согласен. Но все таки - как это хранить вне приложения? И как добавлять в базу новые тесты?
0
22.11.2016, 04:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 04:52
Привет! Вот еще темы с решениями:

нужно написать простеньку программу на Android
кто может сделать простеньку программу на Андроид и выложить ее в плей маркет,...

Написать программу, в которой основную работу производит сервис
Здравствуйте. Возникла задача написать программу в которой основную работу...

Написать программу нахождения максимального и минимального элементов массива
Написать программу нахождения максимального и минимального элементов массива....

Как написать программу на android без знания языка
Здравствуйте. Есть идея программы, по принципу экселя, есть форма для данных,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru