Создание теста на c под windows forms

Необходимо сделать тест 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;
    }
}

insolor's user avatar

insolor

47.2k17 золотых знаков56 серебряных знаков99 бронзовых знаков

задан 15 июн 2020 в 12:20

Freshmathick's user avatar

Как уже Вам ответили выше, необходимо соблюсти некоторые условия:

  1. Определиться с методом хранения БД Вопросов:

    1.1. Это может быть как какая-либо СУБД (e.g. MySQL, PostgreSQL, MS SQL & etc.);

    1.2. Это может быть обычная локальная БД (e.g.SQLite к примеру);

    1.3. Это могут быть файлы с вопросами (e.g.JSON, txt & etc.).

  2. Определиться со способом получения данных из БД Вопросов:

    2.1. Если тестируемый будет подключен к сети, значит, для упрощения способа актуализации вопросов Вам подойдет хранение БД Вопросов методами 1.1 или 1.3, но тогда надо организовать сетевое размещение (e.g. организовать доступ к СУБД либо выдачу JSON-файла).

    2.2. Если тестируемый не будет подключен к сети, значит вам необходимо выбрать один из вариантов 1.2. или 1.3., но тогда Вам будет необходимо либо вложить в БД Вопросы полный (исчерпывающий) перечень вопросов, либо автоматизировать актуализацию вопросов при подключении к сети.

  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 — и опыту наберетесь, и тестирование будет проводиться с любого устройства (с условием использования адаптивного дизайна сайта), подключенного к сети.

Из личного опыта:

  • (Не очевидное)

    1. Необходимо задать максимальную длину вопроса(string.Length) и при
      разработке интерфейса отталкиваться от этой длинны, чтобы длинные
      вопросы не вылазили за границы форм.
    2. Правильные ответы на вопросы помечать свойством типа bool.
    3. При использовании для тестирования технологии Web свойство с правильным ответом ни в коем случае не передавать во View, т.к. можно будет его отследить. Валидацию ответа проводить на стороне контроллера по Submit.
  • (Очевидное)

    1. Необходимо предусмотреть поля Категория вопроса и Стоимость вопроса для последующего возможного масштабирования приложения.
    2. При поточном тестировании (все вопросы выводятся один за одним) предусмотреть вывод вопросов в случайном порядке, чтобы повысить качество тестирования.
    3. По тем же причинам необходимо предусмотреть вывод ответов на вопросы в случайном порядке.
  • (Самый простой способ) мною не рекомендуется.

    Использовать готовое решение — есть прекрасный экземпляр Moodle. В гугле ищется по первым ссылкам.

insolor's user avatar

insolor

47.2k17 золотых знаков56 серебряных знаков99 бронзовых знаков

ответ дан 16 июн 2020 в 7:51

Rustam Aliev's user avatar

Rustam AlievRustam Aliev

4042 серебряных знака10 бронзовых знаков

6

Для начала, если вы работаете с базой нужно установить коннектор и закинуть его в папку с проектом. После задать строку подключения. https://habr.com/ru/post/169929/ — прочтите тут, всё предельно ясно.
Работа с таблицами из бд происходит через процедуры передачи запросов и записывает в переменную результат. mysql_result.GetString(0) — имеет строковый тип и его можно присваивать к обьектам (если речь про WPF или Windows Forms). Надеюсь был полезен.

ответ дан 15 июн 2020 в 13:10

Sergination's user avatar

1

Исправил тест изменяя значения 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 = "наименьшая единица информации";
}

insolor's user avatar

insolor

47.2k17 золотых знаков56 серебряных знаков99 бронзовых знаков

ответ дан 24 июн 2020 в 7:24

Freshmathick's user avatar

FreshmathickFreshmathick

151 серебряный знак5 бронзовых знаков

Search code, repositories, users, issues, pull requests…

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

На чтение 3 мин Опубликовано Обновлено

Windows Forms — одна из самых популярных технологий для создания пользовательских интерфейсов в приложениях на платформе Microsoft Windows. В данной статье мы расскажем вам, как создать тест на Windows Forms с использованием языка программирования C#.

Создание теста на Windows Forms может быть полезным в различных обучающих или оценочных целях. Тест может состоять из вопросов с предоставлением вариантов ответов, а также с подсчетом количества правильных ответов и выводом результатов пользователю.

Для создания теста на Windows Forms нам потребуется Visual Studio — интегрированная среда разработки, которая предоставляет широкие возможности для разработки приложений под Windows. В этой статье мы будем использовать Visual Studio 2019.

Как создать тест на Windows Forms

Ниже приведены основные шаги, которые нужно выполнить для создания теста на Windows Forms:

  1. Создайте новый проект Windows Forms: Откройте Visual Studio и выберите «Создать проект». Затем выберите тип проекта «Windows Forms приложение».
  2. Добавьте элементы управления: Добавьте элементы, такие как кнопки, текстовые поля и флажки, на форму приложения. Это позволяет пользователям отвечать на вопросы и переключаться между различными частями теста.
  3. Настройте отображение: Измените размеры и расположение элементов управления, чтобы сделать их более удобными для пользователя. Также можно настроить цвета, шрифты и стили элементов управления.
  4. Добавьте функциональность: Напишите код для обработки действий пользователя, таких как нажатие на кнопку «Отправить» или выбор определенного пункта. Это может включать проверку правильности ответов, подсчет баллов и вывод результатов.
  5. Подготовьте вопросы: Создайте базу данных или файл с вопросами и вариантами ответов. В приложении можно загрузить вопросы из этого источника и отобразить их в интерфейсе пользователя.

Помимо основных шагов, стоит учесть следующие советы:

  • Используйте подходящий макет: Разместите элементы управления так, чтобы они были понятны и удобны для пользователей. Разделите вопросы на разные страницы или вкладки, чтобы упростить навигацию.
  • Предоставляйте обратную связь: Выводите сообщения об ошибках или подсказки для пользователей, чтобы помочь им в правильном прохождении теста. Отображайте результаты теста после его завершения.
  • Тестируйте и отлаживайте: Запускайте тестовое приложение на разных устройствах и с разными данными для проверки его работоспособности. Исправляйте ошибки, которые могут возникать в процессе использования пользователей.

В конце концов, создание теста на Windows Forms требует некоторых навыков программирования, владения языком C# и понимания основ работы с интерфейсами. Однако, следуя приведенным выше инструкциям и советам, вы сможете создать удобное и функциональное тестовое приложение.

Подготовка среды для создания теста

Перед тем, как начать создавать тест на Windows Forms, необходимо подготовить среду разработки. Для этого вам понадобятся следующие инструменты:

  1. Visual Studio: среда разработки, которая предоставляет все необходимые инструменты для создания Windows Forms приложений. Вы можете скачать Visual Studio с официального сайта Microsoft и установить его на свой компьютер.
  2. .NET Framework: платформа, которая обеспечивает исполнение приложений, написанных на языке C#. Вместе с Visual Studio будет установлена последняя версия .NET Framework.

После установки Visual Studio и .NET Framework вы можете начать создавать тест на Windows Forms. В Visual Studio выберите шаблон Windows Forms приложения и создайте новый проект. Затем вы сможете добавлять на форму различные элементы управления, такие как кнопки, текстовые поля и т.д.

Также перед созданием теста рекомендуется определить необходимые функции и задачи, которые будет выполнять ваше приложение. Например, если вы создаете тест на математику, нужно определить, какие операции будут выполняться, какие вопросы будут задаваться и как будет организован процесс проверки ответов.

Важно создать план работы и структуру вашего приложения, чтобы все функции теста правильно взаимодействовали и обеспечивали удобство использования для пользователя.

  • Subject:
    C# Tutorials
  • Learning Time: 1 hour

In this tutorial we will go through how to make a simple multiple choice quiz game inside of Visual Studio using C# programming language and Windows Form .Net Framework. Create a quiz is always fun and its important to understand how to make such a app inside of Windows Form. This tutorial will walk you through how to make the quiz game step by step including how to set up the project, adding the components, importing the images and finally setting up the questions and answers inside of the C# Programming.

Full Video Tutorial on How to a Quiz Game in Visual Studio with C# – 

Download Multiple Choice Quiz Project on GitHub 

Full Source Code –

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Quiz_Game_in_Windows_Form_VS
{
    public partial class Form1 : Form
    {

        // quiz game variables

        int correctAnswer;
        int questionNumber = 1;
        int score;
        int percentage;
        int totalQuestions;

        public Form1()
        {
            InitializeComponent();

            askQuestion(questionNumber);

            totalQuestions = 8;
        }

        private void checkAnswerEvent(object sender, EventArgs e)
        {
            var senderObject = (Button)sender;

            int buttonTag = Convert.ToInt32(senderObject.Tag);

            if(buttonTag == correctAnswer)
            {
                score++;
            }

            if(questionNumber == totalQuestions)
            {
                // work out the percentage

                percentage = (int)Math.Round((double)(score * 100) / totalQuestions);

                MessageBox.Show(
                    "Quiz Ended!" + Environment.NewLine + 
                    "You have answered " + score + " questions correctly." + Environment.NewLine + 
                    "Your total percentage is " + percentage + "%" + Environment.NewLine + 
                    "Click OK to play again"                 
                    );

                score = 0;
                questionNumber = 0;
                askQuestion(questionNumber);

            }

            questionNumber++;
            askQuestion(questionNumber);

        }

        private void askQuestion(int qnum)
        {

            switch(qnum)
            {
                case 1:
                    pictureBox1.Image = Properties.Resources.questions;

                    lblQuestion.Text = "What is the colour of the sky?";

                    button1.Text = "Blue";
                    button2.Text = "Yellow";
                    button3.Text = "Orange";
                    button4.Text = "Red";

                    correctAnswer = 1;

                    break;
                case 2:
                    pictureBox1.Image = Properties.Resources.questions;

                    lblQuestion.Text = "What is the name of the main character from Iron Man?";

                    button1.Text = "Tony Stank";
                    button2.Text = "Tony Stark";
                    button3.Text = "Rody";
                    button4.Text = "Peter Quill";

                    correctAnswer = 2;

                    break;
                case 3:
                    pictureBox1.Image = Properties.Resources.csgo;

                    lblQuestion.Text = "What is the name of this game?";

                    button1.Text = "Call of Duty";
                    button2.Text = "Battlefield";
                    button3.Text = "Fortnite";
                    button4.Text = "CS - GO";

                    correctAnswer = 4;

                    break;
                case 4:
                    pictureBox1.Image = Properties.Resources.fortnite;

                    lblQuestion.Text = "Which Publisher made this game?";

                    button1.Text = "EA";
                    button2.Text = "Activision";
                    button3.Text = "Epic Games";
                    button4.Text = "Equare Enix";

                    correctAnswer = 3;

                    break;

                case 5:
                    pictureBox1.Image = Properties.Resources.gears_of_war;

                    lblQuestion.Text = "Whats the name of this game?";

                    button1.Text = "Gears of War";
                    button2.Text = "Assassins Creed";
                    button3.Text = "Uncharted";
                    button4.Text = "Call of Duty";

                    correctAnswer = 1;

                    break;

                case 6:
                    pictureBox1.Image = Properties.Resources.halo;

                    lblQuestion.Text = "What is the main characters name in the game above?";

                    button1.Text = "Drake";
                    button2.Text = "Lara Croft";
                    button3.Text = "Master Cheif";
                    button4.Text = "Markus";

                    correctAnswer = 3;

                    break;

                case 7:
                    pictureBox1.Image = Properties.Resources.witcher3;

                    lblQuestion.Text = "Who was Geralt looking for in Witcher 3?";

                    button1.Text = "Victoria";
                    button2.Text = "Mr Donut";
                    button3.Text = "Ciri";
                    button4.Text = "Yennifer";

                    correctAnswer = 3;

                    break;

                case 8:
                    pictureBox1.Image = Properties.Resources.questions;

                    lblQuestion.Text = "Which city is the captial city of England?";

                    button1.Text = "Birmingham";
                    button2.Text = "Brighton";
                    button3.Text = "Liverpool";
                    button4.Text = "London";

                    correctAnswer = 4;

                    break;




            }



        }

    }
}

Кирилл Желиховский

Кирилл Желиховский — 11.05.2023 21:43

@azayarniy! Пришлите, пожалуйста, вопросы и ключ!

Ответить

SЫRHЫЙ 4ИTOS

SЫRHЫЙ 4ИTOS — 05.02.2023 13:50

единственное видео с хорошим объяснением по теме подсчёта баллов в тесте. спасибо

Ответить

SUNMAX Play

SUNMAX Play — 04.07.2022 01:30

Посмотрите на принцип don`t repeat your self) Можно было бы я думаю с помощью циклов создать контроллеры а не Ctrl + C Ctrl + V

Ответить

Виталий Витал

Виталий Витал — 13.05.2022 22:02

Добрый день! Вы хорошо ведете курс занятий. Будут ли от Вас новые уроки именно в Windows Form C# ?

Ответить

Александр Соболев

Александр Соболев — 12.05.2022 17:24

Использую конструктор программы тестирования INDIGO для создания разных тестов.

Ответить

Василий Музюкин

Василий Музюкин — 21.04.2022 10:33

извините, но автор с кудрявыми пальцами, никакой универсальности(

Ответить

BRUSSWARK OSX CORD 2219

BRUSSWARK OSX CORD 2219 — 16.02.2022 10:45

странно у меня не получилось
выдает что неможет преобразовать стринг в систем виндовс форм лабел

Ответить

Dak

Dak — 03.01.2022 17:17

Не информативно, не рассказывается как понять какой метод за что отвечает, и как это понять, говорится только о логике работы

Ответить

Мой заработок

Мой заработок — 28.04.2021 10:42

Можно и мне ссылку

Ответить

Роберта сащенко

Роберта сащенко — 04.04.2021 20:23

Скиньте ссылку на саму источника теста

Ответить

208 VTIPO

208 VTIPO — 16.04.2019 21:12

Скиньте ссылку на саму источника теста

Ответить

YouEasyMoney

YouEasyMoney — 26.04.2018 18:10

Огромное спасибо , сделал тест с 3-мя вариантами ответа , всё работает : )

Ответить

gekk RK

gekk RK — 04.04.2018 22:07

((=

Ответить

  • Создание ссылки на папку в windows 10
  • Создание ярлыков на рабочем столе windows 10
  • Создание службы windows из командной строки
  • Создание ярлыка мой компьютер в windows 10
  • Создание своей домашней группы windows 7