- •Введение
- •1. Сайты видеохостингов
- •1.1 Анализ предметной области
- •1.2 Анализ информационных ресурсов
- •2. Построение модели
- •2.1 Выбор критериев оценки
- •2.2 Выбор коэффициентов
- •2.3 Выбор количественных значений
- •2.4 Составление листа оценочной экспертизы
- •Лист экспертной оценки полезности использования информационного ресурса
- •3. Программная реализация модели
- •3.1 Разработка приложения
- •3.2 Тестирование приложения
- •Список используемых источников
- •Приложение а
- •Приложение б
- •Лист экспертной оценки полезности использования информационного ресурса
- •Лист экспертной оценки полезности использования информационного ресурса
- •Лист экспертной оценки полезности использования информационного ресурса
- •Лист экспертной оценки полезности использования информационного ресурса
- •Лист экспертной оценки полезности использования информационного ресурса
- •Лист экспертной оценки полезности использования информационного ресурса
- •Лист экспертной оценки полезности использования информационного ресурса
- •Лист экспертной оценки полезности использования информационного ресурса
- •Приложение в
Список используемых источников
Хамбл, Джез Непрерывное развертывание ПО [Текст] / Джез Хамбл. М.: издательский дом «Вильямс», 2012. – 433 с.
Центр онлайн образования НИУ «БелГУ» [Электронный ресурс]. URL: https://open.bsu.edu.ru (дата обращения: 20.12.2022)
Youtube [Электронный ресурс]. URL: https://youtube.com (дата обращения: 20.12.2022)
Vimeo [Электронный ресурс]. URL: https://vimeo.com (дата обращения: 20.12.2022)
Rutube [Электронный ресурс]. URL: https://rutube.ru (дата обращения: 20.12.2022)
Vk video [Электронный ресурс]. URL: https://vk.com/video (дата обращения: 20.12.2022)
Видео mail.ru [Электронный ресурс]. URL: https://my.mail.ru/video (дата обращения: 20.12.2022)
Twitch [Электронный ресурс]. URL: https://twitch.com (дата обращения: 20.12.2022)
Дзен видео [Электронный ресурс]. URL: https://dzen.ru (дата обращения: 20.12.2022)
Tik Tok [Электронный ресурс]. URL: https://tiktok.com (дата обращения: 20.12.2022)
Абрамян, М. А. Visual C# на примерах [Текст] / М. А. Абрамян. - М.: БХВ-Петербург, 2016. - 436 c.
Вагнер, Билл С# Эффективное программирование [Текст] / Билл Вагнер. - М.: ЛОРИ, 2017. - 320 c.
Ишкова, Э. А. Самоучитель С#. Начала программирования [Текст] / Э.А. Ишкова. - М.: Наука и техника, 2017. - 496 c.
Кариев, Ч. А. Разработка Windows-приложений на основе Visual C# [Текст] / Ч.А. Кариев. - М.: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2015. - 501 c.
Фленов, М.Е. Библия C# (+ CD-ROM) [Текст] / М.Е. Фленов. - М.: БХВ-Петербург, 2015. - 532 c.
Ликнесс, Дж. Приложения для Windows 8 на C# и XAML [Текст] / Дж. Ликнесс. - М.: Питер, 2015. - 368 c.
Пугачев, С. Разработка приложений для Windows 8 на языке C# [Текст] / С. Пугачев, А. Шериев, К. Кичинский. - М.: БХВ-Петербург, 2016. - 416 c.
Рихтер, Джеффри 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;
}
}
}