Как сделать тест на С#?
Необходимо сделать тест Visual Studio на C# WinForm или WPF. Используя базу данных. Как использовать таблицы в базе данных для тестов. Как сделать бэкендом или напрямую?
Код:
public void show(int n)
{
int next = n+1;
label1.Text = "Тест " +next;
switch (answers[n])
{
case 0:
buttonright.Checked = true;
falseone.Checked = false;
falseagain.Checked = false;
break;
case 1:
buttonright.Checked = false;
falseone.Checked = true;
falseagain.Checked = false;
break;
case 2:
buttonright.Checked = false;
falseone.Checked = false;
falseagain.Checked = true;
break;
}
switch (n)
{
case 0:
questone.Text = "первый вопрос";
break;
case 1:
questone.Text = "второй вопрос";
break;
case 2:
questone.Text = "третий вопрос";
break;
}
}
Ответы (3 шт):
Для начала, если вы работаете с базой нужно установить коннектор и закинуть его в папку с проектом. После задать строку подключения. https://habr.com/ru/post/169929/ - прочтите тут, всё предельно ясно. Работа с таблицами из бд происходит через процедуры передачи запросов и записывает в переменную результат. mysql_result.GetString(0) - имеет строковый тип и его можно присваивать к обьектам (если речь про WPF или Windows Forms). Надеюсь был полезен.
Как уже Вам ответили выше, необходимо соблюсти некоторые условия:
Определиться с методом хранения БД Вопросов:
1.1. Это может быть как какая-либо СУБД (e.g.
MySQL,PostgreSQL,MS SQL& etc.);1.2. Это может быть обычная локальная БД (e.g.
SQLiteк примеру);1.3. Это могут быть файлы с вопросами (e.g.
JSON,txt& etc.).Определиться со способом получения данных из БД Вопросов:
2.1. Если тестируемый будет подключен к сети, значит, для упрощения способа актуализации вопросов Вам подойдет хранение БД Вопросов методами 1.1 или 1.3, но тогда надо организовать сетевое размещение (e.g. организовать доступ к СУБД либо выдачу JSON-файла).
2.2. Если тестируемый не будет подключен к сети, значит вам необходимо выбрать один из вариантов 1.2. или 1.3., но тогда Вам будет необходимо либо вложить в БД Вопросы полный (исчерпывающий) перечень вопросов, либо автоматизировать актуализацию вопросов при подключении к сети.
Необходимо определиться с технологией отображения, с помощью которой будет проводиться тестирование:
3.1.
WinForm- лучшее решение для организации тестирования без подключения к сети (нет необходимости подтягивать дополнительное ПО для нормального функционирования)3.2.
Web- лучшее решение для организации тестирования в сети (нет необходимости в принципе ничего скачивать или устанавливать - нужен только браузер и не зависит от используемой операционной системы).3.3.
WPF- прогрессивно (сомнительное выражение), но необходимо предусмотреть возможность подтягивания дополнительного ПО, для нормального функционирования тестирования. 3.4.UWP- так же, как и предыдущее.
- Для использования способов 1.1. или 1.2. рекомендую смотреть в сторону
EntityFramework Coreс использованиемDependency Injection; - Если вы решили использовать
JSON(способ 1.3.), то вc#масса примеров сериализации и десериализации объектов на лету. - При разработке интерфейса способами 3.* не возникнет сложностей, т.к. все библиотеки входят в стандартную поставку
Visual Studio 2019 Community edition - При разработке способом 3.2. рекомендую сначала освоить
AspNetCore. Идеальным решением при выборе из вариантов будет3.2. + 1.1- и опыту наберетесь, и тестирование будет проводиться с любого устройства (с условием использования адаптивного дизайна сайта), подключенного к сети.
Из личного опыта:
(Не очевидное)
- Необходимо задать максимальную длину вопроса(
string.Length) и при разработке интерфейса отталкиваться от этой длинны, чтобы длинные вопросы не вылазили за границы форм. - Правильные ответы на вопросы помечать свойством типа bool.
- При использовании для тестирования технологии
Webсвойство с правильным ответом ни в коем случае не передавать воView, т.к. можно будет его отследить. Валидацию ответа проводить на стороне контроллера поSubmit.
- Необходимо задать максимальную длину вопроса(
(Очевидное)
- Необходимо предусмотреть поля Категория вопроса и Стоимость вопроса для последующего возможного масштабирования приложения.
- При поточном тестировании (все вопросы выводятся один за одним) предусмотреть вывод вопросов в случайном порядке, чтобы повысить качество тестирования.
- По тем же причинам необходимо предусмотреть вывод ответов на вопросы в случайном порядке.
(Самый простой способ) мною не рекомендуется.
Использовать готовое решение - есть прекрасный экземпляр Moodle. В гугле ищется по первым ссылкам.
Исправил тест изменяя значения checkbox, и самих вопросов код примера вопросов и ответов
//Вопрос
switch (n)
{
case 0:
questone.Text = "Персональный компьютер состоит из:";
break;
case 1:
questone.Text = "Разрядность микропроцессора — это:";
break;
case 2:
questone.Text = "Постоянная память предназначена для";
break;
}
//Первые ответы
switch (n)
{
case 0:
checkboxone.Text = "системного блока";
break;
case 1:
checkboxtwo.Text = "телефона";
break;
case 2:
checkboxtrihd.Text = "плеера";
break;
}
//Второй ответ
if (n==1)
{
checkboxone.Text = "наибольшая единица информации";
checkboxtwo.Text = "количество битов, которое воспринимается микропроцессором как единое целое";
checkboxtrihd.Text = "наименьшая единица информации";
}