Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/153: Рейтинг темы: голосов - 153, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
1

Как создать программу тестирования

09.11.2014, 19:02. Показов 31454. Ответов 35
Метки нет (Все метки)

Уважаемые программисты! Нужна ваша помощь!
Задали сделать психологический тест в Microsoft Visual C# 2010 Express
Ничего сложного, самый банальный
в чём суть:
на форме должен быть "вопрос" и два варианта ответа(а, б)
при нажатие на один из вариантов, считывается следующие 3 строки из файла(вопрос и 2 варианта ответа(а,б) путём " FR.ReadLine() "
Выбранный вариант записывается в переменную
и после прохождения подсчитываются ответы и выдаётся результат
вопросов в общем 25
сам тест:
" http://www.syntone.ru/library/... /4609.html "
Думаю для Вас это вовсе не сложно, а я уже 2-ой день голову ломаю.
Прошу, помогите кто-чем сможет.
Заранее спасибо)
Миниатюры
Как создать программу тестирования  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2014, 19:02
Ответы с готовыми решениями:

Как написать программу для тестирования?
Как написать программу для тестирования. в программе должно быть 20 вопросов по 4 варианта ответа....

Как написать программу для тестирования знаний
Система тестирования знаний. Дан текстовый файл с вопросами и верными ответами. Ввести Ф.И.О...

Создать программу тестирования, как организовать логику
Уважаемые ФОРУМЧАНЕ! Нужна помощь. Работаю в ВУЗе. Надо сделать программу по тестированию...

Как создать C# код для тестирования, не закрывая текущего проекта
Открыт большой проект в VS2010. Хочется протестировать (debug + запуск) небольшой сторонний...

35
8903 / 4817 / 1883
Регистрация: 11.02.2013
Сообщений: 10,246
09.11.2014, 19:43 2
Где находятся вопросы и ответы?
0
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
09.11.2014, 19:51  [ТС] 3
в текстовом файле
я тупо с сайта скопировал(ссылка указана) и вставил в текстовой файл
и затем каждые три строки считываю
а в конце результат уже в другой текстовой файл
0
9 / 9 / 5
Регистрация: 24.03.2014
Сообщений: 313
09.11.2014, 20:54 4
подскажу лишь принцип:
создай int a;
при нажатии на кнопку Да:
a = 1;
при Нет:
a = 0;

создаём функцию:
void Next(){
if (a==1) { продолжение теста, с учётом ответа }
if (a==0) { продолжение теста, с учётом ответа }
}

при нажатии кнопки вывода результата, вызываем функцию: Next();

Простите, если чего то не понял

Добавлено через 3 минуты
при каждом верном ответе, прибавляйте по 1 к заранее созданной переменной.
Максимальное значение ProgressBar должно быть = вашим вопросам.
ProgressBar.Value = количеству верных ответов.

Добавлено через 8 минут
kitchen, если я чего то не понял, поясните пожалуйста!
0
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
11.11.2014, 14:11  [ТС] 5
slenderface, честно говоря
я полный 0 в C#
если можно, отправьте готовую программу
заранее Большое Вам спасибо)
0
9 / 9 / 5
Регистрация: 24.03.2014
Сообщений: 313
11.11.2014, 14:34 6
а вы хитер)
хорошо, отправлю. будет готова завтра примерно.
0
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
13.11.2014, 00:49  [ТС] 7
slenderface, спасибо за понимание
Сам не разбираюсь
а времени нет, чтобы учить с нуля)
Завтра с нетерпением жду

Добавлено через 14 часов 34 минуты
ViterAlex, в текстовом файле
я тупо с сайта скопировал(ссылка указана) и вставил в текстовой файл
и затем каждые три строки считываю
а в конце результат уже в другой текстовой файл

Добавлено через 19 часов 36 минут
slenderface, есть будут вопросы, пишите)
0
9 / 9 / 5
Регистрация: 24.03.2014
Сообщений: 313
13.11.2014, 13:33 8
kitchen, возникли трудности в создании проекта для Вас. Если можно, потерпите до субботы - воскресенья! Извините пожалуйста за задержку!
0
Эксперт .NET
5426 / 4202 / 1204
Регистрация: 12.10.2013
Сообщений: 12,181
Записей в блоге: 2
13.11.2014, 19:20 9
Лучший ответ Сообщение было отмечено kitchen как решение

Решение

kitchen, вот вам тест. Сильно переделывать не советую, запутаетесь))) Я немного усовершенствовал вашу идею, вопросы и результаты теперь в базе данных. Так проще, ятд. Код класса подключения к БД:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
using System.Data;
using System.Data.SQLite;
 
namespace PsychoTest_Project {
    //class for load data from DataBase
    class DataLoader {
        //Fields
        private DataTable dt;
        string basePath;
        //ctor
        public DataLoader() {
            basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "PsychoBase.dblite");
            if (!File.Exists(basePath)) {
                throw new FileNotFoundException("File of DataBase not found!");
            }
            dt = new DataTable("PsychoTable");
        }
        //Load data method
        public DataTable GetTestData() {
            string connectionStr = @"data source=" + basePath;
            using (SQLiteDataAdapter dAdapter = new SQLiteDataAdapter("SELECT * FROM PsychoTable", connectionStr)) {
                dAdapter.Fill(dt);
            }
            return dt;
        }
    }
}
Код основной формы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using System.Threading;
using System.Threading.Tasks;
 
namespace PsychoTest_Project {
    public partial class Form1 : Form {
        DataTable testTable = null;
        volatile string answer = null;
        EventWaitHandle wh = new AutoResetEvent(false);
        public event EventHandler<TestEventArgs> testResultEvent;
 
        //ctor
        public Form1() {
            InitializeComponent();
            rbNo.Checked = false;
            rbYes.Checked = false;
            this.Load += new EventHandler(Form1_Load);
            btnStartTest.Click += new EventHandler(btnStartTest_Click);
            
            testResultEvent += new EventHandler<TestEventArgs>(Form1_testResultEvent);
        }
        //Event handler
        void Form1_testResultEvent(object sender, TestEventArgs e) {
            
            this.Invoke((Action)(() => {
                progressBar1.Value = 0;
                btnStartTest.Enabled = true;
                lblQuestion.Text = "";
                rbNo.Click -= rbYesNo_Click;
                rbYes.Click -=rbYesNo_Click;
            }));
 
            string info = string.Format("Ваш результат теста: {0}", e.testResult);
            MessageBox.Show(info, "Результат");
        }
        //rbClicks
        void rbYesNo_Click(object sender, EventArgs e) {
            string ans = ((RadioButton)sender).Text;
            if (ans == "Да") {
                answer = "answer_Yes";
            }
            else {
                answer = "answer_No";
            }
            wh.Set();
        }
        //btnStartClick
        void btnStartTest_Click(object sender, EventArgs e) {
            progressBar1.Maximum = testTable.Rows.Count;
            progressBar1.Minimum = 0;
            progressBar1.Step = 1;
            Task.Factory.StartNew(() => { Test(); });
            btnStartTest.Enabled = false;
            rbYes.Click += new EventHandler(rbYesNo_Click);
            rbNo.Click += new EventHandler(rbYesNo_Click);
        }
        //FormLoad
        void Form1_Load(object sender, EventArgs e) {
            try {
                DataLoader loader = new DataLoader();
                testTable = loader.GetTestData();
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message, "Файл отсутствует");
                this.Close();
                return;
            }
            this.Text = "Психологический тест";
        }
        //Test Method
        void Test() {
            int index = 0;
            int result = 0;
    
            while (index < testTable.Rows.Count) {
                lblQuestion.Invoke((Action)(() => {
                    lblQuestion.Text = (string)testTable.Rows[index]["Question"];
                }));
                progressBar1.Invoke((Action)(() => { progressBar1.PerformStep(); }));
                wh.WaitOne();
                result += (int)testTable.Rows[index][answer];
                index++;
            }
            if (testResultEvent != null) {
                TestEventArgs args = new TestEventArgs(result);
                testResultEvent(this, args);
            }
        }
    }
    //class for EventArgs
    public class TestEventArgs : EventArgs {
        public readonly int testResult;
        public TestEventArgs(int res) {
            testResult = res;
        }
    }
}
И архив с готовым проектом.
Вложения
Тип файла: rar PsychoTest_Projec.rar (485.6 Кб, 1010 просмотров)
3
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
13.11.2014, 20:46  [ТС] 10
slenderface, обязательно буду ждать
спасибо за старание)

Добавлено через 49 минут
insite2012, ОГРОМНОЕ Вам спасибо!
Очень признателен)
тест выполнен так, как и хотелось бы)
сразу видно - мастер.
единственное, теперь осталось вывести соответствующую информацию, в соотношении с подсчитанными баллами
как там на сайте и было:
50-75 баллов:
Вы ведете здоровый образ жизни, следовательно, ваше здоровье опасений пока не вызывает. Не расслабляйтесь, продолжайте поддерживать его.
19-25 баллов:
Ваш организм страдает от отсутствия режима, диет и физических упражнений. Обратите на это внимание, ведь от этого зависит ваше здоровье!
0-24 балла:
Задумайтесь над тем, какой образ жизни вы ведете. Следите за собой, составьте распорядок дня, откажитесь от вредных привычек и, главное, уделяйте особое внимание рациону питания.
0
Эксперт .NET
5426 / 4202 / 1204
Регистрация: 12.10.2013
Сообщений: 12,181
Записей в блоге: 2
13.11.2014, 21:11 11
Цитата Сообщение от kitchen Посмотреть сообщение
теперь осталось вывести соответствующую информацию, в соотношении с подсчитанными баллами
Так вы не уточнили, я и не сделал. Но в общем это не так сложно. В обработчике события, после окончания теста (где формируется строка результата и вылезает мессадж) сделайте проверку на значение результата и в зависимости от сравнения выводите нужное сообщение. Сможете? Если нет, скажите, я доделаю)))
1
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
13.11.2014, 21:41  [ТС] 12
insite2012, если можно, отредактируйте
а то боюсь напортачить
прогу испортить
мало ли)
В проекте я немножко изменил свойства, поэтому отправляю вам свою версию, чтобы мне повторно не изменять их
И ещё в проекте не большая ошибка: ругается на библиотеку(хотя и с ошибкой отлично работает)
нужно ли с ней что-то делать?
фото прикрепил ниже
Миниатюры
Как создать программу тестирования  
Вложения
Тип файла: rar PsychoTest_Project.rar (494.2 Кб, 98 просмотров)
0
Эксперт .NET
5426 / 4202 / 1204
Регистрация: 12.10.2013
Сообщений: 12,181
Записей в блоге: 2
13.11.2014, 21:42 13
Цитата Сообщение от kitchen Посмотреть сообщение
ещё в проекте не большая ошибка:
Да, я удалю ссылку.
0
Эксперт .NET
5426 / 4202 / 1204
Регистрация: 12.10.2013
Сообщений: 12,181
Записей в блоге: 2
13.11.2014, 22:12 14
kitchen, ну вот как-то так...
Кстати, ятд, что на сайте ошибка в выводе... Посмотрите внимательнее, там идет пересечение значений. Скорее всего, должно быть так, как я сделал в коде (три диапазона, от и до).
Вложения
Тип файла: rar PsychoTest_Project.rar (497.9 Кб, 151 просмотров)
1
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
13.11.2014, 22:28  [ТС] 15
insite2012, хм, странно, но теперь такая ошибка
Миниатюры
Как создать программу тестирования  
0
Эксперт .NET
5426 / 4202 / 1204
Регистрация: 12.10.2013
Сообщений: 12,181
Записей в блоге: 2
13.11.2014, 22:30 16
Цитата Сообщение от kitchen Посмотреть сообщение
странно, но теперь такая ошибка
Вы старый проект полностью удалите, а этот используйте... Сейчас я его еще раз проверю.
Да, точно, я же один файл лишний из проекта выкинул)))
Вот перестроенный проект. Проверяйте.
Вложения
Тип файла: rar PsychoTest_Project.rar (491.4 Кб, 242 просмотров)
1
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
13.11.2014, 22:47  [ТС] 17
insite2012, почему-то всё та же ошибка
хотя я все предыдущие проекты удалил
Миниатюры
Как создать программу тестирования  
0
Эксперт .NET
5426 / 4202 / 1204
Регистрация: 12.10.2013
Сообщений: 12,181
Записей в блоге: 2
13.11.2014, 22:54 18
А вот так?
Вложения
Тип файла: rar Архив WinRAR.rar (491.6 Кб, 348 просмотров)
2
1 / 1 / 0
Регистрация: 09.11.2014
Сообщений: 12
13.11.2014, 22:58  [ТС] 19
insite2012, нет, всё то же самое
1
Эксперт .NET
5426 / 4202 / 1204
Регистрация: 12.10.2013
Сообщений: 12,181
Записей в блоге: 2
13.11.2014, 23:06 20
kitchen, вот уже готовое приложение, без проекта. Попробуйте, должно работать.
Вложения
Тип файла: rar Архив WinRAR.rar (440.5 Кб, 706 просмотров)
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2014, 23:06
Помогаю со студенческими работами здесь

Как написать программу тестирования, где вопросы и ответы хранятся в MSSQL SERVER2008R2
Как написать про-му тестирования на ASP.NET (C#) MSSQL SERVER2008R2-база данных с вопросами и...

Как создать программу тестирования
Доброго времени суток, вопрос в том как сделать программы чтобы я мог создать тест, а потом и...

Как создать программу тестирования, чтобы после ответа на все вопросы программа выводила результат?
Всем привет. Как создать программу тестирования, чтобы после ответа на все вопросы программа...

Создать программу тестирования по программированию
Создайте программу тестирования по программированию по форматам данных (в тесте должно содержаться...

Создать программу тестирования на 20 вопросов
Написать программу на языке программирования Си, которая тестирует пользователя по заданной в...

Создать программу тестирования, оформленной в HTML
Приветь всем! Как создать программа тестирование с помощью html код


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru