Руководитель: Рамазанова Г.Р
Назарбаев Интеллектуальная школа ХБН г. Алматы ОТЧЁТ Тема проекта: «Тестирование по предметам естественно-научного цикла»
Выполнил(а): Тимур Лея Класс: 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 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|