Разработка подсистемы анализа SCORM-пакетов (лекционный материал)

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

разделе опишем по подробнее процесс создания главной формы.

Первое что нам нужно сделать - создать новый проект C#, при этом в рабочем поле Дизайнера автоматически появится новая форма "Form1". В панели "Properties" мы можем поменять его название, цвет, размер, ориентацию элементов и текста внутри формы и т.д.

Второй этап создания пользовательского интерфейса - создание элементов управления "кнопок" подсистемы анализа Scorm пакетов. Для этого указателем перетащим элемент "Button" из панели "Common Controls" на нашу форму.

 

Рис.5. Панель "Common Controls"

 

Для новой кнопки мы также можем изменить цвет, название, размеры, ориентацию на форме и другие свойства в панели "Properties". Назовём нашу первую кнопку "Анализ"

 

Рис.6. Панель "Properties" для элемента управления "Button1"

 

Так же поступим и с остальными элементами управления. Создадим ещё две кнопки "О программе" и "Выход".

 

Рис.7. Форма с тремя элементами управления.

 

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

 

Рис.8. Форма с Логотипом.

 

Рис.9. Конечный вариант главной формы.

 

4.4 Реализация функциональности подсистемы

 

В данном разделе будут рассмотрены этапы работы со Scorm пакетом.

На начальном этапе мы находим на локальном диске Scorm пакет, распаковываем его из архива во временное хранилище и вызываем диалог для выбора файла imsmanifest. xml.

 

string path = System. Environment. CurrentDirectory;. openFileDialog1. FileName = "*. xml";(this. openFileDialog1. ShowDialog () == DialogResult. OK)

Если файл imsmanifest. xml загружен - начинаем анализ его структуры на корректность, находим путь к файлу runtime. xml

{reader = null;. Collections. ArrayList simList = new System. Collections. ArrayList ();

{= new XmlTextReader (openFileDialog1. FileName);. WhitespaceHandling = WhitespaceHandling. None; // пропускаем пустые узлы(reader. Read ())(reader. NodeType == XmlNodeType. Element)(reader. Name == "resource")

{(int i = 0; i < reader. AttributeCount; i++)

{(reader. GetAttribute (i) == "sco")

{(reader. Read () && reader. Name == "file")(reader. GetAttribute (0). IndexOf ("runtime. xml")! = - 1)

{name = openFileDialog1. FileName. Replace ("imsmanifest. xml","") + "\\" + reader. GetAttribute (0). Replace ("/", "\\");

listBox1. Items. Add (name);

}

}

}

}

}

 

Если путь к файлу runtime. xml найден, начинаем его анализ, в который будет входить создание двух массивов для вопросов и ответов, пропуск пустых узлов, поиск структуры тестов на соответствие и запись их в массив.

 

System. Collections. ArrayList questionsList = new System. Collections. ArrayList ();. Collections. ArrayList answersList = new System. Collections. ArrayList ();

{= new XmlTextReader (listBox1. Items [0]. ToString ());. WhitespaceHandling = WhitespaceHandling. None;(reader. Read ())(reader. NodeType == XmlNodeType. Element)(reader. Name == "q_question")

{(reader. Read ())

{(reader. Name == "q_variants")

{(reader. Read ())

{(reader. Name == "item")

{(reader. Read ())

{(reader. Name == "q_target")

{. Add (stripTags (reader. ReadString (). ToString ()));

}if (reader. Name == "q_bullet")

{. Add (stripTags (reader. ReadString (). ToString ()));

}

}

}

}

}

}

}

}

 

На следующем этапе анализа Scorm пакета оператор может внести свои корректировки в опросы и ответы. Для этого на форме есть два поля ввода, куда выводится текущий вопрос и текущий ответ и две кнопки сохранить, для вопроса и ответа.

 

private void button1_Click_1 (object sender, EventArgs e)

{_fs = new FileStream (filename, FileMode. Open);_reader = new StreamReader (_fs);str = "";= _reader. ReadToEnd ();

_reader. Close ();

_fs. Close ();fs = new FileStream (filename, FileMode. Create);_writer = new StreamWriter (fs);

_writer. Write (str. Replace (listBox1. SelectedItem. ToString (),textBox1. Text));

_writer. Close ();. Close ();. Items [listBox1. SelectedIndex] = textBox1. Text;

}void listBox1_Click (object sender, EventArgs e)

{. Text = listBox1. SelectedItem. ToString ();. Enabled = true;

}void listBox2_Click (object sender, EventArgs e)

{. Text = listBox2. SelectedItem. ToString ();. Enabled = true;

}void button2_Click (object sender, EventArgs e)

{_fs = new FileStream (filename, FileMode. Open);_reader = new StreamReader (_fs);str = "";= _reader. ReadToEnd ();

_reader. Close ();

_fs. Close ();fs = new FileStream (filename, FileMode. Create);_writer = new StreamWriter (fs);

_writer. Write (str. Replace (listBox2. SelectedItem. ToString (), textBox2. Text));

_writer. Close ();. Close ();. Items [listBox2. SelectedIndex] = textBox2. Text;

}

После окончания корректировки оператор может просмотреть тесты, нажав два раза на любом вопросе или ответе.

private void listBox1_DoubleClick (object sender, EventArgs e)

{. Diagnostics. Process. Start (filename. Replace ("runtime. xml","start.html"));

}void listBox2_DoubleClick (object sender, EventArgs e)

{. Diagnostics. Process. Start (filename. Replace ("runtime. xml", "start.html"));

}

5. Тестирование программного средства

 

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

Протестируем систему на ошибки при попытки анализа некорректных Scorm пакетов.

Попытка анализировать оригинал Scorm пакета, вместо его экземпляра во временном хранилище;

Ответ: пожалуйста разархивируйте ваш Scorm пакет.

Выбранный Scorm пакет не имеет файла imsmanifest. xml;

Ответ: выбранный вами архив не является Scorm пакетом.

Выбранный Scorm пакет не имеет файла runtime. xml;

Ответ: выбранный вами архив не является Scorm пакетом.

В файле imsmanifest. xml определена некорректная ссылка на файл runtime. xml;

Ответ: выбранный вами архив не является Scorm пакетом;

Файл runtime. xml не содержит тестов на соответствие;

Ответ: выбранный вами Scorm пакет не содержит тестов на соответствие;

Не воз