Ejemplo n.º 1
0
        public static void ToStream(Stream stream, DataAnalyserReport report, int bufferSize = 4 * 1024)
        {
            using (var writer = new StreamWriter(stream, Encoding.UTF8, bufferSize, true))
            {
                writer.WriteLine("Всего тестов: {0}", report.TotalAmountOfTests);
                writer.WriteLine("Количество уникальных e-mail'ов: {0}\n", report.AmountOfUniqueEmails);

                writer.WriteLine("Распределение попыток:");
                for (var i = 0; i < report.AttemptDistribution.Length; i++)
                {
                    if (report.AttemptDistribution[i] != 0)
                    {
                        writer.WriteLine("{0}: {1}", i + 1, report.AttemptDistribution[i]);
                    }
                }
                writer.WriteLine();

                writer.WriteLine("Распределение результатов:");
                foreach (var el in report.ResultDistribution)
                {
                    writer.WriteLine("{0}: {1}", el.Key, el.Value);
                }
                writer.WriteLine();

                writer.WriteLine("Статистика вопросов:");
                foreach (var el in report.QuestionStatistics)
                {
                    writer.WriteLine("Вопрос: {0}\nПравильных ответов: {1}, неправильных: {2}, всего: {3}\n" +
                                     "Правильный ответ: {4}, а люди отвечали 0:{5} 1:{6} 2:{7} 3:{8}\n",
                                     el.Key, el.Value.RightAnswersAmount, el.Value.WrongAnswersAmount,
                                     el.Value.RightAnswersAmount + el.Value.WrongAnswersAmount,
                                     el.Value.RightAnswerIndex, el.Value.AnswersDistribution[0], el.Value.AnswersDistribution[1],
                                     el.Value.AnswersDistribution[2], el.Value.AnswersDistribution[3]);
                }

                (var kDistribution, var bDistribution) = report.GetAdditionalInfo();
                if (kDistribution != null && bDistribution != null)
                {
                    writer.WriteLine("Распределение коэффициента K:");
                    foreach (var el in kDistribution.Intervals)
                    {
                        writer.WriteLine("В интервале от {0:F2} и до {1:F2}: {2}",
                                         el.LeftBorder, el.RightBorder, el.NumericsAmount);
                    }
                    writer.WriteLine();
                    writer.WriteLine("Распределение коэффициента B:");
                    foreach (var el in bDistribution.Intervals)
                    {
                        writer.WriteLine("В интервале от {0:F2} и до {1:F2}: {2}",
                                         el.LeftBorder, el.RightBorder, el.NumericsAmount);
                    }
                    writer.WriteLine();
                }
            }
        }
        public void ToStream(Stream stream, DataAnalyserReport report)
        {
            _main.Write("Всего тестов:");
            _main.WriteLine(report.TotalAmountOfTests);

            _main.Write("Количество уникальных e-mail'ов:");
            _main.WriteLine(report.AmountOfUniqueEmails);

            BuildAttemptDistributionChart(report.AttemptDistribution);
            BuildResultDistributionChart(report.ResultDistribution);

            (var kDistr, var bDistr) = report.GetAdditionalInfo();

            if (kDistr != null && bDistr != null)
            {
                BuildNumericDistributionChart(kDistr, "KDistribution", "Распределение коэффициента K");
                BuildNumericDistributionChart(bDistr, "BDistribution", "Распределение коэффициента B");

                var distr = new DoubleNumericDistribution(kDistr.LeftBorder, kDistr.RightBorder,
                                                          bDistr.LeftBorder, bDistr.RightBorder, 10);

                foreach (var el in report.PersonStatistics)
                {
                    if (el.Value.AdditionalInfo != null)
                    {
                        distr.AddNumerics(el.Value.AdditionalInfo.Value.K,
                                          el.Value.AdditionalInfo.Value.B,
                                          el.Value.AdditionalInfo.Value.R);
                    }
                }

                BuildKAndBDistributionsChart(distr);
                BuildSigmaMinDistributionChart(distr);
                BuildSigmaMaxDistributionChart(distr);
            }

            foreach (var el in report.QuestionStatistics)
            {
                BuildQuestionStatistics(el);
            }

            _package.SaveAs(stream);
        }