Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/41: Рейтинг темы: голосов - 41, средняя оценка - 4.73
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
.NET 3.x

Сайт-Тестирование на C#/VS

21.08.2010, 14:49. Показов 8343. Ответов 58
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток уважаемые гуру программирование. Мне в очередной раз нужна ваша помощь. Скорее даже не помощь а совет(ы).
И так, ближе к делу. Встала перед мной такая задача (Задача не с фриланса - я не приследую никаких корыстных целей. В плане продажи данного проекта и получения финансовой выгоды. Задача несёт исключительно личностный характер. Цель задачи "самообразование" ).

Сделать Сайт-Тестирование (Что-то вроде анкеты).

Проведение тестирование пользователей и отсылка результатов на почтовый адрес.

Основные задачи:
- хранение и чтение списка вопросов из файла;
- получение сведений о пользователе;
- проведение тестирования;
- подсчет результатов;
- отправка результатов на почту.

Дополнительные задачи:
- возможность вставлять картинки в вопросы и ответы.

Особенности:
- все вопросы хранятся в текстовом файле;
- в тесте может быть любое количество вопросов;
- в каждом вопросе может быть любое количество вариантов ответов;
- в каждом вопросе может быть только ОДИН правильный ответ;
- в вопросах могут встречаться картинки;
- вопросы и ответы идут в том порядке, в котором они записаны в файле;
- перед тестированием пользователя просят ввести свое имя и электронный адрес;
- после тестирования ему показывается результат (процент правильных ответов) и отсылается письмо на почту;

Формат файла для хранения вопросов:
- первая строка - наименование теста;
- все вопросы начинаются со знака "?";
- все ответы начинаются со знаков "-" и "+";
- правильный ответ начинается со знака "+";
- вопрос и ответ может состоять из нескольких строк;
- текст вопроса считается весь текст со знака "@" и до знаков "-", "+", "@" или конца файла;
- текст ответа считается весь текст со знаков "+" или "-" и до знаков "-", "+", "@" или конца файла;
- картинки хранятся в отедельной папке;
- картинки можно вставлять с помощью квадратных скобок "[" и "]", между которым указывается название файла из папки с картинками;
- при показе квадратные скобки должны заменяться на изображение картинки.


Пример файла с вопросами:
------начало файла--------
название теста
?Вопрос 1
-ответ 1
+ответ 2
-ответ 3
?Длинный вопрос
на несколько строчек
-ответ 1
-длинный ответ
на несколько строк
+ответ 3
?Сложный вопрос с картинкой [image.jpg]
-ответ 1
+ответ 2
-ответ 3
------конец файла--------

Вопрос в том как всё это лучьше реализовать ? Так как начинать методом тыка, обычно ни к чему хорошему не приводит. Вот и решил спросить совета у вас. Может быть присоветуйте летературу которую стоит прочитать. Желательно касающуюся моего вопроса. Может быть дадите ссылки на какой нибудь исходник, который можно поковырять и посмотреть как там всё устроено.

P.S. Я в C# новичок, так что сильно не пинайте

Заранее всем огромное спасибо !!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.08.2010, 14:49
Ответы с готовыми решениями:

Создать сайт, тестирование студентов
Здравствуйте, нужно создать сайт, тестирование студентов, с разграниечением доступа, то есть если авторизуется администратор, он видит...

Сайт-тестирование на поступление в вуз
Здраствуйте. В свободное время начал верстать сайт-тестирование на поступление в вуз. Вопросы и ответы у меня есть, в формате doc. ...

Удаленное тестирование приложение/Пересылка на тестирование
Если кто-то написал приложение под андроид и захочет показать другому человеку, то достаточно отослать apk. А как обстоит с этим дело в...

58
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
24.08.2010, 15:25  [ТС]
Студворк — интернет-сервис помощи студентам
Переделал как нужно.
Всё равно ругается на: ("quest","res[0];","Name".)

Вот в этих местах.

C#
1
2
3
4
5
6
7
8
9
10
namespace Test
{
    
    public partial class WebForm1 : System.Web.UI.Page
    {
        static bool[] rightwrong = new bool[quest.Length - 1]; // Элимент "quest" не существует в данном контексте.
        static int k = 1;
        int n;
        protected void Page_Load(object sender, EventArgs e)
        {
C#
1
2
3
4
5
private void takeQuest(int number)
        {
 
            if (number < quest.Length) // Элимент "quest" не существует в данном контексте.
            {
C#
1
2
string[] res = quest[number].Split('\n'); // Элимент "quest" не существует в данном контексте.
                Label2 = res[0]; // Не явное преобразование типа "string" в "System.Web.UI.WebControls.Label"
C#
1
2
3
if (rB.Name == "radio" + n.ToString()) // "System.Web.UI.WebControl.RadioBatton" не содержит опредиления для "Name" и не был найден метод расширения для "Name", принимающий тип "System.Web.UI.WebControl.RadioBatton" в качестве первого аргумента (возможно пропущена деректива using или ссылка на сборку)
                    {
                        rightwrong[k - 1] = true;
Добавлено через 3 минуты
С string[] quest; разобрался как ты и сказал. Но Name и res, всё ещё остаются...

Добавлено через 22 минуты
В общем и целом. Код я написал. Под вопросом остаётс только "Name"
Вот такой вот г-код получился.

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
 
namespace Test
{
    
    public partial class WebForm1 : System.Web.UI.Page
    {
        static bool[] rightwrong;
        static int k = 1;
        int  n;
        string[] quest;
        string[] res;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            StreamReader sr = new StreamReader("C:/Users/Sinner/Desktop/Test/Test/Test/vopr/v2.txt");
            string all = sr.ReadToEnd();
            sr.Close();
            string[] quest = all.Split('?');
            Label1.Text = quest[0];
            rightwrong=new bool[quest.Length-1];
            
        }
        
        private void takeQuest(int number)
        {
 
            if (number < quest.Length)
            {
               
                string[] res = quest[number].Split('\n');
                Label2.Text = res[0];
                
               
               
                k++;
            }
            else
            {
                
                Label1.Text = "Tест закончен.";
                Label2.Visible = false;
                RadioButton1.Visible = false;
                RadioButton2.Visible = false;
                RadioButton3.Visible = false;
                Button1.Visible = false;
                
            }
        }
 
        protected void Button1_Click(object sender, EventArgs e)
        {
            
            foreach (RadioButton rB in this.Controls.OfType<RadioButton>())
            {
                if (rB.Checked == true)
                {
                   
                    if (rB.Name == "radio" + n.ToString())  // Этот "Name"
                    {
                        rightwrong[k - 1] = true;
                    }
                    else
                    {
                        rightwrong[k - 1] = true;
                    }
                }
            }
           
            takeQuest(k);
        }
 
        protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (res[1].ToCharArray()[0] == '+')
            {
                
                n = 1;
                RadioButton1.Text = res[1].Remove('+');
            }
            else
            {
                //значит тут символ -
                RadioButton1.Text = res[1].Remove('-');
            }
        }
 
        protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (res[2].ToCharArray()[0] == '+')
            {
               
                n = 2;
                RadioButton2.Text = res[2].Remove('+');
            }
            else
            {
               
                RadioButton2.Text = res[2].Remove('-');
            }
        }
 
        protected void RadioButton3_CheckedChanged(object sender, EventArgs e)
        {
            if (res[2].ToCharArray()[0] == '+')
            {
               
                n = 3;
                RadioButton3.Text = res[3].Remove('+');
            }
            else
            {
                
                RadioButton3.Text = res[3].Remove('-');
            }
        }
 
       
    }
}
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
24.08.2010, 17:57
таким должен быть код
ведь написал же метод takeQuest, зачем ты переписал его, и сделал на события CheckedChanged, где логика???

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
106
107
108
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
 
namespace Test
{
    
    public partial class WebForm1 : System.Web.UI.Page
    {
        static bool[] rightwrong;
        static int k = 1;
        int  n;
        string[] quest;
     //   string[] res; удалено, потому-что это нужно только в методе takeQuest
        
        protected void Page_Load(object sender, EventArgs e)
        {
            StreamReader sr = new StreamReader("C:/Users/Sinner/Desktop/Test/Test/Test/vopr/v2.txt");
            string all = sr.ReadToEnd();
            sr.Close();
            string[] quest = all.Split('?');
            Label1.Text = quest[0];
            rightwrong=new bool[quest.Length-1];
            
        }
        
        private void takeQuest(int number)
        {
 
            if (number < quest.Length)
            {
               
                string[] res = quest[number].Split('\n');
                Label2.Text = res[0];
                
if(res[1].ToCharArray()[0]=='+')
{
n=1;
radio1.Text=res[1].Remove('+');
}
else
{
radio1.Text=res[1].Remove('-');
}
if(res[2].ToCharArray()[0]=='+')
{
n=2;
radio2.Text=res[2].Remove('+');
}
else
{
radio2.Text=res[2].Remove('-');
}
if(res[2].ToCharArray()[0]=='+')
{
n=3;
radio3.Text=res[3].Remove('+');
}
else
{
radio3.Text=res[3].Remove('-');
}
k++;
}
            }
            else
            {
                
                Label1.Text = "Tест закончен.";
                Label2.Visible = false;
                RadioButton1.Visible = false;
                RadioButton2.Visible = false;
                RadioButton3.Visible = false;
                Button1.Visible = false;
                
            }
        }
 
        protected void Button1_Click(object sender, EventArgs e)
        {
            
            foreach (RadioButton rB in this.Controls.OfType<RadioButton>())
            {
                if (rB.Checked == true)
                {
                   
                    if (rB.Name == "radio" + n.ToString())  // Этот "Name"
                    {
                        rightwrong[k - 1] = true;
                    }
                    else
                    {
                        rightwrong[k - 1] = true;
                    }
                }
            }
           
            takeQuest(k);
        }
 
       
       
    }
}
0
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
24.08.2010, 20:24  [ТС]
Теперь ошибок ещё больше чем было.

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
106
107
108
109
110
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
 
namespace Test
{
    
    public partial class WebForm1 : System.Web.UI.Page
    {
        static bool[] rightwrong;
        static int k = 1;
        int  n;
        string[] quest;
 
        protected void Page_Load(object sender, EventArgs e)
        {
            StreamReader sr = new StreamReader("C:/Users/Sinner/Desktop/Test/Test/Test/vopr/v2.txt");
            string all = sr.ReadToEnd();//прочитали
            sr.Close();//закрыли ридер
            string[] quest = all.Split('?');
            Label1.Text = quest[0];
 
            rightwrong=new bool[quest.Length-1];
            
        }
        
        private void takeQuest(int number)
        {
 
            if (number < quest.Length)
            {
               
                string[] res = quest[number].Split('\n');
                Label2.Text = res[0];
                
               
               if(res[1].ToCharArray()[0]=='+')
{
n=1;
RadioButton1.Text=res[1].Remove('+');
}
else
{
RadioButton1.Text=res[1].Remove('-');
}
if(res[2].ToCharArray()[0]=='+')
{
n=2;
RadioButton2.Text=res[2].Remove('+');
}
else
{
RadioButton2.Text=res[2].Remove('-');
}
if(res[2].ToCharArray()[0]=='+')
{
n=3;
RadioButton3.Text=res[3].Remove('+');
}
else
{
RadioButton3.Text=res[3].Remove('-');
}
k++;
}
            }
            else
            {
                
                Label1.Text = "Tест закончен.";
                Label2.Visible = false;
                RadioButton1.Visible = false;
                RadioButton2.Visible = false;
                RadioButton3.Visible = false;
                Button1.Visible = false;
                
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            
            foreach (RadioButton rB in this.Controls.OfType<RadioButton>())
            {
                if (rB.Checked == true)
                {
                  
                    if (rB.Name == "radio" + n.ToString())//понял для чего n ???
                    {
                        rightwrong[k - 1] = true;
                    }
                    else
                    {
                        rightwrong[k - 1] = true;
                    }
                }
            }
            
            takeQuest(k);
        }
 
       
 
        
       
    }
}
http://jpegshare.net/images/7a... 9a0bcb.png
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
24.08.2010, 20:47
я где то скобку пропустил, или лишную поставил, ну сам посмотри, не все же мне делать

Добавлено через 16 минут
C#
1
2
3
4
5
6
7
8
RadioButton3.Text=res[3].Remove('-');
}
k++;
}
* * * * * * }//эта похоже лишная
* * * * * * else
* * * * * * {
Label1.Text = "Tест закончен.";
0
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
24.08.2010, 21:39  [ТС]
Да 1 лишняя была. Но теперь снова проблема с "Name"

В этом куске кода.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
foreach (RadioButton rB in this.Controls.OfType<RadioButton>())
            {
                if (rB.Checked == true)
                {
                    
                    if (rB.Name == "radio" + n.ToString()) // С этим "Name" ("System.Web.UI.WebControls.RadioButton" не содержит определения для "Name" и не был найден метод расширения "Name", принимающий тип "System.Web.UI.WebControls.RadioButton" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
                    {
                        rightwrong[k - 1] = true;
                    }
                    else
                    {
                        rightwrong[k - 1] = true;
                    }
                }
            }
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
25.08.2010, 00:37
да правильно, радио баттон не содержит name, у него ID
моя ошибка, сорри
пиши так

C#
1
 if (rB.ID == "radio" + n.ToString())
предварительно не забудь в дизайнере им радио кнопкам дать ID поочередно radio1,radio2,radio3
1
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
25.08.2010, 00:57  [ТС]
Сейчас протестим

Добавлено через 13 минут
На radion не появляется текст вариантов ответов.
А в Label2 не появляется вопрос. При нажатии кнопки далее браузер выплёвывает.

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
Ошибка сервера в приложении '/'.
В экземпляре объекта не задана ссылка на объект. 
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. 
 
Сведения об исключении: System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
 
Ошибка источника: 
 
Строка 32:         {
Строка 33: 
Строка 34:             if (number<quest.Length)//проверили не закончились ли вопросы
Строка 35:             {
Строка 36:                 //делим quest[number] (т.е очередной вопрос) через символ '\n'
 
 
Исходный файл: C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs    Строка: 34 
 
Трассировка стека: 
 
[NullReferenceException: В экземпляре объекта не задана ссылка на объект.]
   Test.WebForm1.takeQuest(Int32 number) in C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs:34
   Test.WebForm1.Button1_Click(Object sender, EventArgs e) in C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs:108
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
А до этого в обработчиках событий подчёркивал зелёной линие
C#
1
2
3
4
5
6
 public partial class WebForm1 : System.Web.UI.Page
    {
        static bool[] rightwrong;
        static int k = 1;
        int n;
        string[] quest; \\ слово "quest".
А в ошибках значится. Предупреждение 4 Полю "Test.WebForm1.quest" нигде не присваивается значение, поэтому оно всегда будет иметь значение по умолчанию null.
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
25.08.2010, 01:41
Цитата Сообщение от S1nner Посмотреть сообщение
А в ошибках значится. Предупреждение 4 Полю "Test.WebForm1.quest" нигде не присваивается значение, поэтому оно всегда будет иметь значение по умолчанию null.
с тобой нужно читать код очень внимательно
C#
1
2
3
4
5
6
7
8
9
10
protected void Page_Load(object sender, EventArgs e)
        {
            StreamReader sr = new StreamReader("C:/Users/Sinner/Desktop/Test/Test/Test/vopr/v2.txt");
            string all = sr.ReadToEnd();
            sr.Close();
            quest = all.Split('?');//вот тут я убрал string[] перед quest-ом, поскольку тут не должна она снова объялятся
            Label1.Text = quest[0];
            rightwrong=new bool[quest.Length-1];
            
        }
1
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
25.08.2010, 02:03  [ТС]
Исправил. Ошибок нет. Но когда запукаю, вариантов ответов у Radio нету. И вопрос в Label2 всё равно не появляется...

А при нажатии кнопки "Далее" браузер выплёвывает...

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
Ошибка сервера в приложении '/'.
startIndex должен быть меньше, чем длина строки.
Имя параметра: startIndex 
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. 
 
Сведения об исключении: System.ArgumentOutOfRangeException: startIndex должен быть меньше, чем длина строки.
Имя параметра: startIndex
 
Ошибка источника: 
 
Строка 51:                 else
Строка 52:                 {
Строка 53:                     radio1.Text = res[1].Remove('-');
Строка 54:                 }
Строка 55:                 if (res[2].ToCharArray()[0] == '+')
 
 
Исходный файл: C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs    Строка: 53 
 
Трассировка стека: 
 
[ArgumentOutOfRangeException: startIndex должен быть меньше, чем длина строки.
Имя параметра: startIndex]
   System.String.Remove(Int32 startIndex) +2985869
   Test.WebForm1.takeQuest(Int32 number) in C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs:53
   Test.WebForm1.Button1_Click(Object sender, EventArgs e) in C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs:108
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
 
 
Информация о версии: Платформа Microsoft .NET Framework, версия:2.0.50727.4952; ASP.NET, версия:2.0.50727.4927
Вот как выглядит г-код сейчас.

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
106
107
108
109
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
 
namespace Test
{
 
    public partial class WebForm1 : System.Web.UI.Page
    {
        static bool[] rightwrong;
        static int k = 1;
        int n;
        string[] quest;
 
        protected void Page_Load(object sender, EventArgs e)
        {
            StreamReader sr = new StreamReader("C://Users//Sinner//Desktop//Test//Test//Test//vopr//v2.txt");
            string all = sr.ReadToEnd();
            sr.Close();
            quest = all.Split('?');
            Label1.Text = quest[0];
 
            rightwrong = new bool[quest.Length - 1];
 
        }
 
        private void takeQuest(int number)
        {
 
            if (number<quest.Length)
            {
                
                string[] res = quest[number].Split('\n');
                Label2.Text = res[0];
 
                if (res[1].ToCharArray()[0] == '+')
                {
                    n = 1;
                    radio1.Text = res[1].Remove('+');
                }
                else
                {
                    radio1.Text = res[1].Remove('-');
                }
                if (res[2].ToCharArray()[0] == '+')
                {
                    n = 2;
                    radio2.Text = res[2].Remove('+');
                }
                else
                {
                    radio2.Text = res[2].Remove('-');
                }
                if (res[2].ToCharArray()[0] == '+')
                {
                    n = 3;
                    radio3.Text = res[3].Remove('+');
                }
                else
                {
                    radio3.Text = res[3].Remove('-');
                }
                k++;
            }
 
            else
            {
 
                Label1.Text = "Tест закончен.";
                Label2.Visible = false;
                radio1.Visible = false;
                radio2.Visible = false;
                radio3.Visible = false;
                Button1.Visible = false;
 
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            
            foreach (RadioButton rB in this.Controls.OfType<RadioButton>())
            {
                if (rB.Checked == true)
                {
                    
                    if (rB.ID == "radio" + n.ToString())
                    {
                        rightwrong[k - 1] = true;
                    }
                    else
                    {
                        rightwrong[k - 1] = true;
                    }
                }
            }
           
            takeQuest(k);
        }
 
 
 
 
 
    }
}
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
25.08.2010, 10:04
Цитата Сообщение от S1nner Посмотреть сообщение
Исправил. Ошибок нет. Но когда запукаю, вариантов ответов у Radio нету. И вопрос в Label2 всё равно не появляется...
оно то и ясно, ведь в Page_Load метод takeQuest() не использован, вопросы появятся только после нажатие на кнопку далее, если хочешь при запуске, используй один раз в Page_Load
и пора уже в чем то разобраться самому!
кстати на счет этого

Цитата Сообщение от S1nner Посмотреть сообщение
Встала перед мной такая задача (Задача не с фриланса - я не приследую никаких корыстных целей. В плане продажи данного проекта и получения финансовой выгоды. Задача несёт исключительно личностный характер. Цель задачи "самообразование" ).
мне что-то не верится, человек который хочет научится, прочитает покопается, сделает что нибудь сам!!!! не видно у тебя тяги к знаниям.

скажи честно у тебя что курсовая горит? иль может обещал кому???....
1
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
25.08.2010, 13:15  [ТС]
Цитата Сообщение от Бельфегор Посмотреть сообщение
оно то и ясно, ведь в Page_Load метод takeQuest() не использован, вопросы появятся только после нажатие на кнопку далее, если хочешь при запуске, используй один раз в Page_Load
и пора уже в чем то разобраться самому!
кстати на счет этого



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

скажи честно у тебя что курсовая горит? иль может обещал кому???....
Нет, я никому ичего не обещал. Да и какая курсовая летом Тяга и желание научиться есть. Просто у всех подход к делу разный. Кому-то понятно когда он читает книгу, кому-то когда он смотрит видеоуроки. Мне понятней когда я разбираю что-нибудь на конкретном примере. Резон мне врать? Если бы это была курсовая, я бы так и сказал. Что мол курсовая. Разве что с пониманием логики проблема. В силу того что я новичок.

P.S. И вопросы после нажатия кнопки далие не появляются. А появляется вот такая ошибка.

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
Ошибка сервера в приложении '/'.
startIndex должен быть меньше, чем длина строки.
Имя параметра: startIndex 
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. 
 
Сведения об исключении: System.ArgumentOutOfRangeException: startIndex должен быть меньше, чем длина строки.
Имя параметра: startIndex
 
Ошибка источника: 
 
Строка 51:                 else
Строка 52:                 {
Строка 53:                     radio1.Text = res[1].Remove('-');
Строка 54:                 }
Строка 55:                 if (res[2].ToCharArray()[0] == '+')
 
 
Исходный файл: C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs    Строка: 53 
 
Трассировка стека: 
 
[ArgumentOutOfRangeException: startIndex должен быть меньше, чем длина строки.
Имя параметра: startIndex]
   System.String.Remove(Int32 startIndex) +2985869
   Test.WebForm1.takeQuest(Int32 number) in C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs:53
   Test.WebForm1.Button1_Click(Object sender, EventArgs e) in C:\Users\Sinner\Desktop\Test\Test\Test\Test.aspx.cs:108
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
 
 
Информация о версии: Платформа Microsoft .NET Framework, версия:2.0.50727.4952; ASP.NET, версия:2.0.50727.4927
Добавлено через 1 час 15 минут
P.P.S. Да я пробовал использовать метод takeQuest() в Page_Load. Эту же ошибку выкидывает. Только сразу, не дожидаясь нажатия кнопки.
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
25.08.2010, 13:26
измени везде где написано

C#
1
.Remove('-') или .Remove('+')
на

C#
1
.Remove(0,1);
1
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
25.08.2010, 13:34  [ТС]
Вааа...респет. Заработало! Слава Богу, точнее Бельфегору
P.S. Только вот он длинный вопрос на несколько строк. Коверкает.
Пишет не так:

Длинный вопрос на несколько строк

¤ Ответ1
¤ длинный ответ
на несколько строк
¤ Ответ3

А так:

Длинный вопрос

¤ а несколько строк
¤ Ответ 1
¤ длинный ответ

P.P.S. Т.е. можно сказать он не разбирает символы. Всё что до знака '?' - это вопрос. То что начинается со знаков '+'/'-' варианты ответов.

"- все вопросы начинаются со знака "?";
- все ответы начинаются со знаков "-" и "+";
- правильный ответ начинается со знака "+";
- вопрос и ответ может состоять из нескольких строк;
- текст вопроса считается весь текст со знака "@" и до знаков "-", "+", "@" или конца файла;
- текст ответа считается весь текст со знаков "+" или "-" и до знаков "-", "+", "@" или конца файла;
- картинки хранятся в отедельной папке;
- картинки можно вставлять с помощью квадратных скобок "[" и "]", между которым указывается название файла из папки с картинками;
- при показе квадратные скобки должны заменяться на изображение картинки."
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
25.08.2010, 13:38
подумай как сделать чтоб после символов '-' или '+' бралась не только строка после символа, но и строки которые идут далее и перед которыми нет этих знаков

Добавлено через 58 секунд
Цитата Сообщение от S1nner Посмотреть сообщение
Слава Богу, точнее Бельфегору
богохульство Бельфегор демон!!!
1
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
25.08.2010, 13:47  [ТС]
Призрак Лувра
Выходит дело я заключил сделку с демоном.

Добавлено через 5 минут
Цитата Сообщение от Бельфегор Посмотреть сообщение
подумай как сделать чтоб после символов '-' или '+' бралась не только строка после символа, но и строки которые идут далее и перед которыми нет этих знаков
Можеш считать меня кромешным лаймером. Но я не знаю. :| Кабы я знал, я бы эту тему не создавал, и не просил бы тратить на меня, ваше драгоценное время.
Блин, сам себе клянусь, что после этого задания облажусь книгами по C# и буду втыкать во всё по порядку...
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
25.08.2010, 13:51
Цитата Сообщение от S1nner Посмотреть сообщение
Можеш считать меня кромешным лаймером. Но я не знаю. :| Кабы я знал, я бы эту тему не создавал, и не просил бы тратить на меня, ваше драгоценное время.
Блин, сам себе клянусь, что после этого задания облажусь книгами по C# и буду втыкать во всё по порядку...
я посчитаю тебя ленивым...
все что тебе нужно знать для этого сайта ты уже знаешь, все методы, все классы...
дальше осталось чуток подумать...
думай, не ленись и все у тебя получится
2
4 / 4 / 0
Регистрация: 25.08.2010
Сообщений: 11
25.08.2010, 15:35
Уважаемый Белфегор, вам респект за потраченное время. Разжовано все очень хорошо. Я сам в С# буквально пару месяцев назад погрузился. Эх, были бы у меня такие наставники я бы потратил на неделю своего времени меньше. Хотя если задуматься, есть одна аксиома по этому поводу: все что нашел сам или до чего додумался сам запоминаеться на всю жизнь, все что додумали или сказали другие запоминаеться на один день.

Уважаемый Синнер, вам не респект. Прочтите хотя бы базис. Если вас интересует С# могу порекомендовать замечательную книгу автора Шилдт Г. С# 3.0 Полное руководство. В данный момент изучаю сам. Все очень подробно написано и для меня в данный момент времени прям как библия. Вам того же рекомендую. И учитесь думать самостоятельно - пригодиться в жизни.

С уважением, Мордор.
2
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
25.08.2010, 15:40  [ТС]
Спасибо за дельный совет уважаемый Mordor. Обязательно скачаю и прочитаю. Просто относительно данного задания не всё так просто как кажется.

С уважением, S1nner.
0
4 / 4 / 0
Регистрация: 25.08.2010
Сообщений: 11
25.08.2010, 15:50
Все элементарно. Вы себе не представляете просто как. После прочтения хотя бы первых глав 5 вам все это станет понятно. В одной из тем был очень дельный совет по поводу разбора программы. В самом начале составь план в порядке сложности для тебя. Допустим:
1. Создание страницы сайта.
2. Создание интерфейса опросника (добавление элементов).
3. Вывод информации из файла на страницу опросника.
4. Запись результата прохождения в файл.
5. Отправка письма с результатом пользователю.

Ну как то примерно так. И уже двигаться по этим пунктам. Если будет что то не понятно или возникнут какие то затруднения, можно спросить конкретно. Типо:
Третий пунк разделим условно на подпункты:
3.1. Открытие файла.
3.2. Чтение файла (думаем как читаем, построчно или побайтово, а может все сразу)
3.3. Присваем полученное значение массиву.
3.4. Обрабатываем полученную информацию.
3.5. Выводим в форму.

Ну и так далее... После составления данного плана можно спросить: а как считать из файла или а как обработать информацию (хотя, поверьте, это очень просто - msdn.microsoft.com поиск метода File.Read()).

Это называеться создания алгортма программы, тоесть, плана как она будет работать.
1
(-_(-_(o_O)_-)_-)
 Аватар для S1nner
46 / 21 / 4
Регистрация: 19.08.2010
Сообщений: 243
25.08.2010, 16:36  [ТС]
Нет друг, тут немного другой случай. Плано это само собой. Всегда сперва нужно продумывать структуру. Не спорю...тут дело в другом...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2010, 16:36

Unit -тестирование или автоматизированное тестирование
Доброго времени суток. Я программирую «для себя» второй год, на выходе получаются разного рода приложения от постоянно подающих с...

Тестирование (или Юнит тестирование)
Доброго времени суток, возник такой вопрос, раньше встречался на фронтенде с js тестированием, сейчас задался вопросом по поводу...

Тести́рование програ́ммного обеспе́чения(Модульное тестирование, или юнит-тестирование)
Извиняюсь перед администрацией что разместил тему в несоответствующем разделе, не мог найти про тестирование ПО. На днях встал вопрос о...

При попытка зайти на любой сайт антишпионом перехватывается сайт partner-pop.men. Как убрать этот сайт?
При попытка зайти на любой сайт через Гугл Хром антишпионом Антимальварэ-байтс перехватывается сайт partner-pop.men. Как убрать этот сайт?...

Сайт после 5 секунд заходит на другой сайт (взломали сайт)
Когда я открою свое сайт он после 5 секунд заходит на другой сайт (взломали сайт) там написано что взломали турецкие хакеры.. Как лечить...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru