Разработка программного продукта, выполняющего расчёт комплексных оценок для сотрудников высшего учебного заведения

Разработка подсистемы формирования комплексной оценки в системе мониторинга наукометрических показателей работников высшего учебного заведения. Виды и методы шкалирования. Исследование существующих математических моделей построения комплексных оценок.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 10.11.2012
Размер файла 3,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

this.personsTableAdapter.Fill(this.khAIDataSet41.Persons);

// TODO: данная строка кода позволяет загрузить данные в таблицу "khAIDataSet4.ЗапросИзЗапросов". При необходимости она может быть перемещена или удалена.

this.запросИзЗапросовTableAdapter2.Fill(this.khAIDataSet4.ЗапросИзЗапросов);

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

Data.Add(new List<double>());

personAss.Add(new List<string>());

personAss[i].Add(dataGridView1[0, i].Value.ToString());

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

if (dataGridView1[j, i].Value.ToString() == "")

Data[i].Add(0);

else

Data[i].Add(Convert.ToDouble(dataGridView1[j, i].Value));

}

}

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

NoDegree.Add(new List<double>());

Doctor.Add(new List<double>());

Kand.Add(new List<double>());

}

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

if (dataGridView2[1, i].Value.ToString() == "")

{

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

if (dataGridView1[j, i].Value.ToString() == "")

{

NoDegree[j - 1].Add(0);

}

else

{

NoDegree[j - 1].Add(Convert.ToDouble(dataGridView1[j, i].Value));

}

}

}

else

{

if (dataGridView2[1, i].Value.ToString() == "6")

{

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

if (dataGridView1[j, i].Value.ToString() == "")

{

Kand[j - 1].Add(0);

}

else

{

Kand[j - 1].Add(Convert.ToDouble(dataGridView1[j, i].Value));

}

}

}

else

{

if (dataGridView2[1, i].Value.ToString() == "1")

{

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

if (dataGridView1[j, i].Value.ToString() == "")

{

Doctor[j - 1].Add(0);

}

else

{

Doctor[j - 1].Add(Convert.ToDouble(dataGridView1[j, i].Value));

}

}

} } }

}

}

public List<List<double>> Doctor=new List<List<double>>();

public List<List<double>> Kand=new List<List<double>>();

public List<List<double>> NoDegree = new List<List<double>>();

public List<List<double>> Data = new List<List<double>>();

public List<double> person;

public List<List<string>> personAss = new List<List<string>>();

private void button1_Click(object sender, EventArgs e)

{

this.Close();

}

private void fillByToolStripButton1_Click(object sender, EventArgs e)

{

textBox1.Visible = true;

label2.Visible = true;

try

{ this.запросИзЗапросовTableAdapter2.FillBy(this.khAIDataSet4.ЗапросИзЗапросов, comboBox1.SelectedText);

}

catch (System.Exception ex)

{

System.Windows.Forms.MessageBox.Show(ex.Message);

}

person = new List<double>();

for (int i = 1; i < dataGridView1.ColumnCount; i++)

{

if (dataGridView1[i, 0].Value.ToString() == "")

person.Add(0);

else

person.Add(Convert.ToDouble(dataGridView1[i, 0].Value));

}

try

{

this.звание_СтепеньTableAdapter1.FillBy(this.khAIDataSet5.Звание_Степень, comboBox1.SelectedText);

}

catch (System.Exception ex)

{

System.Windows.Forms.MessageBox.Show(ex.Message);

}

double f = 0;

if (dataGridView2[1, 0].Value.ToString() == "1")

{

f = Factor(Doctor, person);

}

else

{

if (dataGridView2[1, 0].Value.ToString() == "6")

{

f = Factor(Kand, person);

}

else

{

if (dataGridView2[1, 0].Value.ToString() == "")

{

f = Factor(NoDegree, person);

}

}

}

textBox1.Text = f.ToString();

int ind = 0;

for (int i = 0; i < personAss.Count; i++)

{

if (personAss[i].Contains(dataGridView1[0, 0].Value.ToString()))

ind = i;

}

personAss[ind].Add(f.ToString());

}

public double Factor(List<double> person)

{

double f = person[0];

for (int i = 1; i < person.Count; i++)

f += person[i];

return f;

}

public double Factor(List<List<double>> degree, List<double> person)

{

double f = 0;

for (int i = 0; i < person.Count; i++)

{

if (degree[i].Max() == 0)

f += degree[i].Max();

else

f += person[i] / degree[i].Max();

}

return f;

} }

}

FormКафедра.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using ZedGraph;

namespace Assessment

{

public partial class FormКафедра : Form

{

public FormКафедра()

{

InitializeComponent();

}

private void FormКафедра_Load(object sender, EventArgs e)

{

// TODO: данная строка кода позволяет загрузить данные в таблицу "номерКаф_Степень._НомерКаф_Степень". При необходимости она может быть перемещена или удалена.

this.номерКаф_СтепеньTableAdapter.Fill(this.номерКаф_Степень._НомерКаф_Степень);

// TODO: данная строка кода позволяет загрузить данные в таблицу "тНомерКафедры.ЗапросНомерКафедры". При необходимости она может быть перемещена или удалена.

this.запросНомерКафедрыTableAdapter2.Fill(this.тНомерКафедры.ЗапросНомерКафедры);

// TODO: данная строка кода позволяет загрузить данные в таблицу "номерКафедры.ЗапросНомерКафедры". При необходимости она может быть перемещена или удалена.

this.запросНомерКафедрыTableAdapter1.Fill(this.номерКафедры.ЗапросНомерКафедры);

// TODO: данная строка кода позволяет загрузить данные в таблицу "запросИзЗапросов._ЗапросИзЗапросов". При необходимости она может быть перемещена или удалена. this.запросИзЗапросовTableAdapter.Fill(this.запросИзЗапросов._ЗапросИзЗапросов);

// TODO: данная строка кода позволяет загрузить данные в таблицу "khAI1DataSet.ЗапросНомерКафедры". При необходимости она может быть перемещена или удалена.

this.запросНомерКафедрыTableAdapter.Fill(this.khAI1DataSet.ЗапросНомерКафедры);

// TODO: данная строка кода позволяет загрузить данные в таблицу "khAIDataSet.SienceUnits". При необходимости она может быть перемещена или удалена.

this.sienceUnitsTableAdapter.Fill(this.khAIDataSet.SienceUnits);

dataGridView1.RowCount = 4;

dataGridView1[0, 0].Value = "Без степени";

dataGridView1[0, 1].Value = "Степень Кандидат наук";

dataGridView1[0, 2].Value = "Степень Доктор наук";

dataGridView1[0, 3].Value = "Всего";

}

public List<List<double>> Doctor;

public List<List<double>> Kand;

public List<List<double>> NoDegree;

public List<List<double>> Data;

private void button1_Click(object sender, EventArgs e)

{

this.Close();

}

private void fillByToolStripButton_Click(object sender, EventArgs e)

{

try

{

this.запросНомерКафедрыTableAdapter2.зтНомерКафедры(this.тНомерКафедры.ЗапросНомерКафедры, new System.Nullable<int>(((int)(System.Convert.ChangeType(comboBox1.SelectedText, typeof(int))))));

}

catch (System.Exception ex)

{

System.Windows.Forms.MessageBox.Show(ex.Message);

}

try

{

this.номерКаф_СтепеньTableAdapter.НомерКаф_Степень(this.номерКаф_Степень._НомерКаф_Степень, new System.Nullable<int>(((int)(System.Convert.ChangeType(comboBox1.SelectedText, typeof(int))))));

}

catch (System.Exception ex)

{

System.Windows.Forms.MessageBox.Show(ex.Message);

}

Doctor = new List<List<double>>();

Kand = new List<List<double>>();

NoDegree = new List<List<double>>();

Data = new List<List<double>>();

for (int i = 0; i < dataGridView2.RowCount - 1; i++)

{

Data.Add(new List<double>());

for (int j = 3; j < dataGridView2.ColumnCount; j++)

{

if (dataGridView2[j, i].Value.ToString() == "")

Data[i].Add(0);

else

Data[i].Add(Convert.ToDouble(dataGridView2[j, i].Value));

}

}

for (int j = 3; j < dataGridView2.ColumnCount; j++)

{

NoDegree.Add(new List<double>());

Doctor.Add(new List<double>());

Kand.Add(new List<double>());

}

for (int i = 0; i < dataGridView2.RowCount - 1; i++)

{

if (dataGridView3[1, i].Value.ToString() == "")

{

for (int j = 3; j < dataGridView2.ColumnCount; j++)

{

if (dataGridView2[j, i].Value.ToString() == "")

{

NoDegree[j - 3].Add(0);

}

else

{

NoDegree[j - 3].Add(Convert.ToDouble(dataGridView2[j, i].Value));

}

}

}

else

{

if (dataGridView3[1, i].Value.ToString() == "6")

{

for (int j = 3; j < dataGridView2.ColumnCount; j++)

{

if (dataGridView2[j, i].Value.ToString() == "")

{

Kand[j - 3].Add(0);

}

else

{

Kand[j - 3].Add(Convert.ToDouble(dataGridView2[j, i].Value));

}

}

}

else

{

if (dataGridView3[1, i].Value.ToString() == "1")

{

for (int j = 3; j < dataGridView2.ColumnCount; j++)

{

if (dataGridView2[j, i].Value.ToString() == "")

{

Doctor[j - 3].Add(0);

}

else

{

Doctor[j - 3].Add(Convert.ToDouble(dataGridView2[j, i].Value));

}

}

}

}

}

}

if (NoDegree.Count == 0)

dataGridView1[1, 0].Value = 0;

else

dataGridView1[1, 0].Value = NoDegree[0].Count;

if (Kand.Count == 0)

dataGridView1[1, 1].Value = 0;

else

dataGridView1[1, 1].Value = Kand[0].Count;

if (Doctor.Count == 0)

dataGridView1[1, 2].Value = 0;

else

dataGridView1[1, 2].Value = Doctor[0].Count;

dataGridView1[1, 3].Value = Data.Count;

}

}

}

FormFactor.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Assessment

{

public partial class FormFactor : Form

{

public FormFactor()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

this.Close();

}

private void FormFactor_Load(object sender, EventArgs e)

{

// TODO: данная строка кода позволяет загрузить данные в таблицу "степень.Звание_Степень". При необходимости она может быть перемещена или удалена.

this.звание_СтепеньTableAdapter.Fill(this.степень.Звание_Степень);

// TODO: данная строка кода позволяет загрузить данные в таблицу "запросИзЗапросов._ЗапросИзЗапросов". При необходимости она может быть перемещена или удалена.

this.запросИзЗапросовTableAdapter.Fill(this.запросИзЗапросов._ЗапросИзЗапросов);

dataGridView1.RowCount = 4;

dataGridView1[0, 0].Value = "Общее количество";

dataGridView1[0, 1].Value = "Без степени";

dataGridView1[0, 2].Value = "Степень Кандидат наук";

dataGridView1[0, 3].Value = "Степень Доктор наук";

for (int i = 0; i < dataGridView2.RowCount - 1; i++)

{

Data.Add(new List<double>());

for (int j = 0; j < dataGridView2.ColumnCount; j++)

{

if (dataGridView2[j, i].Value.ToString() == "")

Data[i].Add(0);

else

Data[i].Add(Convert.ToDouble(dataGridView2[j, i].Value));

}

}

for (int j = 0; j < dataGridView2.ColumnCount; j++)

{

NoDegree.Add(new List<double>());

Doctor.Add(new List<double>());

Kand.Add(new List<double>());

}

for (int i = 0; i < dataGridView2.RowCount - 1; i++)

{

if (dataGridView3[1, i].Value.ToString() == "")

{

for (int j = 0; j < dataGridView2.ColumnCount; j++)

{

if (dataGridView2[j, i].Value.ToString() == "")

{

NoDegree[j].Add(0);

}

else

{

NoDegree[j].Add(Convert.ToDouble(dataGridView2[j, i].Value));

}

}

}

else

{

if (dataGridView3[1, i].Value.ToString() == "6")

{

for (int j = 0; j < dataGridView2.ColumnCount; j++)

{

if (dataGridView2[j, i].Value.ToString() == "")

{

Kand[j].Add(0);

}

else

{

Kand[j].Add(Convert.ToDouble(dataGridView2[j, i].Value));

}

}

}

else

{

if (dataGridView3[1, i].Value.ToString() == "1")

{

for (int j = 0; j < dataGridView2.ColumnCount; j++)

{

if (dataGridView2[j, i].Value.ToString() == "")

{

Doctor[j].Add(0);

}

else

{

Doctor[j].Add(Convert.ToDouble(dataGridView2[j, i].Value));

}

}

}

}

}

}

}

public List<List<double>> Doctor = new List<List<double>>();

public List<List<double>> Kand = new List<List<double>>();

public List<List<double>> NoDegree = new List<List<double>>();

public List<List<double>> Data = new List<List<double>>();

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

int x = 0;

int x1 = 0;

int x2 = 0;

int x3 = 0;

int ind = comboBox1.SelectedIndex;

for (int j = 0; j < NoDegree[ind].Count; j++)

{

if (NoDegree[ind][j] != 0)

x1 += 1;

}

dataGridView1[1, 1].Value = x1;

for (int j = 0; j < Kand[ind].Count; j++)

{

if (Kand[ind][j] != 0)

x2 += 1;

}

dataGridView1[1, 2].Value = x2;

for (int j = 0; j < Doctor[ind].Count; j++)

{

if (Doctor[ind][j] != 0)

x3 += 1;

}

x = x1 + x2 + x3;

dataGridView1[1, 3].Value = x3;

dataGridView1[1, 0].Value = x;

dataGridView1[3, 0].Value = Data.Count;

dataGridView1[3, 1].Value = NoDegree[0].Count;

dataGridView1[3, 2].Value = Kand[0].Count;

dataGridView1[3, 3].Value = Doctor[0].Count;

dataGridView1[2, 0].Value = 100.0 * Convert.ToDouble(x) / Convert.ToDouble(Data.Count);

dataGridView1[2, 1].Value = 100.0 * Convert.ToDouble(x1) / Convert.ToDouble(NoDegree[0].Count);

dataGridView1[2, 2].Value = 100.0 * Convert.ToDouble(x2) / Convert.ToDouble(Kand[0].Count);

dataGridView1[2, 3].Value = 100.0 * Convert.ToDouble(x3) / Convert.ToDouble(Doctor[0].Count);

}

}

}

FormSotrGr.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using ZedGraph;

namespace Assessment

{

public partial class FormSotrGr : Form

{

public FormSotrGr()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

this.Close();

}

public List<List<double>> DataPerson = new List<List<double>>();

public List<List<double>> DataFactor = new List<List<double>>();

private void FormSotrGr_Load(object sender, EventArgs e)

{

// TODO: данная строка кода позволяет загрузить данные в таблицу "khAIDataSet4.ЗапросИзЗапросов". При необходимости она может быть перемещена или удалена.

this.запросИзЗапросовTableAdapter.Fill(this.khAIDataSet4.ЗапросИзЗапросов);

// TODO: данная строка кода позволяет загрузить данные в таблицу "khAIDataSet.Persons". При необходимости она может быть перемещена или удалена.

this.personsTableAdapter.Fill(this.khAIDataSet.Persons);

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

DataPerson.Add(new List<double>());

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

if (dataGridView1[j, i].Value.ToString() == "")

DataPerson[i].Add(0);

else

DataPerson[i].Add(Convert.ToDouble(dataGridView1[j, i].Value));

}

}

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

DataFactor.Add(new List<double>());

}

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

if (dataGridView1[j, i].Value.ToString() == "")

{

DataFactor[j-1].Add(0);

}

else

{

DataFactor[j-1].Add(Convert.ToDouble(dataGridView1[j, i].Value));

}

}

}

}

public double [] P(List<List<double>> Data)

{

double[] p = new double[Data.Count];

double[] x = new double[Data.Count];

double m = Data[0].Count;

for (int i = 0; i < Data.Count; i++)

for (int j = 0; j < Data[i].Count; j++)

{

if (Data[i][j] != 0)

x[i] += 1;

}

for (int i = 0; i < Data.Count; i++)

{

p[i] = x[i] / m;

}

return p;

}

public double [] Q(List<List<double>> dataPerson,List<List<double>> dataFactor)

{

int n=dataPerson.Count;

int m=dataFactor.Count;

double[] qPodg = new double[n];

double[] q0Podg = new double[n];

double[] qPerson = new double[n];

double[] pPerson = new double[n];

double[] pFactor = new double[m];

double[] qFactor = new double[m];

double[] B = new double[m];

double[] B0 = new double[m];

pPerson = P(dataPerson);

pFactor=P(dataFactor);

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

{

qPerson[i] = 1 - pPerson[i];

if ((pPerson[i] != 0)&&(qPerson[i] != 0))

q0Podg[i] = Math.Log(pPerson[i] / qPerson[i]);

else

q0Podg[i] = 0.0;

}

for (int j = 0; j < m; j++)

{

qFactor[j] = 1 - pFactor[j];

if ((qFactor[j] != 0)&&(pFactor[j] != 0))

B0[j] = Math.Log(qFactor[j] / pFactor[j]);

else

B0[j] = 0.0;

}

double Qsr = q0Podg[0];

double Bsr = B0[0];

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

Qsr += q0Podg[i];

for (int j = 0; j < m; j++)

Bsr += B0[j];

Qsr = Qsr / Convert.ToDouble(n);

Bsr = Bsr / Convert.ToDouble(m);

double Q02 = q0Podg[0] * q0Podg[0];//сумма квадратов начальных значений

double B02 = B0[0] * B0[0];

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

Q02 += q0Podg[i] * q0Podg[i];

for (int j = 0; j < m; j++)

B02 += B0[j] * B0[j];

double sQ = (Q02 - n * Q02) / Convert.ToDouble(n - 1);//дисперсии

double sB = (B02 - m * B02) / Convert.ToDouble(m - 1);

double alfaQ=Math.Sqrt((1+sB/2.89)/(1-sQ*sB/8.35));

double alfaB = Math.Sqrt((1 + sQ / 2.89) / (1 - sQ * sB / 8.35));

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

qPodg[i] = alfaQ * q0Podg[i] + Bsr;

for (int j = 0; j < m; j++)

B[j] = alfaB * B0[j] + Qsr;

return qPodg;

}

private void DrawGraph()

{

// Получим панель для рисования

GraphPane pane = zedGraphSotr.GraphPane;

if (checkBox1.Checked == false)

{

// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы

pane.CurveList.Clear();

}

Color[] _colors = new Color[] {Color.Black,

Color.Blue,

Color.Brown,

Color.Gray,

Color.Green,

Color.Indigo,

Color.Orange,

Color.Red,

Color.YellowGreen};

// Для генерации случайных точек и случайного цвета кривой

Random rnd = new Random();

Color curveColor = _colors[rnd.Next(_colors.Length)];

// Создадим список точек

PointPairList list = new PointPairList();

double xmin = -5;

double xmax = 5;

// Заполняем список точек

for (double x = xmin; x <= xmax; x += 0.5)

{

// добавим в список точку

list.Add(x, Pq(Q(DataPerson, DataFactor)[comboBox1.SelectedIndex], x));

}

string s = "Сотрудник " + comboBox1.SelectedValue.ToString();

// Создадим кривую с названием "S",

// которая будет рисоваться голубым цветом (Color.Blue),

// Опорные точки выделяться не будут (SymbolType.None)

LineItem myCurve = pane.AddCurve(s, list, curveColor, SymbolType.Circle);

pane.XAxis.Title.Text = "Трудность, B";

pane.YAxis.Title.Text = "Вероятность ,P(B)";

pane.Title.Text = "График по сотруднику ";

// Вызываем метод AxisChange (), чтобы обновить данные об осях.

// В противном случае на рисунке будет показана только часть графика,

// которая умещается в интервалы по осям, установленные по умолчанию

zedGraphSotr.AxisChange();

// Обновляем график

zedGraphSotr.Invalidate();

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

DrawGraph();

}

}

}

FormFactorGr.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using ZedGraph;

namespace Assessment

{

public partial class FormFactorGr : Form

{

public FormFactorGr()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

Close();

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

DrawGraph();

}

private double Pb(double Q, double b)

{

return (Math.Exp(1.7 * (Q - b))) / (1 + Math.Exp(1.7 * (Q - b)));

}

private void DrawGraph()

{

// Получим панель для рисования

GraphPane pane = zedGraphSotr.GraphPane;

// GraphPane pane = new GraphPane();

if (checkBox1.Checked == false)

{

// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы

pane.CurveList.Clear();

}

Color[] _colors = new Color[] {Color.Black,

Color.Blue,

Color.Brown,

Color.Gray,

Color.Green,

Color.Indigo,

Color.Orange,

Color.Red,

Color.YellowGreen};

// Для генерации случайных точек и случайного цвета кривой

Random rnd = new Random();

Color curveColor = _colors[rnd.Next(_colors.Length)];

// Создадим список точек

PointPairList list = new PointPairList();

double xmin = -5;

double xmax = 5;

// Заполняем список точек

for (double x = xmin; x <= xmax; x += 0.5)

{

// добавим в список точку

list.Add(x, Pb(x, B(DataPerson, DataFactor)[comboBox1.SelectedIndex]));

}

string s = "Показатель " + comboBox1.SelectedItem.ToString();

// Создадим кривую с названием "Sinc",

// которая будет рисоваться голубым цветом (Color.Blue),

// Опорные точки выделяться не будут (SymbolType.None)

LineItem myCurve = pane.AddCurve(s, list, curveColor, SymbolType.Circle);

pane.XAxis.Title.Text = "Подготовленность, Q";

pane.YAxis.Title.Text = "Вероятность ,P(Q)";

pane.Title.Text = "Кривая показателя";

// Вызываем метод AxisChange (), чтобы обновить данные об осях.

// В противном случае на рисунке будет показана только часть графика,

// которая умещается в интервалы по осям, установленные по умолчанию

zedGraphSotr.AxisChange();

// pane.AxisChange();

// Обновляем график

//Invalidate();

zedGraphSotr.Invalidate();

}

private double[] B0(double[] p, int M)//начальное значение подготовленности

{

double[] q = new double[M];

double[] B0 = new double[M];

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

{

q[i] = 1 - p[i];

B0[i] = Math.Log(p[i] / q[i]);

}

return B0;

}

private double [] Q0(double [] p,int N)//начальное значение подготовленности

{

double[] q = new double[N];

double [] Q0=new double[N];

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

{

q[i] = 1 - p[i];

Q0[i] = Math.Log(p[i] / q[i]);

}

return Q0;

}

private double Q0sr(int N, double [] p)//нахождение среднего значения подготовленности

{

double[] q0 = new double[N];

double sum = Q0(p, N)[0];

for (int i = 1; i < N - 1; i++)

sum += Q0(p, N)[i];

return sum / N;

}

private double B0sr(int M, double[] p)//нахождение среднего значения трудности заданий

{

double[] b0 = new double[M];

double sum = B0(p, M)[0];

for (int i = 1; i < M - 1; i++)

sum += B0(p, M)[i];

return sum / M;

}

private double Sq(double [] p,int N)//дисперсия q

{

double sumq0 = Q0(p, N)[0] * Q0(p, N)[0];

for (int i = 1; i < N - 1; i++)

sumq0 += Q0(p, N)[i] * Q0(p, N)[i];

return (sumq0 - N * Q0sr(N, p) * Q0sr(N, p)) / N - 1;

}

private double Sb(double []p,int M)//дисперсия b

{

double sumb0 = B0(p, M)[0] * B0(p, M)[0];

for (int i = 1; i < M - 1; i++)

sumb0 += Q0(p, M)[i] * Q0(p, M)[i];

return (sumb0 - M * Q0sr(M, p) * Q0sr(M, p)) / M - 1;

}

private double Aq(double [] pq,double [] pb, int N,int M)//угловой коэффициент

{

return Math.Sqrt((1 + Sb(pb, M) / 2.89) / (1 - Sq(pq, N) * Sb(pb, M) / 8.35));

}

private double Ab(double[] pq, double[] pb, int N, int M)//угловой коэффициент

{

return Math.Sqrt((1 + Sq(pq, N) / 2.89) / (1 - Sq(pq, N) * Sb(pb, M) / 8.35));

}

private double[] Q(double[] pq, double[] pb, int N, int M)//окончательные значения параметра Q

{

double[] Q = new double[N];

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

Q[i] = Aq(pq, pb, N, M) * Q0(pq, N)[i] + B0sr(M, pb);

return Q;

}

private double[] B(double[] pq, double[] pb, int N, int M)//окончательные значения параметра B

{

double[] B = new double[M];

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

B[i] = Ab(pq, pb, N, M) * B0(pb, M)[i] + Q0sr(N, pq);

return B;

}

public List<List<double>> DataPerson = new List<List<double>>();

public List<List<double>> DataFactor = new List<List<double>>();

private void FormFactorGr_Load(object sender, EventArgs e)

{

// TODO: данная строка кода позволяет загрузить данные в таблицу "khAIDataSet5.ЗапросИзЗапросов". При необходимости она может быть перемещена или удалена.

this.запросИзЗапросовTableAdapter.Fill(this.khAIDataSet5.ЗапросИзЗапросов);

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

DataPerson.Add(new List<double>());

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

if (dataGridView1[j, i].Value.ToString() == "")

DataPerson[i].Add(0);

else

DataPerson[i].Add(Convert.ToDouble(dataGridView1[j, i].Value));

}

}

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

DataFactor.Add(new List<double>());

}

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

for (int j = 1; j < dataGridView1.ColumnCount; j++)

{

if (dataGridView1[j, i].Value.ToString() == "")

{

DataFactor[j-1].Add(0);

}

else

{

DataFactor[j-1].Add(Convert.ToDouble(dataGridView1[j, i].Value));

}

}

}

}

public double [] P(List<List<double>> Data)

{

double[] p = new double[Data.Count];

double[] x = new double[Data.Count];

double m = Data[0].Count;

for (int i = 0; i < Data.Count; i++)

for (int j = 0; j < Data[i].Count; j++)

{

if (Data[i][j] != 0)

x[i] += 1;

}

for (int i = 0; i < Data.Count; i++)

{

p[i] = x[i] / m;

}

return p;

}

public double [] B(List<List<double>> dataPerson,List<List<double>> dataFactor)

{

int n=dataPerson.Count;

int m=dataFactor.Count;

double[] qPodg = new double[n];

double[] q0Podg = new double[n];

double[] qPerson = new double[n];

double[] pPerson = new double[n];

double[] pFactor = new double[m];

double[] qFactor = new double[m];

double[] B = new double[m];

double[] B0 = new double[m];

pPerson = P(dataPerson);

pFactor=P(dataFactor);

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

{

qPerson[i] = 1 - pPerson[i];

if ((pPerson[i] != 0)&&(qPerson[i] != 0))

q0Podg[i] = Math.Log(pPerson[i] / qPerson[i]);

else

q0Podg[i] = 0.0;

}

for (int j = 0; j < m; j++)

{

qFactor[j] = 1 - pFactor[j];

if ((qFactor[j] != 0)&&(pFactor[j] != 0))

B0[j] = Math.Log(qFactor[j] / pFactor[j]);

else

B0[j] = 0.0;

}

double Qsr = q0Podg[0];

double Bsr = B0[0];

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

Qsr += q0Podg[i];

for (int j = 0; j < m; j++)

Bsr += B0[j];

Qsr = Qsr / Convert.ToDouble(n);

Bsr = Bsr / Convert.ToDouble(m);

double Q02 = q0Podg[0] * q0Podg[0];//сумма квадратов начальных значений

double B02 = B0[0] * B0[0];

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

Q02 += q0Podg[i] * q0Podg[i];

for (int j = 0; j < m; j++)

B02 += B0[j] * B0[j];

double sQ = (Q02 - n * Q02) / Convert.ToDouble(n - 1);//дисперсии

double sB = (B02 - m * B02) / Convert.ToDouble(m - 1);

double alfaQ=Math.Sqrt((1+sB/2.89)/(1-sQ*sB/8.35));

double alfaB = Math.Sqrt((1 + sQ / 2.89) / (1 - sQ * sB / 8.35));

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

qPodg[i] = alfaQ * q0Podg[i] + Bsr;

for (int j = 0; j < m; j++)

B[j] = alfaB * B0[j] + Qsr;

return B;

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Проектирование программного обеспечения для классифицирования выпускников высшего учебного заведения. Выбор системы управления базами данных и языка программирования. Разработка структуры данных, схема базы данных. Реализация программного комплекса.

    дипломная работа [2,4 M], добавлен 27.03.2013

  • Порядок контроля и приемки программного обеспечения, требования к документации. Текст программы: модуль Program.cs, sprav predmets.cs. Сообщения, выдаваемые программисту. Капитальные вложения по внедрению системы. Расчет годовой экономии от эксплуатации.

    дипломная работа [7,4 M], добавлен 29.06.2012

  • База данных для автоматизации работы информационно-технической службы учебного заведения в области учета оборудования. Даталогическое проектирование. Ключевые поля и индексы. Ограничения бизнес правил. Пользовательский интерфейс. Запросы к базе данных.

    курсовая работа [2,2 M], добавлен 12.02.2013

  • Пути формирования имиджа учебного заведения как одной из составляющих деятельности образовательного учреждения. Проблемы интернет-маркетинга, его продвижение. Пример типичной динамики развития корпоративного портала как части интернет-пространства.

    курсовая работа [387,3 K], добавлен 13.04.2014

  • Описание высшего учебного заведения как отрасли производства. Основные задачи кафедры, организация документооборота. Анализ существующих средств электронного документооборота. Обоснование необходимости разработки, целей, назначения и структуры модели.

    курсовая работа [345,4 K], добавлен 06.05.2011

  • Создание программного продукта, автоматизирующего деятельность сотрудника учебного заведения, занимающегося учетом проведения научно-практических конференций. Выбор языка, среды программирования, разработка алгоритмов, проектирование интерфейса программы.

    курсовая работа [1,5 M], добавлен 06.12.2012

  • Анализ проектирования баз данных и освещение методов построения форм и отчетов на примере построения программы ведения электронной документации учебного заведения. Разработка и построение инфологической модели по предметной области "Университет".

    курсовая работа [6,3 M], добавлен 03.11.2014

  • Характеристика высшего учебного заведения "МФПА", структура подразделений учебной части. Анализ диаграммы дерева узлов, стадии проектирования информационной системы учета успеваемости студентов. Основные особенности построения модели "Как должно быть".

    курсовая работа [3,1 M], добавлен 12.04.2012

  • История развития информационных технологий. Появление Интернета, браузеры. Основы web-программирования: классификация сайтов, языки программирования. Создание сайта для кафедры высшего учебного заведения: технология создания и руководство пользователя.

    дипломная работа [471,5 K], добавлен 23.04.2015

  • Особенности создания автоматизированной информационной системы для системного администратора библиотеки. Функции ввода и обновления данных и печати документов. Технологическая последовательность выполнения процедур системы, инструкция пользователя.

    курсовая работа [430,0 K], добавлен 12.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.