Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерная реализация формализованной оценки сайтов видеохостингов.docx
Скачиваний:
6
Добавлен:
19.01.2023
Размер:
581.37 Кб
Скачать

Список используемых источников

        1. Хамбл, Джез Непрерывное развертывание ПО [Текст] / Джез Хамбл. М.: издательский дом «Вильямс», 2012. – 433 с.

        2. Центр онлайн образования НИУ «БелГУ» [Электронный ресурс]. URL: https://open.bsu.edu.ru (дата обращения: 20.12.2022)

        3. Youtube [Электронный ресурс]. URL: https://youtube.com (дата обращения: 20.12.2022)

        4. Vimeo [Электронный ресурс]. URL: https://vimeo.com (дата обращения: 20.12.2022)

        5. Rutube [Электронный ресурс]. URL: https://rutube.ru (дата обращения: 20.12.2022)

        6. Vk video [Электронный ресурс]. URL: https://vk.com/video (дата обращения: 20.12.2022)

        7. Видео mail.ru [Электронный ресурс]. URL: https://my.mail.ru/video (дата обращения: 20.12.2022)

        8. Twitch [Электронный ресурс]. URL: https://twitch.com (дата обращения: 20.12.2022)

        9. Дзен видео [Электронный ресурс]. URL: https://dzen.ru (дата обращения: 20.12.2022)

        10. Tik Tok [Электронный ресурс]. URL: https://tiktok.com (дата обращения: 20.12.2022)

        11. Абрамян, М. А. Visual C# на примерах [Текст] / М. А. Абрамян. - М.: БХВ-Петербург, 2016. - 436 c.

        12. Вагнер, Билл С# Эффективное программирование [Текст] / Билл Вагнер. - М.: ЛОРИ, 2017. - 320 c.

        13. Ишкова, Э. А. Самоучитель С#. Начала программирования [Текст] / Э.А. Ишкова. - М.: Наука и техника, 2017. - 496 c.

        14. Кариев, Ч. А. Разработка Windows-приложений на основе Visual C# [Текст] / Ч.А. Кариев. - М.: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2015. - 501 c.

        15. Фленов, М.Е. Библия C# (+ CD-ROM) [Текст] / М.Е. Фленов. - М.: БХВ-Петербург, 2015. - 532 c.

        16. Ликнесс, Дж. Приложения для Windows 8 на C# и XAML [Текст] / Дж. Ликнесс. - М.: Питер, 2015. - 368 c.

        17. Пугачев, С. Разработка приложений для Windows 8 на языке C# [Текст] / С. Пугачев, А. Шериев, К. Кичинский. - М.: БХВ-Петербург, 2016. - 416 c.

        18. Рихтер, Джеффри CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C# [Текст] / Джеффри Рихтер. - М.: Питер, 2016. - 365 c.

Приложение а

Программный код на языке C#

А1 – Исходный код окна экспертного режима

namespace Term_Paper_OPIS_Windows_Forms

{

public partial class ExpertModeForm : Form

{

public ExpertModeForm()

{

InitializeComponent();

this.FormBorderStyle = FormBorderStyle.FixedSingle;

this.MaximizeBox = false;

this.MinimizeBox = false;

}

private void CalcUsefulnessButtonExpert_Click(object sender, EventArgs e)

{

double[] WeightingCoeffs = new double[]

{

Convert.ToDouble(EasyAccUpDown.Text),

Convert.ToDouble(ContWidthUpDown.Text),

Convert.ToDouble(ContAmountUpDown.Text),

Convert.ToDouble(ContActUpDown.Text),

Convert.ToDouble(CrossPlatfUpDown.Text),

Convert.ToDouble(CredibilityUpDown.Text),

Convert.ToDouble(DesingUpDown.Text),

Convert.ToDouble(UnnecInfUpDown.Text),

Convert.ToDouble(UseDiffUpDown.Text),

Convert.ToDouble(CensorshipUpDown.Text)

};

int[] CriteriaValues = new int[]

{

EasyAccComboExp.SelectedIndex,

ContWidthComboExp.SelectedIndex,

ContAmountComboExp.SelectedIndex,

ContActComboExp.SelectedIndex,

CrossPlatfComboExp.SelectedIndex,

CredibilityComboExp.SelectedIndex,

DesignComboExp.SelectedIndex,

UnnecInfComboExp.SelectedIndex,

UseDiffComboExp.SelectedIndex,

CensorshipComboExp.SelectedIndex

};

Calculator CalcModel = new Calculator(WeightingCoeffs, CriteriaValues);

Calculator.writeToFile(WeightingCoeffs);

double usefulness = CalcModel.getUsefulness();

if (usefulness < 0) usefulness = 0;

string text = "Полезность использования данного ресурса\n равна " + usefulness.ToString() + "%";

if (usefulness > 80) text += "\n\nРесурс отличный и рекомендуется к использованию";

else if (usefulness > 50) text += "\n\nРесурс достаточно качественный, может использоваться";

else text += "\n\nРесурс некачественный и не рекомендуется к использованию";

MessageBox.Show(text);

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

}

}

А2 – Исходный код окна пользовательского режима

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Term_Paper_OPIS_Windows_Forms

{

public partial class UserModeForm : Form

{

public UserModeForm()

{

InitializeComponent();

this.FormBorderStyle = FormBorderStyle.FixedSingle;

this.MaximizeBox = false;

this.MinimizeBox = false;

}

private void CalcUsefulnessButtonExpert_Click(object sender, EventArgs e)

{

FileInfo fileInfo = new FileInfo("coeffs.txt");

if (! fileInfo.Exists)

{

MessageBox.Show("Файла с коэффициентами не существует!\nСначала используйте режим эксперта");

}

else

{

int[] CriteriaValues = new int[]

{

EasyAccComboExp.SelectedIndex,

ContWidthComboExp.SelectedIndex,

ContAmountComboExp.SelectedIndex,

ContActComboExp.SelectedIndex,

CrossPlatfComboExp.SelectedIndex,

CredibilityComboExp.SelectedIndex,

DesignComboExp.SelectedIndex,

UnnecInfComboExp.SelectedIndex,

UseDiffComboExp.SelectedIndex,

CensorshipComboExp.SelectedIndex

};

double[] WeightingCoeffs = Calculator.readFromFile();

Calculator CalcModel = new Calculator(WeightingCoeffs, CriteriaValues);

double usefulness = CalcModel.getUsefulness();

if (usefulness < 0) usefulness = 0;

string text = "Полезность использования данного ресурса\n равна " + usefulness.ToString() + "%";

if (usefulness > 70) text += "\n\nРесурс отличный и рекомендуется к использованию";

else if (usefulness > 50) text += "\n\nРесурс достаточно качественный, может использоваться";

else text += "\n\nРесурс некачественный и не рекомендуется к использованию";

MessageBox.Show(text);

}

}

}

}

А3 – Исходный код окна выбора режима

namespace Term_Paper_OPIS_Windows_Forms

{

public partial class WelcomeForm : Form

{

public WelcomeForm()

{

InitializeComponent();

}

private void SelectExpertModeButton_Click(object sender, EventArgs e)

{

ExpertModeForm expertModeForm = new ExpertModeForm();

expertModeForm.ShowDialog();

expertModeForm.ShowInTaskbar = false;

}

private void SelectUserModeButton_Click(object sender, EventArgs e)

{

UserModeForm userModeForm = new UserModeForm();

userModeForm.ShowDialog();

userModeForm.ShowInTaskbar = false;

}

}

}

А4 – Исходный код вычисления полезности

using System;

using System.Collections.Generic;

using System.Linq;

using System.Reflection;

using System.Text;

using System.Threading.Tasks;

namespace Term_Paper_OPIS_Windows_Forms

{

internal class Calculator

{

private double[] posWeiCoeffs;

private int [] posCrVals;

private double [] negWeiCoeffs;

private int [] negCrVals;

private double usefulness = 0;

private int[] posGradNum = new int[] { 3, 3, 3, 2, 3, 3, 3 };

private int[] negGradNum = new int[] { 2, 3, 2 };

private double[][] valuesOfGradationLevels;

public Calculator(double[] WeightingCoeffs, int[] CriteriaValues)

{

//Сохраняем в объекте значения массивов из аргументов

this.posWeiCoeffs = WeightingCoeffs.Skip(0).Take(7).ToArray();

this.negWeiCoeffs = WeightingCoeffs.Skip(7).ToArray();

this.posCrVals = CriteriaValues.Skip(0).Take(7).ToArray();

this.negCrVals = CriteriaValues.Skip(7).ToArray();

int a = 0;

//Запускаем вычисление полезности

calculateUsefulness();

}

private void calculateUsefulness()

{

//Вычисляем значения коэффициентов нормирования

double positRatioCoeff = 0;

double negatRatioCoeff = 0;

foreach (double i in posWeiCoeffs) positRatioCoeff += i;

foreach (double i in negWeiCoeffs) negatRatioCoeff += i;

positRatioCoeff = 100 / positRatioCoeff;

negatRatioCoeff = 100 / negatRatioCoeff;

// Определяем ранги каждого признака

double[] posRanks = new double[7];

double[] negRanks = new double[3];

for (int i = 0; i < 7; i++) posRanks[i] = posWeiCoeffs[i] * positRatioCoeff;

for (int i = 0; i < 3; i++) negRanks[i] = negWeiCoeffs[i] * negatRatioCoeff;

//Определяем шаг градации для признаков

double[] posGradStep = new double[7];

double[] negGradStep = new double[3];

for (int i = 0; i < 7; i++) posGradStep[i] = posRanks[i] / (posGradNum[i] - 1);

for (int i = 0; i < 3; i++) negGradStep[i] = negRanks[i] / (negGradNum[i] - 1);

//Вычисляем уровни градаций

double[,] posGradLevels = new double[7, posGradNum.Max()];

double[,] negGradLevels = new double[3, negGradNum.Max()];

for (int i = 0; i < 7; i++)

{

for (int j = 0; j < posGradNum[i]; j++) posGradLevels[i, j] = posGradStep[i] * j;

}

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < negGradNum[i]; j++) negGradLevels[i, j] = negGradStep[i] * j;

}

//Конкретное значение для каждого признака

double[] posValues = new double[7];

double[] negValues = new double[3];

for (int i = 0; i < 7; i++) posValues[i] = posGradLevels[i, posCrVals[i]];

for (int i = 0; i < 3; i++) negValues[i] = negGradLevels[i, negCrVals[i]];

usefulness = posValues.Sum() - negValues.Sum();

usefulness = Math.Round(usefulness, 2);

}

public double getUsefulness()

{

return usefulness;

}

public static void writeToFile(double[] coeffs)

{

string path = "coeffs.txt";

using (StreamWriter writer = new StreamWriter(path, false))

{

foreach(double coeff in coeffs)

{

writer.WriteLine(coeff);

}

}

}

public static double[] readFromFile()

{

double[] coeffs = new double[10];

string path = "coeffs.txt";

string line;

using (StreamReader reader = new StreamReader(path))

{

for (int i = 0; i < 10; i++)

{

line = reader.ReadLine();

coeffs[i] = Convert.ToDouble(line);

}

}

return coeffs;

}

}

}