Автоматическая категоризация клиентов коучинга

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

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

?личество аспектов попавших в каждый кластер и задачу,индекс равен номеру кластераstatic ArrayList check_list = new ArrayList();//хранит информацию о том, какие утверждения были отмечены на листеstatic int Check_list_page = -1;//номер листа - ограниченного списка аспектов, нужен для возможности перемещения между листами с отмеченными утверждениями

public static int Check_list_lastpage = 0;//последний номер достигнутого листа

public static int kol_vo_elem = 18;//размер листа, т.е. количество аспектов на одном листеstatic int Current_count = 0;//индекс последнего аспекта из таблицы Add_IDststatic int Add_count = 0;//кол-во добавленных в лист аспектовstatic int Current_ran = 0;//текущий параметр для генерации случайных утверждений

public static int ID_user = 0;//комер текущего клиента

public static int cl_select = 5;//% порог который должны набрать кластеры чтобы попасть в вывод

public static TabPage[] Tab_Page = new TabPage[7];//сохраняем коллекцию страниц Tab_Control

}

Приложение 2. Класс Prog_Tool.

Prog_Tool

{static Statement_cl get_list_statement(SqlDataReader dr_loc)//считываем информацию об аспектах

{_cl stat = new Statement_cl();.id_st = (int)dr_loc["ID"];.n_cl = (int)dr_loc["Number_Cluster"];.n_task[0] = (int)dr_loc["Number_Task_1"];.n_task[1] = (int)dr_loc["Number_Task_2"];.n_task[2] = (int)dr_loc["Number_Task_3"];.text = dr_loc["Text"].ToString();stat;

}static void Initialize_sort_list_stat()//заполняем массив номерами аспектов из бд

{dr = Sql_Tool.Get_ID_statement();(dr.Read())

{.sort_list_stat.Add((int)dr["ID"]);

}.Close();

} static void Generate_Random_Key(bool f)//генерация случайной последовательности аспектов

{(f)

{main_ran = new Random();//для генерации определённой последовательности

Declaration.Current_ran = main_ran.Next(0, Declaration.count_cluster_stat - 1);

}ran = new Random(Declaration.Current_ran);//для генерации последовательности зависящей от Current_rana=0;i=0;buff=0;.sort_list_stat.Clear();//очистка массива аспектов

Prog_Tool.Initialize_sort_list_stat();//заполняем массив номерами аспектов из бд

//затем перемешиваем их ,и отправляем в бд

for (i = 0; i < Declaration.count_cluster_stat; i++)

{= ran.Next(0, Declaration.count_cluster_stat-1);=(int)Declaration.sort_list_stat[a];.sort_list_stat[a] = Declaration.sort_list_stat[i];.sort_list_stat[i] = buff;

}_Tool.Add__Random_IDkey();//запись последовательности в бд

Declaration.sort_list_stat.Clear();

}static void Initialize_List_Answer()//инициализация массива ответов

{buff;(int i = 0; i < Declaration.count_cluster; i++)

{= new Answer();.list_answer.Add(buff);

}

}static void Initialize_Check_stat_list()//инициализация массива хранящего листы

{_statement buff;(int i = 0; i < Declaration.Check_list_lastpage; i++)

{= new Check_statement();.check_list.Add(buff);

}

}static void Reset()//сброс данных

{_Tool.Clear_Table_Add_IDkey();//очищаем таблицу сгенерированой последовательности

Declaration.list_answer.Clear();//очищаем массив ответов.list_stat.Clear();//очистка массива текущих аспектов.check_list.Clear();//очищаем отметки на листах_Tool.Initialize_List_Answer();//создаём массив пустого списка ответов

}static int[,] Sort_Answer(int f)//сортировка массива ответов для вывода списка кластеров и задач

{buffA;//буффер для объекта ответ

int[,] tmp = new int[1, 2];[,] sort_answer;(f==-1)

{_answer = new int[Declaration.count_cluster, 2];//i-кол-во утверждений попавших в кластер,j-номер кластера(int i = 0; i < Declaration.count_cluster; i++)

{= (Answer)Declaration.list_answer[i];_answer[i, 0] = (int)Math.Round((double)buffA.count_answer / Declaration.count_cluster_stat * 100);//переводим кол-во утверждений в кластере в процент от общего числа утверждений_answer[i, 1] = i;

}

}

{= (Answer)Declaration.list_answer[f];_answer = new int[Declaration.count_task, 2];//i-кол-во утверждений попавших в задачу,j-номер задачи(int i = 0; i < Declaration.count_task; i++)

{_answer[i, 0] = (int)Math.Round((double)buffA.task_answer[i] / buffA.count_answer * 100);//переводим кол-во утверждений в task в процент от общего числа утверждений

sort_answer[i, 1] = i;

}

}

//сортировка массива по кол-ву пoпавших в кластер/задачу аспектов

i;j--)(sort_answer[j-1,0] i; j--)(sort_answer[j-1,0] < sort_answer[j,0])

{[0,0] = sort_answer[j-1,0];[0,1] = sort_answer[j-1,1];_answer[j-1,0] = sort_answer[j ,0];_answer[j-1,1] = sort_answer[j ,1];_answer[j ,0] = tmp[0,0];_answer[j ,1] = tmp[0,1];

}sort_answer;

}static string GetPath()//получаем путь запускаемого файла

{fullAppName = Application.ExecutablePath;//Получает путь для исполняемого файла, запустившего приложение, включая исполняемое имя.fullAppPath = System.IO.Path.GetDirectoryName(fullAppName);//Возвращает для указанной строки пути сведения о каталоге.fullAppPath;

}

}

Приложение3. Класс Sql_Tool.static class Sql_Tool

{static void Initialize_Sql_Tool()// настраиваем элементы БД

{.cmd.Connection = Declaration.conn;.dataAdapter.SelectCommand = Declaration.cmd;.conn.Open();.cmd.CommandType = CommandType.StoredProcedure;

}static void Close_Sql_Tool()//закрываем соединение

{.conn.Close();

}static SqlDataReader Read_Cluster(int a,int b)//читаем номера аспектов в промежутке индекса от [a,b]

{.cmd.Parameters.Clear();dr = null;.cmd.CommandText = "Get_ID";.cmd.Parameters.AddWithValue("@start_index", a);.cmd.Parameters.AddWithValue("@end_index", b);= Declaration.cmd.ExecuteReader();dr;

}static void Clear_Table_Add_IDkey()//очищаем таблицу хранящую случайную последовательность

{.cmd.Parameters.Clear();.cmd.CommandText = "Clear_Add_IDst";.cmd.ExecuteNonQuery();

}static void Add__Random_IDkey()//записываем случайную последователньость в бд

{.cmd.Parameters.Clear();.cmd.CommandText = "Add_IDst_In_Table";(int i = 0; i < Declaration.count_cluster_stat; i++)

{.cmd.Parameters.AddWithValue("@index", i);.cmd.Parameters.AddWithValue("@id", (int)Declaration.sort_list_stat[i]);.cmd.ExecuteNonQuery();.cmd.Parameters.Clear();

}

}static bool Save_User(string name,string password)//сохраняем информацию о клиенте

{.cmd.Parameters.Clear();dr = null;.cmd.CommandText = "Check_User";.cmd.Parameters.AddWithValue("@name", name);

dr = Declaration.cmd.ExecuteReader();(dr.Read())//если имя уже занесено в таблицу то выводим сообщение

{.Close();.Show("Такой пользователь уже существует!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);

return false;

}

{.Close();.cmd.Parameters.Clear();.cmd.CommandText = "Add_User";.cmd.Parameters.AddWithValue("@name", name);.cmd.Parameters.AddWithValue("@password", password);.cmd.Parameters.AddWithValue("@ran", Declaration.Current_ran);.cmd.Parameters.AddWithValue("@cur_count", Declaration.Current_count);.cmd.Parameters.AddWithValue("@check_l", Declaration.Check_list_page);.cmd.Parameters.AddWithValue("@check_l_last", Declaration.check_list.Count);.cmd.ExecuteNonQuery();true;

}

}static void Count()//получаем количество аспектов,кластеров и задач

{.cmd.Parameters.Clear();dr = null;.cmd.CommandText = "MyCount"