Автоматическая категоризация клиентов коучинга
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?личество аспектов попавших в каждый кластер и задачу,индекс равен номеру кластера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"