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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
| import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import java.util.*;
public class Main extends Application {
private static String fullName;
private static int age;
private static String group;
private static int correctAnswers = 0;
private static final String[][] questionsGroup1 = {
{"Самая древняя система счисления -", "двоичная", "римская", "унарная", "древнеегипетская", "унарная"},
{"Системы счисления делятся на:", "четные и нечетные", "позиционные и непозиционные", "троичные,семеричные,десятичные", "двоичные,восьмеричные", "позиционные и непозиционные"},
{"Системой счисления называют:", "алфавит", "способ представления чисел", "знаковую систему,в которой приняты определённые правила записи чисел", "набор чисел в определенной последовательности", "знаковую систему,в которой приняты определённые правила записи чисел"},
{"В восьмеричной системе счисления присутствуют символы:", "0,1,2,3,4,5,6,7,8", "0,1,2,3,4,5,6,7", "1,2,3,4,5,6,7,8", "0,1,2,3,4,5,6,7,8,9,А,В,С,D,E,F", "0,1,2,3,4,5,6,7,8"},
{"В шестнадцатеричной системе счисления присутствуют символы:", "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16", "0,1,2,3,4,5,6,7", "0,1,2,3,4,5,6,7,8,9,А,В,С,D,E,F", "1,2,3,4,5,6,7,8,9,10,А,В,С,D,E,F", "0,1,2,3,4,5,6,7,8,9,А,В,С,D,E,F"},
{"В двоичной системе счисления присутствуют символы:", "1,2", "0,1", "а,в", "все перечисленные", "0,1"},
{"В какой системе счисления ЭВМ выполняет арифметические расчеты?", "десятичной", "двоичной", "единичной", "шестнадцатеричной", "двоичной"},
{"Основание системы счисления:", "количество цифр,используемых для записи чисел", "отношение значений единиц соседних разрядов", "арифметическая основа ЭВМ", "сумма всех цифр системы счисления", "отношение значений единиц соседних разрядов"},
{"Что такое числовой разряд?", "цифра в изображении числа", "позиция цифры в числе", "показатель степени основания", "алфавит системы счисления", "позиция цифры в числе"},
{"Количество символов, используемых для обозначения чисел в различных системах счисления, называется:", "Основанием", "Алфавитом", "Мощностью", "Узлом", "Основанием"}
};
private static final String[][] questionsGroup2 = {
{"Глобальная сеть - это ...", " система,связанных между собой компьютеров", "система,связанных между собой локальных сетей", "система,связанных между собой локальных телекоммуникационных сетей", "система,связанных между собой локальных сетей и компьютеров отдельных пользователей", "система,связанных между собой локальных сетей и компьютеров отдельных пользователей"},
{"Чтобы соединить два компьютера по телефонным линиям связи необходимо иметь:", "модем", "два модема", "телефон,модем и специальное программное обеспечение", "по модему на каждом компьютере и специальное программное обеспечение", "два модема"},
{"E-mail - это:", "поисковая программа", "название почтового сервера", "почтовая программа", "обмен письмами в компьютерных сетях(электронная почта)", "обмен письмами в компьютерных сетях(электронная почта)"},
{"Протокол HTTP служит для:", "передачи гипертекста", "передачи файлов", "управления передачи сообщениями", "запуска программы с удаленного компьютера", "передачи гипертекста"},
{"Какие компоненты вычислительной сети необходимы для организации одноранговой локальной сети?", "модем, компьютер-сервер", "сетевая плата, сетевое программное обеспечение", "компьютер-сервер,рабочие станции", "линии связи,сетевая плата,сетевое программное обеспечение", "модем,компьютер-сервер"},
{"Для просмотра WEB-страниц предназначены:", "поисковые серверы", "браузеры", "телеконференции", "провайдеры", "браузеры"},
{"Какая из приведенных схем соединения компьютеров представляет собой замкнутую цепочку?", "Шина", "Кольцо", "Звезда", "Нет правильного ответа", "Кольцо"},
{"Какой кабель обеспечивает скоростью передачи данных до 10 Мбит/с?", "коаксиальный", "витая пара", "оптоволокно", "нет правильного ответа", "коаксиальный"},
{"Для передачи файлов по сети используется протокол...", "POP3", "HTTP", "CMPT", "FTP", "FTP"},
{"Выберите корректный адрес электронной почты:", "ivanpetrov@mail", "ivan_petrov.mail.ru", "ivan petrov.mail.ru", "ivan_petrov@mail.ru", "ivan_petrov@mail.ru"}
};
private static final String[][] questionsGroup3 = {
{"Где находится вулкан Килиманджаро?", "Танзания", "Кения", "Уганда", "Руанда", "Танзания"},
{"Столица Великобритании?", "Лондон", "Эдинбург", "Манчестер", "Бирмингем", "Лондон"},
{"Столица Египта?", "Каир", "Александрия", "Гиза", "Луксор", "Каир"},
{"Самая маленькая страна в мире по населению?", "Ватикан", "Науру", "Тувалу", "Монако", "Ватикан"},
{"Где находится пустыня Сахара?", "Африка", "Азия", "Австралия", "Южная Америка", "Африка"},
{"Самый длинный горный хребет?", "Анды", "Гималаи", "Скалистые горы", "Альпы", "Анды"},
{"Столица Мексики?", "Мехико", "Гвадалахара", "Монтеррей", "Канкун", "Мехико"},
{"Самая большая страна по площади в Южной Америке?", "Бразилия", "Аргентина", "Перу", "Колумбия", "Бразилия"},
{"Где находится вулкан Этна?", "Италия", "Япония", "Индонезия", "Филиппины", "Италия"},
{"Самое глубокое озеро в мире?", "Байкал", "Танганьика", "Каспийское море", "Ньяса", "Байкал"}
};
private static final String[][] questionsGroup4 = {
{"Какие океаны граничат с Африкой? (выберите несколько вариантов ответов)", "Атлантический", "Тихий", "Индийский", "Северный Ледовитый", "Атлантический,Индийский"},
{"Какие страны имеют границу с Россией? (выберите несколько вариантов ответов)", "Китай", "Япония", "Монголия", "Норвегия", "Китай,Монголия,Норвегия"},
{"Какие из перечисленных являются странами Европы? (выберите несколько вариантов ответов)", "Франция", "Австралия", "Германия", "Канада", "Франция,Германия"},
{"Какие города находятся в США? (выберите несколько вариантов ответов)", "Нью-Йорк", "Лос-Анджелес", "Лондон", "Чикаго", "Нью-Йорк,Лос-Анджелес,Чикаго"},
{"Какие из перечисленных являются столицами? (выберите несколько вариантов ответов)", "Париж", "Сидней", "Токио", "Мумбаи", "Париж,Токио"},
{"Какие из перечисленных являются странами Южной Америки? (выберите несколько вариантов ответов)", "Бразилия", "Аргентина", "Испания", "Чили", "Бразилия,Аргентина,Чили"},
{"Какие из перечисленных являются городами Китая? (выберите несколько вариантов ответов)", "Пекин", "Шанхай", "Сеул", "Токио", "Пекин,Шанхай"},
{"Какие страны входят в состав Великобритании? (выберите несколько вариантов ответов)", "Англия", "Шотландия", "Уэльс", "Ирландия", "Англия,Шотландия,Уэльс"},
{"Какие из перечисленных являются реками в России? (выберите несколько вариантов ответов)", "Волга", "Нил", "Енисей", "Миссисипи", "Волга,Енисей"},
{"Какие страны находятся в Северной Америке? (выберите несколько вариантов ответов)", "США", "Канада", "Мексика", "Бразилия", "США,Канада,Мексика"}
};
private static final String[][] questionsGroup5 = {
{"Электронные схемы для управления внешними устройствами это -", "Введите ответ", "Контроллеры"},
{"Энергонезависимым устройством памяти в ПК является - ", "Введите ответ", "Жёсткий диск"},
{"Компьютер, подключенный к интернету, обязательно имеет -", "Введите ответ", "IP-адрес"},
{"За минимальную единицу измерения количества информации принято считать -", "Введите ответ", "Бит"},
{"Запись файлов на диске в виде разбросанных участков по всей поверхности диска называется -", "Введите ответ", "Фрагментация диска"},
{"К какому типу файла относится расширение jpeg?", "Введите ответ", "Графический"},
{"В каком устройстве компьютера производится обработка информации?", "Введите ответ", "Процессор"},
{"Какая память в компьютере отвечает за хранение временной информации?", "Введите ответ", "Оперативная"},
{"Программа, служащая для просмотра web-документов, и обеспечивающая переход с одной web-страницы на другую в соответствии с гиперссылкой -", "Введите ответ", "Браузер"},
{"Устройство связи компьютера с периферийными устройствами -", "Введите ответ", "Адаптер"}
};
private static final String[][][] questionBank = {questionsGroup1, questionsGroup2, questionsGroup3, questionsGroup4, questionsGroup5};
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
register(primaryStage);
}
private void register(Stage stage) {
stage.setTitle("Регистрация");
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
grid.setStyle("-fx-background-color: #f0f4f8;");
Label titleLabel = new Label("Регистрация");
titleLabel.setFont(new Font("Arial", 24));
titleLabel.setTextFill(Color.DARKBLUE);
grid.add(titleLabel, 0, 0, 2, 1);
GridPane.setMargin(titleLabel, new Insets(0, 0, 20, 0));
Label nameLabel = new Label("ФИО:");
nameLabel.setFont(new Font("Arial", 14));
grid.add(nameLabel, 0, 1);
TextField nameField = new TextField();
grid.add(nameField, 1, 1);
Label ageLabel = new Label("Возраст:");
ageLabel.setFont(new Font("Arial", 14));
grid.add(ageLabel, 0, 2);
TextField ageField = new TextField();
grid.add(ageField, 1, 2);
Label groupLabel = new Label("Класс/Группа:");
groupLabel.setFont(new Font("Arial", 14));
grid.add(groupLabel, 0, 3);
TextField groupField = new TextField();
grid.add(groupField, 1, 3);
Button submitButton = new Button("Подтвердить");
submitButton.setStyle("-fx-background-color: #4CAF50; -fx-text-fill: white; -fx-padding: 8px 16px;");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(submitButton);
grid.add(hbBtn, 1, 4);
Label actionTarget = new Label();
grid.add(actionTarget, 1, 6);
submitButton.setOnAction(e -> {
fullName = nameField.getText().trim();
if (fullName.isEmpty() || !fullName.matches("^[а-яА-Яa-zA-Z\\s]+$")) {
actionTarget.setTextFill(Color.FIREBRICK);
actionTarget.setText("Пожалуйста, введите корректное ФИО.");
return;
}
try {
age = Integer.parseInt(ageField.getText().trim());
if (age < 10 || age > 99) {
throw new NumberFormatException();
}
} catch (NumberFormatException ex) {
actionTarget.setTextFill(Color.FIREBRICK);
actionTarget.setText("Возраст должен быть числом из двух цифр.");
return;
}
group = groupField.getText().trim();
stage.close();
startTest(new Stage());
});
Scene scene = new Scene(grid, 400, 400);
stage.setScene(scene);
stage.show();
}
private void startTest(Stage stage) {
List<String[]> selectedQuestions = new ArrayList<>();
Random rand = new Random();
for (String[][] group : questionBank) {
Set<Integer> selectedIndices = new HashSet<>();
while (selectedIndices.size() < 2) {
selectedIndices.add(rand.nextInt(group.length));
}
for (int index : selectedIndices) {
selectedQuestions.add(group[index]);
}
}
Collections.shuffle(selectedQuestions);
stage.setTitle("Тест по информатике");
VBox vbox = new VBox();
vbox.setPadding(new Insets(15, 15, 15, 15));
vbox.setSpacing(10);
vbox.setStyle("-fx-background-color: #f9f9f9;");
ScrollPane scrollPane = new ScrollPane(vbox);
scrollPane.setFitToWidth(true);
List<Control> answerComponents = new ArrayList<>();
for (String[] question : selectedQuestions) {
Label questionLabel = new Label(question[0]);
questionLabel.setFont(new Font("Arial", 16));
questionLabel.setTextFill(Color.DARKBLUE);
vbox.getChildren().add(questionLabel);
if (question.length == 6) {
if (question[5].contains(",")) {
VBox optionsVBox = new VBox();
optionsVBox.setSpacing(5);
for (int i = 1; i <= 4; i++) {
CheckBox option = new CheckBox(question[i]);
option.setFont(new Font("Arial", 14));
optionsVBox.getChildren().add(option);
answerComponents.add(option);
}
vbox.getChildren().add(optionsVBox);
} else {
ToggleGroup group = new ToggleGroup();
VBox optionsVBox = new VBox();
optionsVBox.setSpacing(5);
for (int i = 1; i <= 4; i++) {
RadioButton option = new RadioButton(question[i]);
option.setFont(new Font("Arial", 14));
option.setToggleGroup(group);
optionsVBox.getChildren().add(option);
answerComponents.add(option);
}
vbox.getChildren().add(optionsVBox);
}
} else if (question.length == 3) {
TextField answerField = new TextField();
answerField.setMaxWidth(300);
vbox.getChildren().add(answerField);
answerComponents.add(answerField);
}
vbox.getChildren().add(new Separator());
}
Button submitButton = new Button("Подтвердить");
submitButton.setStyle("-fx-background-color: #4CAF50; -fx-text-fill: white; -fx-padding: 8px 16px;");
submitButton.setOnAction(e -> {
int index = 0;
correctAnswers = 0;
for (String[] question : selectedQuestions) {
if (question.length == 6) {
if (question[5].contains(",")) {
List<String> correctOptions = Arrays.asList(question[5].split(","));
boolean allCorrect = true;
for (int i = 0; i < 4; i++) {
CheckBox option = (CheckBox) answerComponents.get(index++);
if (option.isSelected() && !correctOptions.contains(option.getText())) {
allCorrect = false;
} else if (!option.isSelected() && correctOptions.contains(option.getText())) {
allCorrect = false;
}
}
if (allCorrect) {
correctAnswers++;
}
} else {
for (int i = 0; i < 4; i++) {
RadioButton option = (RadioButton) answerComponents.get(index++);
if (option.isSelected() && option.getText().equals(question[5])) {
correctAnswers++;
}
}
}
} else if (question.length == 3) {
TextField answerField = (TextField) answerComponents.get(index++);
if (answerField.getText().equalsIgnoreCase(question[2])) {
correctAnswers++;
}
}
}
stage.close();
showResults(new Stage());
});
VBox root = new VBox(10);
root.setAlignment(Pos.CENTER);
root.getChildren().addAll(scrollPane, submitButton);
root.setPadding(new Insets(20));
Scene scene = new Scene(root, 800, 600);
stage.setScene(scene);
stage.show();
}
private void showResults(Stage stage) {
stage.setTitle("Результаты теста");
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
grid.setStyle("-fx-background-color: #f0f4f8;");
Label titleLabel = new Label("Результаты теста");
titleLabel.setFont(new Font("Arial", 24));
titleLabel.setTextFill(Color.DARKBLUE);
grid.add(titleLabel, 0, 0, 2, 1);
GridPane.setMargin(titleLabel, new Insets(0, 0, 20, 0));
Label nameLabel = new Label("ФИО: " + fullName);
nameLabel.setFont(new Font("Arial", 16));
grid.add(nameLabel, 0, 1);
Label groupLabel = new Label("Класс/Группа: " + group);
groupLabel.setFont(new Font("Arial", 16));
grid.add(groupLabel, 0, 2);
Label scoreLabel = new Label("Правильных ответов: " + correctAnswers + " из 10");
scoreLabel.setFont(new Font("Arial", 16));
grid.add(scoreLabel, 0, 3);
Label gradeLabel;
if (correctAnswers < 5) {
gradeLabel = new Label("Оценка: неудовлетворительно");
} else if (correctAnswers < 7) {
gradeLabel = new Label("Оценка: удовлетворительно");
} else if (correctAnswers < 9) {
gradeLabel = new Label("Оценка: хорошо");
} else {
gradeLabel = new Label("Оценка: отлично");
}
gradeLabel.setFont(new Font("Arial", 16));
grid.add(gradeLabel, 0, 4);
Scene scene = new Scene(grid, 400, 300);
stage.setScene(scene);
stage.show();
}
} |