Exemplo n.º 1
0
 public StatisticsOnExercises()
 {
     InitializeComponent();
     workDB = new WorkWithDB();
     int code = workDB.openConnection();
     if (code == 1)
     {
         scon = workDB.SqLiteConnection;
     }
     else
     {
         MessageBox.Show("Не возможно подключиться к БД");
     }
     fillDefault();
 }
Exemplo n.º 2
0
        private void fillTextBoxes()
        {
            WorkWithDB workDB = new WorkWithDB();
            int code = workDB.openConnection();
            if (code == 1)
            {
                SQLiteConnection scon = workDB.SqLiteConnection;
                SQLiteCommand command = new SQLiteCommand(
                    string.Format("SELECT COUNT(login) FROM User;"), scon);
                amoutOfUsersBox.Text = doRequest(command);

                command = new SQLiteCommand(
                    string.Format("SELECT COUNT(id_training) FROM Training;"), scon);

                amountOfTrainBox.Text = doRequest(command);

                command = new SQLiteCommand(
                    string.Format("SELECT COUNT(number) FROM Exercise;"), scon);

                amountOfExBox.Text = doRequest(command);
                workDB.closeConnection();
            }

            else 
            {
                MessageBox.Show("Не возможно подключиться к БД");
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Удаляет упражнение из системы и связанные с ней тренировки.
        /// </summary>
        /// <param name="number"></param>
        /// <param name="numberOfLevel"></param>
        private void deleteExercise(int number, int numberOfLevel)
        {
            WorkWithDB wdb = new WorkWithDB();
            wdb.openConnection();
            try
            {
                SQLiteConnection scon = wdb.SqLiteConnection;
                SQLiteCommand command = new SQLiteCommand(
                    string.Format("DELETE FROM Exercise WHERE number={0} AND numberOfLevel={1};", number, numberOfLevel), scon);
                int num = command.ExecuteNonQuery();

                command = new SQLiteCommand(string.Format
                    ("SELECT id_training FROM Training WHERE numberOfLevel={0};", numberOfLevel), 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 StatisticsOfExercises WHERE id_training IN ({0}) AND number={1};", ids, number), scon);
                command.ExecuteNonQuery();
            }
            catch { }
            finally {
                wdb.closeConnection(); 
            }
        }
Exemplo n.º 4
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 tr.login, tr.dataTimeOfTraining, st.speed, st.amountOfMistakes " +
                    "FROM Training tr JOIN StatisticsOfExercises st ON tr.id_training=st.id_training " +
                    "WHERE tr.numberOfLevel = {0} AND st.number= {1} ;", levelBox.Text, exerBox.Text), 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
                {
                    listOfExercisesStat.DataSource = dt;
                    listOfExercisesStat.Columns[0].HeaderText = "Логин";
                    listOfExercisesStat.Columns[1].HeaderText = "Дата/время тренировки";
                    listOfExercisesStat.Columns[2].HeaderText = "v, симв./мин";
                    listOfExercisesStat.Columns[3].HeaderText = "Количество\n\r ошибок";
                }
            }
            else
            {
                MessageBox.Show("Ошибка при соединении с БД");
            }
            workDB.closeConnection();
        }
Exemplo n.º 5
0
        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 " +
                    "WHERE st.number={0} AND tr.numberOfLevel={1} " +
                    "GROUP BY u.login;", exerBox.Text, levelBox.Text), 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();
            }
        }
Exemplo n.º 6
0
        public void fillPieChartSpeed()
        {
            //запрос должен суммировать число упражнений пройденных каждым пользователем и
            //группировать по пользователю
            //потом беру полученные чиселки и получаю из них свои стат данные
            //смотрю сколько упражнений прошел каждый пользователь
            //а суммирую пользователей,
            //на диаграмме будут пользователи
            WorkWithDB workDB = new WorkWithDB();
            int code = workDB.openConnection();

            if (code == 1)
            {
                SQLiteConnection scon = workDB.SqLiteConnection;
                SQLiteCommand command = new SQLiteCommand(
                    string.Format("SELECT u.login, AVG(st.speed) FROM " +
                    "User u JOIN Training tr ON u.login=tr.login " +
                    "JOIN StatisticsOfExercises AS st ON  tr.id_training=st.id_training " +
                    "WHERE st.number={0} AND tr.numberOfLevel={1} " +
                    "GROUP BY u.login;", exerBox.Text, levelBox.Text), 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] = (int)(Convert.ToDouble(dt.Rows[i][1].ToString()));
                    }

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