Создание тестовой информационной системы для проверки знаний по предмету ООП

 

1. Цели и основные задачи курсовой работы

программа информационный тестовый

Объектно-ориентированное программирование - это целый набор концепций и идей, позволяющих осмыслить задачу, стоящую при разработке компьютерной программы, а затем найти путь к ее решению более понятным, а значит, и более эффективным способом. Цель курсовой работы - закрепление основ и углубление знаний в области объектно-ориентированного программирования и создание тестовой информационной системы (ИС) для проверки знаний по предмету ООП.

Курсовая работа решает такие задачи как:

-Закрепление знаний, полученных при изучении теоретического курса, как по дисциплине ООП, так и по смежным дисциплинам;

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


2. Описание предметной области


Предметной областью решаемой задачи является информационная система (ИС) для просмотра графических файлов, которая будет представлять собой приложение, позволяющее пользователю удобно просматривать изображения, например фотографии.

Разработку данной ИС необходимо начать с определения выполняемых приложением функций и его возможностей.

Разрабатываемый программный продукт (ПП) будет обладать следующими функциями:

-Ввод информации об испытуемом;

-Проверка знаний испытуемого;

-Прохождение теста испытуемым;

-Получение результата прохождения теста испытуемого;

-Получение подробного отчета теста об ответах испытуемого;


. Используемые подходы, методы и технологии программирования


Разработка программного обеспечения включает в себя следующие этапы:

.Анализ;

.Проектирование;

.Эволюция;

.Модификация.

В предыдущем параграфе был проведён анализ предметной области. Далее перейдём к подробному рассмотрению функционала ПП.

Тестирование как эффективный способ проверки знаний находит все большее применение. Одним из основных и несомненных его достоинств является минимум временных затрат на получение надежных итогов контроля. При тестировании используют как бумажные, так и электронные варианты. Последние особенно привлекательны, так как позволяют получить результаты сразу по завершении теста.

Тестирование в педагогике выполняет три основные взаимосвязанные функции: диагностическую, обучающую и воспитательную:

·Диагностическая функция заключается в выявлении уровня знаний, умений, навыков учащегося.

·Обучающая функция тестирования состоит в мотивировании учащегося к активизации работы по усвоению учебного материала.

·Воспитательная функция проявляется в периодичности и неизбежности тестового контроля. Это дисциплинирует, организует и направляет деятельность учащихся, помогает выявить и устранить пробелы в знаниях, формирует стремление развить свои способности.

Тестирование - более справедливый метод, оно ставит всех учащихся в равные условия, как в процессе контроля, так и в процессе оценки, практически исключая субъективизм преподавателя.

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


. Uml-диаграмма «Прецедентов» решаемой задачи


На данном этапе разработки мы определяем систему, не зависящую от условий эксплуатации, а именно разрабатываем диаграмму прецедентов. На рисунке 1 изображена Uml-диаграмма «Прецедентов» нашей системы.


Рисунок 1 - Uml-диаграмма «Прецедентов»


. Uml-диаграмма «Классов» решаемой задачи


Данный этап включает в себя разработку структуры классов решаемой задачи.


Рисунок 2.1 - Uml-диаграмма класса Type


Рисунок 2.2 - Uml-диаграмма Main


Рисунок 2.3 - Uml-диаграмма Login


Рисунок 2.4 - Uml-диаграмма Report


. Текст программы на языке программирования C#


На данном этапе необходимо реализовать и подключить классы к проекту. Результат работы приложения представлен на рисунках. Вопросы к тесту представлены в приложении А.

Рисунок 3 - Окно Login


Рисунок 4 - Главное окно программы


Рисунок 5 - Отчет


Рисунок 6 - Подробный отчет


Код программы на Языке программирования C# представлен в листингах 1-4.

Листинг 1- TypeSystem;System.Collections.Generic;System.Linq;System.Text;System.Xml;System.IO;tester

{class Type

{

/// <summary>

/// Имя файла с вопросами

/// </summary>

public static string ContentFile = "\\content.qdb";

/// <summary>

/// Номер текущего вопроса

/// </summary>

public static int Index;

/// <summary>

/// Имя тестируемого

/// </summary>static string FirstName;

/// <summary>

/// Фамилия тестируемого

/// </summary>static string SecondName;

/// <summary>

/// Папка с отчетами

/// </summary>

public static string ReportDir = "\\reports";

/// <summary>

/// Запись в файл (текстовый)

/// </summary>

/// <param name="File">Имя файла</param>

/// <param name="Line">Строка</param>static void WriteFile(string File, string Line)

{.IO.StreamWriter sw;(sw = new System.IO.StreamWriter(File, true, Encoding.UTF8))

{ sw.WriteLine(Line); }.Dispose();

}

/// <summary>

/// Случайные индексы

/// </summary>

/// <param name="Count">Размер</param>

/// <returns>Возвращает массив перемешанных чисел (от 1) заданного размера</returns>

public int[] Randomize(int Count)

{[] d = new int[Count];b = false;r = new Random();f = -1;(int i = 0; i < Count; i++)

{

{= r.Next(Count + 1);(Array.IndexOf(d, f) < 0)

{ d[i] = f; b = true; }

}(b == false);= false;

}d;

}

/// <summary>

/// Количество вопросов

/// </summary>int GetCount

{

{xmlDoc = new XmlDocument();.Load(ContentFile);list = xmlDoc.GetElementsByTagName("question");

return list.Count;

}

}

/// <summary>

/// Чтение вопроса по номеру

/// </summary>

/// <param name="Index">Номер вопроса</param>void ReadItem(int Index)

{xmlDoc = new XmlDocument();.Load(ContentFile);list = xmlDoc.GetElementsByTagName("question");(int i = 0; i < list.Count; i++)

{id = (XmlElement)xmlDoc.GetElementsByTagName("question")[i];text = (XmlElement)xmlDoc.GetElementsByTagName("question_text")[i];ans_1 = (XmlElement)xmlDoc.GetElementsByTagName("answer_1")[i];ans_2 = (XmlElement)xmlDoc.GetElementsByTagName("answer_2")[i];ans_3 = (XmlElement)xmlDoc.GetElementsByTagName("answer_3")[i];v = (XmlElement)xmlDoc.GetElementsByTagName("answer_V")[i];(id.GetAttribute("id") == (Index).ToString())

{= text.InnerText;_1 = ans_1.InnerText;_2 = ans_2.InnerText;_3 = ans_3.InnerText;_V = int.Parse(v.InnerText);

}

}

}string Question;string Answer_1;string Answer_2;string Answer_3;int Answer_V;

}

}


Листинг 2 - LoginSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;tester

{partial class frmLogin : Form

{frmLogin()

{();.Text = "Test";.StartPosition = FormStartPosition.CenterScreen;.lblF.Text = "Фамилия";.lblN.Text = "Имя";.btnExit.Text = "Закрыть";.btnOk.Text = "Вход";

}void btnExit_Click(object sender, EventArgs e)

{.Exit();

}void btnOk_Click(object sender, EventArgs e)

{

//Запись имени и фамилии.FirstName = this.txtF.Text.Trim();.SecondName = this.txtN.Text.Trim();(Type.FirstName != "" & Type.SecondName != "")

{

//открытие основной формы программы.ShowInTaskbar = false;

frmMain f = new frmMain();.ShowDialog();.Exit();

}

}void btnExit_Click_1(object sender, EventArgs e)

{.Exit();

}

}

}

Листинг 3 - MainSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;tester

{partial class frmMain : Form

{c = new Type();[] RandomIndex;[] Results;frmMain()

{();.Text = "Тестируется " + Type.FirstName + " " + Type.SecondName;.StartPosition = FormStartPosition.CenterScreen;();.Visible = false;

}void Start()

{.Visible = false;.Visible = false;.Image = pictureBox1.Image;.Image = pictureBox1.Image;.Image = pictureBox1.Image;.Text = "";.Text = "";.Text = "";.Visible = false;.Checked = true;.Enabled = false;.Enabled = false;.Enabled = false;.ReadOnly = true;.ContentFile = Application.StartupPath + Type.ContentFile;(System.IO.File.Exists(Type.ContentFile) == false)

{.Show("Не найден файл с вопросами.\n Программа будет закрыта.");

Application.Exit();

}

{.Index = 0;= c.Randomize(c.GetCount);= new int[c.GetCount];();

}

}void Checked(RadioButton r)

{(r.Checked == true) { r.Image = pictureBox2.Image; }{ r.Image = pictureBox1.Image; }

}void radioButton1_CheckedChanged(object sender, EventArgs e)

{(radioButton1);

}void radioButton2_CheckedChanged(object sender, EventArgs e)

{(radioButton2);

}void radioButton3_CheckedChanged(object sender, EventArgs e)

{(radioButton3);

}void NextQuesion()

{.ReadItem(RandomIndex[Type.Index]);.Text = c.Question;.Text = c.Answer_1;.Text = c.Answer_2;.Text = c.Answer_3;

}void Report()

{h = Type.Index;[] r = { radioButton4, radioButton1, radioButton2, radioButton3 };(int i = 0; i < r.Length; i++)

{ if (r[i].Checked == true) { Results[RandomIndex[h] - 1] = i; } }

}void button1_Click(object sender, EventArgs e)

{(Type.Index < c.GetCount)

{();();.Checked = true; Type.Index++;

}

{f = new frmReport(Results);.ShowDialog();.Exit();

}

}

}

}

Листинг 4 - ReportSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;tester

{partial class frmReport : Form

{c = new Type();[] a = new int[0];frmReport(int[] ans)

{();= ans;.ReportDir = Application.StartupPath + "\\reports";(System.IO.Directory.Exists(Type.ReportDir) == false)

{ System.IO.Directory.CreateDirectory(Type.ReportDir); }.StartPosition = FormStartPosition.CenterScreen;.FormBorderStyle = FormBorderStyle.FixedDialog;.MinimizeBox = false;.Text = "Подробный отчет";.Text = "Закрыть";.Text = "Тестировался " + Type.FirstName + " " + Type.SecondName;.Text = "Всего вопросов: " + ans.Length.ToString();t = 0;(int i = 0; i < ans.Length; i++)

{.ReadItem(i + 1);(c.Answer_V == ans[i]) { t++; }

}.Text = "Верных ответов: " + t.ToString();.ReportDir += "\ + DateTime.Now.Day.ToString() + "." + DateTime.Now.Month.ToString() + "." + DateTime.Now.Year.ToString();.ReportDir += ";" + DateTime.Now.Hour.ToString() + "." + DateTime.Now.Minute.ToString() + "." + DateTime.Now.Second.ToString();.ReportDir += " " + Type.FirstName + " " + Type.SecondName + ".txt";();

}void Rep()

{c = new Type();.WriteFile(Type.ReportDir, "Тестировался " + Type.FirstName + " " + Type.SecondName);.WriteFile(Type.ReportDir, "Подробные резельтаты:");t = 0;(int i = 0; i < c.GetCount; i++)

{.ReadItem(i + 1);.WriteFile(Type.ReportDir, "Вопрос №" + (i + 1).ToString() + " " + c.Question);

(a[i] == c.Answer_V)

{ Type.WriteFile(Type.ReportDir, "Ответ верен"); t++; }{ Type.WriteFile(Type.ReportDir, "Ответ неверен"); }

}.WriteFile(Type.ReportDir, "Итого: " + t.ToString() + " верных ответов из " + a.Length.ToString());

}void button2_Click(object sender, EventArgs e)

{.Diagnostics.Process p = new System.Diagnostics.Process();.StartInfo.FileName = Type.ReportDir;

p.Start();

}

}

}


Вывод по работе


В результате выполнения данной курсовой работы были получены новые навыки в области объектно-ориентированного программирования (ООП), а также закреплен ранее пройденный материал по данной дисциплине. В ходе работы были пройдены все этапы разработки программного обеспечения, а именно:

1.Анализ;

2.Проектирование;

.Эволюция;

.Модификация.

На этих этапах были созданы uml-диаграммы «Прецедентов» и uml-диаграммы «Классов», составлен код программы на языке программирования C#.

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


Используемая литература


1.Н. Культин "Microsoft Visual C# в задачах и примерах"-СПб.: БХВ-Петербург,2009.-320с.

.Уотсон К., Нейгел К, и др. "Visual C# 2008. Базовый курс".:Пер. с англ.-М.: ООО «И.Д. Вильямс»,2009.-1216с.

3.C#. Советы программиста.-СПб.:БХВ-Петербург,2008.-544с.

4.Шильд Г. Полный справочник по C#. Пер. с англ. - М.: "Вильямс", 2004.

5.Рихтер, Д. CLR via С#. Программирование на платформе Microsoft .NET Framework 2.0 на языке С#. Мастер-класс. / Пер. с англ. / Д. Рихтер. - М.: Издательско-торговый дом «Русская Редакция»; СПб.: Питер, 2007. - С. 656.


Приложения


Приложение А


1.Выберите правильный вариант объявления класса:

+ public class Custumer;

class Custumer;

- class public Custumer.

. Дайте правильное определение классу: «Класс - это логическая структура, позволяющая создавать свои собственные пользовательские типы путем…»

группирования переменных одного типа;

группирования методов и событий;

+ группирования переменных других типов.

. Выберите правильный вариант синтаксиса описания наследования:

- class Manager: Employee;

+ public class Manager: Employee;

- public class Manager; Employee.

. Дайте правильное определение методу:

Метод представляет собой совокупность правил и инструкций;

+ метод - это блок кода, содержащий набор инструкций;

метод - это блок кода, выполняющий определенные функции.

. Как обозначают параметры метода:

параметры заключаются в квадратные скобки и разделяются запятыми;

параметры заключаются в фигурные скобки и разделяются запятыми;

+ параметры заключаются в круглые скобки и разделяются запятыми.

. Ключевое слово out:

используется для передачи аргументов по ссылке, в результате все изменения параметра в методе будут отражены в переменной при передаче элемента управления обратно в вызывающий метод;

используется для передачи аргументов по ссылке, требует инициализации переменной перед ее передачей</answer_2>;

+ прерывает выполнение метода, в котором оно присутствует и возвращает управление вызывающему методу</answer_3>.

. Укажите правильный вариант объявления методов:</question_text>

+ [модификаторы] тип_возврата ИмяМетода ([параметры])

{

// тело метода

};

модификаторы] ИмяМетода

{

// тело метода

} тип_возврата ИмяМетода;

{

([параметры])

// тело метода

}.

. Как предотвратить наследование класса:

Для этого воспользоваться ключевым словом «double»;

Для этого воспользоваться ключевым словом «long»;

+ Для этого воспользоваться ключевым словом «sealed».

. Укажите неправильный вариант ответа. Отличия static-методом от обычных:

+ методы с модификатором Static имеют ссылки this;

методы с модификатором Static могут непосредственно (без указания имени объекта) вызывать только другой статический метод;

методы с модификатором Static имеют только прямой доступ к static-данным.

. Какой средой вызывается метод Main при запуске программы:

+ CLR;

CRL;

SLR.

. Укажите отличие статического класса от нестатического:

можно создавать экземпляры статического класса;

нельзя создавать переменный тип класса;

+ нельзя создавать экземпляры статического класса.

. Выберите верное утверждение о статических классах:

статический конструктор вызывается более одного раза;

статический класс не остается в памяти на время существования домена приложения;

+ программа не может точно указать, когда загружается класс.

. Укажите НЕВЕРНЫЙ ответ.

Основные характеристики статического класса:

содержит только статические члены;

он запечатан;

+ можно создавать его экземпляры.

. Укажите метод класса Object:

Clone;

Concat;

+ ToString.

. Укажите свойство, относящееся к классу String:

+ Chars;

Clone;

CopyTo.

. Какой статический метод класса Array определяет индекс первого вхождения образца в отсортированный массив, используя алгоритм двоичного поиска:

Sort;

Reverse;

+ BinarySearch.

. Класс Array может создавать свои экземпляры не только с помощью конструктора new, но и при вызове метода:

Clone;

GetEnumerator;

+ CreateInstance.

. Какой динамический метод возвращает или устанавливает значение элемента массива с указанными индексами:

- CreateInstance;

Initialize;

+ GetValue.

. Укажите верное утверждение:

- доступ к статическому члену выполняется по имени экземпляра;

+ С# не поддерживает статических локальных переменных;

существует несколько копий статического члена

. Укажите НЕВЕРНЫЙ вариант ответа.

Основные отличия статического конструктора:

вызывается при создании первого экземпляра;

+ может быть описан в классе более одного раза;

нет возможности вызывать его напрямую.


1. Цели и основные задачи курсовой работы программа информационный тестовый Объектно-ориентированное программирование - это целый набор концепций и идей,

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ