
3.2 Опис текстів процедур та опрацювання подій
Отже, маємо готові макети усіх вікон, які розроблені за допомогою конструктора проекту. Далі потрібно запрограмувати виконання дій тестової програми, для правильного та коректного її функціонування. Створені сім форм, кожна з яких має своє призначення та виконує свою дію, але всі вони повинні бути оголошені в головному класі Main. Цей клас забезпечує правильне функціонування тестової програми та реалізацію поетапних дій.
Оголошення всіх форм в головному класі Main:
w0 = new Begin();
w1 = new Question1();
w2 = new Question2();
w3 = new Question3();
w4 = new Question4();
w5 = new Question5();
w6 = new End();//оголошення всіх форм у головному класі, за допомогою якого можна виконувати різноманітні операції у кожній формі, ввівши відповідну змінну w.
При запуску програми, першим відкритим вікном буде Ініціалізація, оскільки змінна w0, що відповідає цій формі має таке значення: w0.setVisible(true); в той час, коли інші змінні мають значення setVisible(false). Оскільки всі текстові поля мають бути заповнені перед тим, як перейти до тестування, скористаємося таким програмним кодом:
private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {//програмування кнопки “Почати тест”.
if (!nameText.getText().isEmpty()&&!surnameText.getText().isEmpty()&&!batText.getText().isEmpty()&&!groupText.getText().isEmpty()){//вводиться умова, що всі текстові поля повинні бути заповнені.
Main.w0.setVisible(false);
Main.w1.setVisible(true);//якщо умова виконана, то вікно “Ініціалізація” закривається, а замість нього відкривається вікно “Питання №1”. Для зручності об’явимо змінні для текстових полів:
p1 = groupText.getText();
p2 = surnameText.getText();
p3 = nameText.getText();
p4 = batText.getText();//функція getText(); витягує вміст текстового поля.
Отже, перше вікно функціонує правильно, тому запрограмуємо наступне. Тут присутні чотири радіо кнопки, кожна з яких має своє ім’я змінної. Дане вікно функціонує завдяки такому програмному коду:
private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {//програмування кнопки “Далі”.
if (jRadioButton1.isSelected
q1 = 1;
}else {
q1=0; ()){//вводиться умова – якщо вибрана перша радіокнопка, то відповідь правильна і оцінюється в 1 бал, якщо вибрана інша радіо кнопка, відповідь неправильна.
}
Main.w1.setVisible(false);//функція закриває вікно даної змінної.
Main.w2.setVisible(true);//функція відкриває вікно змінної.
}
Наступне вікно під назвою “Питання №2” дещо відрізняється від попереднього тим, що має додаткову кнопку “Назад” а також інший елемент варіантів відповідей “Прапорець”. Правильних варіантів відповіді лише дві. Вибір лише цих двох варіантів відповіді забезпечить позитивний бал за це питання. Вибір одного з них буде вважатись як не вірна відповідь, вибір всіх варіантів, або вибір правильного і одного неправильного також буде вважатись як невірна відповідь на це питання. Кожний прапорець також має ім’я змінної. В Java є оператор “!”, який означає “не”, а також оператор “&&”, який означає “та”. Маємо такий програмний код:
private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (( jCheckBox1.isSelected() && jCheckBox3.isSelected()) && !jCheckBox2.isSelected() && !jCheckBox4.isSelected()){//вводимо, за якої буде або не буде зараховуватись бал.
q2 = 1;
}
Main.w2.setVisible(false);
Main.w3.setVisible(true);
}
Програмуємо кнопку “Назад”:
private void backButtonActionPerformed(java.awt.event.ActionEvent evt) {
Main.w2.setVisible(false);
Main.w1.setVisible(true);
}
В третьому питанні потрібно вибрати один варіант відповіді з представлених варіантів у “Полі зі списком” (JComboBox). Кожний варіант має свій порядковий номер, а елементи розташовані всередині даного поля нумеруються з 0 і мають відповідно назву Item(i). Тому доцільно оголосити клас, який буде “витягати” отримане значення поля. Усі кнопки “Далі” та “Назад” програмуються аналогічно за допомогою функції setVisible. Отже, маємо такий код:
private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {
int a = jComboBox1.getSelectedIndex();//витягуємо обраний варіант.
switch (a){
case 0: q3 = 1;break;
case 1: q3 = 0;break;
case 2: q3 = 0;break;
case 3: q3 = 0;break;//правильний варіант відповіді знаходитья у списку під індексом 0.
}
Main.w3.setVisible(false);
Main.w4.setVisible(true);
}
Четверте вікно за своєю структурою аналогічне першому і має такий код:
Privatevoid nextButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (jRadioButton1.isSelected()){//якщо вибрана перша радіокнопка
q4 = 1;//відповідь правильна та оцінюється в один бал.
}else {
q4=0;//якщо вибрана інша радіо кнопка - відповідь неправильна.
}
Main.w4.setVisible(false);
Main.w5.setVisible(true);
}
П’яте питання не має переліку правильних варіантів відповідей. Воно вимагає введення користувачем власного варіанта відповіді. Тому, об'являючи клас для обробітку даного питання, потрібно витягнути з текстового поля те, що ввів туди студент. Як вже сказано вище, слово ім’я має писатись саме таким чином. Всі інші варіанти написання даного слова будуть вважатись як не правильні. Програмний код:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if (jTextField1.getText().equals("ім'я")) q5 = 1; else q5 = 0;//якщо в текстове поле вводиться правильне слово – відповідь вірна.
Main.w5.setVisible(false);
Main.w6.setVisible(true);
}
Після того, як студент закінчив тестування, йому пропонується переглянути результат та дізнатися оцінку. Для цього потрібно натиснути кнопку “Результат”. Відкриється вікно, яке міститиме інформацію студента, результуючу оцінку, кнопку “Вихід”, та таблицю з результатом по кожному питанню. На кожній формі, що містять питання ми оголошували змінні q1,q2,q3,q4 та q5, які відповідають умовам кожного виду завдань. Щоб ввести обраний варіант у таблицю, звернемося до цих змінних. Якщо змінна відповідає умові питання, то у відповідний рядок таблиці добавиться один бал, а якщо ні – добавиться нуль балів. Програмний код:
private void formWindowOpened(java.awt.event.WindowEvent evt) {
studLabel.setText("Студент: " + Begin.p1+ " " + Begin.p2 + " " +Begin.p3 + " " + Begin.p4);//дані студента, що були витягнуті з текстових полів першого вікна вставляються після напису “Студент”.
rez = Question1.q1 + Question2.q2 + Question3.q3 + Question4.q4 + Question5.q5;//для підрахунку оцінки додаємо усі бали.
rezLabel.setText("Підсумкова оцінка: " + rez);
if (rez<2){
rezLabel.setText("Підсумкова оцінка: 2");//підсумкова оцінка ставиться після напису “Результат”.
}
if(Question1.q1==1) rezTable.setValueAt("Вірно ", 0, 1);
else rezTable.setValueAt("Невірно", 0, 1);
if(Question2.q2==1) rezTable.setValueAt("Вірно", 1, 1);
else rezTable.setValueAt("Невірно", 1, 1);
if(Question3.q3==1) rezTable.setValueAt("Вірно", 2, 1);
else rezTable.setValueAt("Невірно", 2, 1);
if(Question4.q4==1) rezTable.setValueAt("Вірно", 3, 1);
else rezTable.setValueAt("Невірно", 3, 1);
if(Question5.q5==1) rezTable.setValueAt("Вірно", 4, 1);
else rezTable.setValueAt("Невірно", 4, 1); //програмний код, заповняє відповідні комірки таблиці. Якщо умова, що прописана кодом виконується, то в комірку ставиться “Вірно”, а якщо не виконується - “Невірно”.
Private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);//програмуємо останню кнопку, яка закриває програму.
АНАЛІЗ РЕЗУЛЬТАТІВ І ВИСНОВКИ
Отже, дана курсова робота передбачає створення тестової програми для перевірки знань студента по темі “Перевантаження методів”. Запитання для тестів повинні бути складені згідно методики тестування, мати ціль та мету. Дана програма реалізується у вигляді вікон. Такий метод проектування передбачає створення окремих форм для кожного вікна а також головний клас Java, в якому оголошуються всі ці форми. Цей метод є новим для нас, але попрактикувавшись, бачимо, що він є досить ефективним. Створення форм було неважким, адже всі вони достатньо прості за структурою. Загалом, програма складена, відповідно до завдання, проте, приділивши більше часу, можна покращити зовнішній вигляд.
Спроектована тестова програма виявилась дуже зручною та простою у користуванні, що є великою перевагою. Адже студенту потрібно лише ввести свої дані та перемикати вікна за допомогою кнопок. Тобто, всі операції здійснюються з мінімальним прикладанням зусиль, не кажучи вже про підрахунок результату, адже цей процес повністю автоматизований. Перевагою тесту є також змога дізнатися чи правильна відповідь дана на конкретне запитання. Відповідно, студент буде знати яким матеріалом він володіє, а який треба вивчити.
Недоліком програми є те, що в текстові поля, призначені для заповнення студентами їх особистих даних, можна вводити будь-який набір символів, що є недоречно. Ці поля, потрібно налаштувати таким чином, щоб вони заповнялися тільки достовірною інформацією. Також, недоліком тесту як для одного студента, так і для всієї групи є невелика кількість питань.
ПЕРЕЛІК ПОСИЛАНЬ
-
Д.Флэнаган Java. Справочник, 4-е издание — Пер. с англ. - СПб: Символ-Плюс, 2004. - 1040 с.
-
Java2. Библиотека профессионала, том II. Тонкости программирования 7-е – Пер. с англ. – Издательский дом «Вильямс», 2007.-121-124
-
Джуди Бишоп. Эффективная работа: Java2 – СПб.: Питер; К.: Издательская группа BHV, 2002.-341-366.
-
http://javaland.com.ua/
-
Хорстманн, Кей С., Корнелл, Гари. Java2. Библиотека профессионала, том 1. Основы, 7-е изд.:Пер. с англ. – М.: Издательский дом «Вильямс», 2007.- 265-285.
-
Java в примерах. Справочник, 2-е издание – Пер. с англ. – СПб: Символ-Плюс, 2003.-43-225
-
Аванесов В.С. Композиция тестових заданий. – М.: Адепт,1998.–148 с.
-
Шилдт, Герберт, Холмс, Джеймс. Искусство програмирования на Java.: Пер. с англ. - М.: Издательский дом «Вильямс», 2005. - 159 с.
-
Шахматова Т.И. Тестирование как одно из средств управления познавательной деятельностью студентов // Современное образование: Материалы науч.-практ. конф. – Томск: Изд-во ТГУ, 2000. – С. 239 – 244.
-
Швидкий О.І. Тестовий контроль у навчальному процесі // освіта. Технікуми, коледжі. – 2002. – № 1. – С. 19 – 21.
-
Козаков В.А. та інші. Рейтингова система оцінки успішності навчання студентів: Збірник. – УМК ВО, 1992.