Автоматическая категоризация клиентов коучинга
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
по флагу, передаваемому в конструктор формы при вызове.
Форма Scenario вызывается для проработки полученного списка задач (рис.5). На данном этапе разработки программы реализована только проработка стандартного сценария ТМО.
Рис. 5 .Форма Scenario
.3.2 Описание пользовательских классов
Класс Statement_cl отражает структуру аспекта рис.6. Поле id_st содержит номер аспекта, присвоенный ему в базе данных. Поля n_cl и n_task хранят информацию о номере кластера и задачи, к которым относится аспект id_st. В поле text хранится утверждение аспекта. Метод Statement_cl реализует конструктор класса.
Рис. 6. Класс Statement_cl
Класс Answer создаётся для подсчёта количества аспектов попавших в кластеры и соответствующие им задачи рис.7. Поле count_answer хранит числовое значение соответствующее количеству попавших в кластер аспектов. Поле task_answer представляет собой массив, индекс которого соответствует номеру задачи. Тогда каждый элемент массива выступает в роли счётчика аспектов попавших в задачи. Одноименный с название класса метод Answer реализует конструктор этого класса.
Рис. 7. Класс Answer
Класс Check_statement нужен для хранения информации об отмеченных на листах утверждениях рис.8. Поле check_st_in_list представляет собой массив логического типа, размер которого равен количеству аспектов одновременно выводящихся на лист. Таким образом, индекс массива равен номеру аспекта в листе, если элемент под индексом имеет метку trueто это значит, что он был отмечен клиентом. Хранить информацию об отметках нужно для того, что бы пользователь смог вернуться к ранее отмеченным утверждениям и исправить свой ответ, если это необходимо. Метод Check_statement реализует конструктор класса.
Рис. 8. Класс Check_statement
Статистический класс Declaration является хранилищем всех глобальных структур и параметров, использованных в приложении рис.9. Такая структура удобна при редактировании приложения. Описание каждого параметра приведено в комментариях программы, см. приложение 1, поэтому подробно опишем только важные структуры. Делегаты ChangeElementLoad и ChangeStatus представляют собой методы для изменения элементов и статус-сообщения главной формы соответственно. Они нужны для работы с элементами Main_Form из других форм. Динамический массив sort_list_stat используется для формирования случайной последовательности аспектов. Сначала в него загружаются все номера аспектов из таблицы Statement, затем они перемешиваются, в зависимости от случайно сформированного параметра. Перемешанный массив сохраняют в таблицу Add_IDst. Массив list_stat представляет собой массив структур Statement_cl, он используется для чтения информации об аспектах для формируемого листа. Динамический массив list_answer состоит из структур Answer, представляет собой счётчик аспектов попавших в кластер и соответствующую ему задачу. Индекс массива равен номеру кластера. Список листов, с отмеченными утверждениями, хранится в массиве check_list. Использование динамических структур обусловлено тем, что в процессе развития методики тестирования могут появиться новые кластеры и задачи, что приведёт к расширению базы данных.
Рис. 8. Класс Declaration
Статистические классы Prog_Tool и Sql_Tool содержат все различные методы, используемые в приложении, рис.9 и рис.10 соответственно. Класс Prog_Tool включает в себя методы, используемые непосредственно в самой программе, в то время как класс Sql_Tool специализируется на обеспечении связи с базой данных - в нем реализованы вызовы хранимых процедур. Назначение каждого метода приведено в коде программы, поэтому здесь описываться не будет см. приложение 2 и приложение 3.
Рис. 9. Класс Prog_Tool Рис. 10. Класс Sql_Tool
.3.3 Описание принципа работы программы
Теперь, когда были описаны все реализованные формы и классы, приступим к описанию общего принципа работы самой программы. Ещё до загрузки приложения, на этапе инициализации элементов главной формы, происходит установка связи с базой данных Sql_Tool.Initialize_Sql_Tool, определения количества аспектов, кластеров и задач Sql_Tool.Count, задаётся начальный вид элементов главной формы Change_element (рис.11).
Рис. 11. Стартовое меню
При запуске теста (рис.12), в первую очередь формируется случайная последовательность аспектов Prog_Tool.Generate_Random_Key. Фактор случайности зависит от взятого параметра. Такой подход, в дальнейшем, позволит не включать в сохранение данных сформированную последовательность, достаточно будет лишь сохранить параметр. Для чтения аспектов используется метод Sql_Tool.Read_Cluster, параметры, передаваемые в этот метод, соответствуют диапазону аспектов, которые необходимо считать из таблицы Add_IDst. Считанные аспекты выводится в checkedListBox1. Параметр Declaration.Current_count хранит информацию об индексе последнего добавленного аспекта.
Рис. 12. Запуск теста
Для получения следующего листа аспектов клиент нажимает кнопку Следующий (рис.13). Прежде чем формировать новый список, необходимо обработать ответы старого. Для этого в цикле мы проходим по всем отмеченным утверждениям старого листа, увеличивая счётчики попавших аспектов в структуре list_answer и формируя лист с отмеченными утверждениями для массива check_list. Далее и?/p>