Esempio n. 1
0
        private void удалитьПользователяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (listOfUsers.SelectedRows.Count != 0)
            {
                WorkWithDB workDB = new WorkWithDB();
                int code = workDB.openConnection();
                int index = listOfUsers.CurrentRow.Index;
                string login = listOfUsers[0, index].Value.ToString();
                if (code == 1)
                {
                    try
                    {
                        SQLiteConnection scon = workDB.SqLiteConnection;
                        SQLiteCommand command = new SQLiteCommand(string.Format
                            ("DELETE FROM User WHERE login='******';", login), scon);

                        /*SQLiteCommand command = new SQLiteCommand(
                            string.Format("DELETE u.*, t.*, st.* FROM User as u LEFT JOIN Training as t ON u.login=t.login " +
                            "LEFT JOIN StatisticsOfExercises as st on t.id_training=st.id_training " +
                            "WHERE u.login='******';", ), scon);
                        */
                        command.ExecuteNonQuery();

                        command = new SQLiteCommand(string.Format
                            ("SELECT id_training FROM 'Training' WHERE login='******';", login), scon);
                        string ids = "";
                        DataTable dt = null;
                        SQLiteDataAdapter da = new SQLiteDataAdapter(command);
                        DataSet ds = new DataSet();
                        da.Fill(ds);
                        dt = ds.Tables[0];
                        if (dt == null)
                        {
                            MessageBox.Show("БД пуста или запрос не вернул данных");
                        }
                        else
                        {
                            int rows = dt.Rows.Count;
                            for (int i = 0; i < rows; i++)
                                ids += dt.Rows[i][0].ToString() + ",";
                        }
                        ids = ids.Substring(0, ids.Length - 1);
                        command = new SQLiteCommand(string.Format
                            ("DELETE FROM Training WHERE login='******';", login), scon);
                        command.ExecuteNonQuery();
                        command = new SQLiteCommand(string.Format("DELETE FROM 'StatisticsOfExercises' WHERE id_training IN ({0});", ids), scon);
                        command.ExecuteNonQuery();

                    }
                    catch
                    { }
                    finally
                    {
                        workDB.closeConnection();
                    }
                    listOfUsers.Rows.RemoveAt(index);
                }
            }
            else
                MessageBox.Show("Не выбран пользователь для удаления", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
Esempio n. 2
0
        /// <summary>
        /// Строит круговую диаграмму,
        /// распределяя ошибки среди пользователей
        /// сколько ошибок
        /// 1-5 ошиб. 
        /// 5-10 ошиб.
        /// 11-60 ошиб.
        /// 61-100 ошиб.
        /// </summary>
        public void fillPieChartMistakes()
        {
            WorkWithDB workDB = new WorkWithDB();
            int code = workDB.openConnection();

            if (code == 1)
            {
                SQLiteConnection scon = workDB.SqLiteConnection;
                SQLiteCommand command = new SQLiteCommand(
                    string.Format("SELECT u.login, SUM(st.amountOfMistakes) FROM " +
                    "User u JOIN Training tr ON u.login=tr.login " +
                    "JOIN StatisticsOfExercises AS st ON  tr.id_training=st.id_training " +
                    "GROUP BY u.login;"), scon);

                DataTable dt = null;
                SQLiteDataAdapter da = new SQLiteDataAdapter(command);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dt = ds.Tables[0];
                if (dt == null)
                {
                    MessageBox.Show("БД пуста или запрос не вернул данных");
                }
                else
                {
                    int amount = dt.Rows.Count;
                    int[] mas = new int[amount];

                    //Получаем распределение числа пройденных упражнений по пользователям
                    //каждая ячейка относится к одному пользователю
                    for (int i = 0; i < amount; i++)
                    {
                        mas[i] = Convert.ToInt32(dt.Rows[i][1].ToString());
                    }

                    //сортируем массив
                    Array.Sort(mas);
                    forMistakesChart(mas);
                }
                workDB.closeConnection();
            }
        }
Esempio n. 3
0
        public void fillDataGreed()
        {
            WorkWithDB workDB = new WorkWithDB();
            int code = workDB.openConnection();

            if (code == 1)
            {
                SQLiteConnection scon = workDB.SqLiteConnection;
                SQLiteCommand command = new SQLiteCommand(
                    string.Format("SELECT u.login,u.lastDataTraining,u.lastLevelNumber,ROUND(AVG(st.speed),2),ROUND(AVG(st.amountOfMistakes),2) FROM User AS u JOIN Training AS t " +
                    "ON u.login=t.login " +
                    "JOIN StatisticsOfExercises AS st ON  t.id_training=st.id_training " +
                    "GROUP BY u.login ORDER BY u.lastLevelNumber DESC;"), scon);

                DataTable dt = null;
                SQLiteDataAdapter da = new SQLiteDataAdapter(command);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dt = ds.Tables[0];
                if (dt == null)
                {
                    MessageBox.Show("БД пуста или запрос не вернул данных");
                }
                else
                {
                    listOfUsers.DataSource = dt;
                    listOfUsers.Columns[0].HeaderText = "Логин";
                    listOfUsers.Columns[1].HeaderText = "Дата последней тренировки";
                    listOfUsers.Columns[2].HeaderText = "Номер уровня";
                    listOfUsers.Columns[3].HeaderText = "Ср. v, симв./мин";
                    listOfUsers.Columns[4].HeaderText = "Ср. кол-во ошибок";
                }
            }
            else
            {
                MessageBox.Show("Ошибка при соединении с БД");
            }
            workDB.closeConnection();
        }
Esempio n. 4
0
        /// <summary>
        /// Строит круговую диаграмму,
        /// распределяя сколько пользователей прошли
        /// сколько упражнений
        /// 1-15 упр 
        /// 16-30 упр
        /// 30-60 упр
        /// 60-150 упр
        /// </summary>
        public void fillPieChartExercises()
        {
            //запрос должен суммировать число упражнений пройденных каждым пользователем и
            //группировать по пользователю
            //потом беру полученные чиселки и получаю из них свои стат данные
            //смотрю сколько упражнений прошел каждый пользователь
            //а суммирую пользователей,
            //на диаграмме будут пользователи
            WorkWithDB workDB = new WorkWithDB();
            int code = workDB.openConnection();

            if (code == 1)
            {
                SQLiteConnection scon = workDB.SqLiteConnection;
                SQLiteCommand command = new SQLiteCommand(
                    string.Format("SELECT u.login, COUNT(st.number) FROM " +
                    "User u JOIN Training tr ON u.login=tr.login " +
                    "JOIN StatisticsOfExercises AS st ON  tr.id_training=st.id_training " +
                    "GROUP BY u.login;"), scon);

                DataTable dt = null;
                SQLiteDataAdapter da = new SQLiteDataAdapter(command);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dt = ds.Tables[0];
                if (dt == null)
                {
                    MessageBox.Show("БД пуста или запрос не вернул данных");
                }
                else
                {
                    int amount = dt.Rows.Count;
                    int[] mas = new int[amount];

                    //Получаем распределение числа пройденных упражнений по пользователям
                    //каждая ячейка относится к одному пользователю
                    for (int i = 0; i < amount; i++)
                    {
                        mas[i] = Convert.ToInt32(dt.Rows[i][1].ToString());
                    }

                    //сортируем массив
                    Array.Sort(mas);
                    forExercisesChart(mas);
                }
                workDB.closeConnection();
            }
        }