Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Руководитель: Рамазанова Г.Р

Назарбаев Интеллектуальная школа ХБН г. Алматы

ОТЧЁТ

Тема проекта: «Тестирование по предметам естественно-научного цикла»

 

Выполнил(а): Тимур Лея

Класс: 10 «L»

Руководитель: Рамазанова Г.Р

 

Алматы 2017

Постановка задачи.

Ввиду актуальности проблемы создания учебных и проверочных материалов по предметам естественно-научного цикла, в проекте по информатике, подразумевавшем создание учениками собственного приложения целесообразно было в рамках упомянутого проекта воплотить учебные пособия по данным предметам. Особенно актуальным представляется такое решение в контексте интегрированной системы обучения, введённой в сети школ НИШ. В процессе создания проекта его автор имел возможность не только приобрести практический и теоретический опыт в создании приложений для углубления знаний по предмету информатика, но и проверить свои познания в предмете, которому посвящён проект в процессе составления заданий и учебных материалов. Темой данного проекта было выбрано тестирование по предметам химия и биология, охватывающее курс биологии за 9 и 10, химии — 10 классы, ввиду необходимости повторения учебного материала за эти промежутки.

Данный проект является попыткой создания закрытого тестирования по трём предметам естественно-научного цикла. Он должен включать в себя опции прохождения закрытого тестирования из 5 вопросов отдельно по каждому из предметов. Все тесты должны подсчитывать количество правильных и неправильных ответов и на его основе выставлять объективную оценку ученику.

Данный проект является попыткой создания закрытого тестирования по трём предметам естественно-научного цикла. Он должен включать в себя опции прохождения закрытого тестирования из 5 вопросов отдельно по каждому из предметов. Все тесты должны подсчитывать количество правильных и неправильных ответов и на его основе выставлять объективную оценку ученику.

 

Анализ.

В ходе написания проекта его модель была несколько раз пересмотрена с учетом возможностей процессора и особенностей программирования на С#. Первая её версия подразумевала отдельную форму для каждого вопроса и должна была подсчитывать общее количество правильных ответов и выставлять оценку, на основе полученных данных. Такая модель не только была бы удобной, но и позволила бы включить в проект функцию, выводящую на экран случайные вопросы из общего массива всех трёх дисциплин. Это позволило бы ученику проверить свои знания по всем предметам и исключить фактор подготовки непосредственно перед опросом и использование заранее подготовленных материалов учеником, знакомым с темой тестирования, а значит сделало бы его более объективным, вызвав при этом интерес ученика разносторонними вопросами, как в настоящей викторине. Однако, от этой идеи пришлось отказаться, так как в ходе разработки выяснилось, что невозможно создать одну переменную, подсчитывающую баллы в рамках множества форм, так как каждая форма требует введения собственных переменных и не может ориентироваться на результаты, полученные на предыдущих формах. Тогда было решено пересмотреть свой взгляд на постановку задачи и использовать получившуюся модель не столько как выставляющий четкую оценку тест, сколько как учебное пособие для выявления пробелов и забытых сведений в пройденных учениками материалах. В таком случае, приложение должно было показывать ответил ли ученик правильно на конкретный вопрос и какие именно вопросы вызывают у него затруднение. К сожалению, уже в завершающей стадии процесса программирования, выяснилось, что такая модель слишком громоздкая и не может быть обработана Visual Studio. Попытки уменьшить объём памяти, занимаемый проектом за счёт удаления элементов, не являющихся структурно значимыми не увенчались успехом, а дальнейшее упрощение привело бы к потере функций, поэтому пришлось снова искать другую модель. В финальной версии проекта вопросы сгруппированы по темам, и каждая тема занимает всего одну форму и является маленьким, но логически завершенным тестом из 5 вопросов. Этот тест, как и планировалось изначально, суммирует баллы ученика и выставляет ему оценку по пятибальной системе. Это позволяет наглядно продемонстрировать знания ученика по конкретному разделу изучаемой дисциплины. Также, тест по физике содержит задачи, где должны производиться рассчеты, поэтому в соотвестующие формы будет также встроена форма калькулятора.

 

Разработка алгоритма

Рисунок 1

Программирование

Приложение было разработано на языке C#, поскольку он является популярным выброром среди программистов-любителей при разработке своих проектов, будучи одновременно очень функциональным и достаточно простым. C# ведет начало от знаменитых С и С++, сочетая в себе функционал последних с инновационными технологиями платформ вроде Java. Будучи продуктом многолетней эволюции языка С, он содержит много встроеных вспомогательных модулей, так недавно в среду языка были интегрированы последние удачные эксперименты Windows.Среда постоянно эволюционирует и улучшается.

Помимо основного программного обеспечения для оформления отчета по проекту был использован Microsoft Word, в силу своей доступности, привычности, функционала и простоты обращения. Для создания блок-схемы был использован онлайн-редактор https://www.draw.io/, позволяющая быстро и просто создавать блок-схемы с дополнительными параметрами в виде пояснений и циклов. Для создания презентации по проекту был использован Microsoft PowerPoint 2013, привычная и удобная среда для создания презентаций.

 

 

Тестирование и отладка

Ниже показана стартовая форма проекта, содержащая кнопки, при нажатии на которые появлются формы с тестами. Форма выполнена в серых тонах, на заднем плане – абстрактная 3-D картинка с формулами. В центре экрана – три кнопки – «Биология», «Химия» и «Физика», в левом нижнем углу – кнопка «Выход»

Рисунок 2

При нажатиии кнопки «Биология» всплывает вторая форма, оформленная в зеленых тонах, имеющая фон с изображением органических молекул и содержащая пять компонентов groupBox. В шапке каждого из них содержится вопрос, в теле – четыре компонента radioButton, коотрые можно выбрать курсором, и представляющие собой варианты ответов. В левом нижнем углу расположена кнопка «Выход», в правом – кнопка «Проверить», при нажатии которой появляется невидимый ранее ярлык label2, объвляющий количество правильных отчетов и оценку ученика. В коде формы есть переменная «а» и при выборе правильного radioButton’а к ней прибавляется по единице. При нажатии кнопки «Проверить» ярлык label2 и объявляет ее значение.

Рисунок 3

Процедура прибаления баллов к переменной «а» выглядит, например, так:

 

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

if (radioButton1.Checked)

{ a = a + 1; }

 

Она повторяется в каждом вопросе. Аналогично выглядят и дизайн и код третьей и четвертой форм, содержащих вопросы по химии и физике соответственно

Рисунок 4

Рисунок 5

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

 

 

Рисунок 6

Она содержит два поля для ввода данных и четыре кнопки арифметических операций, и кнопку «Назад». Пользователь вводит числа в соотетствующие поля и нажимает кнопку необходимой арифметической опреации, после чего становится видимым скрытый ярлык, объявляющий ответ.

 

Для выполнения арифметической операции необходимо сначало первести вводимые данные типа String тип Double, чтобы произвести операцию, а результат – снова в String, чтобы вывести его на экран с помощью ярлыка. На уроке, проделывая эту работу мы сначала вводили переменную, обозначающую результат опреции в типе Double, а затем переводили ее в тип String. Для сокращения программного кода, эта процедура была упрощена и записывалась следующим образом:

 

private void button1_Click(object sender, EventArgs e)

{

label1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) + Convert.ToDouble(textBox2.Text));

}

 

Листинг программы

 

Form1

namespace Test3

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent();

frm3 = new Form3();

frm4 = new Form4();

frm5 = new Form5cs();

}

Form3 frm3;

Form4 frm4;

Form5cs frm5;

private void button1_Click(object sender, EventArgs e)

{

frm3.Show();

}

 

private void button2_Click(object sender, EventArgs e)

{

frm4.Show();

}

 

private void button3_Click(object sender, EventArgs e)

{

frm5.Show();

}

 

private void button4_Click(object sender, EventArgs e)

{

Application.Exit();

Form3

namespace Test3

{

public partial class Form3: Form

{

public Form3()

{

InitializeComponent();

}

 

public int a = 0;

 

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

if (radioButton1.Checked)

{ a = a + 1; }

}

 

private void radioButton4_CheckedChanged(object sender, EventArgs e)

{

if (radioButton4.Checked)

{ a = a + 1; }

}

 

private void radioButton5_CheckedChanged(object sender, EventArgs e)

{

if (radioButton5.Checked)

{ a = a + 1; }

}

private void radioButton13_CheckedChanged(object sender, EventArgs e)

{

if (radioButton13.Checked)

{ a = a + 1; }

}

 

private void radioButton20_CheckedChanged(object sender, EventArgs e)

{

if (radioButton20.Checked)

{ a = a + 1; }

}

private void button2_Click(object sender, EventArgs e)

{

label2.Text = ("Ваша оценка - " + a);

}

 

private void button1_Click(object sender, EventArgs e)

{

Application.Exit();

}

}

Form4

namespace Test3

{

public partial class Form4: Form

{

public Form4()

{

InitializeComponent();

}

 

public int a = 0;

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

if (radioButton1.Checked)

{ a = a + 1; }

}

 

private void radioButton7_CheckedChanged(object sender, EventArgs e)

{

if (radioButton7.Checked)

{ a = a + 1; }

}

 

private void radioButton11_CheckedChanged(object sender, EventArgs e)

{

if (radioButton11.Checked)

{ a = a + 1; }

}

 

private void radioButton14_CheckedChanged(object sender, EventArgs e)

{

if (radioButton14.Checked)

{ a = a + 1; }

}

 

private void radioButton20_CheckedChanged(object sender, EventArgs e)

{

if (radioButton20.Checked)

{ a = a + 1; }

}

 

private void button2_Click(object sender, EventArgs e)

{

label2.Text = ("Ваша оценка - " + a);

}

 

private void button1_Click(object sender, EventArgs e)

{

Application.Exit();

}

}

}

Form5cs

namespace Test3

{

public partial class Form5cs: Form

{

public Form5cs()

{

InitializeComponent();

}

public int a = 0;

 

private void radioButton1_CheckedChanged(object sender, EventArgs e)

{

if (radioButton1.Checked)

{ a = a + 1; }

}

 

private void radioButton7_CheckedChanged(object sender, EventArgs e)

{

if (radioButton7.Checked)

{ a = a + 1; }

}

 

private void radioButton12_CheckedChanged(object sender, EventArgs e)

{

if (radioButton12.Checked)

{ a = a + 1; }

}

 

private void radioButton14_CheckedChanged(object sender, EventArgs e)

{

if (radioButton14.Checked)

{ a = a + 1; }

}

 

private void radioButton20_CheckedChanged(object sender, EventArgs e)

{

if(radioButton20.Checked)

{ a = a + 1; }

}

 

private void button3_Click(object sender, EventArgs e)

{

label2.Text = ("Ваша оценка - " + a);

}

 

private void button1_Click(object sender, EventArgs e)

{

Application.Exit();

}

}

}

Form8cs

namespace Test3

{

public partial class Form8cs: Form

{

public Form8cs()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

label1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) + Convert.ToDouble(textBox2.Text));

}

private void button5_Click(object sender, EventArgs e)

{

Close();

}

 

private void button2_Click(object sender, EventArgs e)

{

label1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) - Convert.ToDouble(textBox2.Text));

}

 

private void button3_Click(object sender, EventArgs e)

{

label1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) * Convert.ToDouble(textBox2.Text));

}

 

private void button4_Click(object sender, EventArgs e)

{

label1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) / Convert.ToDouble(textBox2.Text));

}

}

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...